Здравствуйте! Мне необходимо при значении, приходящему в виртуальное устройство по MQTT, и в зависимости от него, выполнять какие-то действия.
Пример: пришло "off", записываем в нужный топик "false". Пришло "heat", записываем в один топик "true", во второй "1".
Есть два вопроса:
Не могу понять, как мне запускать правило по событию “в нужный топик пришло свежее значение”. Причём важно, что правило должно срабатывать только если пришло свежее значение, и опираться именно на него. Нас интересует второе правило, где сейчас я написал whenChanged: ["hwmon/CPU Temperature"], как placeholder.
Почему-то сейчас, при записи в топик devices/IntesisboxINMBSDAI001R000_14_virt_mode/controls/mode_command_topic значения, допустим, “off”, и после изменения температуры CPU (триггер сработки правила), не выключается нужный параметр целевого устройства. Перепробовал уже и MQTT топик, и через device. Как сделать правильно?
Если вы создаете виртуальное устройство средствами wb-rules, то и изменять его топики вы должны тоже средствами wb-rules. Если изменять топики сторонними средствами, wb-rules их не видит. Думаю, ваша проблема в этом.
Чтобы решить вашу задачу, вам надо топик создать также сторонними средствами. А дальнейшие действия можно выполнять средствами wb-rules. Тот же whenChanged обеспечит вам нужную функциональность, если топик будет создан согласно нашим конвенциям.
Неверно. Для установки нового следует писать новое значение в
“devices/IntesisboxINMBSDAI001R000_14_virt_mode/controls/mode_command_topic/on”
В таком случае драйвер, обрабатывающий этот контрол - уже изменит и само значение и правило - сработает.
Почему-то сейчас при отправке в /devices/IntesisboxINMBSDAI001R000_14_virt_mode/controls/mode_command_topic/on любого значения, в MQTT Channels в топике остаётся значение unknown. Если же отправить в /devices/IntesisboxINMBSDAI001R000_14_virt_mode/controls/mode_command_topic значение, оно появится в топике в MQTT Channels.
При попытке записи в /devices/IntesisboxINMBSDAI001R000_14_virt_mode/controls/mode_command_topic/on в логе появляется ошибка:
06-03-2024 16:47:19.760 ERROR: [backend] failed to process /on request to IntesisboxINMBSDAI001R000_14_virt_mode/mode_command_topic: This control is not writable