Перейти к содержимому

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 1E
Scene 3: 38 03 CA CA 2C
Status: 38 CA CA CA 10
Power 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.

Правильный алгоритм:

actualPower = queryStatus().power
if actualPower != desiredPower:
send 38 CA CA CA AA
wait
verify queryStatus().power == desiredPower

Повтор toggle без чтения status может вернуть устройство в исходное состояние.

RGB:

  1. прочитать status;
  2. при ненулевом RGB включить питание условным toggle;
  3. отправить 38 RR GG BB 1E;
  4. проверить status, если firmware сообщает применённый режим.

Scene:

  1. обеспечить power on;
  2. для scene 0 отправить 38 CA CA CA 06;
  3. для остальных отправить 38 SS CA CA 2C;
  4. повторно прочитать status.

Speed задаётся относительно текущего значения:

steps = abs(targetSpeed - currentSpeed)

Отправить 03 или 09 нужное число раз, затем проверить status. Рекомендуемый диапазон target speed: 0..6.