В версии v2.0.0 в DiPlus-to-hass появился движок правил — теперь вы можете создавать автоматизации прямо на головном устройстве, без необходимости писать сценарии в Home Assistant. Это одна из самых востребованных функций со времён выхода первой версии. Version v2.0.0 introduces the rules engine — now you can create automations directly on the head unit without writing Home Assistant scripts. This has been one of the most requested features since the initial release.
Первая статья (читать) описывала установку и базовые возможности приложения до версии v1.9.2: телеметрия, отправка в HA, управление командами, настраиваемый дашборд. С версии v2.0.0 добавились следующие возможности: The first article (read it here) covered installation and basic features up to v1.9.2: telemetry, HA integration, command control, and the customizable dashboard. Version v2.0.0 adds the following:
Правило состоит из трёх частей: условия (когда срабатывать), действия (что делать) и настроек выполнения (как часто, анти-зацикливание). Движок правил работает в фоновом сервисе приложения и проверяет условия каждую секунду. A rule has three parts: conditions (when to fire), actions (what to do) and execution settings (how often, anti-loop). The rules engine runs in the app's background service and checks conditions every second.
Каждое условие сравнивает значение датчика с эталоном через оператор сравнения: Each condition compares a sensor value with an expected value using a comparison operator:
= равноequals≠ не равноnot equal> большеgreater than< меньшеless than≥ больше или равноgreater or equal≤ меньше или равноless or equalНесколько условий комбинируются через логические операторы: Multiple conditions are combined with logical operators:
Когда все условия истинны, правило выполняет все действия по порядку. Каждое действие — это команда автомобилю (например, включить климат, поменять температуру, закрыть окна). Действия выполняются последовательно, одно за другим. When all conditions are met the rule executes all actions in order. Each action is a car command (e.g. turn on climate, change temperature, close windows). Actions run sequentially, one after another.
Включите переключатель Enable else action в редакторе правила, чтобы задать действия, выполняемые, когда условие переходит в ложь. Это позволяет одним правилом не только включать, но и выключать устройства. Например: «Обдув сиденья при +25 °C» — действие включает обдув, а else-действие выключает его, когда температура опускается ниже порога. Кулдаун, анти-зацикливание и «один раз за поездку» действуют на обе ветки. Enable the Enable else action switch in the rule editor to define actions executed when the condition becomes false. This lets a single rule both turn devices on and off. For example: "Seat vent above +25 °C" — the action turns the vent on, and the else action turns it off when the temperature drops. Cooldown, anti-loop and fire-once-per-trip apply to both branches.
Флажок Fire once per session ограничивает правило одним срабатыванием за текущую сессию движка (поездку). Счётчик сбрасывается при остановке сервиса и при изменении списка правил. Удобно для действий, которые нужны только один раз после запуска — например, напоминание или разовая настройка климата. The Fire once per session checkbox limits the rule to a single trigger per engine session (trip). The counter resets when the service stops and when the rule list changes. Handy for actions needed only once after start — a reminder or a one-off climate adjustment.
Движок запоминает последнее состояние условий каждого правила и сохраняет его между перезапусками. Поэтому правила в режиме «по фронту» (rising edge) срабатывают только на реальное изменение сигнала: если машина уже стоит на паркинге (gear = P) с прошлой поездки, правило «открыть двери на паркинге» не сработает повторно при утреннем включении авто — оно сработает лишь когда вы действительно переключитесь на P из другой передачи. The engine remembers the last condition state of every rule and persists it across restarts. Rising-edge rules therefore fire only on real signal changes: if the car was already in Park (gear = P) since the previous trip, the "unlock doors on Park" rule will not fire again at the morning start — it fires only when you actually shift to P from another gear.
В настройках приложения (Settings → Geofences) можно создать географические зоны: на карте OpenStreetMap тапом или перетаскиванием маркера выберите центр, задайте радиус ползунком или введите координаты вручную. Каждая зона появляется в редакторе правил как виртуальный датчик geo_<id> со значениями inside / outside. Так можно строить правила вроде «при приезде домой открыть окна» или «уезжая с зарядки — напомнить о кабеле». Проверка зон выполняется при каждом обновлении GPS.
In the app settings (Settings → Geofences) you can create geofence zones: on the OpenStreetMap editor tap or drag the marker to set the center, adjust the radius with the slider, or enter coordinates manually. Each zone appears in the rule editor as a virtual sensor geo_<id> with values inside / outside. This enables rules like "open the windows when arriving home" or "leaving the charger — remind about the cable". Zones are evaluated on every GPS update.
Цель: если температура за бортом выше 25 °C и автомобиль движется — включить кондиционер на полную. Goal: if the outside temperature is above 25 °C and the car is moving — turn on the AC at full power.
Ambient temperature > 25Condition 1: Ambient temperature > 25AND Speed > 0Condition 2: AND Speed > 0Climate AC onAction 1: Climate AC onClimate fan speed = 7Action 2: Climate fan speed = 7Цель: если автомобиль движется, а ремень водителя не пристёгнут — напомнить (например, включить аварийку на 5 секунд). Goal: if the car is moving and the driver's seatbelt is not buckled — send a reminder (e.g. flash hazard lights for 5 seconds).
Speed > 5Condition 1: Speed > 5AND NOT Driver seatbelt = buckledCondition 2: AND NOT Driver seatbelt = buckledHazard lights onAction 1: Hazard lights onЦель: если автомобиль остановился, а на улице жарко — приоткрыть окна и включить вентиляцию сидений водителя. Goal: if the car has stopped and it's hot outside — crack the windows and turn on driver seat ventilation.
Speed = 0Condition 1: Speed = 0AND Ambient temperature > 28Condition 2: AND Ambient temperature > 28Driver window = 20%Action 1: Driver window = 20%Driver seat ventilation = highAction 2: Driver seat ventilation = highНа главном экране правил отображаются все созданные правила. Для каждого правила показывается краткая сводка: первое условие (датчик, оператор, значение) и количество действий. Правила можно включать и выключать переключателем, а долгое нажатие открывает меню: экспорт в файл, экспорт в буфер обмена, удаление. The main rules screen shows all created rules. Each rule displays a compact summary: the first condition (sensor, operator, value) and the action count. Rules can be toggled on/off with the switch, and long-press opens a menu: export to file, export to clipboard, delete.
Правила можно экспортировать и импортировать так же, как и настройки приложения. На экране списка правил нажмите кнопку ⋮ и выберите Import from file или Export all to file. Также можно экспортировать отдельное правило долгим нажатием на него и выбором соответствующего пункта. Rules can be exported and imported the same way as app settings. On the rules list screen tap the ⋮ button and choose Import from file or Export all to file. You can also export a single rule by long-pressing it and selecting the appropriate option.
Да. Движок правил работает полностью локально на головном устройстве. Для работы правил не требуется активное подключение к HA или интернету. Достаточно, чтобы DiPlus был запущен. Yes. The rules engine runs entirely locally on the head unit. Rules do not require an active HA connection or internet access. DiPlus just needs to be running.
Ограничений нет. Вы можете создать любое количество правил. Движок проверяет все активные правила каждую секунду. No limit. You can create as many rules as you like. The engine checks all active rules every second.
На главном экране правил просто выключите переключатель рядом с правилом. Правило останется в списке, но движок его пропустит при проверке. On the main rules screen simply toggle off the switch next to the rule. The rule stays in the list but the engine skips it.
Да. Правило должно содержать хотя бы одно условие и хотя бы одно действие — неважно, сколько именно. Yes. A rule must have at least one condition and at least one action — the count does not matter.
В будущих версиях планируется расширить движок правил: Future versions plan to extend the rules engine:
Первая статья с общей инструкцией по установке: читать. The first article with the full installation guide: read it here.
Поддержка и обсуждения — в Telegram: @BYDiPlus2HASS. Support and discussions — Telegram: @BYDiPlus2HASS.