Як створювати автоматизації в Home Assistant

Привіт усім! У цій статі покажу на прикладах як створювати автоматизації в Home Assistant. Російський військовий корабель, пішов нах***!

Home Assistant (HA) — це гарна, сучасна та потужна операційна система з частими оновленнями та крутою спільнотою в Україні. Перша річ, за яку я обожнюю його, — він об’єднує та керує пристроями різних виробників з одного додатку, навіть без інтернету. Друга — автоматизації, що дозволяє цим пристроям автоматично реагувати на події, що відбуваються.

На перший погляд, автоматизації можуть здатись складними, але опанувати їх досить просто. У своїй основі це конфігураційний YAML файл. Проте для зниження рівня входу автоматизації можна створювати з графічного інтерфейсу та на основі існуючих проєктів, які дуже легко імпортуються.

При створенні автоматизації я спочатку використовую графічний інтерфейс, він підказує можливі типи тригерів, умов, дій та пристроїв, а потім редагую YAML. Перед тим як розглянути приклади, пропоную ознайомитись з основними термінами.

Сутність (entities) — «цеглинка» Home Assistant. Я уявляю сутності для себе так. Якщо в домі є пристрій, він має бути розділений на функції, щоб я або Home Assistant зміг до них звернутися.

Наприклад, датчик температури може показувати температуру, вологість, тиск, рівень заряду, силу сигналу. Сутностями можуть бути:

  • віртуальні події: оновлення, перезавантаження,
  • інформація: кількість кроків, прибрана площа,
  • стани: стан резервного копіювання, наявність живлення.

Зазвичай автоматизація складається з трьох складових:

Тригер (trigger) — це те, що запускає автоматизацію. Коли будь-який з тригерів спрацьовує, Home Assistant перевіряє умови, якщо такі є, і викликає дію. Тригером може бути увімкнення сутності, повернення людини додому, точний час або схід сонця. Існує багато тригерів, проте найчастіше використовується тип пристрій.

Умова (condition) — не обов’язкова частина автоматизації. Вона використовується для виконання дії лише за певної умови. Наприклад робота лише у вихідні або увімкнення світла лише після заходу сонця. Більше про умови тут.

Дія (action) — те, що виконується при запуску автоматизації. Дією може бути завдання для конкретного пристрою, виклик служби, очікування спливання часу та ін.

Приклад роботи автоматизації


Корисні поради

Перед початком створення автоматизації рекомендую активувати розширений режим.

Для цього потрібно перейти в профіль (homeassistant.local:8123/profile) та активувати перемикач. Це надасть змогу перезавантажувати окремий компонент, не перезавантажуючи весь Home Assistant. Перезавантажити автоматизації, скрипти, сцени можна тут homeassistant.local:8123/developer-tools/yaml

Для зручності редагування автоматизацій встановіть додаток File Editor. Редактор доступний з магазину офіційних додатків, підтримує підсвічування синтаксису YAML, списки з доступними сутностями, тригерами, подіями, умовами та послугами, перезавантаження автоматизацій прямо в редакторі.

Щоб автоматизація з наведених прикладів працювала у вас, замініть назви сутностей на свої. Усі сутності можна знайти за адресою homeassistant.local:8123/config/entities

Мова конфігурацій YAML чутлива до табуляції (відступів), тому при редагуванні автоматизацій, скриптів та сцен звертайте увагу на правильність відступів та тире.

Сповіщення про відкриття дверей

Усі автоматизації можна знайти в меню конфігурацій >> Автоматизації та сцени, або за адресою homeassistant.local:8123/config/automation/dashboard. Самі ж конфігурації зберігаються в файлі /config/automation.yaml.

Перейдіть до автоматизацій та натисніть кнопку «Додати автоматизацію».

Для створення автоматизації завжди потрібна умова спрацьовування (тригер). Для цього я використовую датчик відкриття дверей Xiaomi. Автоматизація виглядатиме так: якщо двері відчиняються, на телефон надходить сповіщення.

Для цього створюю довільну назву автоматизації, як тригер обираю пристрій, у полі пристрою обираю датчик відкриття дверей.

Обираю тригер. Оскільки я хочу, щоб сповіщення приходило, коли двері відкриті, то обираю двері відчинені. Якщо забути обрати цей тригер, автоматизація не спрацьовуватиме.

