Simple Android app that allow you to configure newer Meross devices using Bluetooth Low Energy (BLE). With this app you can manually set the devices MQTT server, UserId and Key. Also, you can set the device's WiFi SSID and password.
According to the source code from the official Meross app, the following devices should support configuration over BLE:
Following information is based on reverse engineering the official Meross app and looking
at the bluetooth communication logs (HCI logs).
The communication happens over a GATT service with UUID 0000A00A-0000-1000-8000-00805F9B34FB
.
From this service the following characteristics are used:
0000B002-0000-1000-8000-00805F9B34FB
: Write-only characteristic to send commands to the device.0000B003-0000-1000-8000-00805F9B34FB
: Notify characteristic to receive responses from the device.Before the device sends any response, a custom descriptor of the notify characteristic must be written.
This is done by writing "0x01 0x00" to the descriptor with UUID 00002902-0000-1000-8000-00805f9b34fb
.
In order to send more data in a single packet, the MTU can be increased to 203 bytes. This allows to send up to 200 bytes of data in a single packet. If a packet is larger it is split into multiple.
The packet structure is as follows:
55aa
(Used to identify the start of a packet)XXXX
(Big endian; length of the data json)XXXXXXXX
(standard CRC32 over the data)aa55
(Used to identify the end of a packet)The messages itself are essentially the same as in the HTTP API. Once the device is connected to the wifi, a configuration with other Meross tools is also possible.
Copyright (C) 2024 Fabi019
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.