Sv1ca-4.ru

Строй журнал
18 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Сенсорные выключатель rs 07425

Сенсорные выключатели с Modbus: зачем нужны и как применить в умной квартире

В бюджетных системах умного дома обычно используют стандартные выключатели — их тип выхода также называют «сухой контакт». Однако это не единственный вариант: в поисках красивого выключателя я наткнулся на устройства с протоколом Modbus RTU внутри. Кроме красивого внешнего вида, они позволяют настроить режим работы каждой кнопки, детально управлять подсветкой, а для их подключения к центральному контроллеру (я использовал Wiren Board 5) достаточно четырёх проводов — питание, земля и две линии для RS-485.

Как подключить такой выключатель и настроить управление светом и вентиляцией с него, смотрите ниже. Также в статье будет подробно описано, как вообще работать с Modbus-устройствами.

Пояснение от маркетолога Wiren Board: эта статья родилась из темы, созданной Kallyanbl4 на нашем форуме. После нашей просьбы он написал полноценную статью и разрешил опубликовать её в нашем блоге, за что ему большое спасибо. Весь текст написан автором, кроме примечаний в конце.

Описание выключателей

Изучив, что сейчас есть на рынке, купил у китайцев вот такие интересные выключатели:

  • неплохой дизайн;
  • выключатели cенсорные, при нажатии мигают, подсвечиваются в темноте приятным белым цветом;
  • относительно небольшая цена – 2000 рублей за штуку. В стоимость входит индивидуальная лазерная гравировка;
  • выключатель программируемый — можно задать кнопке практически любое действие: включение света, управление светодиодами, поднять/опустить штору, .

Технические характеристики выключателя:

  • напряжение питания – 12 В;
  • скорость передачи данных — 19200 бит/с;
  • количество передаваемых бит – 8;
  • количество стоповых бит – 1;
  • контроль чётности – нет проверки.

При работе по Modbus RTU подключаемые устройства имеют так называемые регистры – ячейки, в которых хранится информация. На скриншоте описание регистров для четырёхклавишного выключателя:

При нажатии на одну из сенсорных кнопок значения в регистрах 0-3 будет меняться с 0 на 1.

Читать еще:  Автоматический выключатель для мощности 15 квт

Коммутация выключателей

В контроллере Wiren Board 5 в зависимости от комплектации бывает от двух до четырёх портов RS-485. Выключатели (в моём случае их 27) необходимо присоединить к этим портам.

В данном случае все выключатели могут работать на одной общей шине. Выключатели можно соединить последовательно, ведя кабель от одного выключателя до другого, но я решил скоммутировать все кабели в одном щитке.

Соединяющий кабель — восьмижильный Cat 5e UTP. Можно использовать и четырёхжильный, но я обычно всё делаю по принципу «на всякий случай». Можно рассмотреть и другие четырёхжильные кабели, но важный момент – кабель должен быть экранированным, ибо даже несмотря на достаточно низкие частоты сигнала, потери и наводки не исключены.

В итоге все выключатели у меня соединены между собой как показано на картинке:

Как видно из рисунка, все выключатели соединены между собой с помощью пассивного UTP-коммутатора. По жилам 1 и 2 (оранжевая и бело-оранжевая) передается данные (линии A и B), к жилам 7 и 8 (коричневая и бело-коричневый) подключено питание 12 В. В качестве источника питания использую Mean Well NDR-75-12.

Я не знал, как поведет себя пассивный китайский UTP-коммутатор, поэтому при проектировании щитка предусмотрел место для активного RS-423 коммутатора. Отмечу, что схема работает как через пассивный, так и через активный коммутаторы. И даже при их совместном подключении.

Управление светом с помощью реле

По моему проекту в квартире запланированы 27 независимых устройств (свет, вентиляторы), питаемые от 220 В. Для управления ими были выбраны три релейных модуля WBIO-DO-R10A-8 и одно WBIO-DO-R10R-4. Выбор обусловлен тем, что практически всё освещение в квартире – светодиодное, которое отличается от ламп накаливания высоким пусковым током. Выбранные реле способны обеспечить коммутацию тока до 10 А на канал, что в моём случае излишне — но, как было указано ранее, «на всякий случай с запасом».

Читать еще:  Где расположен выключатель фонаря заднего хода

Переключение реле происходит через веб-интерфейс контроллера. Процедура интуитивно понятная, инструкция или подсказки не требуются.

