Примеры правил в ПО Абром Софт
На этой странице собраны готовые правила AbromSoft для типовых задач на объекте Wirenboard: отопление, свет и кнопки, шторы, вытяжка, кондиционеры, сцены и оповещения. Каждый пример можно скопировать в config.yaml, заменить имена устройств и каналов на свои и сразу применить.
Страницу удобно отдавать ИИ. Если вы ставите задачу ChatGPT, Claude или другому ассистенту, приложите адрес этой страницы и напишите: «Сделай правило для AbromSoft по примерам с этой страницы, это YAML для config.yaml, а не JS для wb-rules». Ассистент возьмёт подходящий пример за образец, а вы получите правило, которое видно в интерфейсе AbromSoft, имеет статус и обработку ошибок датчиков.
Как устроен config.yaml
- Верхний уровень файла — тип правила: heat, switchButton, custom и так далее. Под ним идёт список правил этого типа, каждое начинается с дефиса.
- У каждого правила есть поле name. Имя должно быть уникальным внутри своего типа и записываться латиницей без пробелов.
- Топик Wirenboard записывается как устройство/канал, например wb-mr6c_12/K3 или wb-msw-v3_45/Temperature. Префикс /devices/ и /controls/ не нужен.
- Несколько каналов подряд записываются диапазоном: wb-mr6c_12/K$1-6 раскрывается в K1, K2, K3, K4, K5, K6, а wb-led_202/Channel $1-4 — в Channel 1…Channel 4. Поддерживается только диапазон через дефис, перечисление через запятую не работает.
- Задержки в полях onDelayMillis, offDelayMillis, onDelay и offDelay указываются в миллисекундах: 3 минуты — это 180000.
- Неизвестные поля AbromSoft молча пропускает. Если правило ничего не делает, первым делом проверьте написание полей по примерам ниже.
- Поле id AbromSoft дописывает в конфиг сам, задавать и удалять его вручную не нужно.
Общие поля любого правила
Эти два поля можно добавить в любое правило со страницы.
- enabled — включено ли правило при запуске, по умолчанию true.
- errorHandling — что делать, если датчик или модуль правила ушёл в ошибку. По умолчанию IGNORE: правило продолжает работать. DISABLE_IMMEDIATELY отключает правило при первой ошибке и включает обратно, когда ошибка ушла. DISABLE_TEMPORARILY отключает правило после errorCount ошибок на disableDurationSeconds секунд.
errorHandling: mode: DISABLE_TEMPORARILY errorCount: 3 disableDurationSeconds: 300
Синтаксис условий
Условия используются в полях onCondition, offCondition, changeCondition, condition, а также в значениях onValue, offValue, onMessage, offMessage и arguments.
- {устройство/канал} — текущее значение топика, например {wb-mr6c_12/K3}.
- Сравнение: ==, !=, >, <, >=, <=. Логика: &&, ||, !. Арифметика: +, -, *, /.
- changed(выражение) — истинно в момент, когда значение выражения изменилось. Так ловятся нажатия по счётчикам и срабатывания входов.
- NOW — текущее время, time(21:00) — время суток, day(FRIDAY) — день недели.
- Значения в условиях — только числа. Текст в сообщения подставляется через {} и список arguments.
onCondition: "{wb-msw-v3_45/Temperature} >= 25 && {wb-msw-v3_45/Temperature} <= 30"
onCondition: "NOW >= time(21:00) && day(FRIDAY)"
Часовой пояс и координаты объекта
NOW, time() и day() считаются в часовом поясе из блока settings. Если пояс не задан или задан неверно, правила по времени срабатывают со сдвигом. Значение — идентификатор IANA: Europe/Moscow, Asia/Yekaterinburg, Asia/Bishkek, а не название города по-русски.
В том же блоке задаются координаты объекта в десятичных градусах. Их берут правила «sun» и «weather», если у правила свои lat и lon не указаны.
settings:
timeZone: Europe/Moscow
location:
lat: 55.974932
lon: 49.268344
Отопление: термостат по датчику комнаты и пола
Правило «heat» управляет реле электрического или водяного отопителя. С одним датчиком roomTemp держит температуру воздуха. Если добавить floorTemp, пол дополнительно держится между минимальной и максимальной температурой. Датчик пола без датчика комнаты не работает: для тёплого пола без комнатного датчика указывайте датчик пола в roomTemp.
В интерфейсе правило создаёт устройство HEAT_имя с включением, уставкой и границами пола.
heat:
- name: hall_floor
relays: ['wb-mr6cu_126/K2']
roomTemp: 'wb-m1w2_205/External Sensor 1'
floorTemp: 'wb-ms_123/Temperature'
inverted: false # true для нормально-замкнутых клапанов: 0 = греем
defaultState: true # включено при первом запуске
defaultPrefTemp: 26 # уставка воздуха, °C
defaultMinFloorTemp: 20
defaultMaxFloorTemp: 35
Отопление: тёплый пол по таймерам
Правило «heatTimer» греет не по гистерезису, а циклами внутри получасового окна. Пока в комнате холоднее уставки, реле работает defaultTimerBefore минут из 30. После выхода на уставку — defaultTimerAfter минут из 30. Так плита пола не перегревается от непрерывной подачи тепла.
В интерфейсе — устройство HEATTIMER_имя с включением, уставкой и обоими таймерами.
heatTimer:
- name: bathroom_floor
relays: ['wb-mr6cu_126/K3']
roomTemp: 'wb-m1w2_205/External Sensor 2'
inverted: false
defaultState: false
defaultPrefTemp: 26
defaultTimerBefore: 19 # минут нагрева из 30, пока холодно
defaultTimerAfter: 11 # минут нагрева из 30 после выхода на уставку
Чем отличаются «heat» и «heatTimer» и какой выбрать для водяного и электрического отопления, мы разбирали в статье «Как настроить климат в ПО Абром? heat или heatTimer? Особенности работы с водяным и электрическим отоплением».
Отопление: сдвиг всех уставок дома и погодная кривая
Правило «globalThermostat» одной ручкой сдвигает сразу несколько уставок, например «весь дом минус 2°C на время отъезда». Если подключить «weatherCurve», сдвиг считается автоматически по уличной температуре: при −20°C на улице уставки поднимаются на 3°C, при +10°C опускаются на 2°C, между точками значение считается по прямой.
weather:
- name: yandex
key: "ВАШ_КЛЮЧ_ЯНДЕКС_ПОГОДЫ"
intervalMinutes: 60 # не меньше 15, Яндекс ограничивает запросы
# lat: "55.974932" # необязательно, по умолчанию из settings.location
# lon: "49.268344"
weatherCurve:
- name: house
coldOutdoor: -20
coldOutput: 3
warmOutdoor: 10
warmOutput: -2
globalThermostat:
- name: house
quickStep: 1
min: -5
max: 5
targets:
- HEAT_hall_floor/pref_temp
- HEATTIMER_bathroom_floor/pref_temp
weather:
curveName: house
sourceTopic: WEATHER_yandex/temperature
Свет: выключатель на группу светильников
Правило «switchButton» слушает вход, к которому подключена кнопка, распознаёт тип нажатия и переключает выходы. Тип нажатия задаётся в tapType: SINGLE — одиночное, DOUBLE — двойное, TRIPLE — тройное, HOLD — зажатие, CLICK — одиночное, которое срабатывает и при двойном и тройном. На одну кнопку можно повесить несколько правил с разными tapType.
По умолчанию правило считает группу включённой, если включён хотя бы один выход. Поле onCondition задаёт это явно.
switchButton:
- name: street_light
topic: wb-gpio/EXT1_IN13
outputTopics: ['wb-mr6c_59/K3', 'wb-mr6c_59/K4']
tapType: SINGLE
onValue: 1
offValue: 0
onDelayMillis: 0 # необязательно, по умолчанию 0
offDelayMillis: 0 # необязательно, по умолчанию 0
onCondition: '{wb-mr6c_59/K3} == 1 || {wb-mr6c_59/K4} == 1' # необязательно
Подробнее о правилах «switchButton» и «conditionButton» — в статье «Как привязать выключатель к свету в AbromSoft? Типы "Кнопка" и "Кнопка с условием"».
Свет: мастер-выключатель на зажатие
Зажатие кнопки у входной двери выключает весь свет на объекте. onValue и offValue равны 0, поэтому любое срабатывание только выключает. Диапазоны K$1-6 и Channel $1-4 заменяют длинный список каналов.
switchButton:
- name: master_off
topic: wb-gpio/EXT1_IN1
outputTopics:
- wb-mr6cv3_24/K$1-6
- wb-mr6cv3_26/K$1-6
- wb-mr6cv3_46/K$1-6
- wb-mr6cv3_68/K$1-6
- wb-led_202/Channel $1-4
- wb-led_205/Channel $1-4
tapType: HOLD
onValue: 0
offValue: 0
Свет: кнопка через счётчик нажатий модуля
Модули WB-MR6C v3 и WB-MCM8 сами считают нажатия на входах. Правило «conditionButton» срабатывает на изменение выражения changeCondition, поэтому changed() от счётчика работает как нажатие кнопки. У «conditionButton» поля onDelayMillis и offDelayMillis обязательные.
conditionButton:
- name: kitchen_light
changeCondition: 'changed({wb-mr6cv3_26/Input 3 counter})'
outputTopics: ['wb-mr6cv3_24/K6']
onCondition: '{wb-mr6cv3_24/K6} == 1'
onValue: 1
offValue: 0
onDelayMillis: 0
offDelayMillis: 0
Как включить счётчики нажатий на входах модуля, мы показывали в статье «Настройка входов WB-MR6C через AbromSoft».
Шторы: открыть и закрыть по кнопке
Одиночное нажатие открывает штору на 100%, следующее закрывает в 0. Второе правило делает то же по двойному нажатию через счётчик модуля. Штора считается открытой, если она открыта на 70% и больше.
switchButton:
- name: bedroom_curtain
topic: wb-gpio/EXT1_IN1
outputTopics: ['dooya_0x0101/Position']
tapType: SINGLE
onValue: 100
offValue: 0
conditionButton:
- name: bedroom_curtain_double
changeCondition: 'changed({wb-mr6cv3_17/Input 5 Double Press Counter})'
outputTopics: ['dooya_0x0101/Position']
onCondition: '{dooya_0x0101/Position} >= 70'
onValue: 100
offValue: 0
onDelayMillis: 0
offDelayMillis: 0
Свет и шторы по восходу и закату
Время восхода и заката считает правило «sun» прямо на контроллере, без интернета и ключа. Координаты оно берёт из settings.location, а если у объекта своя точка — из полей lat и lon правила, их задают только вместе. Правило создаёт устройство SUN_имя с каналами sunrise и sunset: время в формате ЧЧ:ММ, оно пересчитывается каждые сутки.
Это время сравнивают с NOW в правиле «custom». Условие NOW == {SUN_home/sunrise} выполняется в минуту восхода, NOW == {SUN_home/sunset} — в минуту заката. Шторы открываются на восходе и закрываются на закате, уличный свет — наоборот.
sun:
- name: home
custom:
- name: blinds_by_sun
onCondition: "NOW == {SUN_home/sunrise}"
offCondition: "NOW == {SUN_home/sunset}"
outputTopics: ['wb-mr6c_40/K1']
onMessage: 1
offMessage: 0
onDelay: 0
offDelay: 0
isWithState: 1
- name: street_light_by_sun
onCondition: "NOW == {SUN_home/sunset}"
offCondition: "NOW == {SUN_home/sunrise}"
outputTopics: ['wb-mr6c_35/K2']
onMessage: 1
offMessage: 0
onDelay: 0
offDelay: 0
isWithState: 1
Команда уходит один раз в момент восхода или заката. Если контроллер был выключен в эту минуту, состояние выправится только на следующем восходе или закате — когда это важно, используйте канал isDay из следующего раздела.
Сумерки, сдвиги и положение солнца
Кроме времени правило «sun» публикует канал isDay: 1 между восходом и закатом, 0 ночью. По нему выход держит нужное состояние постоянно, а не только в момент восхода и заката: после перезагрузки контроллера свет и шторы сразу встанут как надо. В полярный день isDay всегда 1, в полярную ночь — 0, а sunrise и sunset остаются пустыми. За полярным кругом летом закат бывает после полуночи, например 00:05, — там тоже используйте isDay.
«conditionButton» для такой задачи не подходит: он реагирует только на наступление условия и переключает выход, поэтому на рассвете свет бы не погас. Нужно правило «custom» с двумя условиями.
custom:
- name: street_light_night
onCondition: "{SUN_home/isDay} == 0"
offCondition: "{SUN_home/isDay} == 1"
outputTopics: ['wb-mr6c_35/K$2-6']
onMessage: 1
offMessage: 0
onDelay: 0
offDelay: 0
isWithState: 1
Канал isDay удобно добавлять к другим условиям: например, свет по датчику двери, который включается только в темноте.
onCondition: '{SUN_home/isDay} == 0 && changed({wb-mcm8_138/Input 5}) && {wb-mcm8_138/Input 5} == 0'
Момент переключения isDay сдвигают полями правила. sunriseOffsetMinutes и sunsetOffsetMinutes переносят его на заданное число минут, отрицательное значение — раньше. horizon задаёт высоту солнца в градусах, при которой считаются восход и закат: по умолчанию -0.833, а -6 — гражданские сумерки, когда на улице ещё светло без фонарей. Фактическое время переключения со сдвигами видно в каналах dayStart и dayEnd, а sunrise и sunset остаются астрономическими. Если свету и шторам нужны разные сдвиги, заводят несколько правил «sun» с разными именами.
sun:
- name: streetlight
sunriseOffsetMinutes: 20
sunsetOffsetMinutes: -20
Ещё два канала показывают положение солнца, они обновляются каждые 10 секунд. elevation — высота солнца над горизонтом в градусах, отрицательная ночью. azimuth — направление на солнце в градусах от севера по часовой: 90 — восток, 180 — юг, 270 — запад.
Шторы на окнах, которые смотрят на юг, закрывают, когда солнце находится в секторе 180 плюс-минус 60 градусов и поднялось выше соседних домов, и открывают, когда оно ушло на запад или опустилось. Пороги разнесены на пару градусов, иначе на границе шторы будут дёргаться.
custom:
- name: south_blinds
onCondition: "{SUN_home/azimuth} >= 120 && {SUN_home/azimuth} <= 240 && {SUN_home/elevation} >= 15"
offCondition: "{SUN_home/azimuth} > 245 || {SUN_home/elevation} < 13"
outputTopics: ['wb-mr6c_40/K1']
onMessage: 1
offMessage: 0
onDelay: 0
offDelay: 0
isWithState: 1
Так же по высоте солнца можно включать свет: onCondition "{SUN_home/elevation} < -3" и offCondition "{SUN_home/elevation} >= -2". Порог сам смещается по сезону.
Светодиодные ленты
Правило «led» управляет одноцветной лентой с одной кнопки: нажатие включает и выключает, зажатие плавно меняет яркость. Правило «rgbLed» по нажатию запускает и останавливает плавный перебор цветов на RGB-ленте.
led:
- name: work_zone
button: wb-gpio/EXT1_IN12
led: wb-mrgbw-d-fw3_16/Channel 4 (W) Brightness
switch: wb-mrgbw-d-fw3_16/Channel 4 (W)
max: 100
rgbLed:
- name: living_rainbow
red: wb-mrgbw-d-fw3_16/Channel 2 (R) Brightness
green: wb-mrgbw-d-fw3_16/Channel 3 (G) Brightness
blue: wb-mrgbw-d-fw3_16/Channel 1 (B) Brightness
button: wb-gpio/EXT1_IN9
tapType: SINGLE
max: 100
Сцена: несколько шагов с задержкой
Правило «scene» по шагам выставляет значения в группы каналов: сначала включает каналы ленты, через секунду ставит яркость 30%. Сцену запускает запись 1 в канал run устройства SCENE_имя, например с кнопки.
scene:
- name: night_light
groups:
- outputTopics:
- wb-mrgbw-d-fw3_16/Channel 1 (B)
- wb-mrgbw-d-fw3_16/Channel 3 (G)
value: 1
delay: 0
- outputTopics:
- wb-mrgbw-d-fw3_16/Channel 1 (B) Brightness
- wb-mrgbw-d-fw3_16/Channel 3 (G) Brightness
value: 30
delay: 1000
switchButton:
- name: night_light_button
topic: wb-gpio/EXT1_IN14
outputTopics: ['SCENE_night_light/run']
tapType: SINGLE
onValue: 1
offValue: 1
Подробнее о сценах — в статье «Как настроить Сценарии в AbromSoft? Тип - Сцена».
Вытяжка по свету с задержкой выключения
Правило «custom» отправляет значение в выходы, когда выполняется условие. С isWithState: true оно помнит состояние и отправляет onMessage только при переходе условия в истину. Здесь вытяжка в санузле включается вместе со светом и выключается через 3 минуты после того, как свет погасили.
custom:
- name: toilet_fan
isWithState: true
onCondition: '{wb-mdm3_199/K1} == 1'
offCondition: '{wb-mdm3_199/K1} == 0'
onDelay: 0
offDelay: 180000 # 3 минуты в миллисекундах
onMessage: "1"
offMessage: "0"
outputTopics: ['wb-gpio/EXT4_ON4']
Автовключение: держать группу всегда включённой
С isWithState: false правило отправляет onMessage при каждой проверке, где условие истинно. Если кто-то выключил одно из реле, сумма становится меньше 5 и правило включает всё обратно.
custom:
- name: always_on_group
isWithState: false
onCondition: '{wb-mr6cv3_28/K3} + {wb-mr6cv3_23/K2} + {wb-mr6cv3_23/K3} + {wb-mr6cv3_213/K1} + {wb-mr6cv3_187/K3} < 5'
onMessage: "1"
outputTopics: ['wb-mr6cv3_28/K3', 'wb-mr6cv3_23/K2', 'wb-mr6cv3_23/K3', 'wb-mr6cv3_213/K1', 'wb-mr6cv3_187/K3']
Блок питания ленты включается вместе с любым каналом
custom:
- name: led_power_supply
isWithState: false
onCondition: '{wb-mrgbw-d-fw3_16/Channel 1 (B)} + {wb-mrgbw-d-fw3_16/Channel 2 (R)} + {wb-mrgbw-d-fw3_16/Channel 3 (G)} + {wb-mrgbw-d-fw3_16/Channel 4 (W)} >= 1'
onMessage: "1"
outputTopics: ['wb-mr6c_59/K1']
Свет по датчику открытия двери
Когда дверь открывается и свет выключен, правило включает свет. Через 5 минут после включения свет гаснет. Вход модуля WB-MCM8 переходит в 0 при открытии двери.
custom:
- name: bedroom_door_light
isWithState: true
onCondition: '{wb-mr6cv3_183/K5} == 0 && changed({wb-mcm8_138/Input 5}) && {wb-mcm8_138/Input 5} == 0'
offCondition: '{wb-mr6cv3_183/K5} == 1'
onDelay: 0
offDelay: 300000 # 5 минут
onMessage: "1"
offMessage: "0"
outputTopics: ['wb-mr6cv3_183/K5']
Если в комнате горит основной свет, гасить подсветку через 5 минут не нужно. Для этого в offMessage ставится не 0, а значение основного света: горит основной — подсветка остаётся включённой, не горит — выключается.
offMessage: "{wb-mr6cv3_174/K6}"
Несколько дверей в одну комнату объединяются через ||:
onCondition: '{wb-mr6cv3_188/K6} == 0 && ((changed({wb-mcm8_139/Input 1}) && {wb-mcm8_139/Input 1} == 0) || (changed({wb-mcm8_138/Input 5}) && {wb-mcm8_138/Input 5} == 0))'
Ворота и калитка: импульс сухим контактом
Привод ворот в режиме SBS (step by step) ждёт короткий импульс. Правило выключает реле через 2 секунды после того, как его включили из интерфейса или другим правилом.
custom:
- name: gate_pulse
isWithState: false
onCondition: '{wb-mr6cu_23/K1} == 1'
onDelay: 2000 # 2 секунды
onMessage: "0"
outputTopics: ['wb-mr6cu_23/K1']
Кондиционер по ИК
Правило «irConditioner» управляет кондиционером через ИК-передатчик WB-MIR по записанным командам пульта. В интерфейсе создаётся устройство IRCONDITIONER_имя с режимом (0 — выключен, 1 — нагрев, 2 — охлаждение) и уставкой. Для кондиционеров с полностью обученным пультом (скорость вентилятора, режимы boost, eco, sleep) есть правило «irAc» с теми же полями.
irConditioner:
- name: kitchen_ac
device: 'wb-mir_v2_125'
roomTemp: 'cityron-pu-3_1/Main Temperature'
conditionerTemp: 'wb-mir_v2_125/External Temperature Sensor' # необязательно
Как записать команды пульта в WB-MIR и настроить правило, мы показывали в статье «Управление кондиционером через ИК модуль WB-MIR. ПО Абром».
Кондиционер с собственным драйвером
Если у кондиционера уже есть модуль связи по Modbus или Wi-Fi и он виден в MQTT, используется правило «smartConditioner».
smartConditioner:
- name: living_ac
device: wb-ac-daikin_10
roomTemp: cityron-pu-3_1/Main Temperature
conditionerTemp: wb-ac-daikin_10/room_temp
Оповещение в Telegram
Чтобы подключить бота, создайте его через @BotFather и получите токен. Затем отправьте боту любое сообщение и откройте страницу getUpdates вашего бота в Telegram Bot API: в ответе будет chat.id. У группы chat.id отрицательный.
Вместо {} в message по порядку подставляются значения из arguments. С isWithState: false сообщение уходит при каждой проверке, где условие истинно, поэтому обязательно задавайте sendIntervalSeconds. С isWithState: true сообщение уходит один раз при переходе условия в истину.
telegram:
- name: morning_summary
condition: "NOW == time(08:00)"
message: "Доброе утро! Офис {}°C, комната {}°C, кондиционер {}, бойлер {}"
arguments:
- "{wb-ms_123/Temperature}"
- "{wb-m1w2_32/External Sensor 1}"
- "{IRCONDITIONER_kitchen_ac/conditioner_state}"
- "{wb-mr6cu_113/K6}"
chatIds: ["-1001234567890"]
botToken: "ВАШ_ТОКЕН_БОТА"
isWithState: false
sendIntervalSeconds: 60
- name: cold_alert
condition: "{cityron-pu-3_1/Main Temperature} < 18"
message: "В зале холодно: {}°C"
arguments: ["{cityron-pu-3_1/Main Temperature}"]
chatIds: ["123456789"]
botToken: "ВАШ_ТОКЕН_БОТА"
isWithState: true
Правила «vk» и «email» устроены так же: condition, message, arguments, isWithState и sendIntervalSeconds. Вместо chatIds у «vk» поле peerIds, а у «email» — recipients и настройки SMTP-сервера: username, password и subject; host, port, security и fromEmail необязательны — сервер и шифрование подбираются по домену из username.
Подробнее об оповещениях — в статье «Как настроить уведомления в AbromSoft? Email, VK, Telegram».
Учёт электроэнергии по тарифам
Правило «energyMeter» считает потребление трёхфазного счётчика WB-MAP3E по тарифным зонам: за сегодня, за месяц и за всё время, со стоимостью. Зона без hours занимает все оставшиеся часы.
energyMeter:
- name: main
phases:
- wb-map3e_131/AP energy L$1-3
totalTopic: wb-map3e_131/Total AP energy
tariffs:
- name: night
price: 4.5
hours: ["23:00-07:00"]
- name: day
price: 7.2
Контроль сервисов и датчиков
Правило «serviceMonitor» раз в intervalSeconds проверяет, работают ли сервисы контроллера. Правило «topicMonitor» следит, приходят ли значения от датчиков и нет ли у них ошибки. Оба создают устройства в интерфейсе, и их каналы можно использовать в оповещениях.
serviceMonitor:
- name: core_services
intervalSeconds: 60
services:
- wb-mqtt-serial
- wb-rules
- mosquitto
topicMonitor:
- name: sensors
topics:
- cityron-pu-3_1/Main Temperature
- wb-msw-v3_133/Temperature
telegram:
- name: serial_down
condition: "{SERVICEMONITOR_core_services/wb-mqtt-serial} == 0"
message: "Сервис wb-mqtt-serial остановлен"
chatIds: ["123456789"]
botToken: "ВАШ_ТОКЕН_БОТА"
isWithState: true
Если подходящего правила нет
Почти любую задачу «если условие, то отправить значение» решает «custom», а реакцию на событие — «conditionButton». Если логика сложнее, в AbromSoft есть скрипты на JS. Они хранятся отдельно от config.yaml и создаются в разделе скриптов интерфейса. Писать правила для wb-rules при этом не нужно: скрипт работает рядом с правилами AbromSoft и видит те же устройства.
Что не вошло на эту страницу
- Панели OpenHASP настраиваются правилом «openHasp»: страницы, кнопки, слайдеры и термостаты на экране. Конфигурация у него объёмная, поэтому её мы разбираем в отдельной статье «Как настроить панели Openhasp в Wirenboard? AbromSoft, ASPHome».
- Виджеты для мобильного приложения AbromSoft собирает сам по найденным устройствам, вручную в config.yaml их писать не нужно. Подробнее — в статье «Виджеты в ПО AbromLogic: основа для ускорения настройки».
- Свои типы правил подключаются плагинами. Их настройка описана вместе с конкретным плагином.
Как проверить, что правило работает
После сохранения config.yaml правила применяются без перезапуска контроллера. Каждое правило видно в интерфейсе AbromSoft со статусом: работает, отключено или ошибка датчика. Если правило не появилось, проверьте отступы в YAML и написание полей. Если правило есть, но не срабатывает, сверьте имена устройств и каналов: топик удобно найти через TopicListener, о нём мы писали в статье «Как найти неизвестный MQTT-топик за минуту: TopicListener в AbromSoft».
Еще никто не написал комментариев.