Тип дії обираємо виклик служби. Серед служби обираємо — notify.mobile_app_*** де *** ім’я користувача. Або можна обрати notify.notify, тоді сповіщення надходитимуть на усі пристрої.

Служба (services) керує сутностями. Відповідає на питання: що зробити, ввімкнути, озвучити, сповістити.

Примітка. Щоб можна було обрати користувача, потрібно встановити мобільний додаток Home Assistant перед тим. Вписуємо message та за бажанням вказуємо title. Дуже круто, що Home Assistant підтримує emoji.

Тепер подивимось, що у нас вийшло в режимі YAML. В цьому випадку немає додаткової умови (condition), тому на її місці стоять пусті квадратні дужки.

alias: door_open
description: door open
trigger:
  - type: opened
	platform: device
	device_id: ad40afb8f9bcdd3b8d35adb03cacc825
	entity_id: binary_sensor.0x00158d00040389e6_contact_2
	domain: binary_sensor
condition: []
action:
  - service: notify.mobile_app_bogdan
	data:
  	message: Двері відчинені 🚪
  - service: notify.mobile_app_iphone
	data:
  	message: Двері відчинені 🚪
mode: single

Сповіщення про повітряну тривогу в Home Assistant

Перейдіть за посиланням або знайдіть та встановіть інтеграцію Ukraine Alarm. Інтеграція повідомляє про повітряну тривогу, вуличні бої та артилерійські обстріли та швидко працює. При першому налаштуванні оберіть своє місто.

Створіть нову автоматизацію. Назвемо її «повітряна тривога». Тип тригера — пристрій. В моєму випадку пристрій називається «м. Київ». Тригер м. Київ Air реєструє безпеку

Дія — виклик служби notify.mobile_app_bogdan. Також вкажу повідомлення «Повітряна тривога»

У режимі YAML це виглядає так:

alias: Повітряна тривога
description: ""
trigger:
  - type: unsafe
	platform: device
	device_id: 762ca6f458ef8b00bbbac0c400800740
	entity_id: binary_sensor.m_kiyiv_air
	domain: binary_sensor
condition: []
action:
  - service: notify.mobile_app_bogdan
	data:
  	message: 🔴 Повітряна тривога
mode: single

За аналогією можна створити сповіщення про відбій повітряної тривоги. Єдина відмінність — тригер м. «Київ Air» реєструє безпеку. Якщо Home Assistant з якоїсь причини буде перезавантажено, сповіщення про відбій тривоги прийде повторно, бо спрацює тригер «м. Київ Air» реєструє безпеку.

alias: Відміна
description: ""
trigger:
  - type: unsafe
	platform: device
	device_id: 762ca6f458ef8b00bbbac0c400800740
	entity_id: binary_sensor.m_kiyiv_air
	domain: binary_sensor
condition: []
action:
  - service: notify.mobile_app_bogdan
	data:
  	message: 🟢 Відміна тривоги
mode: single

За власним досвідом сповіщення надходять навіть раніше, ніж в «Київ цифровий».

Нагадування

Можна створити постійні важливі нагадування, передати показники електроенергії/ води/ газу, нагадати про день народження дружини тощо.

Ось приклад нагадування кожного першого числа опівдні.

alias: Показники
description: ""
trigger:
  - platform: time
	at: "12:00:00"
condition:
  - condition: template
	value_template: "{{ now().day == 1 }}"
action:
  - service: notify.notify
	data:
  	message: Подати показники електроенергії  ⚡️
mode: single

В автоматизації використаний тригер часу, який активується, якщо виконується умова шаблону, тобто настає перше число місяця.

Шаблон — це потужна функція, що дозволяє контролювати інформацію, яка надходить у систему та виходить з неї.

Шаблонування в Home Assistant працює на основі механізму шаблонів Jinja2. Інтерфейс Home Assistant має влаштований редактор шаблонів, що знаходиться в пункті меню інструменти для розробників >> Шаблони, або за адресою

homeassistant.local:8123/developer-tools/template

Клікабельні сповіщення

Android

Ви можете включити масив actions у вашому сервісному виклику. Android дозволяє додавати лише 3 дії, iOS дозволяє близько 10 дій.

