Попробовал установить “Wiren Board MQTT Integration Native” (т.к. по дате выпуска этот самый свежий), топики MQTT в интерфейсе WB появились, но значения не обновляются при изменении статуса датчика в Z-Way.
Добавил в код модуля к устройствам с батареей топик в метаданные, с временем последней отправки updatetime. Теперь в метаданных датчика есть это значение (скрин из MQTT Explorer):
Спасибо. Попробовал читать так - работает. Но есть одна проблема - если выполняю это задания по 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);
});
}
});
Доступ может быть осуществлен к 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);
}
});