// Скрипт для отображения данных от Ватериуса в Wirenboard // Версия: 0.1 // Дата: 2025-01-26 // Настройка // // topic: Укажите значение параметра "mqtt topic" из настроек Ватериуса. Сюда Ватериус будет слать данные по mqtt. // Описание всех полей данных и настройке: https://github.com/dontsovcmc/waterius/blob/master/Export.md var topic = "waterius/toilet"; // Скрипт var device_id = topic.replace("/", "_"); defineVirtualDevice(device_id, { title: "Ватериус (Туалет)", cells: { "Горячая вода": { type: "value", units: "m^3", precision: 0.001, order: 0, value: 0, }, "Холодная вода": { type: "value", units: "m^3", precision: 0.001, order: 1, value: 0, }, "Вес горячей воды": { type: "value", units: "имп/литр", precision: 0, order: 2, value: 0, }, "Вес холодной воды": { type: "value", units: "имп/литр", precision: 0, order: 2, value: 0, }, "Период пробуждения": { type: "value", units: "мин", precision: 0, order: 2, value: 0, }, } }); trackMqtt(topic + "/ch0", function(message){ dev[device_id + "/Горячая вода"] = parseFloat(message.value); }); trackMqtt(topic + "/ch1", function(message){ dev[device_id + "/Холодная вода"] = parseFloat(message.value); }); trackMqtt(topic + "/period_min", function(message){ dev[device_id + "/Период пробуждения"] = parseInt(message.value); }); trackMqtt(topic + "/f0", function(message){ dev[device_id + "/Вес горячей воды"] = parseInt(message.value); }); trackMqtt(topic + "/f1", function(message){ dev[device_id + "/Вес холодной воды"] = parseInt(message.value); }); // с версии 1.0.0 (если включен в настройках Ватериуса флаг "homeassistant discovery"). Если выключен, Ватериус будет слать параметры в отдельных топиках. trackMqtt(topic, function(message){ try { var data = JSON.parse(message.value); dev[device_id + "/Горячая вода"] = data["ch0"]; dev[device_id + "/Холодная вода"] = data["ch1"]; dev[device_id + "/Период пробуждения"] = data["period_min"]; dev[device_id + "/Вес горячей воды"] = data["f0"]; dev[device_id + "/Вес холодной воды"] = data["f1"]; } catch (e) { log("Failed to parse waterius data: " + e.message); } }); // с версии >=0.11.0 defineRule("Установить Период пробуждения (мин)", { whenChanged: device_id + "/Период пробуждения", then: function (newValue) { publish(topic + "/period_min/set", newValue.toString()); } }); // с версии >=0.11.9 defineRule("Установить Горячую воду (м3)", { whenChanged: device_id + "/Горячая вода", then: function (newValue) { publish(topic + "/ch0/set", newValue.toString()); } }); // с версии >=0.11.9 defineRule("Установить Холодную воду (м3)", { whenChanged: device_id + "/Холодная вода", then: function (newValue) { publish(topic + "/ch1/set", newValue.toString()); } }); // с версии >=0.11.9 defineRule("Установить вес Горячей воды", { whenChanged: device_id + "/Вес горячей воды", then: function (newValue) { publish(topic + "/f0/set", newValue.toString()); } }); // с версии >=0.11.9 defineRule("Установить вес Холодной воды", { whenChanged: device_id + "/Вес холодной воды", then: function (newValue) { publish(topic + "/f1/set", newValue.toString()); } }); // TODO // // Определенно нужно добавить информацию об уровне заряда батареи!!! // // Документация // // https://wirenboard.com/wiki/MQTT // https://sprut.ai/article/put-ot-glupogo-chaynika-k-umnomu-redmond