service: notify.mobile_app_bogdan
data:
  message: "Вдома щось сталось!"
  data:
	actions:
  	- action: "ALARM" #  Ключ, який ви надсилаєте для події
    	title: "Звукове сповіщення" # Заголовок кнопки
  	- action: "URI" # Встановіть URI 
    	title: "Відкрити посилання"
    	uri: "https://google.com" #  URL-адреса, яка відкривається, коли вибрано дію, також може бути посиланням на Lovelace.

iOS

Клікабельні сповіщення на IOS не відрізняються від звичайних. Це потрібно запам’ятати, або підписувати сповіщення. Щоб вони стали клікабельні, їх необхідно довго затиснути.

Діями (action) в клікабельних сповіщеннях може бути:

— існуюча служба (те саме, що і сервіс),
— посилання на елементи інтерфейсу користувача lovelace,
— самостійно створена дія.

Для піктограм використовується пакет sfsymbols від apple, по аналогії з mdi. Назви піктограм:

alias: Клікабельне сповіщення
description: door open
trigger:
  - type: opened
	platform: device
	device_id: ad40afb8f9bcdd3b8d35adb03cacc825
	entity_id: binary_sensor.0x00158d00040389e6_contact_2
	domain: binary_sensor
condition: []
action:
  - service: notify.mobile_app_bogdan
	data:
  	message: Двері відчинено!
  	data:
    	actions:
      	- action: ALARM
        	title: Увімкнути сигналізацію
        	icon: sfsymbols:bell
      	- action: SILENCE
        	title: Вимкнути сигналізацію
        	icon: sfsymbols:bell.slash
  	title: "Натисни "

Перезавантаження Home Assistant

Якщо ви спостерігаєте проблему зі стабільністю Home Assistant, можна скористатись корисною автоматизацією. Вона перезавантажує Home Assistant о 00:00 щодня.

В даній автоматизації тригером є час — настання півночі.

Також присутня умова часу — виконуватись в усі дні тижня.

Дією є перезапуск операційної системи.

alias: HA restart
description: ""
trigger:
  - platform: time
	at: "00:00:00"
condition:
  - condition: time
	weekday:
  	- mon
  	- tue
  	- wed
  	- thu
  	- fri
  	- sat
  	- sun
action:
  - service: homeassistant.restart
	data: {}
mode: parallel

Ping

Ping це мережева утиліта, що періодично надсилає ICMP пакети. В Home Assistant вона моніторить доступність пристроїв (binary_sensor) або відстежує, чи користувачі вдома (device_tracker). Для її використання рекомендую встановити статичну адресу на роутері. За допомогою утиліти можна дізнатись, чи прийшов якийсь користувач додому, чи працює телевізор та ін.

Ви можете додати будь-який блок конфігурації в кінець файлу configuration.yaml, не забудьте змінити ip адресу на свою.

Бінарний сенсор з інтервалом 10 секунд надсилає чотири пакети на пристрій. Ви можете контролювати час спрацьовування за допомогою команди scan_interval.

count — кількість відправлених icmp-пакетів,
scan_interval — інтервал між відправленням icmp-пакетів.

binary_sensor:
  - platform: ping
	host: 192.168.1.108
	name: "phone"
	count: 4
	scan_interval: 10

Відстеження пристроїв (device_tracker) змінює статус з «вдома» на «не вдома». Статус вдома встановлюється приблизно за 10 секунд після підключення до wi-fi. Статус з «вдома» на «не вдома» змінюється приблизно за 3 хвилини. Якщо вам необхідна швидша зміна статусу, використовуйте бінарний датчик:

device_tracker:
  - platform: ping
	hosts:
  	iphone_bogdan: 192.168.1.108

На основі статусу ping можна створювати автоматизації. Наприклад, увімкнути світло в коридорі по приходу:

alias: bog_home
description: ""
trigger:
  - platform: state
	entity_id:
  	- binary_sensor.phone_bogdan
	from: "off"
	to: "on"
condition:
  - condition: sun
	after: sunset
  - condition: time
	before: "22:00:00"
action:
  - type: turn_on
	device_id: 870147a7a596b0b3eabe20dcaae947df
	entity_id: switch.0x54ef4410004db2fa_left
	domain: switch
mode: single

Взагалі придумати можна будь-що, це не обов’язково має бути світло після заходу сонця.

Увімкнення вентиляції, при збільшенні рівня вологості

