Проблема при выполнении cron задания из wb-rules

Столкнулся с такой проблемой - есть виртуальное устройство, в котором есть параметры времени работы определенного устройства (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 задача эти изменения не видит.

Версия:

Еще на всякий случай дополнение - изменения в топиках через home assistant делаю так (кусок из configuration.yaml home assistant):

mqtt:
  number:
    - unique_id: flower_illumination_loggia_time_from_minutes
      name: "Время вкл, минут"
      state_topic: "/devices/flower_illumination_loggia/controls/TimeFromMinutes"
      command_topic: "/devices/flower_illumination_loggia/controls/TimeFromMinutes"
      min: 0
      max: 59
      mode: "box"
      retain: true
      unit_of_measurement: m
      icon: "mdi:timer-star-outline"

Добрый день!

По вопросу управления из Home Assistant я рекомендую обратиться в их поддержку для получения более детальной информации.

Технически я бы предложил следующий подход:

  1. Просмотреть, какие публикации делает Wiren Board в MQTT-топики.
  2. Проверить, какие публикации или подписки ожидает Home Assistant и отправляет.

Судя по описанному поведению, вероятно, каких-то публикаций или настроек не хватает.

Разобрался вроде. Нужно из Home Assistant отправлять команду на изменение в топик, который заканчивает на /on

Например, у меня было так:

command_topic: "/devices/flower_illumination_loggia/controls/TimeFromMinutes"

а надо так:

command_topic: "/devices/flower_illumination_loggia/controls/TimeFromMinutes/on"
2 лайка