Automatizace – Ovládání spínačem pohybového senzoru v domácím asistentovi | Hloupý dům
Jednou z nejběžnějších automatizací je ovládání osvětlení pomocí pohybového senzoru, je velmi pohodlné vstoupit do místnosti a světlo se automaticky rozsvítí, po určité době se světlo samo vypne. Podívejme se na příklady jeho implementace.
Příklad 1
- Snímač pohybu – ID zařízení: 0x001
- Řízený spínač fyzicky zapínající/opínající elektrické vedení – ID zařízení: 0x002
- Zapínání osvětlení pomocí pohybového senzoru
- Osvětlení se vypne 3 minuty poté, co senzor přestane detekovat pohyb
- Zhasnutí osvětlení po 3 minutách od zapnutí spínače (v případě, že světlo bylo zapnuto spínačem, ale v místnosti nebyl detekován žádný pohyb)
Upravíme soubor automations.yaml nebo použijeme editor automatizace Konfigurace -> Automatizace -> + .
Akce 1. Když se pohybový senzor přepne do zapnutého stavu, zkontroluje se aktuální stav spínače; pokud je spínač ve vypnutém stavu, osvětlení se rozsvítí.
- id: turn_on_light_by_motion_sensor alias: Zapnutí světla pomocí pohybového senzoru trigger: - platforma: stav entity_id: binary_sensor.0x001_occupancy to: 'zapnuto' podmínka: - podmínka: stav entity_id: switch.0x002_switch stav: 'vypnuto' akce: - služba: switch.turn_on entity_id: switch.0x002_switch data: <>
Akce 2. Když se pohybový senzor po 3 minutách přepne do vypnutého stavu, zkontroluje se aktuální stav spínače; pokud je spínač v zapnutém stavu, osvětlení se vypne.
- id: turn_off_light_by_motion_sensor alias: Vypnutí světla pohybovým senzorem trigger: - platforma: state entity_id: binary_sensor.0x001_occupancy to: 'off' for: 00:03:00 condition: - condition: state entity_id: switch.0x002_switch state: 'on' action: - služba: switch.turn_off entity_id: switch.0x002_switch data: <>
Akce 3. Po zapnutí osvětlení se po 3 minutách zkontroluje stav senzoru na pohyb. Pokud není detekován, osvětlení se vypne. V opačném případě by se světlo mělo vypnout, když se senzor pohybu vypne – akce 2.
- id: turn_off_light_after_3_min_when_switch_on alias: Vypnout světlo po 3 minutách při zapnutí trigger: - platforma: stav entity_id: switch.0x002_switch to: 'on' for: 00:03:00 condition: - podmínka: stav entity_id: binary_sensor.0x001_occupancy state: 'off' action: - služba: switch.turn_off entity_id: switch.0x002_switch data: <>
Příklad 2
Automatické zapínání a vypínání osvětlení je skvělé, ale existují situace, kdy to není nutné a potřebujete mít možnost tuto funkci vypnout. Automatizaci můžete v nastavení vypnout, ale pohodlnější bude vytvořit přepínač, který bude mít na starosti automatické zapínání a vypínání osvětlení.
V nabídce Konfigurace -> Pomocníci -> + vytvořte automatický přepínač typu Toggle s názvem auto_light_on_off nebo do souboru configuration.yaml přidejte následující položku:
input_boolean: auto_light_on_off: name: Automatické zapnutí světel
Pro rychlý přístup je vhodné zobrazit tlačítko na panelu Lovelace.

