Blinds-RS485. Описание команд.

/ / Технологии, Умный дом

Устройство упрощает интеграцию электрокарнизов, электрожалюзи и подобных устройств, поддерживающих протокол RS485 компании Dooya в системы «Умного дома» ( Home Assistant, Domoticz, MajorDoMo, Node-Red и т.п.)

Низкоуровневый протокол заменён понятными текстовыми командами, что облегчает чтение и понимание происходящего в системе. При этом ответы от исполнительных устройств отображаются в виде кодов, что делает простой их обработку системами домашней автоматизации. Ошибки выдаются текстом, что также удобно — ошибки чаще всего возникают на этапе настройки системы и должны читаться человеком. После настройки система получает коды, которые легко обрабатывать программным обеспечением.

Контрольная сумма при отправке команд вычисляется самим устройством.

Подстройка к временным интервалам и времени ответа исполнительных устройств делается автоматически. Как показала практика, временные интервалы у разных устройств, отличаются более, чем в 10 раз. Подключение одного медленного устройства, если не делать адаптацию, приведёт либо к тому, что медленное устройство не будет работать, либо вся система будет работать с максимальными задержками. С blinds-rs485 команды отправляются на максимально возможной скорости, адаптируя временные интервалы для медленных и быстрых устройств. Это важно для быстрого опроса состояния большого количества устройств. В традиционных операционных системах (не реального времени) затруднительно получать небольшие временные интервалы при формировании протокола, что снижает производительность и сказывается на высоко нагруженных системах, либо системах с ограниченными ресурсами.

Есть буфер команд — можно отправлять команды подряд, не дожидаясь выполнения предыдущих. Это бывает необходимо в системах умного дома, когда последовательности команд (например опрос состояния всех устройств с интервалом в 1 сек.) формируются программным обеспечением автоматически.

Больше не нужно разрабатывать и поддерживать драйвера для каждой системы — все особенности протокола, весь накапливаемый опыт сосредотачивается в одном месте — во внешнем устройстве.

При самостоятельной реализации протокола не хватает времени на учёт всех особенностей протокола, на реализацию всех команд. Обычно реализуются только базовые команды. На остальное нет времени.

Настройки для каждого устройства можно сохранять или подготовить перед монтажом на объекте. Это позволяет часть работы выполнить заранее и сокращает время нахождения непосредственно на объекте.

То, как это работает, можно посмотреть в видео.

Примеры команд.

Открыть жалюзи 1 в группе 12:

open 12 1

Если вместо 1 указать 0, то команду выполнят все устройства в группе:

close 12 0

Если оба параметра указать, как 0, команду выполнят все устройства:

stop 0 0

Если вам удобнее, параметры и команду можно менять местами (это улучшает читаемость кода и особенно полезно, когда код просматривается редко, спустя какое-то время):

12 1 open

Или даже разместить по середине:

12 1 close% 30

Можно указывать параметры в шестнадцатеричной форме. Перед параметром в этом случае нужно поставить символ “$”:

$c 1 open

Все ответы от устройств отображаются в шестнадцатеричном виде. Символ $ при этом не выводится.

Пояснения к таблице:

Пояснения по цветам (легенда):

55 — стартовый байт, всегда 0x55, начало пакета

F7 D6 — контрольная сумма

02 FE- адрес устройства, от которого получен ответ. FE — группа, 02 — адрес устройства в группе

A4 — то, на что нужно обратить внимание. Это данные, в ответе, которые нас интересуют


