Добрый день, подскажите пожалуйста как реализовать следующее правило. Имеется устройство с которого я считываю порядка 20 дискретных алармов. мне нужно реализовать чтобы при с работке одного из 20 алармов отправлялся email, только в случаешь если они все были 0 и один из них стал 1. я попробовал через asSoonAs но как выяснилось там больше 9 -10 условий правило перестает выполнятся.
Может есть опыт создания такого правила. Спасибо!
Здравствуйте!
Есть специальный модуль для уведомлений (отправки e-mail и sms). Про него можно почитать здесь: Модуль уведомлений — Wiren Board
Для отслеживания состояний дискретных сигналов все же нужно использовать правило, которое будет уже в свою очередь активировать отправку уведомлений.
Довольно странно. Какой контроллер используете и какие версии пакетов установлены (проверить командой dpkg -l | grep wb-
).
Попробуйте использовать whenChanged вместо asSoonAs.
Пришлите минимальный фрагмент правила для воспроизведения проблемы.
defineRule({
asSoonAs: function myFuncO () {
return dev["Omron-cold_4"]["Fault: VLC Fan condenser"] || dev["Omron-cold_4"]["Alarm: Low level oil"]
|| dev["Omron-cold_4"]["Fault: relay flow"] || dev["Omron-cold_4"]["Fault: pump 1"]
|| dev["Omron-cold_4"]["Alarm: outlet pres compressor 1"] || dev["Omron-cold_4"]["Fault: compressor 1"]
|| dev["Omron-cold_4"]["Fault: relay flow oil compressor 1"] || dev["Omron-cold_4"]["Fault: motor compressor 1"]
|| dev["Omron-cold_4"]["Fault: VLC compressor 1"] || dev["Omron-cold_4"]["Alarm: inlet pres compressor 1"]
|| dev["Omron-cold_4"]["Fault: pump 2"] || dev["Omron-cold_4"]["Fault: compressor 2"]
|| dev["Omron-cold_4"]["Fault: relay flow oil compressor 2"] || dev["Omron-cold_4"]["Fault: motor compressor 2"]
|| dev["Omron-cold_4"]["Fault: VLC compressor 2"] || dev["Omron-cold_4"]["Alarm: inlet pres compressor 2"]
|| dev["Omron-cold_4"]["Alarm: outlet pres compressor 2"] ;
},
then: function myFuncOne (newValue, devName, cellName) {
Notify.sendEmail("email@yandex.ru", "Alarm", "Машина требует внимания");
}
});
dpkg -l | grep wb-
ii python-wb-common 1.3.3 all Wiren Board Python common library and helpers
ii python-wb-io 1.2.3 armhf A module to control WB IO channels.
ii python3-wb-mcu-fw-updater 1.0.10 all Wiren Board modbus devices firmware update and modbus bindings python libraries (python 3)
ii python3-wb-update-manager 1.0.2 all Wirenboard software updates and release management tool - python3 library
ii u-boot-tools 2:2017.03+wb-2 all transitional package - use u-boot-tools-wb instead
ii u-boot-tools-wb 2:2017.03+wb-2 armhf companion tools for Das U-Boot bootloader
ii wb-configs 2.1.0 all Default common config files for Wiren Board
ii wb-configs-stretch 2.1.0 all Default stretch-specific config files for Wiren Board
ii wb-dt-overlays 1.3 all Device tree overlays for Wiren Board devices
ii wb-essential 1.0 all Wirenboard essential packages
ii wb-homa-ism-radio 1.17.3 all MQTT driver for WB HomA for RFM69 ISM radio
ii wb-homa-w1 2.1.0 all transitional dummy package
ii wb-hwconf-manager 1.40.0 all Provides infrastructure for hardware re-configuration via Device Tree overlays
ii wb-knxd-config 1.0.1 armhf KNXD Configurator for Wiren Board
ii wb-mcu-fw-flasher 1.0.7 armhf Firmware update tool for Wiren Board Modbus devices (WB-M*)
ii wb-mcu-fw-updater 1.0.10 all Wiren Board modbus devices firmware update tool (python 3)
ii wb-mqtt-adc 2.0.10 armhf Wiren Board Smart Home MQTT ADC driver (WB-specific) compatible with HomA conventions
ii wb-mqtt-confed 1.2.7 armhf Configuration Editor Backend
ii wb-mqtt-dac 1.1.2 all wb-rules-based IIO DAC driver for WB MQTT
ii wb-mqtt-db 2.1.0 armhf Wiren Board database logger
ii wb-mqtt-db-cli 1.2.1 all CLI for wb-mqtt-db
ii wb-mqtt-gpio 2.4.0 armhf Wiren Board Smart Home MQTT generic sysfs GPIO driver compatible with HomA conventions
ii wb-mqtt-homeui 2.5.7 all Wiren Board Web UI web interface
ii wb-mqtt-knx 0.1.2 armhf Wiren Board MQTT to KNX gateway
ii wb-mqtt-mbgate 1.0.1 armhf Wiren Board MQTT to Modbus gatewayii wb-mqtt-opcua 0.1.0 armhf Wiren Board MQTT to OPC UA gatewayii wb-mqtt-serial 2.22.1-wb5 armhf Wiren Board Smart Home MQTT serial protocol driver
ii wb-mqtt-w1 2.1.0 armhf Wiren Board Smart Home MQTT generic 1-Wire (w1) driver compatible with HomA conventions
ii wb-release-info 1.0-stable~wb6+stretch~20210914172930 all release information package for Wirenboard
ii wb-rules 2.8.1 armhf Wiren Board Rule Engine
ii wb-rules-system 1.6.13 all Default system rules for Wiren Board
ii wb-suite 1.2 all Wirenboard vendor software set
ii wb-test-suite 1.24 all Wiren Board functional testing suite
ii wb-update-manager 1.0.2 all Wirenboard software updates and release management tool
ii wb-utils 2.3.1 all Wiren Board command-line utils
Пока не получается воспроизвести, все отрабатывает штатно. Версия движка правил та же (2.8.1).
Использую вот такой пример:
defineRule({
asSoonAs: function myFuncO () {
return dev["wb-gpio"]["EXT1_DR1"] || dev["wb-gpio"]["EXT1_DR2"] || dev["wb-gpio"]["EXT1_DR3"] ||
dev["wb-gpio"]["EXT1_DR4"] || dev["wb-gpio"]["EXT1_DR5"] || dev["wb-gpio"]["EXT1_DR6"] ||
dev["wb-gpio"]["EXT1_DR7"] || dev["wb-gpio"]["EXT1_DR8"] || dev["wb-gpio"]["EXT1_DR9"] ||
dev["wb-gpio"]["EXT1_DR10"] || dev["wb-gpio"]["EXT1_DR11"] || dev["wb-gpio"]["EXT1_DR12"] ||
dev["wb-gpio"]["EXT1_DR13"] || dev["wb-gpio"]["EXT1_DR14"] ||
dev["wb-gpio"]["EXT2_R3A1"] ||
dev["wb-gpio"]["EXT2_R3A2"] ||
dev["wb-gpio"]["EXT2_R3A3"] ||
dev["wb-gpio"]["EXT2_R3A4"] ||
dev["wb-gpio"]["EXT2_R3A5"] ||
dev["wb-gpio"]["EXT2_R3A6"] ||
dev["wb-gpio"]["EXT2_R3A7"] ||
dev["wb-gpio"]["EXT2_R3A8"];
},
then: function myFuncOne (newValue, devName, cellName) {
log.info("Function was executed by " + devName + "/" + cellName);
}
});
В логах получаю:
2021-10-22 10:48:59Function was executed by wb-gpio/EXT1_DR10
2021-10-22 10:52:26Function was executed by wb-gpio/EXT1_DR10
2021-10-22 10:52:28Function was executed by wb-gpio/EXT1_DR10
2021-10-22 10:53:05Function was executed by wb-gpio/EXT2_R3A8
2021-10-22 10:53:09Function was executed by wb-gpio/EXT2_R3A8
2021-10-22 10:53:28Function was executed by wb-gpio/EXT2_R3A7
Может, какой-то аларм всегда в 1, поэтому условие перестает работать?
Перепроверю еще раз.
Спасибо за помощь, действительно мой косяк, в конфигурационном файле в двух топиках в конце пробел был. Я при создание правила его удалил. Осталось разобраться почему письма в спам летят
)))