Программная часть

Из описания аппаратной части Wiren Board 5 узнаём, что у него двум портам RS-485 соответствуют файлы устройств /dev/ttyAPP1 и /dev/ttyAPP4. В моём случае выключатель подключен к порту /dev/ttyAPP1.

Адрес устройства (выключателя)

При обмене данными по протоколу Modbus RTU каждое устройство идентифицируется собственным уникальным номером – Modbus-адресом. Как правило, производитель указывает этот адрес в виде трёх цифр на самом устройстве, но если такого номера на устройстве нет, можно перебрать адреса из командной строки (используется то, что адрес хранится в Modbus-регистре 0x80):

Результат должен быть в виде:

Ответ получен в шестнадцатеричном формате и соответствует цифре 142 в десятичном.
Стоит отметить, что при каждом вызове утилиты modbus_client следует останавливать стандартный для контроллера драйвер опроса wb-mqtt-serial; в противном случае утилита modbus_client работать не будет.

Обмен данными между выключателем и Wiren Board

Выше написан цикл, который опрашивает все возможные Modbus-адреса и возвращает значение адреса, если устройство найдено. В цикле задействована утилита modbus_client, которая необходима для отладки подключаемых устройств. В этом пункте с помощью неё убедимся, что всё подключено верно, и выключатель взаимодействует с контроллером должным образом. Для этого попробуем прочитать данные в регистре 0х01 выключателя:

(описание утилиты и её ключей есть в документации контроллера).

Результат будет следующего вида:

Такой результат означает, что в регистре записана дискретная величина 1. После нажатия на одну из кнопок выключателя значение регистра изменится на противоположное значение:

Если наблюдается результат, как в этом пункте, то значит все подключено верно, выключатель и контроллер понимают друг друга.

Собственный драйвер для выключателя

После того как мы убедились, что контроллер и выключатель понимают друг друга, настало время дать описание клавишам выключателя на программном уровне. Разработчики предлагают добавлять описание подключенного устройства в файл /etc/wb-mqtt-serial.conf или создать собственный шаблон в виде файла /usr/share/wb-mqtt-serial/templates/config-*.json

Читать еще:  Выключатель противотуманных фар для тойот

Я пошел по второму пути, мой шаблон выглядит так:

Детальное описание написанного выше шаблона есть в описании драйвера wb-mqtt-serial. Кратко разберёмся с полями:

  • «name»: «All» – имя кнопки. Если шаблон написан верно, эта кнопка появится во вкладке Settings с адресом /devices/4bsw_142/controls/All
  • «reg_type»: «holding» – тип и размер регистра. В выключателе используется «holding» – 16-битный регистр, доступный на чтение и запись.
  • «address»: «0x00» – адрес регистра выключателя, из которого контроллер будет читать данные.
  • «type»: «switch» – как выключатель будет отображаться в веб-интерфейсе. В случае «switch» — в виде дискретного переключателя.

Сохраняем шаблон на контроллер. После этого в разделе веб-интерфейса (Configs -> /etc/wb-mqtt-serial.conf) можно будет добавить новое устройство с таким шаблоном (4-band-switch). Добавляем наш первый выключатель и нажимаем Save.

Правило, включающее реле при нажатии кнопки выключателя

Внутри контроллера состояния всех подключенных устройств описываются MQTT-сообщениями. Управляются устройства также через отправку MQTT-сообщений. Клиентами очереди MQTT-сообщений (брокера) являются и веб-интерфейс, и движок правил.

Для наглядности посмотрим, как веб-интерфейс обрабатывает пришедшее сообщение. Открываем вкладку Settings веб-интерфейса и наблюдаем, что будет происходить при нажатии кнопки All выключателя: внутри выключателя поменяется значение Modbus-регистра, драйвер wb-mqtt-serial опросит выключатель, и в соответствии с шаблоном устройства 4-band-switch отправит MQTT-сообщение в топик /devices/4bsw_142/controls/All — и на странице Settings значение в топике /devices/4bsw_142/controls/All моментально изменится с 0 на 1.

Рассмотрим второго клиента – движок правил. Движок так же, как и веб-интерфейс, работает с очередью сообщений, и может среагировать на изменения значения — для этого используется функция whenChanged. В моём случае правило выглядело так:

На все вопросы буду рад ответить в комментариях.

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты