8 980 590-57-10
Ваш город — Помона?
Заявка

Примеры правил в ПО Абром Софт


На этой странице собраны готовые правила 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».


    Еще никто не написал комментариев.

    Написать комментарий

    Данная страница является информационной и не является публичной офертой. Мы не продаем оборудование, но готовы оказать техническую поддержку.