Автоматизація вмикає (switch.turn_on) вентилятор (switch.bathroom_fan), коли датчик вологості (sensor.0×00124b002513498b_humidity) фіксує рівень вологості вище (above) 71%:

- alias: turn_bathroom_fan_on
  trigger:
    platform: numeric_state
    entity_id: sensor.0x00124b002513498b_humidity
    above: 71
  action:
    service: switch.turn_on
    entity_id: switch.bathroom_fan

Для вимкнення використаємо подібну автоматизацію, яка буде вимикати (switch.turn_off) вентилятор, коли рівень вологості буде нижче (below) 50%:

- alias: turn_bathroom_fan_off
  trigger:
    platform: numeric_state
    entity_id: sensor.0x00124b002513498b_humidity
    below: 50
  action:
    service: switch.turn_off
    entity_id: switch.bathroom_fan

Ось ще один приклад. Автоматизація запускається при досягненні 71% вологості, працює 50 хв, а потім вимикається на 20 хв. Якщо за цей час вологість впаде нижче 71%, тригер не зможе спрацювати повторно.

alias: turn_bathroom_fan
trigger:
  - platform: numeric_state
	entity_id: sensor.0x00124b002513498b_humidity
	above: "71"
action:
  - service: switch.turn_on
	data: {}
	target:
  	device_id: f746090a2a47d7b7b4cb6420f67b0eef
  - delay:
  	hours: 0
  	minutes: 50
  	seconds: 0
  	milliseconds: 0
  - service: switch.turn_off
	data: {}
	target:
  	device_id: f746090a2a47d7b7b4cb6420f67b0eef
  - delay:
  	hours: 0
  	minutes: 20
  	seconds: 0
  	milliseconds: 0


if - else

Проєкти

Проєкти (Blueprints) це спільні шаблони автоматизації, які будь-хто може створити, поділитися та застосувати у власних налаштуваннях Home Assistant. Люди можуть придумати креативні та складні засоби автоматизації, які вони перевірили та впровадили самі, а потім поділитися ними зі спільнотою.

Home Assistant надає можливість додати проєкти з форуму спільноти або GitHub, просто вставивши посилання на них.

Після додавання проєкту, можна створити автоматизацію або скрипт на його основі.

Пропоную розглянути приклади найпопулярніших проєктів.

Сповіщення про розряд акумулятора

Цей проєкт регулярно перевіряє всі датчики батареї та сповіщає, якщо порогове значення перевищено. Див. тут.

Сповіщення про знімок камери під час руху

Надсилає сповіщення на телефон, коли камера виявляє рух. Див. тут.

Увімкнення світла на основі руху та низького рівня освітлення

На основі виявлення руху та (необов’язково) низького рівня освітлення, увімкніть світло, вимикач, сцену або сценарій. Див. тут.

Сповіщення про закриття дверей або вікна через задану кількість хвилин

Надсилає два сповіщення на мобільний пристрій про необхідність закрити вікно чи двері після їх відкриття, якщо температура на вулиці нижче певного градуса. Див. тут.

Більше про найпопулярніші проєкти можна прочитати тут.

Скрипти

Скрипт, або сценарій — це виконувана послідовність дій. Скрипти та автоматизації настільки схожі, що їх важко відрізнити. Відмінність в тому, що для автоматизації обов’язково потрібен тригер, для скрипта — ні. Також на відміну від автоматизації скрипт можна зупинити. Це може бути корисно, коли між декількома діями потрібно встановити великі затримки.

У скрипті можна створити набір з кількох дій, а потім викликати скрипт в автоматизації, в секції дії як службу. Усі скрипти можна знайти за адресою

homeassistant.local:8123/config/script/dashboard в графічному інтерфейсі, або в файлі scripts.yaml

Home Assistant підтримує три види скриптів:
— Скрипти Home Assistant,
— Python-скрипти,
— Зовнішні скрипти, що запускаються з командного рядка.

Скрипти Home Assistant

Перетворити автоматизацію на скрипт досить легко. Їх синтаксис майже ідентичний, лише видаляється тригер та action міняється на sequence:

