У вас есть устройство для передачи показаний воды Ватериус и вы хотите подключить его к умному дому Domoticz. Разобраться, как увидеть данные Domoticz помог наш пользователь Сергей. Вот его рассказ:
По умолчанию устройство waterius не может напрямую передавать данные в Domoticz. И он также отсутствует в списке оборудования Domoticz.
Однако оба они умеют общаться по протоколу MQTT.
Этот протокол и лежит в основе простого способа обмена данными между ними.
Проблема состоит в том, что Domoticz умеет принимать данные только через топик domoticz/in. А топик для отправки данных waterius начинается соответственно с waterius/… (waterius/chip_id или waterius/bathroom или waterius/kitchen или что-то похожее). То есть необходима система “преобразования данных”, которая принимала бы данные по MQTT от waterius, преобразовывала бы их в формат, понятный Domoticz, и отправляла бы их в топик domoticz/in.
И в роли такой системы легко может выступить инструмент визуального программирования node red.
MQTT брокерДля начала необходимо установить MQTT сервер (брокер):
Проверяем в терминале (путём отправки/приёма тестовых сообщений в топик) что сервис MQTT работает.
для проверки работы MQTT удобно также пользоваться приложением MQTT Lens для браузера Chrome
Далее будем настраивать Domoticz
Настройка Domoticz1. В Domoticz меню:
Настройка - Оборудование
добавляем клиент MQTT Client Gateway with LAN interface (если его у Вас там нет) Где прописываем адрес MQTT сервера (который установили ранее), порт (стандартный 1883) и логин/пароль (при необходимости) для доступа к MQTT серверу.
2. Устанавливаем в этом же меню фиктивное (виртуальное) оборудование (если не установлено).
3. В только что созданном виртуальном оборудовании нажимаем "Создать виртуальные датчики".
Добавляем к нему два виртуальных сенсора с типом данных "счётчик". Называем на свое усмотрение (холодная/горячая вода или Cold/Hot water). Один будет считывать показания холодной воды, другой горячей воды.
Также создаем еще один виртуальный датчик с типом данных "Managed counter". Называем его например "Voltage Waterius" Он будет показывать напряжение питания устройства waterius.
4. D меню Domoticz: настройка - устройства находим только что созданные три виртуальных счетчика. Убеждаемся, что 2 из них имеют тип RFXMeter counter (показания воды) и один имеет тип Managed Counter (напряжение питания устройства) Записываем idx добавленных устройств (2 счётчика и указатель напряжения). Они пригодятся далее.
5. В Domoticz открываем вкладку "Вспомогательные" и находим только что созданные счетчики. Нажимаем "редактировать" на каждом из них.
Для счетчиков воды:
- устанавливаем тип: Water и Counter Divider 1
- При необходимости редактируем название.
- Нажимаем "Обновить"
Для измерителя напряжения питания:
- тип: Counter
- При необходимости редактируем название.
- Значение Количество (например, вес) указываем Voltage
- Значение Единицы (например, кг): указываем - V
- Нажимаем "Обновить"
На этом настройка Domoticz закончена.
Уточню только, что по умолчанию созданные счетчики воды показывают в верхней части суточное потребление в литрах, а в нижней части расход в кубометрах. Как сделать, чтобы крупным текстом (вверху) был расход в кубометрах? - я не разобрался. Возможно есть смысл "пошаманить" в меню Domoticz Настройка - Настройка - Измерители/Счётчики
Установка NodeRedУстанавливаем систему визуального программирования nodered. В текущей версии raspbrian (buster ) nodered устанавливается вместе с системой. Если у Вас она всё же отсутствует, то установка:
Node red запускается по умолчанию на 1880 порту.
Заходим по адрес http://ip:1880 (ip - адрес компьютера)
Проверяем что nodered установлен и работает.
Теперь нам необходимо создать поток преобразования данных, состоящий из 3-х блоков. Для отладки потока (если вдруг что-то пошло не так) можно подключить 4-й блок Debug (необязательно). - *на картинке он зеленого цвета*
Итак на пустое поле выносим с правого поля блоки MQTT in - Function- MQTT out и соединяем их линиями.
После этого редактируем каждый блок дважды кликнув по нему:
Настройка блока MQTT inВ поле сервер нажимаем на иконку с карандашиком с правой стороны и редактируем данные своего установленного mqtt сервера:
- Указываем ip адрес (localhost, - если mqtt сервер работает на том же компьютере, что и nodered) и порт (стандартный 1883)
- В поле Name указываем произвольное название сервера. Оно останется в настройках nodered и его можно использовать в будущем с сохраненными настройками.
- Нажимаем Update и возвращаемся на предыдущую вкладку. Edit mqtt in node
- В поле Topic указываем топик в который передает данные waterius. Например waterius/bathroom/# В этом поле топик ОБЯЗАТЕЛЬНО должен заканчиваться на # то есть подписка здесь указана на все топики после /waterius/bathroom или /waterius/kitchen или похожее. И эти топики конечно же должны совпадать с топиками в настройках waterius!
- Вводим желаемое название узла в поле Name и жмём Done.
- Его настройка аналогична блоку mqtt in за исключением поля Topic. В этом поле необходимо указать топик для Domoticz, т.е. domoticz/in
- Жмём Done и переходим к редактированию главного блока function node.
- В поле Name указываем название блока (логично указать Waterius)
Сама функция выглядит так:
var newmsg = {};
var zn = (+msg.payload);
top = msg.topic.substring(18);
function setCounter(idx, nm){
var counterpayload = '{"idx":' + idx +',"svalue":"' + nm + '"}';
return counterpayload;
}
function setVoltage(idx, nm){
var voltagepayload = '{"idx":' + idx +',"svalue":' + nm + ',"nvalue":"0"}';
return voltagepayload;
}
switch (top) {
case 'ch1':
newmsg.payload = setCounter(99, zn);
return newmsg;
case 'ch0':
newmsg.payload = setCounter(100, zn);
return newmsg;
case 'voltage':
newmsg.payload = setCounter(101, zn);
return newmsg;
}
return null;
Всё это содержимое и вводим в поле Function
В этой функции вместо чисел 99, 100, 101 необходимо указать idx своих устройств Domoticz (виртуальные счетчики горячей, холодной воды и указатель напряжения питания waterius соответственно)
То есть:
- idx счётчика холодной воды в Domoticz ( ch0 в waterius)
- idx счётчика горячей воды в Domoticz (ch1 в waterius)
- idx. устройства измерения напряжения питания (voltage в waterius)
Нажимаем Done
Стоит написать комментарий по поводу функции. У меня лично при выполнении этой функции Domoticz получал неверные данные по MQTTT и соответственно ничего не работало. Хотя у других людей в таком виде всё работало замечательно. Я долго разбирался в чем дело. В результате я просто удалил значение "nvalue":"0" и у меня тоже всё заработало.Не нравился этот параметр Domoticz
Далее в верхней части поля nodered справа необходимо ОБЯЗАТЕЛЬНО нажать кнопку Deploy, чтобы всё заработало.
При правильном подключении у блоков MQTT IN и MQTT OUT загорятся маленькие зеленые квадратики с надписью Connected.
Если что-то не работает.... Подключаем к блоку Function паралелльно блок Debugg взяв его в левом поле. И не забываем снова нажать Deploy в верху справа. Теперь, чтобы посмотреть результаты выполнения функции нужно нажать на вторую иконку Debug messages, которая находится также справа вверху под кнопкой Deploy. Нажать на фильтр all nodes и выбрать current flow
Говорим огромное спасибо Сергею! Удачной настройки и эксплуатации!
Напомню, Ватериус также поддерживает:
- HTTP (HTTPS)
- Blynkkk
- Home Assistant (конфигурация)
- waterius.ru (+отправка показаний в упр. компании)
Comments