Home Assistant: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 194: Строка 194:
 
==1==
 
==1==
 
* <code>alias: external_door_open_logged</code> По этом
 
* <code>alias: external_door_open_logged</code> По этом
* <code> description: "Открытие Внешней Двери (с логированием)"</code>
+
* <code> description: "Открытие Внешней Двери (с логированием)"</code>
 
* <code> mode: parallel</code> Режим выполнения автоматики при повторном запуске до завершения предыдущего
 
* <code> mode: parallel</code> Режим выполнения автоматики при повторном запуске до завершения предыдущего
 
** single — новый запуск игнорируется.
 
** single — новый запуск игнорируется.

Версия 12:15, 26 сентября 2025

Home Assistant

Пока это заготовка статьи про домашнюю автоматизацию и реализацию некоторых фич

Прежде чем начать

Для удобства работы (что б меньше возиться c UI) удобно выпустить токен и читать данные через API

  1. Профиль (снизу справа)
  2. Безопасность
  3. Долгосрочные токены доступа

HA-Create-Token-250926125120.png

Токен выглядит как-то так

eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp <пропущенно-много-букав> sImlhdCI6MTcyMTkwNzUzNywiZXhwIjoyMDM3MjY3NTM3fQ.YDLTNoOFebK4BVHFo-V1q7a84Cs78Z0b3H2e-F5mBpk"

Сразу сохранить, в открытом виде он показывается один раз

Ссылки


Пока что тут в основном ссылки


  • Прошивки

Zigbee2Tasmota

Прошивки

Термины и понятия

Когда что использовать

  • Срабатывание по условию -> automation (с trigger описывающим условие)
  • Если automation сложный, то код можно разбить на несколько скриптов

automation = логика запуска + условия + действия;

automation

Automation — правило “если-то”:

automation:
  - alias: Door opened → notify
    trigger:
      - platform: state
        entity_id: binary_sensor.external_door
        from: 'off'
        to: 'on'
    condition: []
    action:
      - service: notify.chat
        data: {message: "Дверь открыта"}

script

Script — именованная последовательность action (шагов).
Не имеет триггера, запускается вручную (кнопкой/сервисы) или из automation.


Скрипт можно так же рассматривть как процедуру (для группировки и переиспользования кода)

script:
  send_door_alert:
    alias: Send door alert
    sequence:
      - service: notify.chat
        data: {message: "Дверь открыта"}

Вызов из automation:

action:
  - service: script.send_door_alert

Пример скрипта

Помещать в файл scripts.yaml или любой другой определенный в script: !include scripts.yaml

tv_living_room_wol:
  alias: "TV Living Room: Power On (WOL)"
  sequence:
    - service: wake_on_lan.send_magic_packet
      data:
        mac: "38:8c:50:00:a3:14"

Что бы запустить скрипт можно добавить кнопку

Настройки панели --> добавить карточку (справа внизу) --> Объект (что бы вписать вкод вручную)

HA-add-button-250923154324.png

HA-add-button- 250923154402.png

HA-button-250923154153.png

type: button
name: Включить ТВ
icon: mdi:television
tap_action:
  action: call-service
  service: script.turn_on
  target:
    entity_id: script.tv_living_room_wol
hold_action:
  action: none
double_tap_action:
  action: none
show_state: false

trigger

Trigger — часть automation. Это событие, которое запускает automation: смена состояния, время, MQTT-сообщение, вебхук, нажатие кнопки и т.д. Сам по себе trigger вне automation не существует.

Примеры триггеров:

state (изменение состояния сущности) time / time_pattern event / webhook mqtt device (из интеграций) numeric_state (порог)


script = только действия;

trigger = причина старта automation.

Разбор примера автоматизации

- alias: external_door_open_logged
  description: "Открытие Внешней Двери (с логированием)"
  mode: parallel
  trigger:
    - platform: state
      entity_id: binary_sensor.sonoff_external_door_sensor_contact   # твоя сущность
      from: 'off'
      to: 'on'
  variables:
    from: "{{ trigger.from_state.state if trigger.from_state is not none else 'none' }}"
    to:   "{{ trigger.to_state.state   if trigger.to_state   is not none else 'none' }}"
  action:
    - choose:
        - conditions: []   # сюда твои прежние условия (если были)
          sequence:
            - service: logbook.log
              data:
                name: "door_automation"
                entity_id: binary_sensor.external_door
                message: "TRIGGERED ({{ from }} → {{ to }})"
            - service: system_log.write
              data:
                logger: automation.door
                level: info
                message: "[door] sending notify ({{ from }} → {{ to }})"
            - service: system_log.write
              data:
                logger: automation.door
                level: info
                message: "[door] notify SENT"
      default:
        - service: system_log.write
          data:
            logger: automation.door
            level: info
            message: "[door] SKIPPED: conditions not met ({{ from }} → {{ to }})"

1

  • alias: external_door_open_logged По этом
  • description: "Открытие Внешней Двери (с логированием)"
  • mode: parallel Режим выполнения автоматики при повторном запуске до завершения предыдущего
    • single — новый запуск игнорируется.
    • restart — оборвать текущий, начать заново.
    • queued — поставить в очередь (можно max).
    • parallel — запустить ещё один экземпляр параллельно.

Для дверного датчика чаще хватает single (или queued). parallel нужен редко.