<strike>- id: morning_bedroom</strike>
<strong>morning_bedroom:</strong>
  alias: "Morning Lights On"
 <strike> trigger:</strike>
	<strike>platform: state</strike>
	<strike>entity_id: input_boolean.morning_light_automation</strike>
  <strike>action:</strike>
  <strong>sequence:</strong>
  - service: light.turn_on
	data:
  	entity_id: light.kyles_lamp
  	brightness_pct: 100
  	color_temp: 250
  	transition: 30
  - service: light.turn_on
	data:
  	entity_id: light.mels_lamp
  	brightness_pct: 100
  	color_temp: 250
  	transition: 30
  - delay: 00:00:30
  - service: switch.turn_on
	data:
  	entity_id: switch.master_bedroom_switch

Час до сну

Цей скрипт спочатку вмикає синє світло на світлодіодній стрічці та головному освітленні, чекає 30 секунд, вимикає телевізор, світлодіодну стрічку та головне світло. Коли і чому це буде відбуватись, можна придумати самому в автоматизаціях.

bedtime:
	alias: Time for bed
	description: 'Вимикає світло та телевізор у вітальні перед сном'
	sequence:
    	- alias: LED Strip turn blue
      	service: light.turn_on
      	data:
        	entity_id: light.living_room_leds  
        	rgb_color: [0,0,255]

    	- alias: Main Light turn blue
      	service: light.turn_on
      	data:
        	entity_id: light.lohasone
        	rgb_color: [0,0,255]
       	 
    	- delay:
        	seconds: 30
       	 
    	- alias: Turn TV off
      	service: media_player.turn_off
      	data:
        	entity_id: media_player.massive_sony
   	 
    	- alias: Tree Lamp off
      	service: light.turn_off
      	data:
        	entity_id: light.treelamp
       	 
    	- alias: LED Strip off
      	service: light.turn_off
      	data:
        	entity_id: light.living_room_leds      	 

    	- delay:
        	minutes: 2

    	- alias: Turn Main Light Off
      	service: light.turn_off
      	data:
        	entity_id: light.lohasone

Також можна виконувати цей скрипт вручну. Для цього потрібно створити кнопку в інтерфейс lovelace:


Більше цікавих скриптів home assistant можна знайти на форумі.

Python-скрипти

Скрипти Python в Home Assistant представлені за допомогою інтеграції Python Scripts. Інтеграція має обмеження не можна використовувати import.

Для того, щоб скористатись Python скриптами необхідно активувати їх використання, додавши рядок python_script: в кінці файлу configuration.yaml:

та створити директорію python_scripts в корені (config). Після «Перезавантажити Home Assistant».

Для побудови python-скрипта можна використовувати наступні змінні:

Ім’я

опис

hass

Об’єкт «Home Assistant». Його можна використовувати лише для виклику служб, встановлення станів і запуску подій. Посилання на API

data

Дані передаються як корисне навантаження під час виклику служби проєкції самого сценарію.

logger

Home Assistant: logger.info(), logger.warning(), logger.error(). Посилання на API

Пробний скрипт

name = data.get("name", "world")
logger.info("Hello %s", name)
hass.bus.fire(name, {"wow": "from a Python script!"})

Якщо все виконано успішно в службах (homeassistant.local:8123/developer-tools/service) з’явиться нова сутність python_script.hello_world

Попередження про низький рівень заряду

Перші два рядки генерують дві змінні:

  • перше — значення поточного заряду телефону,
  • друге — значення вхідних даних, створених для встановлення обмеження.

Ці змінні порівнюються, і якщо рівень заряду акумулятора нижче встановленого ліміту, здійснюється виклик служби persistent_notification для створення сповіщення в Home Assistant. Також викликається служба text to speech (tts) та озвучує повідомлення.

Змініть значення sensor.oneplus_battery_level на назву сутності рівня заряду батареї вашого телефону. Знайти його можна в об’єктах інтеграції mobile app або за адресою:

http://homeassistant.local:8123/config/entities

Також змініть media_player.gh_bureau на назву сутності вашого динаміка, знайти його можна за тією ж адресою. Детальніше тут.

levelBatteryPhone =
hass.states.get("sensor.oneplus_battery_level")
levelLimitBattery = 
hass.states.get("input_number.limit_battery_before_notification").state
 
if float(levelBatteryPhone) < float(levelLimitBattery):
 
   hass.services.call(
   	"persistent_notification", "create",
   	{
       	"title": "Телефон відключено",
       	"message": "Недостатній рівень заряду. Повторно підключіть телефон!"
   	}
   )
 
   hass.services.call(
   	"tts", "cloud_say",
   	{
       	"entity_id": "media_player.gh_bureau",
       	"message": "Телефон було від’єднано від мережі, а заряд акумулятора низький"
   	}
   )