Команды управления
Команда
Параметры
Описание
Ответ
Пояснение
open
Открыть
55 02 FE 03 01 89 74
close
Закрыть
55 02 FE 03 02 C9 75
stop
Стоп
55 02 FE 03 03 08 B5
close%
Закрыть на xx%
55 02 FE 03 04 1E 89 74
Это ответ на команду: $fe 2 close% 30 ($1E = 30)
top_limit_set
Задать крайнее верхнее положение (если это рулонная штора)
55 02 FE 03 05 01 76 A6
buttom_limit_set
Задать крайнее нижнее положение
55 02 FE 03 05 02 36 A7
limit3_set
Установить промежуточный лимит
55 02 FE 03 05 03 F7 67
limit4_set
Установить ещё один промежуточный лимит
55 02 FE 03 05 FF F7 26
run_to_top
Открыть до верхнего лимита
55 02 FE 03 06 01 76 56
run_to_buttom
Закрыть до нижнего лимита
55 02 FE 03 06 02 36 57
run_to_limit3
Закрыть до первого промежуточного лимита
55 02 FE 03 06 03 F7 97
run_to_limit4
Закрыть до второго промежуточного лимита
55 02 FE 03 06 FF F7 D6
top_limit_del
Удалить верхний лимит
55 02 FE 03 07 01 77 C6
buttom_limit_del
Удалить нижний лимит
55 02 FE 03 07 02 37 C7
limit3_del
Удалить первый промежуточный лимит
55 02 FE 03 07 03 F6 07
limit4_del
Удалить второй промежуточный лимит
55 02 FE 03 07 FF F6 46
del_limits
Удалить все лимиты разом
55 02 FE 03 07 09 76
fact_reset
Сбросить все настройки к заводским установкам
55 02 FE 03 08 79 22
set_scene_mode
Задать сцену
55 02 FE 03 09 01 73 A6
Это ответ на команду: $fe 2 set_scene_mode 1
operate_scene_mode
Перейти к сцене
55 02 FE 03 0A 01 73 56
delete_scene_mode
Удалить сцену
55 02 FE 03 0B 01 72 C6
opposite
Если предыдущая команда была “открыть”, будет выполнена команда “закрыть”
55 02 FE 03 0F FF F1 86

Команды чтения значений
Команда
Параметры
Описание
Ответ
Пояснение
position?
Позиция шторы в процентах
55 02 FE 01 01 14 14 69
Шестой байт ($14 = 20%) показывает, насколько закрыта штора
default_direction?
Направление вращения мотора по-умолчанию
55 02 FE 01 01 00 14 66
00 — направление после сброса к заводским установкам,
01 — противоположное
hand_pulling_status?
Направление движения шторы, при подталкивании рукой
55 02 FE 01 01 01 D5 A6
00 — открываются (состояние после сброса к заводским установкам)
01 — закрываются или функция отключена
motor_status?
Состояние мотора
55 02 FE 01 01 00 14 66
00 — остановлен
01 — штора открывается
02 — штора закрывается
03 — мотор в режиме программирования
current_angle?
Угол, на который открыты жалюзи
55 02 FE 01 01 00 14 66
Может принимать значения 0 — 180
adjusting_angle?
Направление подстройки угла жалюзи
55 02 FE 01 01 00 14 66
00 — направление после сброса к заводским установкам
01 — противоположное
angle_coefficient?
Коэффициент угла
55 02 FE 01 01 78 14 44
Может принимать значения 0 — 255
limit_position?
Показывает какие лимиты заданы (Если бит установлен в 1 — лимит задан)
55 02 FE 01 01 0E 95 A2
При установленных верхнем, нижнем и промежуточном лимите — 0E (1110). Если сбросить промежуточный лимит — 06(0110)
jogging_mode?
Режим подхватывания при подталкивании штор рукой
55 02 FE 01 01 00 14 66
00 — выключен
01 — включен
power_on_remind?
Реакция мотора на подключение к сети
55 02 FE 01 01 03 54 67
00 — реакции нет
01 — подаётся звуковой сигнал
02 — делается вращение мотором
03 — и звуковой сигнал и вращение
device_type?
Тип мотора
55 02 FE 01 01 11 D4 6A
11 — рулонная штора
12 — венецианская штора
channel_of_module?
Канал модуля
55 02 FE 01 01 01 D5 A6
Может принимать значения 0-15
passive_external_switch_type?
Тип пульта (выключателя)
55 02 FE 01 01 00 14 66
00 — Двойной переключатель без фиксации (значение по умолчанию)
01 — Двойной перекидной выключатель
02 — DC246
03 — Однокнопочный. Переключение происходит “по кругу”
voltage_external_switch_type?
Тип пульта (выключателя)
55 02 FE 01 01 00 14 66
00 — Двухпроводный (значение по умолчанию)
01 — Однопроводный
software_version?
Версия программного обеспечения мотора
55 02 FE 01 01 A1 D5 DE
protocol_version?
Версия протокола
55 02 FE 01 01 A4 15 DD

Команды записи значений
Команда
Параметры
Описание
Ответ
Пояснение
write_device_address
id_h id_l id_h_new id_l_new
Задать новый адрес устройства
55 02 FE 02 00 02 64 37
Это ответ на команду:
$fe $fe write_device_address $fe 2
straight_direction_set
Установить направление вращения вала мотора в значение по умолчанию
55 02 FE 02 03 01 24 C6
reverse_direction_set
Установить направление вращения вала мотора в значение противоположное, значению по умолчанию
55 02 FE 02 03 01 24 C6
hand_pulling_set
При подталкивании шторы рукой, штора открывается
55 02 FE 02 04 01 26 F6
hand_pulling_reset
При подталкивании шторы рукой, штора закрывается, либо функция отключена
55 02 FE 02 04 01 26 F6
adj_angle_straight_direction_set
Установить направление подстройки угла жалюзи в значение по умолчанию
55 02 FE 02 07 01 26 06
adj_angle_reverse_direction_set
Установить направление подстройки угла жалюзи в значение противоположное значению по умолчанию
55 02 FE 02 07 01 26 06
angle_coefficient_set
Задать коэффициент угла
55 02 FE 02 08 01 23 F6
jogging_set
Установить режим подхватывания при подталкивании штор рукой
55 02 FE 02 0A 01 22 96
jogging_reset
Отменить режим подхватывания при подталкивании штор рукой
55 02 FE 02 0A 01 22 96
mute_power_on
При подаче питания на мотор никак на это не реагировать
55 02 FE 02 0C 01 21 36
beep_power_on
При подаче питания на мотор подать звуковой сигнал
55 02 FE 02 0C 01 21 36
rotation_power_on
При подаче питания на мотор повернуть вал двигателя
55 02 FE 02 0C 01 21 36
rotation&beep_power_on
При подаче питания на мотор подать звуковой сигнал и повернуть вал двигателя
55 02 FE 02 0C 01 21 36
rebound_switch_set
Задать двойной переключатель без фиксации (значение по умолчанию)
55 02 FE 02 27 01 3F C6
non_rebound_switch_set
Задать двойной перекидной выключатель
55 02 FE 02 27 01 3F C6
dc246_switch_set
Задать пультом управления DC246
55 02 FE 02 27 01 3F C6
recycle_switch_set
Задать управление мотором однокнопочным переключтелем. Переключение происходит “по кругу”
55 02 FE 02 27 01 3F C6
1_wire_switch_set
Тип пульта — Однопроводный
55 02 FE 02 28 01 3A 36
2_wire_switch_set
Тип пульта — Двухпроводный
55 02 FE 02 28 01 3A 36

Команды, выполняемые самим модулем blinds-rs485 (не моторами)
Команда
Описание
help
Выводит ссылку на страницу с документацией
version
Выводит версию программного обеспечения самого blinds-rs485
cmd_list
Выводит перечень команд, поддерживаемых blinds-rs485
empty_slot?
Выводит 1, если в буфере команд достаточно места ( более 10 байт) для записи очередной команды. 0, если недостаточно.

Параметр id_h — это номер группы. Может принимать значение от 0 до 254 ($FE). В группу может входить до 254 моторов.

Параметр id_l — это номер мотора в группе. Может принимать значение от 0 до 254 ($FE). Если указать 0, то команду выполнят все моторы, входящие в группу. Так одной командой, можно, например разом закрыть все шторы в одном помещении.

Если указать в команде id_h = 0 и id_l = 0 команду выполнят все моторы в системе.

Параметр xx% может принимать значения от 0 до 100 ($64). Обозначает долю в процентах, на которую будут закрыты шторы или жалюзи.

Параметр mode может принимать значения от 1 до 64. Работает только, если установлены верхний и нижний лимиты.

Параметр ang_coef может принимать значения от 0 до 255.

Пример подключения штор и жалюзи в Home Assistant по протоколу RS485.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *