Столкнулся с такой проблемой - есть виртуальное устройство, в котором есть параметры времени работы определенного устройства (TimeFromHours, TimeFromMinutes, TimeToHours, TimeToMinutes).
Само виртуальное устройство создается так:
var devFlowerIllumination = "flower_illumination_loggia";
var zigbeePowerSocket = "zigbee_power_socket_id_60";
defineVirtualDevice("flower_illumination_loggia", {
title: "Подсветка цветов лоджия",
cells: {
Name: {
title: "Название",
type: "text",
value: "Подсветка"
},
ON_OFF: { // активация подсветки 0-выкл 1-включен
title: "Смена состояния подсветки (вкл/откл)",
type: "switch",
value: false,
},
Mode: { // режим 0-ручной 1-по расписанию
title: "Работа по расписанию",
type: "switch",
value: false,
},
RelayState: { // состояние реле 0 ВЫКЛ, 1 ВКЛ
title: "Состояние реле",
type: "text",
value: false,
},
TimeFromHours: {
title: "Время вкл, часов",
type: "range",
value: 8,
max: 23,
min: 0
},
TimeFromMinutes: {
title: "Время вкл, минут",
type: "range",
value: 0,
max: 59,
min: 0
},
TimeToHours: {
title: "Время откл, часов",
type: "range",
value: 21,
max: 23,
min: 0
},
TimeToMinutes: {
title: "Время откл, минут",
type: "range",
value: 0,
max: 59,
min: 0
}
}
});
Есть cron задача, которая должна делать определенные действия в зависимости от времени. Для упрощения пример вывода запроса параметров виртуального устройства в указанной крон задаче (проблема уже на этом этапе видна, о которой ниже):
// Работа по расписанию
defineRule("cron_flower_illumination_scheduler", {
when: cron("*/5 * * * *"),
then: function () {
if (dev[devFlowerIllumination + '/Mode'] == true) {
var time = new Date();
var zigbeePowerSocketStatus = dev[zigbeePowerSocket + '/state'];
log.info(time);
log.info("TimeFrom: {}:{}, TimeTo: {}:{}", dev[devFlowerIllumination + '/TimeFromHours'], dev[devFlowerIllumination + '/TimeFromMinutes'], dev[devFlowerIllumination + '/TimeToHours'], dev[devFlowerIllumination + '/TimeToMinutes']);
}
}
});
Также есть настроенная интеграция с Home Assistant, согласно документации: Установка Home Assistant на контроллер Wiren Board — Wiren Board (так же запущенное на wirenboard).
Проблема заключается в следующем: если я меняю значения “TimeFromHours, TimeFromMinutes, TimeToHours, TimeToMinutes” виртуального устройства flower_illumination_loggia через стандартный интерфейс wirenboard (вкладка “Устройства”) - то все работает корректно, и в логах, что пишутся из cron задачи, я вижу корретные измененные значения “TimeFromHours, TimeFromMinutes, TimeToHours, TimeToMinutes”.
Если же я меняю эти значения через Home Assistant - то в UI WirenBoard “Каналы MQTT” я вижу что значения поменялись, и в окне что на скрине выше - тоже значения меняются на те что установил в Home Assistant. А в логах, что пишутся из cron задачи - остаются старые значения и не меняются пока я их не поменяю через интерфейс WirenBoard. Т.е. получается, что внутри cron задачи dev[…] возвращает старое значение, которое было сделано через UI wirenboard.
06-01-2025 16:48:45.010 [wb-rules] INFO: [rule info] TimeFrom: 8:0, TimeTo: 16:41
06-01-2025 16:48:45.002 [wb-rules] INFO: [rule info] 2025-01-06 16:48:45.001+03:00
Вот меняю через Home Assistant и получаю следующее (поменял минуты отключения на 55):
В логах вижу старое значение параметров, которое не меняется:
06-01-2025 16:51:00.012 [wb-rules] INFO: [rule info] TimeFrom: 8:0, TimeTo: 16:41
06-01-2025 16:51:00.007 [wb-rules] INFO: [rule info] 2025-01-06 16:51:00.006+03:00
В чем может быть проблема такого странного поведения и как это можно исправить? Т.к. получается, что через Home Assistant значения как бы меняются, но cron задача эти изменения не видит.