У наступному прикладі пояснюється, як написати скрипт з двома вхідними змінними: entity_id (обов’язково) і rgb_color (необов’язково). Скрипт, викликаний через відповідну службу, вмикає світло, вказане за допомогою entity_id, встановлюючи будь-який колір rgb, переданий за допомогою rgb_color, а також встановлює максимальну яскравість (255):

entity_id = data.get('entity_id')
rgb_color = data.get('rgb_color', [255, 255, 255])
if entity_id is not None:
    service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 }
    hass.services.call('light', 'turn_on', service_data, False)

Не забудьте замінити entity_id та rgb_color після двокрапки. Наприклад, на
{"entity_id": "light.camera", "rgb_color": [255, 0, 0] }

Скрипти AppDaemon на основі HACS

Ви можете скористатись готовими скриптами, що надає HACS. Такий підхід дозволяє в графічному режимі встановлювати та користуватись python скриптами інших користувачів (щось на кшталт blueprints) Детальніше тут.

Сцени

Сцени запам’ятовують встановлений стан пристрою, та відновлюють його при її активації. Наприклад, сцена може під час перегляду фільму вимкнути основне світло, зашторити вікна, встановити підсвічування. Усі сцени знаходяться в файлі /config/scenes.yaml

Редактор сцен дозволяє створювати сцени лише в графічному режимі. Мені цього вистачає.

Створіть нову сцену, дайте їй назву, оберіть область і піктограму. Оберіть пристрій та оберіть стан пристрою, натиснувши на нього, збережіть сцену — готово!

До прикладу, я змінив колір лампи на синій, зменшив яскравість і зберіг. Кожен раз, коли ця сцена активується, лампа буде світити синім зі зменшеною яскравістю. Можна додавати декілька пристроїв, або сутності, які не належать пристроям (я так контролюю положення сервомотора) та зберігати їх стан. І це круто!

Сцену можна активувати, натиснувши на сцену, або натиснувши кнопку Activate.

Сцену можна використовувати в автоматизації в секції дії, для цього потрібно обрати дію, активувати сцену та обрати сцену з запропонованих.

Куточок читача

Хочу порадити україномовний сайт, присвячений налаштуванню HA та огляду обладнання — Smart Ninja та їх YouTube-канал. А якщо ви, найкращі читачі, знаєте про якісний контент та спільноти українською на тему розумного будинку, порадьте його в коментарях.

Висновок

Інструменти автоматизації Home Assistant — гнучкі та водночас потужні. Важко описати усі можливості в одній статті. Тому якщо я пропустив щось важливе або сказав щось не так, доповніть, будь ласка.

Також буде чудово, якщо ви поділитесь своїми автоматизаціями, сценами та скриптами в коментарях. Це допоможе розвитку україномовної спільноти «розумного будинку».

Сподобалась стаття? Подякуй донатом у фонд «Повернись живим».

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному8
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Добрий день, допоможіть будь ласка з автоматизацією: є кнопка та перемикач (віртуальні), кнопка переключає перемикач (toggle). Потрібно зробити щоб кнопкою не клацали часто, — тобто перемикач гарантовано знаходився в кожному стані мінімум 3 хвилини. Дякую!

ось код (GUI), але чомусь кондітіон не працює :(

alias: Test_auto_1 - Jitter button switch
description: button перемикає switch, але не дає часто клацати :)
trigger:
  - platform: state
    entity_id:
      - input_button.test1_jitter_button
    for:
      hours: 0
      minutes: 0
      seconds: 0
    from: null
    to: null
######################### непрацює ##############################
condition:
  - condition: template
    value_template: >-
      {{ ( as_timestamp( now() ) -
      as_timestamp(states.input_boolean.test1_jitter_switch.last_changed) )> 180
      }}
    enabled: true
#################################################################
action:
  - service: homeassistant.toggle
    data: {}
    target:
      entity_id: input_boolean.test1_jitter_switch
mode: single

Доброго дня. Дякую за запитання.

Підкажіть у вас рівні вкладення правильні?

chat.openai.com/...​10-4ff8-8042-d0ff81149fb4

Ще ось так можна спробувати.

alias: Test_auto_1 - Jitter button switch
description: Кнопка перемикає перемикач, але не дозволяє часто клацати :)
trigger:
- platform: state
  entity_id: input_button.test1_jitter_button
action:
- wait_for_trigger:
  - platform: state
    entity_id: input_button.test1_jitter_button
  timeout:
    minutes: 3
  continue_on_timeout: true
- service: homeassistant.toggle
  target:
    entity_id: input_boolean.test1_jitter_switch

Добрий день, дякую за допомогу, але якось не стабільно працює:
в основному перемикає, але чомусь буває спрацьовує, коли таймаут ще не вийшов.
А якщо клацнути, та продовжувати клацати — то майже одразу спрацьовує... Не розумію чому так...

PS
З форматуванням відступів має бути ОК, бо створювалось в GUI. То я не знаю як код вставляти :)

Можливо цей код спрацює.

alias: Test_auto_1 - Jitter button switch
description: Кнопка перемикає перемикач, але не дозволяє часто клацати :)
trigger:
- platform: state
  entity_id: input_button.test1_jitter_button
action:
- wait_for_trigger:
  - platform: state
    entity_id: input_button.test1_jitter_button
  timeout:
    minutes: 3
  continue_on_timeout: false
- repeat:
    while:
      condition: state
      entity_id: input_button.test1_jitter_button
      state: 'on'
    sequence:
    - service: homeassistant.toggle
      target:
        entity_id: input_boolean.test1_jitter_switch

цей варіант взагалі нічого навіть не перемикає :(
може це я щось в себе зламав? А у Вас хоч якийсь варіант спрацював?

Такий простий кейс у варіанті автоматизації Majordomo де все на PHP тут не можу виконати вже 3й тиждень... От тобі швиденько переповз :)

Не думаю, що ви щось зламали. Може цей код спрацює? Чесно кажучи у себе не тестував (це відповіді ChatGPT) Напишіть як цей варіант. Якщо не працюватиме змініть condition template на свій з першого прикладу. Я спробую створити кнопку та перемикач віртуально та протестувати. Також ви можете написати на форум Home Assistant community.home-assistant.io. Там завжди швидко відповідають. Мені часто допомагає.

alias: Test_auto_1 - Jitter button switch
description: Кнопка перемикає перемикач, але не дозволяє часто клацати :)
trigger:
- platform: state
  entity_id: input_button.test1_jitter_button
action:
- choose:
  - conditions:
      - condition: template
        value_template: "{{ (as_timestamp(now()) - as_timestamp(state_attr('automation.test_auto_1_jitter_button', 'last_triggered', 0)) | default(0)) > 180 }}"
    sequence:
    - service: homeassistant.toggle
      target:
        entity_id: input_boolean.test1_jitter_switch
  default:
    - delay:
        minutes: 3
    - service: homeassistant.toggle
      target:
        entity_id: input_boolean.test1_jitter_switch

Добрий день, після невеличкої правки останнього коду є результат:

alias: Test_auto_1 - Jitter button switch
description: button перемикає switch, але не дає часто клацати :)
trigger:
  - platform: state
    entity_id:
      - input_button.test1_jitter_button
    for:
      hours: 0
      minutes: 0
      seconds: 0
condition:
  - condition: template
    value_template: >-
      {{ (  as_timestamp( now() ) -
      as_timestamp(state_attr('automation.test_auto_1_jitter_button_switch',
      'last_triggered')) | default(0)  ) > 180 }}
    enabled: true
action:
  - service: homeassistant.toggle
    data: {}
    target:
      entity_id: input_boolean.test1_jitter_switch
mode: single

тобто

{{ (as_timestamp(now()) - as_timestamp(state_attr('automation.test_auto_1_jitter_button', 'last_triggered', 0)) | default(0)) > 180 }}

виправив на 
{{ (  as_timestamp( now() ) - as_timestamp(state_attr('automation.test_auto_1_jitter_button_switch', 'last_triggered')) | default(0)  ) > 180 }}
І полетіло!
Дякую за допомогу!

Гарна стаття, як раз до 24 мріяв як на новій квартирі буду все автоматизувати і моніторити, шукав які датчики юзати, що робити центром розумного дому, навіть багато чого вже було придбано, але зараз навіть якщо все закінчиться завтра то не знаю чи хочу я то робити, коли ось так в мить може все пропасти.

