Python interface to control BLE-based MySmartBlinds.
This library is not affiliated with nor condoned by MySmartBlinds, and has been written without any knowledge of its internal workings. Be aware that this software is provided as-is, and using it probably voids your MySmartBlinds warranty.
Neither MySmartBlinds nor developers of this library are responsible for any damage or misconfiguration to your blinds or MySmartBlinds system as a result of using this library.
- Enables direct control of MySmartBlinds motorized blinds.
- Converts the absolute position-based protocol of MySmartBlinds into a relative one, enabling natural up/down/stop control as well as timed transitions.
This library has been tested to work with firmware version 2.0. No other versions have been tested, and there is no guarantee that this library will work if you update the firmware beyond 2.0.
This library currently uses pygatt, which limits to using one blind at a time. In the future, a pygattlib backend would enable concurrent multi-blind support.
This library does not emulate the pairing process. You must use a device supported by MySmartBlinds, a MySmartBlinds account, as well as the official app, to pair, configure, and calibrate your blinds.
Since the blinds are paired to your MySmartBlinds account, you will need to sniff or scan the BLE traffic in order to recover the MAC address and account pairing key. Once you have this data, you can use this library either to complement or replace the MySmartBlinds app.
The BLE protocol (as of firmware version 2.0) does not include state read-back (it just returns 0xFF). If you use this library in conjunction with the MySmartBlinds app, automations stored on the blinds, or the external tilt wand, any adjustments to blind position made external to this library will not be recognized. The next operation made with the library will reset the blind position to the last recorded state. Keep in mind that uninstalling the MySmartBlinds app does not disable any automations you may have created within the app.
Once you have paired, configured and calibrated your blinds in the MySmartBlinds app, you need to discover the MAC address and key in order to speak with it.
At a high level, you need to snoop the BLE packets being sent to the blinds. The
key is a packet sent to GATT handle 0x001b
(characteristic UUID
00001409-1212-efde-1600-785feabcd123
).
However, it seems that only the first byte in the key is actually needed, so it doesn't take too long to scan for it, and this library provides a means to do so.
search.py
in the examples folder wraps this functionality; just run it and see
what it returns.