- Automatický spínač zapnutí/vypnutí světel – ID: input_boolean.auto_light_on_off
- Snímač pohybu – ID zařízení: 0x001
- Řízený spínač fyzicky zapínající/opínající elektrické vedení – ID zařízení: 0x002
- Zapínání osvětlení pomocí pohybového senzoru
- Osvětlení se vypne 3 minuty poté, co senzor přestane detekovat pohyb
- Zhasnutí osvětlení po 3 minutách od zapnutí spínače (v případě, že světlo bylo zapnuto spínačem, ale v místnosti nebyl detekován žádný pohyb)
- Osvětlení se vypne 3 minuty po zapnutí automatického spínače
Akce 1. Když se pohybový senzor přepne do zapnutého stavu, zkontroluje se aktuální stav automatizačního spínače a spínače osvětlení; pokud je první spínač zapnutý a druhý spínač vypnutý, osvětlení se zapne.
- id: turn_on_light_by_motion_sensor alias: Zapnutí světla pomocí pohybového senzoru trigger: - platforma: stav entity_id: binary_sensor.0x001_occupancy to: 'on' podmínka: - podmínka: stav entity_id: input_boolean.auto_light_on_off stav: 'on' - podmínka: a podmínky: - podmínka: stav entity_id: switch.0x002_switch stav: 'off' akce: - služba: switch.turn_on entity_id: switch.0x002_switch data: <>
Akce 2. Když se pohybový senzor po 3 minutách přepne do vypnutého stavu, zkontroluje se aktuální stav automatického spínače a spínače světla; pokud je první spínač v zapnutém stavu a druhý spínač je v zapnutém stavu, osvětlení se vypne.
- id: turn_off_light_by_motion_sensor alias: Vypnutí světla pohybovým senzorem trigger: - platforma: state entity_id: binary_sensor.0x001_occupancy to: 'off' for: 00:03:00 condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - služba: switch.turn_off entity_id: switch.0x002_switch data: <>
Akce 3. Po zapnutí osvětlení se po 3 minutách zkontroluje stav automatického spínače a senzoru pohybu; pokud je automatický spínač zapnutý a není detekován žádný pohyb, osvětlení se vypne. V opačném případě by se světlo mělo vypnout, když senzor pohybu přejde do vypnutého stavu – akce 2.
- id: turn_off_light_after_3_min_when_switch_on alias: Vypnout světlo po 3 minutách při zapnutí trigger: - platforma: stav entity_id: switch.0x002_switch to: 'on' for: 00:03:00 condition: - condition: stav entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: stav entity_id: binary_sensor.0x001_occupancy state: 'off' action: - služba: switch.turn_off entity_id: switch.0x002_switch data: <>
Akce 4. Po zapnutí automatického osvětlení se po 3 minutách zkontroluje aktuální stav automatického spínače (během čekací doby lze vypnout), pohybového senzoru a spínače světla. Pokud je automatika zapnutá, pohyb je vypnutý a světlo svítí, osvětlení se vypne.
- id: turn_off_light_after_3_min_when_auto_on alias: Vypnout světlo po 3 minutách při zapnutí trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'on' for: 00:03:00 condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: <>
Příklad 3
V příkladu 2 je chyba v kroku 4, kdy detekce pohybu skončí dříve než časovač, osvětlení se vypne dříve, než se očekávalo, protože stavy zařízení budou odpovídat podmínkám. Problém křížových časovačů lze vyřešit vytvořením vlastního časovače, podle kterého se osvětlení vypne. V souboru configuration.yaml popisujeme časovač, doba vypnutí je 180 sekund:
timer: light_turn_off: name: Časovač vypnutí světla trvá: 180
- Automatický spínač zapnutí/vypnutí světel – ID: input_boolean.auto_light_on_off
- Časovač automatického vypnutí světla – ID: timer.light_turn_off
- Snímač pohybu – ID zařízení: 0x001
- Řízený spínač fyzicky zapínající/opínající elektrické vedení – ID zařízení: 0x002
- Zapněte automatické osvětlení
- Vypněte automatické osvětlení
- Zapnutí osvětlení vypínačem
- Vypnutí osvětlení vypínačem
- Zapínání osvětlení pomocí pohybového senzoru
- Zrušit časovač při detekci pohybu
- Pohybový senzor přestal detekovat pohyb.
- Časovač dokončil odpočítávání.
Krok 1. Po zapnutí automatického spínače se časovač osvětlení restartuje, pokud je snímač pohybu ve vypnutém stavu a osvětlení je zapnuté.
- id: 'turn_on_auto_light' alias: Automatické rozsvícení světla trigger: - platforma: stav entity_id: input_boolean.auto_light_on_off to: 'on' podmínka: - podmínka: stav entity_id: binary_sensor.0x001_occupancy stav: 'off' - podmínka: a podmínky: - podmínka: stav entity_id: switch.0x002_switch stav: 'on' akce: - služba: timer.cancel entity_id: timer.light_turn_off data: <> - služba: timer.start entity_id: timer.light_turn_off data: <>
Krok 2. Pokud byl spuštěn časovač vypnutí, je-li automatický spínač vypnut, zrušen.
- id: 'turn_off_auto_light' alias: Spouštěč automatického vypnutí světel: - platforma: stav entity_id: input_boolean.auto_light_on_off to: 'off' podmínka: - podmínka: stav entity_id: timer.light_turn_off stav: aktivní akce: - služba: timer.cancel entity_id: timer.light_turn_off data: <>
Krok 3. Po zapnutí osvětlení spínačem se časovač vypnutí restartuje, pokud je automatický spínač zapnutý a snímač pohybu vypnutý.
- id: 'turn_on_light' alias: Spouštěč zapnutí světla: - platforma: stav entity_id: switch.0x002_switch to: 'on' podmínka: - podmínka: stav entity_id: input_boolean.auto_light_on_off stav: 'on' - podmínka: a podmínky: - podmínka: stav entity_id: binary_sensor.0x001_occupancy stav: 'off' akce: - služba: timer.cancel entity_id: timer.light_turn_off data: <> - služba: timer.start entity_id: timer.light_turn_off data: <>
Krok 4. Pokud je osvětlení vypnuto pomocí vypínače a byl spuštěn časovač vypnutí, zruší se.
- id: 'turn_off_light' alias: Spouštěč vypnutí světla: - platforma: stav entity_id: switch.0x002_switch to: 'off' podmínka: - podmínka: stav entity_id: timer.light_turn_off stav: aktivní akce: - služba: timer.cancel entity_id: timer.light_turn_off data: <>
Krok 5. Po detekci pohybu se osvětlení rozsvítí, pokud je automatický spínač zapnutý a osvětlení je aktuálně vypnuté.
- id: 'turn_on_light_by_motion' alias: Zapnutí světla pohybovým senzorem trigger: - platforma: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'off' action: - služba: switch.turn_on entity_id: switch.0x002_switch data: <>
Krok 6: Pokud je detekován pohyb, časovač vypnutí se zruší, pokud je aktuálně aktivní.
- id: 'cancel_timer_by_motion' alias: Zrušení časovače pohybovým senzorem trigger: - platforma: state entity_id: binary_sensor.0x001_occupancy to: 'on' condition: - condition: state entity_id: timer.light_turn_off state: active action: - služba: timer.cancel entity_id: timer.light_turn_off data: <>
Krok 7. Když senzor přestane detekovat pohyb, automatický spínač se zapne a světlo se rozsvítí, spustí se časovač pro vypnutí osvětlení.
- id: 'start_timer_by_motion' alias: Spuštění časovače pohybovým senzorem trigger: - platforma: state entity_id: binary_sensor.0x001_occupancy to: 'off' condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - služba: timer.start entity_id: timer.light_turn_off data: <>
Krok 8. Po skončení odpočítávání časovače se osvětlení vypne, pokud je zapnutý automatický spínač, snímač pohybu je vypnutý a osvětlení je zapnuté.
- id: 'turn_off_light_by_timer' alias: Časovač dokončen trigger: - platforma: událost event_type: timer.finished event_data: entity_id: timer.light_turn_off condition: - condition: state entity_id: input_boolean.auto_light_on_off state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.0x001_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: switch.0x002_switch state: 'on' action: - service: switch.turn_off entity_id: switch.0x002_switch data: <>
Balíčky
Pro snazší správu lze sady pomocných komponent a automatizací spojených společným scénářem zapsat do samostatného souboru s příponou yaml. Pro připojení dat z tohoto souboru je nutné jej umístit do složky .homeassistant/packages/ a do souboru configuration.yaml je nutné zapsat následující:
homeassistant: balíčky: !include_dir_named balíčky
Pro výše uvedený příklad vytvořme soubor .homeassistant/packages/room_auto_light.yaml se scénářem pro ovládání osvětlení místnosti s následujícím obsahem:
# Automatické zapnutí/vypnutí osvětlení místnosti input_boolean: auto_light_on_off: name: Automatické zapnutí osvětlení # Časovač vypnutí osvětlení místnosti (180 sekund) timer: light_turn_off: name: Časovač vypnutí osvětlení duration: 180 # Automatizace automatizace: # Zapnutí automatického zapnutí osvětlení - id: 'turn_on_auto_light' alias: Automatické zapnutí osvětlení trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'on' condition: . # Vypnutí automatického zapnutí osvětlení - id: 'turn_off_auto_light' alias: Automatické vypnutí osvětlení trigger: - platform: state entity_id: input_boolean.auto_light_on_off to: 'off' condition: . . .
Po restartu Home Assistant budou v systému k dispozici další komponenty a automatizace.