Имеется некое самодельное устройство на ESP8266 , которое управляет теплым полом (считывает показания с датчиков пола и включает клапана на гребенке). Хочу подвязать все это дело к WB.
Подскажите правильную последовательность действий.
Итак, я хочу , чтобы все температурные значения с ESP транслировались в топики MQTT , а также, чтобы я мог управлять клапанами на ESP через правила WB.
Также я хочу видеть температуры/управлять клапанами на вкладке Devices/Widgets.
Общение ESP с WB будет проходить по WiFi посредством MQTT. (если кто подскажет стабильную либу + RS-485 железяку для Modbus RTU для нормальной работы Modbus slave под ESP8266 Wemos буду признателен. Переделывать под ESP32 лень)
Насколько я понимаю, действовать я должен так: для ESP я компилирую код, который будет подключаться по TCP к MQTT серверу WB и обмениваться сообщениями, с этим вопросов нет, тут все просто, если надо будет кому, я потом опишу.
На стороне WB мне нужно создать некое виртуальное устройство , чтобы контроллер мог общаться с моей ESPшкой.
Пробовал это делать через Rules через defineVirtualDevice ,но тут 2 проблемы:
1). Во первых если я задаю , к примеру, значение через
mosquitto_pub -t "/devices/ESP/controls/Temperature" -m "22"
, то канал в “MQTT Channels” и отладка по mosquitto_sub обновляется нормально, но событие whenChanged не срабатывает. Хотя, если я вешаю событие на type: “switch”,
mosquitto_pub -t "/devices/ESP/controls/sw/on" -m "1"
то whenChanged работает как надо
код правил вот такой:
defineVirtualDevice("ESP", {
title: "Отопление",
cells: {
"Temperature": {
type: "Temperature",
},
"sw": {
type: "switch",
value: false,
}
}
})
defineRule("test_esp", {
whenChanged: "ESP/Temperature",
then: function (newValue, devName, cellName) {
log.info("TEST {} ",newValue);
}
})
2). И второе, если я задаю defineVirtualDevice чисто в Rules, то не вижу контролов в Devices/Widgets. Как мне его определить глобально в систему? Через wb-mqtt-serial.conf ?