Доречі в HA є такі штуки як Helpers (в розділі Settings — Devices and Services). А там є такий вид хелпера як Group, який дозволяє згрупувати декілька Entity в одну сутність.

Наприклад так можна об’єднати все світло в домі а одну групу і керувати їм через одну сутність (зручно робити автоматизацію типу «вимкнути все світло»)

Але я хочу розповісти не про світло, а про інтеграцію Ukraine Alerts. Ця інтеграція має 6 різних типів тривог. Замість того, щоб перераховувати їх усі в автоматизації, їх можна об’єднати в одну групу. Так буде значно зручніше. І ще тригеру типу Device краще використовувати State.

Привіт. Підкажіть чи є площадка де українські користувачі Home Assistant активно обмінюються досвідом? Дякую.

Веб сайту немає, але є телеграм спільноти t.me/uasmarthome та t.me/SmHomeUa

Цікава стаття. А як вам Node-RED?

Виглядає чудово, але поки не мав нагоди з ним працювати. Часто можна почути думку «використовуйте автоматизації, або Node-Red».

В мене немає думки з цього приводу. А як вам Node-RED?

Node-RED трохи споріднена, але має інше призначення.

Я наразі експериментую з Node-RED для невеликих аматорських проектів на Arduino або ESP8266, там де є MQTT, REST API, БД та якісь зовнішні скрипти. Спробував Arduino+Firmata з Johny5 на хості, наче прикольно, хоча поки не все зрозуміло. (Трошки детальніше: Firmata та Node-RED, Firmata через Bluetooth).

Кажуть, сильна сторона Home Assistant це велика кількість підтримуваних пристроїв, що для home automation дуже важливо. У мене це не home automation, бо нема Smart TV, розумних лампочок чи кондиціонера, щоб ними можна було керувати. Хіба що є MPD для музики, він до Node-RED підключається без проблем.

Але з іншого боку, сильна сторона Node-RED у можливості побудувати порівняно складну логіку на JavaScript, легко поєднуючи досить різні, у тому числі низькорівневі штуки (як-то БД та дані Arduino, соромно сказати як я це робив раніше).

А, ще. У Home Assistant є мобільний додаток, а у Node-RED нема. Можна побудувати dashboard, але для нотифікацій треба сторонні додатки. Я користуюся для цього ntfy.sh, наче норм.

Прочитав ваш коментар. Дуже цікавий досвід. Дякую за детальний опис та посилання. Node-RED бачу часто, але ще не доводилось використовувати. Нещодавно почав використовувати ESPHome. Мені сподобався через можливість швидкого створення пристроїв.

Так кількість інтеграцій та додатків, що підтримують роботу пристроїв дійсно приголомшлива. Вони є для всього і більше. Інше питання скільки з них потрібно для конкретного користувача (приблизно десяток). Дуже приємно працювати, коли все що тобі потрібно доступне, а ще в мережі є інструкції як це зробити.

Мобільний додаток усе змінює. Хочеш зроби кнопку, перемикач, графік, будь якої форми, кольору та функціоналу. І все це доступне в один клік вдома і за його межами. А ще можна роздати доступи членам сім’ї і все працюватиме.

Є ж опція поставити HA, а Node Red використовувати для більш складних автоматизацій 🤔 тоді буде все а одному. MPD в HA також легко додати.

Єдине, що якщо вдома немає сенсорів та інших розумних речей, то, дійсно, буде нудно...

Home Assistant — one love.
Скористаюся нагодою прорекламувати канал українця, який профі в HA: www.youtube.com/c/AlexKvazis

Я сам почав вивчати Home Assistant завдяки його відео. Вони послідовні, висвітлюють цікаві теми.

От якщо він ще на українську перейшов, то взагалі ціни б йому не було :)

Мені потрапило одне з його відео саме українською. Також він теж має телеграм канал. Я приєднався до нього, але пробув я там не довго. Як виявилось основна мова спілкування була орківська, на мої питання українською не було відповідей. Також я зрозумів, що там багато москаликів зависає. Вийшов звідти.

На жаль не користувався. Підкажіть чим він відрізняється від подібних рішень? Він підтримує українську?

Підписатись на коментарі