Как правильно подключить Ватериус к Wirenboard?

Добрый вечер.
Есть такое устройство - Ватериус. Я настроил его на подключение к брокеру Вайренборда, MQTT explorer отображает их, но в каналах MQTT они не отображаются и соответсвенно в устройствах их тоже нет. Помогите сделать так, чтобы Ватериус отображался в устройствах. Спасибо.

Здравствуйте.

Это происходит потому, что Ватериус пишет в mqtt не в нашей нотации (соглашении о структуре топиков). Это решаемо, надо написать конвертер на wb-rules. Можете попробовать сами, немного информации и примеров есть тут: Подключение сторонних устройств по MQTT — Wiren Board

Или пришлите топики Ватериуса и их содержимое, можем помочь написать для вас пример скрипта на wb-rules. Лучше всего список топиков получить так:

mosquitto_sub -t '/<укажите>/<путь_к_ватериусу>/#' -v

Александр, спасибо за ваш ответ.
Если я правильно понимаю то правильный запрос по Вашему примеру выглядит так? Какой ожидаемый вывод, у меня ничего нет в результате запроса (скриншот 2)

mosquitto_sub -t '/waterius/kitchen/#' -v


Сам ватериус описывает свои топики [здесь].(waterius/Export.md at master · dontsovcmc/waterius · GitHub)

Попробуйте так

mosquitto_sub -t 'waterius/#' -v

Ожидаемый вывод списка топиков с путями изначениями. Гит видел, хочется реальные тоже глянуть и текстом лучше всего.

Топики Ватериуса.txt (3,2 КБ)

// Waterius2Wirenboard.js

var topic = "waterius/toilet"; //Указываем id Ватериуса указанный в настройках (mqtt topic). Сюда Ватериус будет слать данные.

var device_id = "waterius2"; //Придумайте уникальный id устройства в WirenBoard. Это адрес Виртуального устройства WirenBoard

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());
    }
});