Приветствую, дорогой читатель. В этой статье разберем, как изменить Modbus адрес Диммера от Разумный Дом DDM845R v3, используя контроллер WirenBoard.
С данной проблемой столкнутся многие. Как только у Вас появится много устройств или более одного диммера DDM845R v3.
Для чего же нужно менять адрес?
Все очень просто - если вы не знаете, как работает протокол Modbus, то естественно, у Вас не возникал этот вопрос.
Все устройства, которые работают по Modbus, последовательно соединены между собой и чтобы обратиться к определенному устройству, мы используем его адрес.
Если у нас в нашей сети будет 2 устройства с одним и тем же адресом, то у нас команда уйдет на 2 устройства. Например: у вас будет 2 диммера от Разумный дом, один модуль будет отвечать за свет в детской, а второй - за свет в гостиной. В позднюю ночь вы возвращаетесь домой и решили тихонько включить свет в гостиной, а так как у нас у 2х модулей один и тот же адрес в сети, то 2 модуля отработают и мы еще включаем свет в детской и разбудим наше маленькое чадо. Для того, чтобы избежать таких неприятных ситуаций, на примере модуля DDM845R v3 и контроллера WirenBord, поправим все и такой ситуации не возникнет.
Подготовка
Что же нам потребуется, чтобы изменить адрес нашего диммера?
- контроллер Разумдом DDM845R v3;
- Wirenboard 6;
- знания по подключению к Wirenbord по SSH, если нет, то ознакомьтесь со статьей;
- 5-10 минут свободного времени;
- прямые руки.
Меняем адрес на модуле DDM845R v3
Для начала нам нужно подключиться к WB по SSH, для подключения нам нужно знать ip адрес, как его узнать читаем.
После этого, подключаемся по SSH к нашему WB. В моем случае это будет:
- ip адрес: 192.168.1.53
- Пользователь: root
- Пароль: wirenboard
После подключения, если все верно сделали, мы увидим следующее:
Теперь нам необходимо остановить сервис wb-mqtt-serial, чтобы он нам не мешал работать.
Для остановки сервиса используем команду:
service wb-mqtt-serial stop
Далее можно приступать к смене адреса на Диммере от Разумдом.
Для этого нам нужно воспользоваться командой:
modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a34 -t0x06 -r0 17
Перед тем как нажать Enter, разберемся, что в данной строке зашифровано.
modbus_client - означает, что мы будет работать с протоколом modbus, а если быть точнее - вызываем просто клиент для работы;
--debug - нужен для просмотра результата;
-mrtu - Modbus RTU аргумент, нужен чтобы объяснить, с каким протоколом мы работает, в нашем случае - Modbus RTU;
/dev/ttyRS485-1 - к какому порту у нас подключен наш диммер (в моем случае - это первый порт RS485 на Wirenboard);
-a34 - адрес устройства (текущий);
-t0x06 -расписать данные в один регистр;
-r0 -номер регистра, с которым мы будем работать;
17 - значение, которое мы запишем в регистр выше.
В регистр 0 мы записываем новый адрес устройства, после этого, наш диммер будет доступен по новому адресу - 17. Но для того, чтобы все заработало, нам необходимо запустить wb-mqtt-serial.
service wb-mqtt-serial start
И перезагружаем наш WB.
reboot
Но и на этом у нас еще не все. После того, как сменили адрес, нам нужно заново добавить наш диммер, читаем статью, если забыли как это сделать.
Осталась одна проблема - адрес сменили, заново добавили, но старое устройство находиться у нас в списке девайсов и эстетически нас раздражает.
Воспользуемся еще одной командой, чтобы избавиться от этой проблемы и навести полную красоту.
mqtt-delete-retained '/devices/название_устройства/#'
Где же взять название устройства?
Все просто заходим в WirenBoard Web UI и приходим в раздел Settings, как раз тут и есть адрес нашего устройства.
В моем случае - это адрес 17 и у меня команда будет выглядеть так:
mqtt-delete-retained '/devices/ddm845r_17/#'
На этом все - адрес поменяли, марафет навели, мы большие молодцы.
Спасибо за внимание, подписывайтесь на меня, будет больше статей.