Last active
October 16, 2025 14:47
-
-
Save smirnowegor/1d4b792867ee7ea1b2c34eb29a37800b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: Свет в прихожей — движение + опц. датчик двери + таймер (time from input_number, безопасно) — improved | |
| description: > | |
| Включает свет при движении. | |
| При отсутствии движения стартует выбранный timer.* с длительностью из выбранного input_number (минуты). | |
| По завершении таймера выключает свет. | |
| Опционально: при открытии двери — включение и отмена таймера; | |
| при закрытии двери — старт таймера только если ВСЕ датчики движения сейчас OFF. | |
| domain: automation | |
| input: | |
| motion_sensors: | |
| name: Датчики движения | |
| description: Список binary_sensor — датчики движения (multiple). | |
| selector: | |
| entity: | |
| domain: binary_sensor | |
| multiple: true | |
| lights: | |
| name: Целевые устройства / группы (light/switch/group ...) | |
| selector: | |
| target: {} | |
| timer_entity: | |
| name: Таймер (timer.*) | |
| selector: | |
| entity: | |
| domain: timer | |
| delay_input_number: | |
| name: Input number для времени ожидания (минуты) | |
| selector: | |
| entity: | |
| domain: input_number | |
| door_sensor: | |
| name: Датчик двери (опционально) | |
| description: Оставьте пустым, если нет двери. | |
| default: null | |
| selector: | |
| entity: | |
| domain: binary_sensor | |
| variables: | |
| delay_input: !input delay_input_number | |
| # более устойчивое преведение: если input_number пустой/нечисло — используем 3 | |
| minutes: "{{ states(delay_input) | default('3') | float | int }}" | |
| door_sensor: !input door_sensor | |
| motion_list: !input motion_sensors | |
| trigger: | |
| - platform: state | |
| entity_id: !input motion_sensors | |
| to: "on" | |
| id: motion_detected | |
| - platform: state | |
| entity_id: !input motion_sensors | |
| to: "off" | |
| id: motion_stopped | |
| - platform: event | |
| event_type: timer.finished | |
| event_data: | |
| entity_id: !input timer_entity | |
| id: timer_finished | |
| # безопасные template-триггеры для опционального датчика двери | |
| - platform: template | |
| value_template: >- | |
| {% if door_sensor %} | |
| {{ is_state(door_sensor, 'on') }} | |
| {% else %} | |
| false | |
| {% endif %} | |
| id: door_opened | |
| - platform: template | |
| value_template: >- | |
| {% if door_sensor %} | |
| {{ is_state(door_sensor, 'off') }} | |
| {% else %} | |
| false | |
| {% endif %} | |
| id: door_closed | |
| condition: [] | |
| action: | |
| - choose: | |
| - conditions: | |
| - condition: trigger | |
| id: motion_detected | |
| sequence: | |
| - service: homeassistant.turn_on | |
| target: !input lights | |
| - service: timer.cancel | |
| target: | |
| entity_id: !input timer_entity | |
| - conditions: | |
| - condition: trigger | |
| id: motion_stopped | |
| sequence: | |
| - service: timer.start | |
| target: | |
| entity_id: !input timer_entity | |
| data: | |
| duration: >- | |
| {% set m = minutes | int %} | |
| {% set hh = (m // 60) %} | |
| {% set mm = (m % 60) %} | |
| {{ "%02d:%02d:00" | format(hh, mm) }} | |
| - conditions: | |
| - condition: trigger | |
| id: door_opened | |
| sequence: | |
| - service: homeassistant.turn_on | |
| target: !input lights | |
| - service: timer.cancel | |
| target: | |
| entity_id: !input timer_entity | |
| - conditions: | |
| - condition: trigger | |
| id: door_closed | |
| - condition: template | |
| value_template: >- | |
| {% set ml = motion_list %} | |
| {% if ml is defined and ml | length > 0 %} | |
| {{ expand(ml) | selectattr('state','equalto','on') | list | length == 0 }} | |
| {% else %} | |
| true | |
| {% endif %} | |
| sequence: | |
| - service: timer.start | |
| target: | |
| entity_id: !input timer_entity | |
| data: | |
| duration: >- | |
| {% set m = minutes | int %} | |
| {% set hh = (m // 60) %} | |
| {% set mm = (m % 60) %} | |
| {{ "%02d:%02d:00" | format(hh, mm) }} | |
| - conditions: | |
| - condition: trigger | |
| id: timer_finished | |
| sequence: | |
| - service: homeassistant.turn_off | |
| target: !input lights | |
| mode: restart |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment