Установка интеграции с Z-Way

Добрый вечер.
Установил в WB модуль для работы с z-wave.

Устанавливаю интеграция в z-way согласно инструкции - Подключение Z-Wave устройств к контроллеру Wiren Board — Wiren Board
На шаге “Установка интеграции” в поиске находится несколько вариантов:

  • Wiren Board MQTT Integration Native (версия 2.1.1)
  • Wiren Board MQTT Integration (версия 1.5.0)
  • Wiren Board MQTT import (версия 1.0.0)

Какой корректный и в чем различия?

Попробовал установить “Wiren Board MQTT Integration Native” (т.к. по дате выпуска этот самый свежий), топики MQTT в интерфейсе WB появились, но значения не обновляются при изменении статуса датчика в Z-Way.

Вроде разобрался, поставил по очереди все 3.

Получилось следующее:

  • Wiren Board MQTT Integration Native (версия 2.1.1) - это для свежих контроллеров wirenboard
  • Wiren Board MQTT Integration (версия 1.5.0) - это для старых контроллеров (до wb-2304)
  • Wiren Board MQTT import (версия 1.0.0) - это для того чтобы отправлять данные топиков ИЗ wirenBoard в Z-Way.

После того как по очереди поставил все и потом вернулся к Wiren Board MQTT Integration Native - значения топиков в mqtt стали обновляться.

И сразу дополнительный вопрос - есть где-то на github версия 2.1.1 Wiren Board MQTT Integration Native? А то тут GitHub - wirenboard/wb-mqtt-zway-plugin: Publishes the status of devices to a MQTT topic and is able to set values based on subscribed topics. только 2.0.0. Хотел некоторые изменения внести.

Добрый день.

Посмотрите здесь — GitHub - Z-Wave-Me/WBMQTTNative: Publishes the status of devices to a MQTT topic and is able to set values based on subscribed topics.

Да, похоже это оно. Спасибо.

Добавил в код модуля к устройствам с батареей топик в метаданные, с временем последней отправки updatetime. Теперь в метаданных датчика есть это значение (скрин из MQTT Explorer):

но не могу к нему получить доступ через dev['zway-2/Battery (2) 2-0-128#updatetime'], получаю undefined . Делаю согласно документации по доступам к meta топикам - GitHub - wirenboard/wb-rules: Rule engine for Wiren Board

Подскажите, что я делаю не так?

Используйте trackMqtt():

trackMqtt('/devices/zway-2/controls/Battery (2) 2-0-128/meta/updatetime', function(message){
  log(JSON.parse(message.value));
});

Спасибо. Попробовал читать так - работает. Но есть одна проблема - если выполняю это задания по cron (например раз в миниту) - то получается что первый раз эта функция выполняется 1 раз, в следующий раз - уже 2 раза, еще в следующий - 3 раза и т.д. до бесконечности растет количество раз выполнения.
Вот пример кода:

defineRule("sensor_zwave_check_status", {
  when: cron("00 */1 * * *"),
  then: function () {
      trackMqtt('/devices/zway-2/controls/Battery (2) 2-0-128/meta/updatetime', function(message){
        var updateTime = message.value;
        var dateNow = Math.floor(Date.now() / 1000);
        var different = dateNow - updateTime;
        log("error:{}, updateTime:{}, now:{}, different:{}", 'test test test', updateTime, dateNow, different);
      });
  }
});

вот как это выглядит в логах:

Подскажите в чем ошибка?

Получается, что это все же какая-то подписка на топик, а мне надо единоразово прочитать. Ну и также не понятно почему не работает этот вариант, который описан в вашей документации https://github.com/wirenboard/wb-rules/blob/master/README.md#доступ-к-топикам-meta. Он бы как раз более чем подошел.

Доступ может быть осуществлен к meta-топикам согласно конвенции. Чтобы следить за произвольным топиком — нужно использовать trackMqtt().
В вашем случае нужно сделать так:

var updateTime = 0;

trackMqtt('/devices/zway-2/controls/Battery (2) 2-0-128/meta/updatetime', function(message){
  updateTime = message.value;
});

defineRule("sensor_zwave_check_status", {
  when: cron("00 */1 * * *"),
  then: function () {
    var dateNow = Math.floor(Date.now() / 1000);
    var different = dateNow - updateTime;
    log("error:{}, updateTime:{}, now:{}, different:{}", 'test test test', updateTime, dateNow, different);
  }
});

Да, так заработало, спасибо.

Сюда GitHub - Z-Wave-Me/WBMQTTNative: Publishes the status of devices to a MQTT topic and is able to set values based on subscribed topics. возможно отправить Pull request для добавление updateTime? Мне кажется это достаточно полезная информация, мониторить что устройство не отвалилось. А то на текущий момент об этом не как не узнать (что датчик z-wave отвалился).

В общем на всякий случай сделал - Add updateTime to meta topic for device with battery by SergeSpinoza · Pull Request #1 · Z-Wave-Me/WBMQTTNative · GitHub