SP105E (MixUp Pixel v1): протокол
Интерфейс
Заголовок раздела «Интерфейс»- BLE name обычно содержит
SP105; - service:
FFE0; - characteristic:
FFE1; - protocol: binary;
- размер команды: 5 байт;
- terminator отсутствует.
Команды
Заголовок раздела «Команды»| Bytes | Назначение |
|---|---|
38 RR GG BB 1E |
статический RGB |
38 CA CA CA 10 |
status query |
38 CA CA CA AA |
toggle power |
38 CA CA CA 03 |
speed +1 |
38 CA CA CA 09 |
speed -1 |
38 CA CA CA 2A |
brightness +1 |
38 CA CA CA 06 |
scene 0 |
38 SS CA CA 2C |
scene SS, если SS > 0 |
Примеры:
RGB(255,128,0): 38 FF 80 00 1EScene 3: 38 03 CA CA 2CStatus: 38 CA CA CA 10Power toggle: 38 CA CA CA AAОтвет может содержать дополнительные firmware-specific bytes. Первые четыре байта:
| Offset | Поле |
|---|---|
| 0 | power: 00 off, ненулевое значение on |
| 1 | scene ID |
| 2 | speed step |
| 3 | brightness step |
| 4..N | firmware-specific, сохранить для диагностики |
Перед status query следует очистить старые notifications. Если notification не пришёл, допустимо выполнить GATT read той же characteristic.
Power toggle
Заголовок раздела «Power toggle»Правильный алгоритм:
actualPower = queryStatus().powerif actualPower != desiredPower: send 38 CA CA CA AA wait verify queryStatus().power == desiredPowerПовтор toggle без чтения status может вернуть устройство в исходное состояние.
RGB, scene и speed
Заголовок раздела «RGB, scene и speed»RGB:
- прочитать status;
- при ненулевом RGB включить питание условным toggle;
- отправить
38 RR GG BB 1E; - проверить status, если firmware сообщает применённый режим.
Scene:
- обеспечить power on;
- для scene 0 отправить
38 CA CA CA 06; - для остальных отправить
38 SS CA CA 2C; - повторно прочитать status.
Speed задаётся относительно текущего значения:
steps = abs(targetSpeed - currentSpeed)Отправить 03 или 09 нужное число раз, затем проверить status. Рекомендуемый диапазон
target speed: 0..6.