- id: adults_away alias: Adults away initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person3_home - input_boolean.person2_home to: 'off' condition: - condition: and conditions: - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.adults_away - id: adults_away_something_open alias: Adults away something open initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.adults_away - input_boolean.all_away from: 'off' to: 'on' condition: - '{{ (now()-trigger.from_state.last_changed).seconds > 300 }}' - condition: or conditions: - condition: state entity_id: group.my_exterior_doors state: 'on' - condition: state entity_id: group.my_downstairs_windows state: 'on' - condition: and conditions: - condition: state entity_id: - group.my_upstairs_windows - input_boolean.all_away state: 'on' action: - if: - condition: template value_template: '{{ as_timestamp(states.input_boolean.person2_home.last_updated) > as_timestamp(states.input_boolean.person3_home.last_updated) }}' then: - if: - condition: state entity_id: binary_sensor.pixel_xl_android_auto state: 'on' then: - action: notify.mobile_app_pixel_xl data: title: '{{ expand([''group.my_downstairs_windows'', ''group.my_upstairs_windows'', ''group.my_exterior_doors''])|selectattr(''state'', ''eq'', ''on'')|list|length }} things are open' message: 'The following are open: {{ expand([''group.my_downstairs_windows'', ''group.my_upstairs_windows'', ''group.my_exterior_doors''])|selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }}' data: car_ui: true notification_icon: mdi:shield-home channel: car importance: high else: - action: notify.person2 data: message: 'The following are open: {{ expand([''group.my_downstairs_windows'', ''group.my_upstairs_windows'', ''group.my_exterior_doors''])|selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }}' else: - action: notify.person3 data: message: 'The following are open: {{ expand([''group.my_downstairs_windows'', ''group.my_upstairs_windows'', ''group.my_exterior_doors''])|selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }}' - id: adults_returned alias: Adults returned initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person3_home - input_boolean.person2_home to: 'on' condition: - condition: state entity_id: input_boolean.adults_away state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.adults_away - id: master_bedroom_air_quality alias: Master bedroom air quality initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.master_bedroom_environment_pm25 above: 50 for: 00:02:00 condition: - condition: state entity_id: - input_boolean.person3_is_awake - input_boolean.person2_is_awake state: 'on' action: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The particulate level is {{ states('sensor.master_bedroom_environment_pm25') }}, above the recommended maximum of 50. Please ventilate the room media_content_type: music announce: true extra: volume: 20 target: entity_id: media_player.master_bedroom_display - id: alarm_arm_away alias: Alarm arm away trigger: - platform: state entity_id: - binary_sensor.home_occupied - group.downstairs_occupied to: 'off' condition: - condition: state entity_id: - binary_sensor.home_occupied - group.downstairs_occupied state: 'off' action: - service: alarmo.arm data: entity_id: alarm_control_panel.master mode: away - id: alarm_arm_at_night alias: Alarm arm at night trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' action: - service: alarmo.arm data: entity_id: alarm_control_panel.master mode: night - id: alarm_arm_vacation alias: Alarm arm vacation trigger: - platform: state entity_id: input_boolean.holiday_mode to: 'on' action: - service: alarmo.arm data: entity_id: alarm_control_panel.master mode: vacation - id: alarm_disarm_hall alias: Alarm disarm hall trigger: - platform: state entity_id: binary_sensor.vestibule_multi_occupancy to: 'on' condition: - condition: state entity_id: binary_sensor.front_door_contact state: 'off' - condition: not conditions: - condition: state entity_id: alarm_control_panel.master state: disarmed action: - service: alarmo.disarm data: entity_id: alarm_control_panel.master - id: alarm_disarm_in_the_morning alias: Alarm disarm in the morning trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: binary_sensor.utility_motion_occupancy to: 'on' condition: - condition: not conditions: - condition: state entity_id: alarm_control_panel.master state: disarmed action: - service: alarmo.disarm data: entity_id: alarm_control_panel.master - id: alarm_disarm_upon_return alias: Alarm disarm upon return trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'on' condition: - condition: not conditions: - condition: state entity_id: alarm_control_panel.master state: disarmed action: - service: alarmo.disarm data: entity_id: alarm_control_panel.master - id: all_away_media_off alias: All away media off initial_state: 'off' trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'off' condition: condition: or conditions: - condition: state entity_id: media_player.office state: playing - condition: state entity_id: media_player.family_room state: playing - condition: state entity_id: media_player.living_room state: playing - condition: state entity_id: media_player.person1 state: playing - condition: state entity_id: media_player.person2 state: playing action: service: media_player.media_pause - id: house_awake alias: House awake initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_hall - switch.adaptive_lighting_sleep_mode_living_room_lamps - switch.adaptive_lighting_sleep_mode_living_room_table - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_sleep_mode_office - switch.adaptive_lighting_sleep_mode_second_bedroom - id: spare_bedroom_guest_mode_off alias: Spare bedroom guest mode off - turn down the heat initial_state: 'on' trigger: - platform: state entity_id: input_boolean.guest_mode to: 'off' action: - service: climate.set_preset_mode data: preset_mode: away target: entity_id: climate.spare_bedroom_radiator - id: spare_bedroom_guest_mode_on alias: Spare bedroom guest mode on - turn up the heat initial_state: 'on' trigger: - platform: state entity_id: input_boolean.guest_mode to: 'on' action: - service: climate.set_temperature data: temperature: 21 target: entity_id: climate.spare_bedroom_radiator - id: awtrix_calendar alias: Awtrix calendar initial_state: 'on' trigger: - platform: time_pattern minutes: /5 condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: template value_template: '{{ -1 < (state_attr(''calendar.person2_work'',''start_time'')|as_timestamp() - now()|as_timestamp()) < 1000 }}' action: - service: notify.awtrix_6d6f50 data: message: '{% from ''relative_time_plus.jinja'' import relative_time_plus %} {{ state_attr(''calendar.person2_work'',''message'') }} starts in {{ relative_time_plus(state_attr(''calendar.person2_work'',''start_time'')|as_timestamp()|as_datetime()) }}' data: icon: '9916' pushIcon: 0 repeat: 2 - id: awtrix_family_room_clock_colour alias: awtrix family room clock colour initial_state: 'on' trigger: - platform: time_pattern minutes: /5 variables: when: '{{ -1 if is_state(''sensor.sm_a546b_next_alarm'',''unavailable'') else ((as_datetime(states(''sensor.sm_a546b_next_alarm'')) - now()).seconds/60)|round(0) }}' action: - choose: - conditions: - condition: template value_template: '{{ is_state(''input_boolean.person1_in_bed'',''on'') or is_state(''input_boolean.second_bedroom_occupied'',''on'') or when < 0 or when >= (8.5 * 60) }}' sequence: - alias: White service: mqtt.publish data: qos: 0 retain: false topic: awtrix_family_room/settings payload: '{ "TIME_COL": [255,255,255], "CBCOL": [255, 255, 255] }' - conditions: - condition: template value_template: '{{ when < (8.5 * 60) and when > (7.5 * 60) }}' sequence: - alias: Amber service: mqtt.publish data: qos: 0 retain: false topic: awtrix_family_room/settings payload: '{ "TIME_COL": [255,165,0] }' - conditions: - condition: template value_template: '{{ when <= (7.5 * 60) }}' sequence: - alias: Red service: mqtt.publish data: qos: 0 retain: false topic: awtrix_family_room/settings payload: '{ "TIME_COL": [255,0,0] }' default: - alias: Default white service: mqtt.publish data: qos: 0 retain: false topic: awtrix_family_room/settings payload: '{ "TIME_COL": [255,255,255], "CBCOL": [255, 255, 255] }' - id: awtrix_clock_mode alias: Awtrix clock mode initial_state: 'on' description: '' trigger: - platform: time at: '23:00:00' id: NM Start enabled: true - platform: time at: 07:00:00 id: NM End enabled: true action: - choose: - conditions: - condition: trigger id: - NM Start sequence: - service: mqtt.publish data: qos: 0 retain: false topic: awtrix_6d6f50/switch payload: '{"name":"Time"}' - service: mqtt.publish data: qos: 0 retain: false topic: awtrix_6d6f50/settings payload: '{ "WD": false, "TIME_COL": [255,0,0], "TMODE": 0, "BRI": 1, "ABRI": false, "ATRANS": false }' - conditions: - condition: trigger id: - NM End enabled: true sequence: - service: mqtt.publish data: qos: 0 retain: false topic: awtrix_6d6f50/settings payload: '{ "WD": true, "TIME_COL": [255,255,255], "TMODE": 2, "ABRI": true, "ATRANS": true }' mode: single - id: awtrix_next_meeting alias: Awtrix next meeting description: Ths changes the colour of the date box on the default time app. Green for no meeting in the next half hour. Amber for a meeting 15 to 30 minutes away. Red for a meeting in the next 15 minutes. Finally Blue for currently in a meeting. initial_state: 'on' trigger: - platform: time_pattern minutes: /1 - platform: state entity_id: input_boolean.office_occupied to: 'on' variables: next_in: '{{ state_attr(''calendar.person2_work'',''start_time'')|as_timestamp() - now()|as_timestamp() }}' end_in: '{{ state_attr(''calendar.person2_work'',''end_time'')|as_timestamp() - now()|as_timestamp() }}' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: template value_template: '{{ "Reminder: " not in state_attr(''calendar.person2_work'',''message'') }}' action: - choose: - conditions: - condition: template value_template: '{{ next_in|float() > 1801 }}' - condition: not conditions: - condition: state entity_id: input_select.next_meeting state: None sequence: - service: input_select.select_option data: entity_id: input_select.next_meeting option: None - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"CHCOL\": \"#007700\"\n}" topic: awtrix_6d6f50/settings - conditions: - condition: template value_template: '{{ 901 < next_in|float() <= 1801 }}' - condition: not conditions: - condition: state entity_id: input_select.next_meeting state: Shortly sequence: - service: input_select.select_option data: entity_id: input_select.next_meeting option: Shortly - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"CHCOL\": \"#FF7400\"\n}" topic: awtrix_6d6f50/settings - conditions: - condition: template value_template: '{{ 0 <= next_in|float() <= 901 }}' - condition: not conditions: - condition: state entity_id: input_select.next_meeting state: Imminent sequence: - service: input_select.select_option data: entity_id: input_select.next_meeting option: Imminent - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"CHCOL\": \"#FF0000\"\n}" topic: awtrix_6d6f50/settings - conditions: - condition: template value_template: '{{ (next_in|float() < 0) and (end_in|float() > 0) }}' - condition: not conditions: - condition: state entity_id: input_select.next_meeting state: Now sequence: - service: input_select.select_option data: entity_id: input_select.next_meeting option: Now - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"CHCOL\": \"#FF00FF\"\n}" topic: awtrix_6d6f50/settings - id: awtrix_weather_app alias: Awtrix weather app initial_state: 'on' trigger: - platform: state entity_id: weather.tomorrow_io_home_nowcast variables: temperature: '{{ states(''sensor.tomorrow_io_home_feels_like'')|round(1,''half'') }}{{ state_attr(''sensor.tomorrow_io_home_feels_like'',''unit_of_measurement'') }}' colour: '{% if states(''sensor.tomorrow_io_home_feels_like'')|round(1)|float <= 0 %}#6666ff{% elif states(''sensor.tomorrow_io_home_feels_like'')|round(1)|float >= 25 %}#ff7777{% else %}#ffffff{% endif %}' weather_icon: '{% set weather_cond_day = ({ "clear-night":"13345", "cloudy":"52159", "fog":"676", "hail":"53288", "lightning":"56676", "lightning-rainy":"56675", "partlycloudy":"2286", "pouring":"49300", "rainy":"2284", "snowy":"2289", "snowy-rainy":"49301", "sunny":"11201", "windy":"55032", "windy-variant":"56598", "exceptional":"16754" }) %} {% set weather_cond_night = ({ "clear-night":"13345", "cloudy":"55707", "fog":"43741", "hail":"53288", "lightning":"56676", "lightning-rainy":"56675", "partlycloudy":"58532", "pouring":"26092", "rainy":"26092", "snowy":"26090", "snowy-rainy":"49301", "sunny":"18433", "windy":"56585", "windy-variant":"56585", "exceptional":"16754" }) %} {{ weather_cond_night[states(''weather.tomorrow_io_home_nowcast'')] if is_state(''sun.sun'',''below_horizon'') else weather_cond_day[states(''weather.tomorrow_io_home_nowcast'')] }}' action: - repeat: for_each: - 6d6f50 - living_room - family_room sequence: - service: awtrix.awtrix_{{ repeat.item }}_push_app_data data: name: weather data: text: '{{ temperature }}' icon: '{{ weather_icon }}' gradient: - '{{ colour }}' - '#FFFFFF#' rainbow: false repeat: 2 pushIcon: 1 textCase: 0 textOffset: 0 lifetime: 1800 lifetimeMode: 0 - id: battery_aa alias: Battery AA mode: parallel trigger: - platform: state entity_id: binary_sensor.family_room_multi_battery_low to: 'on' action: service: notify.apprise data: target: discord title: '' message: ':low_battery: The {{ trigger.to_state.name }} has a low battery, fit some new AAs' - id: battery_cr1632 alias: Battery CR1632 mode: parallel trigger: - platform: state entity_id: - binary_sensor.front_door_battery_low - binary_sensor.patio_door_left_battery_low - binary_sensor.patio_door_right_battery_low - binary_sensor.utility_door_exterior_battery_low - binary_sensor.vestibule_door_battery_low - binary_sensor.garage_door_car_battery_low - binary_sensor.garage_door_bike_battery_low - binary_sensor.chest_bike_lid_battery_low to: 'on' - platform: numeric_state entity_id: - sensor.chest_bike_lid_battery - sensor.garage_door_car_battery - sensor.garage_door_bike_battery - sensor.bathroom_door_battery - sensor.bathroom_window_battery - sensor.family_window_left_battery - sensor.family_window_right_battery - sensor.front_door_battery - sensor.guest_bedroom_door_battery - sensor.guest_bedroom_window_left_battery - sensor.guest_bedroom_window_right_battery - sensor.kitchen_window_left_battery - sensor.kitchen_window_right_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_door_battery - sensor.master_window_ensuite_battery - sensor.master_window_left_battery - sensor.master_window_right_battery - sensor.office_dial_moes_battery - sensor.office_door_battery - sensor.office_window_battery - sensor.patio_door_left_battery - sensor.patio_door_right_battery - sensor.patio_window_left_battery - sensor.patio_window_right_battery - sensor.second_bedroom_ensuite_battery - sensor.second_bedroom_window_ensuite_battery - sensor.second_bedroom_window_left_battery - sensor.second_bedroom_window_right_battery - sensor.second_ensuite_door_battery - sensor.spare_bedroom_window_left_battery - sensor.spare_bedroom_window_right_battery - sensor.utility_door_exterior_battery - sensor.vestibule_window_front_battery - sensor.vestibule_window_side_battery below: 21 for: 03:00:00 - platform: numeric_state entity_id: - sensor.chest_bike_lid_battery - sensor.garage_door_car_battery - sensor.garage_door_bike_battery - sensor.bathroom_door_battery - sensor.bathroom_window_battery - sensor.family_window_left_battery - sensor.family_window_right_battery - sensor.front_door_battery - sensor.guest_bedroom_door_battery - sensor.guest_bedroom_window_left_battery - sensor.guest_bedroom_window_right_battery - sensor.kitchen_window_left_battery - sensor.kitchen_window_right_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_door_battery - sensor.master_window_ensuite_battery - sensor.master_window_left_battery - sensor.master_window_right_battery - sensor.office_dial_moes_battery - sensor.office_door_battery - sensor.office_window_battery - sensor.patio_door_left_battery - sensor.patio_door_right_battery - sensor.patio_window_left_battery - sensor.patio_window_right_battery - sensor.second_bedroom_ensuite_battery - sensor.second_bedroom_window_ensuite_battery - sensor.second_bedroom_window_left_battery - sensor.second_bedroom_window_right_battery - sensor.second_ensuite_door_battery - sensor.spare_bedroom_window_left_battery - sensor.spare_bedroom_window_right_battery - sensor.utility_door_exterior_battery - sensor.vestibule_window_front_battery - sensor.vestibule_window_side_battery below: 11 for: 03:00:00 - platform: numeric_state entity_id: - sensor.chest_bike_lid_battery - sensor.garage_door_car_battery - sensor.garage_door_bike_battery - sensor.bathroom_door_battery - sensor.bathroom_window_battery - sensor.family_window_left_battery - sensor.family_window_right_battery - sensor.front_door_battery - sensor.guest_bedroom_door_battery - sensor.guest_bedroom_window_left_battery - sensor.guest_bedroom_window_right_battery - sensor.kitchen_window_left_battery - sensor.kitchen_window_right_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_door_battery - sensor.master_window_ensuite_battery - sensor.master_window_left_battery - sensor.master_window_right_battery - sensor.office_dial_moes_battery - sensor.office_door_battery - sensor.office_window_battery - sensor.patio_door_left_battery - sensor.patio_door_right_battery - sensor.patio_window_left_battery - sensor.patio_window_right_battery - sensor.second_bedroom_ensuite_battery - sensor.second_bedroom_window_ensuite_battery - sensor.second_bedroom_window_left_battery - sensor.second_bedroom_window_right_battery - sensor.second_ensuite_door_battery - sensor.spare_bedroom_window_left_battery - sensor.spare_bedroom_window_right_battery - sensor.utility_door_exterior_battery - sensor.vestibule_window_front_battery - sensor.vestibule_window_side_battery below: 6 for: 01:00:00 action: service: notify.apprise data: target: discord title: '' message: ':low_battery: The {{ trigger.to_state.name }} is at {{ trigger.to_state.state }}% battery, it uses a CR1632 coin cell' - id: battery_cr2032 alias: Battery CR2032 mode: parallel trigger: - platform: state entity_id: - binary_sensor.bathroom_water_leak_battery_low - binary_sensor.kitchen_water_leak_battery_low - binary_sensor.master_ensuite_leak_battery_low - binary_sensor.second_ensuite_battery_low - binary_sensor.toilet_water_leak_battery_low - binary_sensor.utility_room_water_leak_battery_low to: 'on' - platform: numeric_state entity_id: - sensor.bathroom_environment_battery - sensor.living_room_climate_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_environment_battery - sensor.office_battery - sensor.second_bedroom_ensuite_battery - sensor.utility_remote_battery below: 21 for: 03:00:00 - platform: numeric_state entity_id: - sensor.bathroom_environment_battery - sensor.living_room_climate_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_environment_battery - sensor.office_battery - sensor.second_bedroom_ensuite_battery - sensor.utility_remote_battery below: 11 for: 03:00:00 - platform: numeric_state entity_id: - sensor.bathroom_environment_battery - sensor.living_room_climate_battery - sensor.master_bedroom_button_battery - sensor.master_ensuite_environment_battery - sensor.office_battery - sensor.second_bedroom_ensuite_battery - sensor.utility_remote_battery below: 6 for: 01:00:00 action: service: notify.apprise data: target: discord title: '' message: ':low_battery: The {{ trigger.to_state.name }} is at {{ trigger.to_state.state }}% battery, it uses a CR2032 coin cell' - id: battery_cr2450 alias: Battery CR2450 mode: parallel trigger: - platform: state entity_id: - binary_sensor.upstairs_hall_motion_front_battery_low - binary_sensor.office_presence_battery_low to: 'on' - platform: numeric_state entity_id: - sensor.downstairs_hall_light_sensor_battery - sensor.downstairs_hall_motion_battery - sensor.hue_dimmer_battery - sensor.living_room_light_sensor_battery - sensor.living_room_presence_battery - sensor.master_bedroom_cube_battery - sensor.master_bedroom_light_sensor_battery - sensor.office_illuminance_battery - sensor.office_presence_battery - sensor.vestibule_multi_battery below: 21 for: 03:00:00 - platform: numeric_state entity_id: - sensor.downstairs_hall_light_sensor_battery - sensor.downstairs_hall_motion_battery - sensor.hue_dimmer_battery - sensor.living_room_light_sensor_battery - sensor.living_room_presence_battery - sensor.master_bedroom_cube_battery - sensor.master_bedroom_light_sensor_battery - sensor.office_illuminance_battery - sensor.office_presence_battery - sensor.vestibule_multi_battery below: 11 for: 03:00:00 - platform: numeric_state entity_id: - sensor.downstairs_hall_light_sensor_battery - sensor.downstairs_hall_motion_battery - sensor.hue_dimmer_battery - sensor.living_room_light_sensor_battery - sensor.living_room_presence_battery - sensor.master_bedroom_cube_battery - sensor.master_bedroom_light_sensor_battery - sensor.office_illuminance_battery - sensor.office_presence_battery - sensor.vestibule_multi_battery below: 6 for: 01:00:00 action: service: notify.apprise data: target: discord title: '' message: ':low_battery: The {{ trigger.to_state.name }} is at {{ trigger.to_state.state }}% battery, it uses a CR2450 coin cell' - id: battery_notes_low initial_state: 'on' alias: Battery Low Notification mode: queued trigger: - platform: event event_type: battery_notes_battery_threshold event_data: battery_low: true id: low alias: Battery went low - platform: event event_type: battery_notes_battery_threshold event_data: battery_low: false id: high alias: Battery went high action: - choose: - conditions: - condition: trigger id: - low sequence: - service: notify.apprise data: target: discord title: ' ' message: ':low_battery: {{ trigger.event.data.device_name }} has a battery level of {{ trigger.event.data.battery_level }}% {{ ''\n'' -}} You need {{ trigger.event.data.battery_quantity }}× {{ trigger.event.data.battery_type }} ' - conditions: - condition: trigger id: - high sequence: - service: notify.apprise data: target: discord title: ' ' message: ':battery: {{ trigger.event.data.device_name }} has increased battery level to {{ trigger.event.data.battery_level }}% ' - id: bedhead_light_dim_late alias: Bedhead light dim late trigger: - platform: time at: '23:00:00' - platform: state entity_id: light.master_bedroom_bedhead to: 'on' condition: - condition: state entity_id: light.master_bedroom_bedhead state: 'on' - condition: time after: '22:59:59' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Bedtime - id: bedtime initial_state: 'on' alias: Bedtime trigger: - platform: state entity_id: - input_boolean.person3_in_bed - input_boolean.person2_in_bed - input_boolean.person1_in_bed to: 'on' - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.vestibule_multi_occupancy - group.downstairs_occupied to: 'off' for: 00:02:00 action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: {{ states(''binary_sensor.home_occupied'') }}/{{ states(''group.downstairs_occupied'') }}/{{ states(''binary_sensor.vestibule_multi_occupancy'') }}/{{ states(''binary_sensor.downstairs_hall_motion_occupancy'') }}' - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: {{ states(''input_boolean.person3_in_bed'') }}/{{ states(''input_boolean.person3_travelling'') }}/{{ states(''input_boolean.person1_in_bed'') }}/{{ states(''input_boolean.person1_travelling'') }}/{{ states(''input_boolean.person2_in_bed'') }}/{{ states(''input_boolean.person2_travelling'') }}' - condition: state entity_id: binary_sensor.home_occupied state: 'on' - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: house is occupied' - condition: state entity_id: group.downstairs_occupied state: 'off' for: 00:02:00 - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: Downstairs isn''t occupied' - condition: and conditions: - condition: or conditions: - condition: state entity_id: binary_sensor.vestibule_multi_occupancy state: 'off' for: 00:02:00 - condition: state entity_id: binary_sensor.vestibule_multi_occupancy state: unavailable - condition: or conditions: - condition: state entity_id: binary_sensor.downstairs_hall_motion_occupancy state: 'off' for: 00:02:00 - condition: state entity_id: binary_sensor.downstairs_hall_motion_occupancy state: unavailable - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: No motion recently' - condition: and conditions: - condition: or conditions: - condition: state entity_id: input_boolean.person3_in_bed state: 'on' - condition: state entity_id: input_boolean.person3_travelling state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.person2_in_bed state: 'on' - condition: state entity_id: input_boolean.person2_travelling state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.person1_in_bed state: 'on' - condition: state entity_id: input_boolean.person1_travelling state: 'on' - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Bedtime: Everybody is in bed' - service: input_boolean.turn_on entity_id: input_boolean.bedtime - id: bedtime_something_open alias: Bedtime something open initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person3_in_bed - input_boolean.person2_in_bed to: 'on' condition: - condition: state entity_id: - input_boolean.person3_is_awake - input_boolean.person2_is_awake state: 'on' - condition: state entity_id: - group.my_downstairs_windows - group.my_exterior_doors state: 'on' match: any action: - variables: what: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.my_downstairs_windows'', ''entity_id'') + state_attr(''group.my_exterior_doors'', ''entity_id''))|list)|groupby(''state''))[''on'']|map(attribute=''name'')|list|join('', '') }}' - service: '{{ "notify.person2" if as_timestamp(states.input_boolean.person2_is_awake.last_updated) > as_timestamp(states.input_boolean.person3_is_awake.last_updated) else "notify.person3" }} ' data: message: 'The following are open downstairs: {{ what }} ' - service: media_player.turn_on data: entity_id: "{% if as_timestamp(states.input_boolean.person2_is_awake.last_updated)\ \ > as_timestamp(states.input_boolean.person3_is_awake.last_updated) %}\n\ \ media_player.cast_master_bedroom_speaker\n{% else %}\n media_player.cast_master_bedroom_display\n\ {% endif %}" - service: media_player.volume_set data: volume_level: 0.15 entity_id: "{% if as_timestamp(states.input_boolean.person2_is_awake.last_updated)\ \ > as_timestamp(states.input_boolean.person3_is_awake.last_updated) %}\n\ \ media_player.cast_master_bedroom_speaker\n{% else %}\n media_player.cast_master_bedroom_display\n\ {% endif %}" - service: tts.google_cloud_say data: entity_id: "{% if as_timestamp(states.input_boolean.person2_is_awake.last_updated)\ \ > as_timestamp(states.input_boolean.person3_is_awake.last_updated) %}\n\ \ media_player.cast_master_bedroom_speaker\n{% else %}\n media_player.cast_master_bedroom_display\n\ {% endif %}" message: 'The following are open: {{ what }}' - delay: 00:01:00 - service: media_player.turn_off data: entity_id: "{% if as_timestamp(states.input_boolean.person2_is_awake.last_updated)\ \ > as_timestamp(states.input_boolean.person3_is_awake.last_updated) %}\n\ \ media_player.cast_master_bedroom_speaker\n{% else %}\n media_player.cast_master_bedroom_display\n\ {% endif %}" - id: bin_calendar alias: Add bin collection to calendar initial_state: 'on' trigger: - platform: state entity_id: sensor.next_bin_collection attribute: bin_type to: null condition: - condition: state entity_id: sensor.next_bin_collection state: tomorrow action: - service: calendar.create_event data: entity_id: calendar.refuse_collection summary: '{{ state_attr(''sensor.next_bin_collection'',''bin_type'')|capitalize }} bin collection ' description: '{{ state_attr(''sensor.next_bin_collection'',''bin_type'')|capitalize }} bin collection ' start_date_time: '{{ today_at(''00:00:00'')+timedelta(days=1) }} ' end_date_time: '{{ today_at(''12:00:00'')+timedelta(days=1) }} ' - id: bin_notification initial_state: 'on' alias: Bin notification trigger: - platform: time_pattern minutes: /5 seconds: '30' condition: - condition: or conditions: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: sensor.next_bin_collection state: tomorrow - condition: template value_template: '{{ states.binary_sensor.garden_gate_contact.last_changed < today_at("18:00") }}' - condition: and conditions: - condition: time before: 09:00:00 - condition: state entity_id: sensor.next_bin_collection state: today - condition: template value_template: '{{ states.binary_sensor.garden_gate_contact.last_changed < today_at("18:00") - timedelta(days=1) }}' variables: not_out: "{{ (is_state('sensor.next_bin_collection','today') and (states.binary_sensor.garden_gate_contact.last_changed\ \ < today_at(\"18:00\") - timedelta(days=1))) \n or (is_state('sensor.next_bin_collection','tomorrow')\ \ and (states.binary_sensor.garden_gate_contact.last_changed < today_at(\"18:00\"\ ))) }}" icon: "{% if is_state_attr('sensor.next_bin_collection','bin_type','grey') %}\n\ \ 12155\n{% elif is_state_attr('sensor.next_bin_collection','bin_type','green')\ \ %}\n 12059\n{% elif is_state_attr('sensor.next_bin_collection','bin_type','blue')\ \ %}\n 12060\n{% elif is_state_attr('sensor.next_bin_collection','bin_type','brown')\ \ %}\n 12442\n{% endif %}" message: '{{ states(''sensor.next_bin_collection'')|title }} the {{ state_attr(''sensor.next_bin_collection'',''bin_type'') }} bin is being collected {% if not_out %} and it has not been put out yet {% endif %}' action: - delay: 00:01:00 - repeat: for_each: - living_room - family_room sequence: - service: notify.awtrix_{{ repeat.item }} data: message: '{{ message }}' data: icon: '{{ icon }}' duration: 30 repeat: 2 - id: bin_reminder alias: Bin reminder description: Send a reminder at 08:00 if there's a bin collection today and the gate hasn't been opened initial_state: 'on' trigger: - platform: time at: '19:40:00' condition: - condition: template value_template: '{{ states.binary_sensor.garden_gate_contact.last_changed < today_at("18:00") }}' - condition: state entity_id: sensor.next_bin_collection state: tomorrow action: - wait_for_trigger: - platform: state entity_id: binary_sensor.living_room_presence_occupancy to: 'on' timeout: 02:00:00 continue_on_timeout: false - condition: template value_template: '{{ states.binary_sensor.garden_gate_contact.last_changed < today_at("18:00") }}' - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The {{ state_attr('sensor.next_bin_collection','bin_type') }} bin is due for collection {{ states('sensor.next_bin_collection') }} and it hasn't been put out yet. media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.living_room_sonos_cloud - id: bt_front_dead alias: BT front dead trigger: - platform: state entity_id: binary_sensor.first_floor_front to: 'off' for: 00:10:00 condition: - condition: state entity_id: - input_boolean.person2_home - input_boolean.person2_is_awake state: 'on' action: - service: notify.discord_webhook data: message: Front Bluetooth is a zombie - id: bt_front_offline_too_long initial_state: 'on' alias: BT front offline too long trigger: - platform: state entity_id: binary_sensor.first_floor_front to: 'off' for: 00:05:00 action: - service: notify.discord_webhook data: message: Front Bluetooth node was a zombie, and we'll power cycle it - repeat: while: - condition: state entity_id: binary_sensor.first_floor_front state: 'off' sequence: - service: switch.turn_off entity_id: switch.master_bedroom - delay: 00:00:10 - service: switch.turn_on entity_id: switch.master_bedroom - delay: 00:00:30 - wait_template: '{{ is_state(''binary_sensor.first_floor_front'',''on'') }}' timeout: 00:05:00 - service: notify.discord_webhook data: message: Front Bluetooth node is alive again! - id: bt_front_offline initial_state: 'on' alias: BT front offline trigger: - platform: state entity_id: binary_sensor.first_floor_front to: 'off' action: - service: mqtt.publish data: topic: monitor/first floor front/person2_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person2_tablet/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person2_laptop/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person2_work_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/work_laptop/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person3_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person1_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person1_tablet/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/person4_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor front/car/device_tracker payload: unknown - id: bt_rear_dead initial_state: 'on' alias: BT rear dead trigger: - platform: state entity_id: binary_sensor.first_floor_rear to: 'off' for: 00:10:00 action: - wait_template: '{{ is_state(''input_boolean.person2_home'',''on'') and is_state(''input_boolean.person2_is_awake'',''on'') }}' - service: notify.person2 data: message: Rear Bluetooth is a zombie - id: bt_rear_offline initial_state: 'on' alias: BT rear offline trigger: - platform: state entity_id: binary_sensor.first_floor_rear to: 'off' for: 00:01:00 action: - service: mqtt.publish data: topic: monitor/first floor rear/person2_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person2_tablet/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person2_laptop/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person2_work_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/work_laptop/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person3_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person1_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person1_tablet/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/person4_mobile/device_tracker payload: unknown - service: mqtt.publish data: topic: monitor/first floor rear/car/device_tracker payload: unknown - id: bt_node_hung alias: BT node hung initial_state: 'on' trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: binary_sensor.home_occupied to: 'off' for: 00:15:00 condition: - condition: state entity_id: binary_sensor.home_occupied state: 'off' - condition: or conditions: - alias: person3 front hung condition: state entity_id: device_tracker.person3_bt_front_mobile_2 state: home - alias: person3 rear hung condition: state entity_id: device_tracker.person3_bt_mobile_2 state: home - alias: person1 front hung condition: state entity_id: device_tracker.person1_bt_front_mobile_2 state: home - alias: person1 rear hung condition: state entity_id: device_tracker.person1_bt_mobile_2 state: home - alias: person2 front hung condition: state entity_id: device_tracker.person2_bt_front_mobile_2 state: home - alias: person2 rear hung condition: state entity_id: device_tracker.person2_bt_mobile_2 state: home action: - service: script.scan_bt_restart - service: notify.person2 data: message: One of the monitor nodes was hung, so I've restarted them - id: telegram_callback_whereis alias: Telegram callback whereis initial_state: 'on' trigger: - platform: event event_type: telegram_callback event_data: data: /whereis person3 - platform: event event_type: telegram_callback event_data: data: /whereis person1 action: - choose: - conditions: - condition: template value_template: '{{ "person1" in trigger.event.data.data }}' sequence: - service: telegram_bot.send_location data: latitude: '{{ state_attr(''person.person1'',''latitude'') }}' longitude: '{{ state_attr(''person.person1'',''longitude'') }}' - service: telegram_bot.send_message data: message: "{% if is_state('input_boolean.person1_in_bed','on') -%}\n person1\ \ has been in bed for {{ relative_time(states.input_boolean.person1_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person1_home','on') -%}\n person1\ \ has been home for {{ relative_time(states.input_boolean.person1_home.last_changed)\ \ }}\n{% elif is_state('person.person1','not_home') -%}\n person1 has\ \ been at {{ states('sensor.sm_a546b_geocoded_location') }} ({{ states('input_text.person_person1')\ \ }}), for {{ relative_time(states.person.person1.last_changed) }}\n{%-\ \ else -%}\n person1 has been {{ states('input_text.person_person1')\ \ }} for {{ relative_time(states.person.person1.last_changed) }}\n{%-\ \ endif %}" - conditions: - condition: template value_template: '{{ "person3" in trigger.event.data.data }}' sequence: - service: telegram_bot.send_location data: latitude: '{{ state_attr(''person.person3'',''latitude'') }}' longitude: '{{ state_attr(''person.person3'',''longitude'') }}' - service: telegram_bot.send_message data: message: "{% if is_state('input_boolean.person3_in_bed','on') -%}\n person3\ \ has been in bed for {{ relative_time(states.input_boolean.person3_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person3_home','on') -%}\n person3\ \ has been home for {{ relative_time(states.input_boolean.person3_home.last_changed)\ \ }}\n{% elif is_state('person.person3','not_home') -%}\n person3 has\ \ been at {{ states('sensor.pixel_6a_geocoded_location') }} ({{ states('input_text.person_person3')\ \ }}), for {{ relative_time(states.person.person3.last_changed) }}\n{%-\ \ else -%}\n person3 has been {{ states('input_text.person_person3')\ \ }} for {{ relative_time(states.person.person3.last_changed) }}\n{%-\ \ endif %}" default: - service: telegram_bot.send_message data: message: Specify one of person1 or person3 inline_keyboard: - /whereis person1 - /whereis person3 - id: car_away alias: Car away initial_state: 'on' trigger: - platform: state entity_id: - device_tracker.skoda_superb_combi_position to: not_home - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.car_home state: 'on' - condition: state entity_id: device_tracker.skoda_superb_combi_position state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.car_home - service: input_text.set_value data: entity_id: input_text.car value: Away - id: car_home initial_state: 'on' alias: Car home trigger: - platform: state entity_id: - device_tracker.skoda_superb_combi_position to: home - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.car_home state: 'off' - condition: state entity_id: device_tracker.skoda_superb_combi_position state: home action: - service: input_boolean.turn_on entity_id: input_boolean.car_home - service: input_text.set_value data: entity_id: input_text.car value: Home - id: car_location_update alias: Car location update initial_state: 'on' trigger: - platform: state entity_id: - device_tracker.car_gps - sensor.skoda_superb_places - sensor.skoda_to_home_skoda_superb_position_distance variables: where: "{% if states('sensor.skoda_superb_places') != 'unknown' %} \n {% if state_attr('sensor.skoda_superb_places','place_name')|is_defined\ \ and (state_attr('sensor.skoda_superb_places','place_name') != state_attr('sensor.skoda_superb_places','street'))\ \ %}{{ state_attr('sensor.skoda_superb_places','place_name') + \", \" }}{% endif\ \ %}{% if state_attr('sensor.skoda_superb_places','street_number')|is_defined\ \ %}{{ state_attr('sensor.skoda_superb_places','street_number') + \" \" }}{%\ \ endif %}{{ state_attr('sensor.skoda_superb_places','street') }}, {{ state_attr('sensor.skoda_superb_places','city')\ \ }}\n{% else %}\n somewhere\n{% endif %}" action: - service: input_text.set_value data: entity_id: input_text.car_location value: "{% if is_state('input_boolean.car_home', 'on') %}\n Home\n{% elif is_state('device_tracker.car_gps',\ \ 'vehicle_in_motion') %}\n On the move\n{% elif not is_state('device_tracker.car_gps',\ \ 'not_home') %}\n At {{ states('device_tracker.car_gps') }}\n{% else %}\n\ \ Near {{ where }}\n{% endif %}" - id: car_moved alias: car moved initial_state: 'on' trigger: - platform: state entity_id: device_tracker.skoda_superb_combi_position action: - service: script.update_car_location - id: car_update_myskoda alias: Car update for MySkoda initial_state: 'on' triggers: - trigger: state entity_id: binary_sensor.pixel_xl_android_auto to: null for: 00:01:00 id: auto actions: - action: homeassistant.update_entity data: entity_id: - device_tracker.skoda_superb_combi_position - id: christmas_disabled alias: Christmas disabled trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_select.season from: Christmas condition: - condition: not conditions: - condition: state entity_id: input_select.season state: Christmas action: - service: homeassistant.turn_off entity_id: group.christmas_control - id: christmas_enabled alias: Christmas enabled trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_select.season to: Christmas condition: - condition: state entity_id: input_select.season state: Christmas - condition: state entity_id: group.christmas_control state: 'off' action: - service: homeassistant.turn_off entity_id: group.christmas_control - id: telegram_command_lights_off alias: Telegram command lights off initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /lights condition: - condition: template value_template: '{{ (trigger.event.data.args|length == 1) and (trigger.event.data.args[0] == ''off'') }}' action: - service: telegram_bot.send_message data: message: 'Turning the lights {{ trigger.event.data.args[0] }} ' - id: telegram_command_check alias: Telegram command check initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /check action: - service: telegram_bot.send_message data: message: "The alarm is {{ states('alarm_control_panel.house') }}\nThe zigbee\ \ bridge is {{ 'online' if is_state('binary_sensor.zigbee2mqtt_bridge_state','on')\ \ else 'offline' }}\n{% set rooms_occupied = expand('group.my_room_status')|selectattr('state',\ \ 'eq', 'on')|list|count -%} {%- if rooms_occupied > 0 -%}\n The following\ \ {{ rooms_occupied }} rooms are occupied: {{ expand('group.my_room_status')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|join(', ') }}\n{%- else -%}\n No\ \ rooms are occupied\n{%- endif %}\n{% set lights_on = expand('group.my_lights')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|count -%} {%- set doors_open = expand('group.my_exterior_doors')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|count -%} {%- set windows_upstairs\ \ = expand('group.my_upstairs_windows')|selectattr('state', 'eq', 'on')|map(attribute='name')|list|count\ \ -%} {%- set windows_downstairs = expand('group.my_downstairs_windows')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|count -%}\nThere are {% if lights_on\ \ != 0 %}{{ lights_on }} lights on ({{ expand('group.my_lights')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|join(', ') }}){%- else -%}no lights\ \ on{%- endif -%}, {%- if doors_open != 0 %} {{ doors_open }} doors open ({{\ \ expand('group.my_exterior_doors')|selectattr('state', 'eq', 'on')|map(attribute='name')|list|join(',\ \ ') }}){%- else %} no doors open{%- endif -%}, {%- if windows_downstairs\ \ != 0 %} {{ windows_downstairs }} windows open downstairs ({{ expand('group.my_downstairs_windows')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|join(', ') }}){%- else %} no windows\ \ open downstairs{%- endif -%}, {%- if windows_upstairs != 0 %} {{ windows_upstairs\ \ }} windows open upstairs ({{ expand('group.my_upstairs_windows')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|join(', ') }}){%- else %} no windows\ \ open upstairs{%- endif -%}.\n{% if is_state('input_boolean.person3_in_bed','on')\ \ -%}\n person3 has been in bed for {{ relative_time(states.input_boolean.person3_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person3_home','on') -%}\n person3\ \ has been home for {{ relative_time(states.input_boolean.person3_home.last_changed)\ \ }}\n{%- elif is_state('person.person3','not_home') -%}\n person3 has been\ \ at {{ states('sensor.pixel_6a_geocoded_location') }} ({{ states('input_text.person_person3')\ \ }}), for {{ relative_time(states.person.person3.last_changed) }}\n{%- else\ \ -%}\n person3 has been {{ states('input_text.person_person3') }} for {{\ \ relative_time(states.person.person3.last_changed) }}\n{%- endif %}\n{% if\ \ is_state('input_boolean.person1_in_bed','on') -%}\n person1 has been in\ \ bed for {{ relative_time(states.input_boolean.person1_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person1_home','on') -%}\n person1\ \ has been home for {{ relative_time(states.input_boolean.person1_home.last_changed)\ \ }}\n{% elif is_state('person.person1','not_home') -%}\n person1 has been\ \ at {{ states('sensor.sm_a546b_geocoded_location') }} ({{ states('input_text.person_person1')\ \ }}), for {{ relative_time(states.person.person1.last_changed) }}\n{%- else\ \ -%}\n person1 has been {{ states('input_text.person_person1') }} for {{\ \ relative_time(states.person.person1.last_changed) }}\n{%- endif %}\n{% if\ \ ( states('device_tracker.car_gps') != states('person.person2') ) and (not\ \ is_state('device_tracker.car_gps','not_home')) -%}\n The car is at {{ states('device_tracker.car_gps')\ \ }}\n{%- endif -%}\n" - id: telegram_command_help alias: Telegram command help initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /help action: - service: telegram_bot.send_message data: parse_mode: markdown2 message: 'The following commands are supported: /check - returns an overview of everything relevant in HA, including who''s where /lights - lists the lights that are on /ping - confirms we''re not dead yet /status - lists the open doors and windows /trains - provides the status of the trains between here and there /where - says where the others are /whereis PERSON - says where PERSON is, including a map ' - id: telegram_command_lights alias: Telegram command lights initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /lights condition: - condition: template value_template: '{{ trigger.event.data.args|length == 0 }}' action: - service: telegram_bot.send_message data: message: 'The following lights are on: {{ expand(''group.my_lights'')|selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }} ' - id: telegram_command_lights_on alias: Telegram command lights on initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /lights condition: - condition: template value_template: '{{ (trigger.event.data.args|length == 1) and (trigger.event.data.args[0] == ''on'') }}' action: - service: telegram_bot.send_message data: message: 'Turning the lights {{ trigger.event.data.args[0] }} ' - id: telegram_command_ping alias: Telegram command ping initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /ping action: - service: telegram_bot.send_message data: message: 'Pong at {{ as_timestamp(now(),0)|timestamp_custom("%Y-%m-%d %H:%M:%S", local=True) }} ' - id: telegram_command_status alias: Telegram command status initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /status action: - service: telegram_bot.send_message data: message: 'There are {{ expand(''group.my_downstairs_windows'',''my_upstairs_windows'',''group.my_exterior_doors'') | selectattr(''state'', ''eq'', ''on'')|list|count }} doors and windows open {{ expand(''group.my_downstairs_windows'',''my_upstairs_windows'',''group.my_exterior_doors'') | selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }} ' - id: telegram_command_trains alias: Telegram command trains initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /trains action: - service: script.train_message - service: telegram_bot.send_message data: inline_keyboard: - - - Recheck - /trains message: '{{ states(''input_text.train_message'') }}' - id: telegram_command_where alias: Telegram command where initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /where action: - service: telegram_bot.send_message data: message: "{%- if is_state('input_boolean.person3_in_bed','on') -%}\n person3\ \ has been in bed for {{ relative_time(states.input_boolean.person3_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person3_home','on') -%}\n person3\ \ has been home for {{ relative_time(states.input_boolean.person3_home.last_changed)\ \ }}\n{%- elif is_state('person.person3','not_home') -%}\n person3 has been\ \ at {{ states('sensor.pixel_6a_geocoded_location') }} ({{ states('input_text.person_person3')\ \ }}), for {{ relative_time(states.person.person3.last_changed) }}\n{%- else\ \ -%}\n person3 has been {{ states('input_text.person_person3') }} for {{\ \ relative_time(states.person.person3.last_changed) }}\n{%- endif %}\n{% if\ \ is_state('input_boolean.person1_in_bed','on') -%}\n person1 has been in\ \ bed for {{ relative_time(states.input_boolean.person1_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person1_home','on') -%}\n person1\ \ has been home for {{ relative_time(states.input_boolean.person1_home.last_changed)\ \ }}\n{% elif is_state('person.person1','not_home') -%}\n person1 has been\ \ at {{ states('sensor.sm_a546b_geocoded_location') }} ({{ states('input_text.person_person1')\ \ }}), for {{ relative_time(states.person.person1.last_changed) }}\n{%- else\ \ -%}\n person1 has been {{ states('input_text.person_person1') }} for {{\ \ relative_time(states.person.person1.last_changed) }}\n{%- endif %}\n{% if\ \ ( states('device_tracker.car_gps') != states('device_tracker.pixel_xl')\ \ ) and (not is_state('device_tracker.car_gps','not_home')) -%}\n The car\ \ is at {{ states('device_tracker.car_gps') }}\n{%- endif -%}\n" - id: telegram_command_whereis alias: Telegram command whereis initial_state: 'on' trigger: - platform: event event_type: telegram_command event_data: command: /whereis action: - choose: - conditions: - condition: template value_template: '{{ "person1" in trigger.event.data.args }}' sequence: - service: telegram_bot.send_location data: latitude: '{{ state_attr(''person.person1'',''latitude'') }}' longitude: '{{ state_attr(''person.person1'',''longitude'') }}' - service: telegram_bot.send_message data: message: "{% if is_state('input_boolean.person1_in_bed','on') -%}\n person1\ \ has been in bed for {{ relative_time(states.input_boolean.person1_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person1_home','on') -%}\n person1\ \ has been home for {{ relative_time(states.input_boolean.person1_home.last_changed)\ \ }}\n{% elif is_state('person.person1','not_home') -%}\n person1 has\ \ been at {{ states('sensor.sm_a546b_geocoded_location') }} ({{ states('input_text.person_person1')\ \ }}), for {{ relative_time(states.person.person1.last_changed) }}\n{%-\ \ else -%}\n person1 has been {{ states('input_text.person_person1')\ \ }} for {{ relative_time(states.person.person1.last_changed) }}\n{%-\ \ endif %}" - conditions: - condition: template value_template: '{{ "person3" in trigger.event.data.args }}' sequence: - service: telegram_bot.send_location data: latitude: '{{ state_attr(''person.person3'',''latitude'') }}' longitude: '{{ state_attr(''person.person3'',''longitude'') }}' - service: telegram_bot.send_message data: message: "{% if is_state('input_boolean.person3_in_bed','on') -%}\n person3\ \ has been in bed for {{ relative_time(states.input_boolean.person3_in_bed.last_changed)\ \ }}\n{%- elif is_state('input_boolean.person3_home','on') -%}\n person3\ \ has been home for {{ relative_time(states.input_boolean.person3_home.last_changed)\ \ }}\n{% elif is_state('person.person3','not_home') -%}\n person3 has\ \ been at {{ states('sensor.pixel_6a_geocoded_location') }} ({{ states('input_text.person_person3')\ \ }}), for {{ relative_time(states.person.person3.last_changed) }}\n{%-\ \ else -%}\n person3 has been {{ states('input_text.person_person3')\ \ }} for {{ relative_time(states.person.person3.last_changed) }}\n{%-\ \ endif %}" default: - service: telegram_bot.send_message data: message: Specify one of person1 or person3 inline_keyboard: - /whereis person1 - /whereis person3 - id: cooler_outside_livingroom initial_state: 'off' alias: cooler outside (livingroom) trigger: - platform: numeric_state entity_id: sensor.living_room_climate_temperature above: 23 - platform: numeric_state entity_id: sensor.tomorrow_io_temperature below: 22 - platform: template value_template: '{{ states(''sensor.tomorrow_io_temperature'')|int < states(''sensor.living_room_climate_temperature'')|int }} ' condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: numeric_state entity_id: sensor.living_room_climate_temperature above: 23 - condition: numeric_state entity_id: sensor.tomorrow_io_temperature below: 22 - condition: numeric_state entity_id: sensor.tomorrow_io_temperature above: 5 - condition: template value_template: '{{ states(''sensor.tomorrow_io_temperature'')|int < states(''sensor.living_room_climate_temperature'')|int }} ' - condition: state entity_id: - binary_sensor.patio_window_left_contact - binary_sensor.patio_window_right_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact state: 'off' - condition: template value_template: '{{ (now() - state_attr(''automation.cooler_outside_livingroom'',''last_triggered'')).seconds > 1800 }}' action: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=It's now cooler outside than inside, you should open some windows or doors. media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.living_room_sonos_cloud - service: automation.turn_off data: entity_id: automation.cooler_outside_livingroom - id: dimmer alias: Dimmer initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'The following button was pressed: {{ trigger.to_state.attributes.event_type }} - {{ trigger.to_state.attributes.action }}' - id: dimmer_up_motion alias: Dimmer up motion initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''down_press'' }}' - condition: state entity_id: input_select.living_room state: Motion action: - service: input_select.select_option data: entity_id: input_select.living_room option: Dim - id: dimmer_off alias: Dimmer off initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''press'' }}' - condition: template value_template: '{{ trigger.to_state.attributes.action == ''off-press'' }}' - condition: state entity_id: input_boolean.living_room_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.living_room option: "{% if is_state('input_select.living_room','Dim') %}\n Off\n{% elif\ \ is_state('input_select.living_room','Day on') %}\n Dim\n{% elif is_state('input_select.living_room','Night\ \ on') %}\n Day on\n{% else %}\n Off\n{% endif %}" - id: dimmer_off_while_off alias: Dimmer off while off initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''press'' }}' - condition: template value_template: '{{ trigger.to_state.attributes.action == ''off_press'' }}' - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: state entity_id: input_select.living_room state: 'Off' action: - service: input_boolean.turn_off entity_id: input_boolean.living_room_occupied - id: dimmer_on_ alias: Dimmer on initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''press'' }}' - condition: template value_template: '{{ trigger.to_state.attributes.action == ''on_press'' }}' - condition: state entity_id: input_boolean.living_room_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.living_room option: "{% if is_state('input_select.living_room','Off') %}\n Dim\n{% elif\ \ is_state('input_select.living_room','Dim') %}\n Day on\n{% elif is_state('input_select.living_room','Day\ \ on') %}\n Night on\n{% else %}\n Night on\n{% endif %}" - id: dimmer_on_while_away alias: Dimmer on while away initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''press'' }}' - condition: template value_template: '{{ trigger.to_state.attributes.action == ''on_press'' }}' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.living_room_occupied - id: dimmer_up_enable_lights alias: Dimmer up enable lights initial_state: 'on' trigger: - platform: state entity_id: event.hue_dimmer_action to: null condition: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''up_press'' }}' - condition: state entity_id: input_boolean.lighting_living_room state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.lighting_living_room - id: living_room_dog_slipped_in alias: Living room - dog slipped in initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.living_room_door_contact to: 'on' condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - wait_for_trigger: - platform: state entity_id: binary_sensor.living_room_door_contact to: 'off' id: door timeout: 00:00:05 continue_on_timeout: true - condition: template value_template: '{{ wait.completed }}' - choose: - conditions: - condition: template value_template: '{{ wait.trigger.id == ''motion'' }}' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The living room door just opened, maybe Luna has slipped in media_content_type: music announce: true extra: volume: 20 - conditions: - condition: template value_template: '{{ wait.trigger.id == ''door'' }}' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The living room door just opened and closed, maybe Luna has slipped in media_content_type: music announce: true extra: volume: 20 target: entity_id: - media_player.family_room_sonos_cloud - id: family_room_arrival alias: family room arrival initial_state: 'on' trigger: - platform: state entity_id: input_select.person2_status_dropdown to: Just Arrived - platform: state entity_id: input_select.person3_status_dropdown to: Just Arrived - platform: state entity_id: input_select.person1_status_dropdown to: Just Arrived condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.family_room option: Dim - id: family_room_mode_away initial_state: 'on' alias: family room mode away trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'off' - platform: state entity_id: input_boolean.family_room_occupied to: 'off' for: minutes: 10 - platform: state entity_id: binary_sensor.home_occupied to: 'off' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.family_room option: Away - id: family_room_mode_bedtime initial_state: 'on' alias: family room mode bedtime trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.family_room_occupied to: 'off' condition: - condition: and conditions: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.family_room option: Bedtime - id: family_room_not_occupied initial_state: 'on' alias: Family room not occupied trigger: - platform: state entity_id: media_player.roku_x00200y5s7lx to: - 'off' - standby - unavailable for: 00:03:00 - platform: state entity_id: binary_sensor.family_room_multi_occupancy to: 'off' for: 00:03:00 - platform: state entity_id: binary_sensor.family_room_door_contact to: 'on' condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: state entity_id: media_player.roku_x00200y5s7lx state: - 'off' - standby - unavailable - condition: state entity_id: binary_sensor.family_room_door_contact state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.family_room_occupied - id: family_room_occupied initial_state: 'on' alias: Family room occupied trigger: - platform: state entity_id: media_player.roku_x00200y5s7lx to: 'on' - platform: state entity_id: binary_sensor.family_room_multi_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: media_player.roku_x00200y5s7lx state: 'on' - condition: state entity_id: binary_sensor.family_room_door_contact state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.family_room_occupied - id: family_room_mode_off initial_state: 'on' alias: family room mode off trigger: - platform: numeric_state entity_id: sensor.sun_solar_elevation above: 5 - platform: state entity_id: input_boolean.family_room_occupied to: 'off' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.family_room'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: numeric_state entity_id: sensor.family_room_multi_illuminance_lux above: 5 action: - service: input_select.select_option data: entity_id: input_select.family_room option: 'Off' - service: input_boolean.turn_off entity_id: input_boolean.family_room_lights_auto - id: family_room_mode_on initial_state: 'on' alias: family room mode on trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'on' - platform: numeric_state entity_id: sensor.sun_solar_elevation below: 5 condition: - condition: state entity_id: input_boolean.family_room_christmas state: 'on' - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 5 - condition: not conditions: - condition: state entity_id: input_select.family_room state: 'On' action: - service: input_select.select_option data: entity_id: input_select.family_room option: 'On' - id: bike_left_open alias: bike left open initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.family_room_multi_occupancy to: 'on' condition: - condition: state entity_id: binary_sensor.chest_bike_lid_contact state: 'on' - condition: state entity_id: binary_sensor.garage_door_bike_contact state: 'off' action: - service: media_player.play_media data: entity_id: media_player.family_room_sonos_cloud media_content_id: media-source://tts/tts.piper?message=The bike lid is still open, but the garage door is closed media_content_type: music announce: true extra: volume: 25 - delay: 00:05:00 - id: frigate_motion_start initial_state: 'on' alias: Frigate motion start trigger: - platform: state entity_id: - binary_sensor.front_path_bicycle_occupancy - binary_sensor.front_path_bus_occupancy - binary_sensor.front_path_car_occupancy - binary_sensor.front_path_dog_occupancy - binary_sensor.front_path_motorcycle_occupancy - binary_sensor.front_path_person_occupancy - binary_sensor.drive_bicycle_occupancy - binary_sensor.drive_bus_occupancy - binary_sensor.drive_car_occupancy - binary_sensor.drive_dog_occupancy - binary_sensor.drive_motorcycle_occupancy - binary_sensor.drive_person_occupancy - binary_sensor.road_bus_occupancy - binary_sensor.road_car_occupancy - binary_sensor.road_motorcycle_occupancy to: 'on' from: 'off' condition: - condition: state entity_id: input_boolean.stream_front_camera_motion state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.stream_camera - id: frigate_motion_stopped initial_state: 'on' alias: Frigate motion stopped trigger: - platform: state entity_id: input_boolean.stream_front_camera_motion to: 'off' - platform: state entity_id: input_boolean.stream_camera to: 'on' for: 00:10:00 id: idle - platform: state entity_id: - binary_sensor.front_path_bicycle_occupancy - binary_sensor.front_path_bus_occupancy - binary_sensor.front_path_car_occupancy - binary_sensor.front_path_dog_occupancy - binary_sensor.front_path_motorcycle_occupancy - binary_sensor.front_path_person_occupancy - binary_sensor.drive_bicycle_occupancy - binary_sensor.drive_bus_occupancy - binary_sensor.drive_car_occupancy - binary_sensor.drive_dog_occupancy - binary_sensor.drive_motorcycle_occupancy - binary_sensor.drive_person_occupancy - binary_sensor.road_bus_occupancy - binary_sensor.road_car_occupancy - binary_sensor.road_motorcycle_occupancy to: 'off' for: 00:01:00 condition: - condition: or conditions: - condition: trigger id: idle - condition: state entity_id: - binary_sensor.front_path_bicycle_occupancy - binary_sensor.front_path_bus_occupancy - binary_sensor.front_path_car_occupancy - binary_sensor.front_path_dog_occupancy - binary_sensor.front_path_motorcycle_occupancy - binary_sensor.front_path_person_occupancy - binary_sensor.drive_bicycle_occupancy - binary_sensor.drive_bus_occupancy - binary_sensor.drive_car_occupancy - binary_sensor.drive_dog_occupancy - binary_sensor.drive_motorcycle_occupancy - binary_sensor.drive_person_occupancy - binary_sensor.road_bus_occupancy - binary_sensor.road_car_occupancy - binary_sensor.road_motorcycle_occupancy state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.stream_camera - id: frigate_new_event alias: Frigate new event mode: parallel trace: stored_traces: 20 trigger: - platform: mqtt topic: frigate/events payload: new value_template: '{{ value_json[''type''] }}' action: - variables: camera: '{{ trigger.payload_json[''after''][''camera''] }}' stationary: '{{ trigger.payload_json[''after''][''stationary''] == true }}' id: '{{ trigger.payload_json[''after''][''id''] }}' object: '{{ trigger.payload_json[''after''][''label''] }}' label: '{{ object | title }}' zones: '{{ trigger.payload_json[''after''][''current_zones'']|join('', '') }}' entered_zones: '{{ trigger.payload_json[''after''][''entered_zones''] }}' before_zones: '{{ trigger.payload_json[''before''][''entered_zones''] }}' - service: notify.send_message target: entity_id: notify.logfile data: message: 'FRIGATE_EVENT: id:"{{ trigger.payload_json[''after''][''id''] }}", camera:"{{ trigger.payload_json[''after''][''camera''] }}"' - id: frigate_new_notification alias: Frigate new notification initial_state: 'on' mode: parallel trace: stored_traces: 20 trigger: - platform: mqtt topic: frigate/events payload: new value_template: '{{ value_json[''type''] }}' action: - variables: camera: '{{ trigger.payload_json[''after''][''camera''] }}' stationary: '{{ trigger.payload_json[''after''][''stationary''] == true }}' id: '{{ trigger.payload_json[''after''][''id''] }}' object: '{{ trigger.payload_json[''after''][''label''] }}' label: '{{ object | title }}' zones: '{{ trigger.payload_json[''after''][''current_zones'']|join('', '')|replace(''_'','' '') }}' entered_zones: '{{ trigger.payload_json[''after''][''entered_zones'']|join('', '')|replace(''_'','' '') }}' type: '{{ trigger.payload_json[''type''] }}' external_url: secret remote_base - service: notify.send_message target: entity_id: notify.debug_log data: message: '{{ id }} is a {{ type }} event {{ id }} for {{ label }} for camera {{ camera }} entered zones {{ trigger.payload_json[''after''][''entered_zones''] }} and current zones {{ trigger.payload_json[''after''][''current_zones''] }}' continue_on_error: true - service: notify.send_message target: entity_id: notify.debug_log data: message: '{{ id }} interesting zone: {{ [''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''current_zones''])|list|length > 0 }}/ {{ [''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''entered_zones''])|list|length > 0 }}' continue_on_error: true - condition: template value_template: '{{ zones = ''opposite'' }}' - condition: template value_template: '{{ ([''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''current_zones''])|list|length > 0) and ([''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''entered_zones''])|list|length > 0) }}' - service: notify.discord data: message: A {{ type }} {{ label|lower }} was detected in the {{ zones }} by the {{ camera }} camera at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local. target: secret discord_camera_channel data: embed: title: '{{ label }} in the {{ zones }}' description: A {{ type|lower }} {{ label }} was detected in the {{ zones }} url: '{{ external_url}}/api/frigate/notifications/{{ id }}/{{ camera }}/clip.mp4' thumbnail: url: '{{ external_url }}/api/frigate/notifications/{{ id }}/thumbnail.jpg' - id: frigate_new_object alias: Frigate new object trigger: - platform: state entity_id: - sensor.front_bicycle_count - sensor.front_bus_count - sensor.front_car_count - sensor.front_motorcycle_count - sensor.front_person_count to: null condition: - condition: template value_template: '{{ trigger.to_state.state|int(0) > trigger.from_state.state|int(0) }}' action: - service: notify.discord data: message: We've just seen a new {{ trigger.to_state.name }} out the front target: '!secret discord_camera_channel' - id: frigate_notification alias: Frigate notification mode: parallel trace: stored_traces: 20 trigger: - platform: mqtt topic: frigate/events payload: new value_template: '{{ value_json[''type''] }}' action: - variables: camera: '{{ trigger.payload_json[''after''][''camera''] }}' stationary: '{{ trigger.payload_json[''after''][''stationary''] == true }}' id: '{{ trigger.payload_json[''after''][''id''] }}' object: '{{ trigger.payload_json[''after''][''label''] }}' label: '{{ object | title }}' zones: '{{ trigger.payload_json[''after''][''current_zones'']|join('', '') }}' entered_zones: '{{ trigger.payload_json[''after''][''entered_zones'']|join('', '') }}' type: '{{ trigger.payload_json[''type''] }}' - service: notify.send_message target: entity_id: notify.debug_log data: message: This is a {{ type }} event {{ id }} for {{ label }} for camera {{ camera }} entered zones {{ trigger.payload_json['after']['entered_zones'] }} and current zones {{ trigger.payload_json['after']['current_zones'] }} - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Interesting zone: {{ [''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''current_zones''])|list|length > 0 }}/ {{ [''road'', ''front_path'', ''drive'']|select(''in'',trigger.payload_json[''after''][''entered_zones''])|list|length > 0 }}' - condition: template value_template: '{{ type == ''new'' }}' - condition: template value_template: '{{ zones != ''opposite'' }}' - delay: 00:00:01 - service: notify.discord data: message: A {{ type }} {{ label }} was detected in the {{ zones }} by camera {{ camera }} target: '!secret discord_camera_channel' data: images: - /data/homeassistant/cameras/{{ camera }}_{{ id }}_thumb.jpg - /data/homeassistant/cameras/{{ camera }}_{{ id }}.jpg - id: front_door_closed alias: Front door closed trigger: - platform: state entity_id: binary_sensor.front_door_contact to: 'off' action: - service: script.turn_on entity_id: script.scan_bt - id: front_door_left_open alias: Front door left open initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.front_door_contact to: 'on' for: 00:05:00 - platform: state entity_id: binary_sensor.vestibule_multi_occupancy to: 'off' for: 00:05:00 condition: - condition: state entity_id: binary_sensor.front_door_contact state: 'on' for: 00:05:00 - condition: state entity_id: binary_sensor.vestibule_multi_occupancy state: 'off' for: 00:05:00 action: - choose: - conditions: - condition: state entity_id: input_boolean.person2_home state: 'on' sequence: - service: notify.person2 data: message: The front door has been left open - choose: - conditions: - condition: state entity_id: input_boolean.person3_home state: 'on' sequence: - service: notify.person3 data: message: The front door has been left open - choose: - conditions: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The front door has been left open media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.family_room_sonos_cloud - choose: - conditions: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The front door has been left open media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.living_room_sonos_cloud - choose: - conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The front door has been left open media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.office_sonos_cloud - id: front_door_open alias: Front door open initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.front_door_contact to: 'on' action: - service: script.turn_on entity_id: script.scan_bt - id: garage_door_closed alias: Garage door closed initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.garage_door_car_contact to: 'off' condition: - condition: state entity_id: input_boolean.person2_home state: 'on' for: 00:05:00 action: - service: script.scan_bt_depart - id: garage_door_open alias: Garage door open trigger: - platform: state entity_id: binary_sensor.garage_door_car_contact to: 'on' condition: - condition: state entity_id: input_boolean.person2_home state: 'off' for: 00:05:00 action: - service: script.scan_bt_arrive - id: garage_open_nobody_home alias: Garage open nobody home initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.garage_door_car_contact to: 'on' condition: - condition: numeric_state entity_id: sensor.home_person2_distance below: 100 - condition: state entity_id: binary_sensor.home_occupied state: 'off' action: - action: notify.mobile_app_pixel_xl data: message: TTS data: media_stream: alarm_stream_max tts_text: Nobody is home right now, turn off the alarm priority: high ttl: 0 - action: notify.mobile_app_pixel_xl data: title: Nobody is home message: Nobody is home right now, turn off the alarm data: car_ui: true notification_icon: mdi:shield-home channel: car importance: high - id: garden_lights_left_on alias: Garden lights left on initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.garden_lights_left_on to: 'on' - platform: state entity_id: binary_sensor.garden_lights_left_on to: 'on' for: 00:10:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact state: 'off' for: 00:01:00 - condition: state entity_id: binary_sensor.garden_lights_left_on state: 'on' for: 00:09:00 action: - service: switch.turn_off entity_id: switch.garden_lights - id: gate_open_doors_closed alias: Gate open doors closed initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.garden_gate_contact to: 'on' condition: - condition: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact state: 'off' for: 00:05:00 action: - choose: - conditions: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The gate has just been opened media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.family_room_sonos_cloud - choose: - conditions: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The gate has just been opened media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.living_room_sonos_cloud - choose: - conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' sequence: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The gate has just been opened media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.office_sonos_cloud - choose: - conditions: - condition: state entity_id: - input_boolean.office_occupied - input_boolean.family_room_occupied - input_boolean.living_room_occupied state: 'off' - condition: state entity_id: input_boolean.person2_home state: 'on' sequence: - service: notify.person2 data: message: The gate has just been opened - delay: 00:00:30 - id: guest_bedroom_not_occupied initial_state: 'on' alias: Guest bedroom not occupied trigger: - platform: state entity_id: binary_sensor.master_bedroom_door_contact to: 'on' id: open - platform: state entity_id: binary_sensor.master_bedroom_door_contact to: 'off' for: 00:00:30 id: closed - platform: state entity_id: binary_sensor.guest_bedroom_motion_occupancy to: 'off' for: 00:00:30 id: motion condition: - condition: state entity_id: input_boolean.guest_bedroom_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: trigger id: motion - condition: state entity_id: binary_sensor.master_bedroom_door_contact state: 'on' - condition: and conditions: - condition: trigger id: closed - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.guest_bedroom_motion_occupancy state: 'on' - condition: template value_template: '{{ as_datetime(state_attr(''binary_sensor.guest_bedroom_motion_occupancy'',''last_seen'')) < states.binary_sensor.guest_bedroom_door_contact.last_changed }}' - condition: state entity_id: binary_sensor.guest_bedroom_motion_occupancy state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.guest_bedroom_occupied - id: guest_bedroom_occupied initial_state: 'on' alias: Guest bedroom occupied trigger: - platform: state entity_id: binary_sensor.master_bedroom_door_contact to: 'off' id: door - platform: state entity_id: binary_sensor.guest_bedroom_motion_occupancy to: 'on' id: motion - platform: state entity_id: binary_sensor.guest_bedroom_motion_occupancy attribute: last_seen to: null id: seen condition: - condition: state entity_id: input_boolean.guest_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.guest_bedroom_motion_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.guest_bedroom_occupied - id: guest_mode_off initial_state: 'on' alias: Guest mode off trigger: - platform: state entity_id: group.guests to: 'off' - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.guest_mode state: 'on' - condition: state entity_id: group.guests state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.guest_mode - condition: state entity_id: light.downstairs_hall state: 'on' - service: script.hall_strip_on - id: guest_mode_off_nobody_home alias: Guest mode off nobody home initial_state: 'on' trigger: - platform: state entity_id: input_boolean.guest_mode to: 'off' condition: condition: and conditions: - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: state entity_id: input_boolean.person2_home state: 'off' - condition: or conditions: - condition: state entity_id: group.person_person1_tablet state: not_home - condition: state entity_id: input_boolean.person1_home state: 'off' action: - service: input_boolean.turn_off entity_id: binary_sensor.home_occupied - id: guest_mode_on initial_state: 'on' alias: Guest mode on trigger: - platform: state entity_id: group.guests to: 'on' - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: group.guests state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.guest_mode - id: ha_started alias: HA started initial_state: 'on' trigger: platform: homeassistant event: start action: - service: script.notify_person2 data: message: Home Assistant {{ states('sensor.current_version') }} has started on Custodes ({{ as_timestamp(utcnow())|timestamp_utc }}) - service: script.scan_bt_restart - id: ha_stopped alias: HA stopped initial_state: 'on' trigger: platform: homeassistant event: shutdown action: - service: input_boolean.turn_on target: entity_id: input_boolean.shutdown_in_progress - service: script.notify_person2 data: message: Home Assistant {{ states('sensor.current_version') }} has shut down on Custodes ({{ as_timestamp(utcnow())|timestamp_utc }}) - id: notify_about_hacs_updates alias: Notify about HACS updates trigger: - platform: time at: '19:00:00' condition: - condition: template value_template: '{{ states(''sensor.hacs'') != ''unknown''}}' - condition: template value_template: '{{ (states(''sensor.hacs'') | float) != 0}}' - condition: state entity_id: input_boolean.person2_home state: 'on' action: service: notify.person2 data: title: Updates ({{ states('sensor.hacs') }}) pending in HACS message: "{% for repo in state_attr('sensor.hacs', 'repositories') %}\n **{{\ \ repo.display_name }}** _{{ repo[\"installed version\"] }}_ -> _{{ repo[\"\ available version\"] }}_\n{% endfor %}" data: disable_notification: true - id: hall_lights_on_when_off initial_state: 'on' alias: Hall lights on when off trigger: - platform: state entity_id: light.downstairs_hall from: 'off' to: 'on' for: 00:30:00 condition: - condition: state entity_id: input_select.hall state: 'Off' action: - service: switch.turn_off entity_id: switch.adaptive_lighting_hall - service: light.turn_off data: entity_id: light.downstairs_hall transition: 5 - id: hall_lights_to_away initial_state: 'on' alias: Hall lights to away trigger: - platform: state entity_id: input_select.hall to: Away - platform: state entity_id: input_select.house to: Away condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: Away - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: Away action: - wait_template: '{{ is_state(''light.downstairs_hall'',''on'') or is_state(''light.downstairs_hall'',''off'') }}' - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_hall - switch.adaptive_lighting_hall - service: light.turn_off data: entity_id: light.downstairs_hall - id: hall_lights_to_bedtime initial_state: 'on' alias: Hall lights to bedtime trigger: - platform: state entity_id: input_select.hall to: Bedtime - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: Bedtime - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: Bedtime action: - if: - condition: state entity_id: switch.adaptive_lighting_hall state: 'off' then: - service: switch.turn_on entity_id: switch.adaptive_lighting_hall - wait_template: '{{ is_state(''light.downstairs_hall'',''off'') or is_state(''light.downstairs_hall'',''on'') }}' - service: light.turn_on data: entity_id: light.downstairs_hall transition: 10 - service: switch.turn_on entity_id: - switch.adaptive_lighting_sleep_mode_hall - delay: 00:01:00 - service: light.turn_off data: entity_id: light.downstairs_hall - delay: 00:01:00 - service: light.turn_off data: entity_id: light.downstairs_hall - id: hall_lights_to_dim initial_state: 'on' alias: Hall lights to dim trigger: - platform: state entity_id: input_select.hall to: Dim - platform: state entity_id: input_select.house to: Dim condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: Dim - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: Dim action: - service: switch.turn_on entity_id: switch.adaptive_lighting_hall - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_hall - choose: - conditions: - condition: state entity_id: input_boolean.hall_christmas state: 'on' sequence: - service: script.hall_string_on default: - service: script.hall_strip_dim - id: hall_lights_to_motion initial_state: 'on' alias: Hall lights to motion trigger: - platform: state entity_id: input_select.hall to: Motion condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.hall state: Motion action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_hall - switch.adaptive_lighting_sleep_mode_hall - service: light.turn_on target: entity_id: light.downstairs_hall data: brightness: 1 - id: hall_lights_to_night_on initial_state: 'on' alias: Hall lights to Night on trigger: - platform: state entity_id: input_select.hall to: Night on - platform: state entity_id: input_select.house to: Night on condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: Night on - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: Night on action: - service: switch.turn_on entity_id: switch.adaptive_lighting_hall - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_hall - choose: - conditions: - condition: state entity_id: input_boolean.hall_christmas state: 'on' sequence: - service: script.hall_string_on default: - service: script.hall_strip_on - id: hall_lights_to_off initial_state: 'on' alias: Hall lights to off trigger: - platform: state entity_id: input_select.hall to: 'Off' - platform: state entity_id: input_select.house to: 'Off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: 'Off' action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_hall - switch.adaptive_lighting_hall - wait_template: '{{ is_state(''light.downstairs_hall'',''on'') or is_state(''light.downstairs_hall'',''off'') }}' - service: light.turn_off data: entity_id: light.downstairs_hall - delay: 00:01:00 - condition: or conditions: - condition: state entity_id: input_select.hall state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.hall state: Auto - condition: state entity_id: input_select.house state: 'Off' - service: light.turn_off data: entity_id: light.downstairs_hall - id: hall_lights_turned_off initial_state: 'on' alias: Hall lights turned off trigger: - platform: state entity_id: light.downstairs_hall from: 'on' to: 'off' for: 00:01:00 action: - choose: - conditions: - condition: not conditions: - condition: state entity_id: input_select.hall state: 'Off' sequence: - service: input_select.select_option data: entity_id: input_select.hall option: 'Off' - if: - condition: state entity_id: switch.adaptive_lighting_hall state: 'off' then: - service: switch.turn_on entity_id: switch.adaptive_lighting_hall - id: hall_lights_unavailable_off initial_state: 'on' alias: Hall lights unavailable off trigger: - platform: state entity_id: light.downstairs_hall from: unavailable to: 'on' condition: - condition: and conditions: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.hall state: Bedtime - condition: state entity_id: input_select.hall state: 'Off' - condition: state entity_id: input_select.hall state: Away action: - service: light.turn_off data: entity_id: light.downstairs_hall - id: hall_mode_away initial_state: 'on' alias: Hall mode away trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'off' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.hall'',''Away'') }}' - condition: state entity_id: binary_sensor.home_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.hall option: Away - id: hall_mode_bedtime alias: Hall mode bedtime initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.bedtime - input_boolean.hall_occupied to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.hall'',''Bedtime'') }}' - condition: state entity_id: - input_boolean.bedtime - input_boolean.hall_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.hall option: Bedtime - id: hall_mode_dim initial_state: 'on' alias: Hall mode dim trigger: - platform: state entity_id: - input_boolean.person2_in_bed - input_boolean.person3_in_bed to: 'on' - platform: state entity_id: - input_boolean.hall_occupied - input_boolean.family_room_occupied to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.hall'',''Dim'') }}' - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: state entity_id: input_boolean.hall_occupied state: 'on' - condition: state entity_id: - input_boolean.person2_in_bed - input_boolean.person3_in_bed state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: input_select.select_option data: entity_id: input_select.hall option: Dim - id: hall_mode_night_on initial_state: 'on' alias: Hall mode Night on trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: numeric_state entity_id: sensor.sun_solar_elevation below: 5 - platform: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux below: 2 - platform: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux below: 1 - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: input_boolean.hall_occupied to: 'on' - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy to: 'on' condition: - condition: not conditions: - condition: state entity_id: input_select.hall state: Night on - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: or conditions: - condition: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux below: 1 - condition: and conditions: - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 5 - condition: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux below: 2 - condition: state entity_id: input_boolean.hall_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.hall option: Night on - id: hall_mode_off initial_state: 'on' alias: Hall mode off trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: numeric_state entity_id: sensor.sun_solar_elevation above: 5 - platform: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux above: 3 for: 00:05:00 - platform: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux above: 5 - platform: state entity_id: input_boolean.hall_occupied to: 'off' for: 00:01:00 condition: - condition: template value_template: '{{ not is_state(''input_select.hall'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.hall_occupied state: 'off' - condition: and conditions: - condition: numeric_state entity_id: sensor.downstairs_hall_light_sensor_illuminance_lux above: 3 - condition: numeric_state entity_id: sensor.sun_solar_elevation above: 0 action: - service: input_select.select_option data: entity_id: input_select.hall option: 'Off' - id: hall_not_occupied alias: Hall not occupied initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy - input_boolean.living_room_occupied - binary_sensor.living_room_door_contact - binary_sensor.living_room_presence_occupancy - input_boolean.family_room_occupied - binary_sensor.family_room_door_contact - binary_sensor.family_room_multi_occupancy - binary_sensor.vestibule_door_contact - binary_sensor.vestibule_multi_occupancy - input_boolean.toilet_occupied - binary_sensor.toilet_door_contact to: 'off' condition: - condition: state entity_id: input_boolean.hall_occupied state: 'on' - condition: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.living_room_door_contact state: 'off' - condition: and conditions: - condition: state entity_id: binary_sensor.living_room_door_contact state: 'on' - condition: state entity_id: - input_boolean.living_room_occupied - binary_sensor.living_room_presence_occupancy state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.family_room_door_contact state: 'off' - condition: and conditions: - condition: state entity_id: binary_sensor.family_room_door_contact state: 'on' - condition: state entity_id: - input_boolean.family_room_occupied - binary_sensor.family_room_multi_occupancy state: 'off' - condition: state entity_id: - binary_sensor.vestibule_door_contact - binary_sensor.vestibule_multi_occupancy state: 'off' match: any - condition: state entity_id: - input_boolean.toilet_occupied - binary_sensor.toilet_door_contact state: 'off' match: any action: - service: input_boolean.turn_off entity_id: input_boolean.hall_occupied - id: hall_occupied alias: Hall occupied initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy - input_boolean.living_room_occupied - binary_sensor.living_room_door_contact - binary_sensor.living_room_presence_occupancy - input_boolean.family_room_occupied - binary_sensor.family_room_door_contact - binary_sensor.family_room_multi_occupancy - binary_sensor.vestibule_door_contact - binary_sensor.vestibule_multi_occupancy - input_boolean.toilet_occupied - binary_sensor.toilet_door_contact to: 'on' condition: - condition: state entity_id: input_boolean.hall_occupied state: 'off' - condition: or conditions: - condition: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy state: 'on' match: any - condition: and conditions: - condition: state entity_id: binary_sensor.living_room_door_contact state: 'on' - condition: state entity_id: - input_boolean.living_room_occupied - binary_sensor.living_room_presence_occupancy state: 'on' match: any - condition: and conditions: - condition: state entity_id: binary_sensor.family_room_door_contact state: 'on' - condition: state entity_id: - input_boolean.family_room_occupied - binary_sensor.family_room_multi_occupancy state: 'on' match: any - condition: state entity_id: - binary_sensor.vestibule_door_contact - binary_sensor.vestibule_multi_occupancy state: 'on' - condition: state entity_id: - input_boolean.toilet_occupied - binary_sensor.toilet_door_contact state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.hall_occupied - id: ha_automations_reloaded alias: HA automations reloaded initial_state: 'on' trigger: - platform: event event_type: automation_reloaded action: - service: notify.apprise data: target: discord_ha title: ' ' message: '<@Tinkerer0042> :robot: Automations on Custodes have been reloaded at {{ as_timestamp(now())|timestamp_custom(''%Y-%m-%d %H:%M:%S'',now()) }} local' - id: healthcheck initial_state: 'on' alias: Healthcheck trigger: - platform: webhook webhook_id: secret pi3 local_only: false action: - delay: milliseconds: 1 mode: parallel - id: holiday alias: Holiday initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_travelling - input_boolean.person3_travelling - input_boolean.person1_travelling to: 'on' condition: condition: and conditions: - condition: state entity_id: input_boolean.person2_travelling state: 'on' - condition: state entity_id: input_boolean.person3_travelling state: 'on' - condition: state entity_id: input_boolean.person1_travelling state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.holiday_mode - id: holiday_over alias: Holiday over initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_travelling - input_boolean.person3_travelling - input_boolean.person1_travelling to: 'off' condition: condition: and conditions: - condition: state entity_id: input_boolean.person2_travelling state: 'off' - condition: state entity_id: input_boolean.person3_travelling state: 'off' - condition: state entity_id: input_boolean.person1_travelling state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.holiday_mode - id: home_not_occupied alias: Home not occupied initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person3_home - input_boolean.person2_home - input_boolean.person1_home - input_boolean.person4_home - input_boolean.guest_mode to: 'off' condition: - condition: state entity_id: - input_boolean.person3_home - input_boolean.person2_home - input_boolean.person1_home - input_boolean.person4_home - input_boolean.guest_mode state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.home_occupied - id: home_occupied alias: Home occupied initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person3_home - input_boolean.person2_home - input_boolean.person1_home - input_boolean.person1_tablet_home - input_boolean.person4_home - input_boolean.guest_mode to: 'on' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_boolean.person3_home state: 'on' - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: and conditions: - condition: state entity_id: input_boolean.person1_home state: 'on' - condition: state entity_id: input_boolean.person1_tablet_home state: 'on' - condition: state entity_id: input_boolean.person4_home state: 'on' - condition: state entity_id: input_boolean.guest_mode state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.home_occupied - id: hotter_outside_livingroom initial_state: 'on' alias: Hotter outside (livingroom) trigger: - platform: state entity_id: - binary_sensor.patio_window_left_contact - binary_sensor.patio_window_right_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact to: 'on' - platform: template value_template: "{{ \n states('sensor.tomorrow_io_temperature')|int > 23\n \ \ and\n ( states('sensor.tomorrow_io_temperature')|int > states('sensor.living_room_climate_temperature')|int\ \ )\n}}\n" condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: numeric_state entity_id: sensor.tomorrow_io_temperature above: 23 - condition: template value_template: '{{ states(''sensor.tomorrow_io_temperature'')|int > states(''sensor.living_room_climate_temperature'')|int }} ' - condition: or conditions: - condition: state entity_id: binary_sensor.patio_window_left_contact state: 'on' - condition: state entity_id: binary_sensor.patio_window_right_contact state: 'on' - condition: state entity_id: binary_sensor.patio_door_left_contact state: 'on' - condition: state entity_id: binary_sensor.patio_door_right_contact state: 'on' - condition: template value_template: '{{ (now() - state_attr(''automation.hotter_outside_livingroom'',''last_triggered'')).seconds > 1800 }}' action: - service: automation.turn_on entity_id: automation.cooler_outside_livingroom - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=It's now hotter outside than inside, you should close the windows and doors. media_content_type: music announce: true extra: volume: 25 target: entity_id: media_player.living_room_sonos_cloud - id: hotter_outside_office initial_state: 'on' alias: Hotter outside (office) trigger: - platform: state entity_id: binary_sensor.office_window_contact to: 'on' - platform: numeric_state entity_id: sensor.tomorrow_io_temperature above: 23 - platform: template value_template: '{{ states(''sensor.tomorrow_io_temperature'')|int > states(''sensor.office_temperature'')|int }} ' condition: - condition: numeric_state entity_id: sensor.tomorrow_io_temperature above: 23 - condition: template value_template: '{{ states(''sensor.tomorrow_io_temperature'')|int > states(''sensor.office_temperature'')|int }} ' - condition: or conditions: - condition: state entity_id: binary_sensor.office_window_contact state: 'on' action: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=It's now hotter outside than inside, you should close the window. media_content_type: music announce: true extra: volume: 10 target: entity_id: media_player.office_sonos_cloud - id: house_is_awake alias: House is awake initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_is_awake - input_boolean.person1_is_awake - input_boolean.person3_is_awake to: 'on' condition: - condition: time after: 03:00:00 - condition: or conditions: - condition: or conditions: - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.person3_is_awake state: 'on' - condition: state entity_id: input_boolean.person3_home state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.person2_home state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.person2_is_awake state: 'on' - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.person1_is_awake state: 'on' - condition: state entity_id: input_boolean.person1_home state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.bedtime - id: house_lights_from_bedtime initial_state: 'on' alias: House lights from bedtime trigger: - platform: state entity_id: input_select.house from: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: not conditions: - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_hall - id: house_lights_to_bedtime initial_state: 'on' alias: House lights to bedtime trigger: - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_hall - id: house_mode_auto alias: House mode auto initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'on' - platform: state entity_id: input_boolean.bedtime to: 'off' action: - service: input_select.select_option data: entity_id: input_select.house option: Auto - id: house_mode_away alias: House mode away initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.house option: Away - id: house_mode_bedtime alias: House mode bedtime initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' action: - service: input_select.select_option data: entity_id: input_select.house option: Bedtime - id: house_mode_holiday alias: House mode holiday initial_state: 'on' trigger: - platform: state entity_id: input_boolean.holiday_mode to: 'on' action: - service: input_select.select_option data: entity_id: input_select.house option: Holiday - id: internet_outage alias: Internet outage mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.fritz_box_3490_connection - binary_sensor.fritz_box_3490_link from: 'off' to: 'on' for: 00:05:00 action: - service: notify.send_message target: entity_id: notify.logfile data: message: The internet went down and is now back up - service: notify.person2 data: message: The internet went down and is now back up - id: last_motion alias: Last motion initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.family_room_multi_occupancy - binary_sensor.living_room_presence_occupancy - binary_sensor.vestibule_multi_occupancy - binary_sensor.utility_motion_occupancy - binary_sensor.master_bedroom_motion_occupancy - binary_sensor.office_presence_occupancy - binary_sensor.second_bedroom_motion_occupancy - binary_sensor.upstairs_hall_motion_front_occupancy from: 'off' to: 'on' action: - service: input_text.set_value data: entity_id: input_text.last_motion value: '{{ trigger.to_state.name }}' - id: last_opened alias: Last opened initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.front_door_contact - binary_sensor.garage_door_bike_contact - binary_sensor.garage_door_car_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact - binary_sensor.utility_door_exterior_contact - binary_sensor.family_window_left_contact - binary_sensor.family_window_right_contact - binary_sensor.kitchen_window_left_contact - binary_sensor.kitchen_window_right_contact - binary_sensor.patio_window_left_contact - binary_sensor.patio_window_right_contact - binary_sensor.vestibule_window_front_contact - binary_sensor.vestibule_window_side_contact - binary_sensor.bathroom_window_contact - binary_sensor.guest_bedroom_window_left_contact - binary_sensor.guest_bedroom_window_right_contact - binary_sensor.master_window_ensuite_contact - binary_sensor.master_window_left_contact - binary_sensor.master_window_right_contact - binary_sensor.office_window_contact - binary_sensor.second_bedroom_window_ensuite_contact - binary_sensor.second_bedroom_window_left_contact - binary_sensor.second_bedroom_window_right_contact - binary_sensor.spare_bedroom_window_left_contact - binary_sensor.spare_bedroom_window_right_contact from: 'off' to: 'on' action: - service: input_text.set_value data: entity_id: input_text.last_opened value: '{{ trigger.to_state.name }}' - id: last_opened_interior alias: Last opened interior door initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.family_room_door_contact - binary_sensor.living_room_door_contact - binary_sensor.toilet_door_contact - binary_sensor.vestibule_door_contact - binary_sensor.master_bedroom_door_contact - binary_sensor.master_ensuite_door_contact - binary_sensor.office_door_contact - binary_sensor.second_bedroom_door_contact - binary_sensor.second_ensuite_door_contact - binary_sensor.spare_bedroom_door_contact - binary_sensor.guest_bedroom_door_contact - binary_sensor.bathroom_door_contact - binary_sensor.loft_hatch_contact from: - 'on' - 'off' to: - 'on' - 'off' condition: - condition: template value_template: '{{ trigger.from_state.state != trigger.to_state.state }}' action: - service: input_text.set_value data: entity_id: input_text.last_opened_interior value: '{{ trigger.to_state.name }}' - id: master_bedroom_lights_off_sleeping_bedtime initial_state: 'on' alias: Master bedroom lights off sleeping bedtime trigger: - platform: state entity_id: input_select.master_bedroom to: 'Off' for: 00:05:00 - platform: state entity_id: input_boolean.person2_is_awake to: 'off' for: 00:05:00 condition: - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' - condition: state entity_id: input_boolean.person2_is_awake state: 'off' - condition: state entity_id: input_select.master_bedroom state: 'Off' action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_sleep_mode_master_neon - id: living_room_adaptive alias: Living Room adaptive initial_state: 'on' mode: single trigger: - platform: time_pattern minutes: /3 condition: - condition: state entity_id: - light.living_room_tv_lamp - light.living_room_corner_lamp - light.living_room_table_lamp state: 'on' match: any - condition: state entity_id: input_select.living_room state: - Auto - Motion - Dim - Wake - Bedtime - Day on - Night on - 'On' action: - if: - condition: state entity_id: light.living_room_tv_lamp state: 'on' then: - service: adaptive_lighting.apply data: lights: light.living_room_tv_lamp - delay: 00:00:01 - if: - condition: state entity_id: light.living_room_corner_lamp state: 'on' then: - service: adaptive_lighting.apply data: lights: light.living_room_corner_lamp - delay: 00:00:01 - if: - condition: state entity_id: light.living_room_table_lamp state: 'on' then: - service: adaptive_lighting.apply data: lights: light.living_room_table_lamp - delay: 00:00:01 - id: living_room_arrival alias: Living room arrival initial_state: 'on' trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_select.person2_status_dropdown to: Just Arrived - platform: state entity_id: input_select.person3_status_dropdown to: Just Arrived - platform: state entity_id: input_select.person1_status_dropdown to: Just Arrived condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.person2_status_dropdown state: Just Arrived - condition: state entity_id: input_select.person3_status_dropdown state: Just Arrived - condition: state entity_id: input_select.person1_status_dropdown state: Just Arrived - condition: state entity_id: input_select.person4_status_dropdown state: Just Arrived - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 4 action: - service: input_select.select_option data: entity_id: input_select.living_room option: Dim - id: living_room_away initial_state: 'on' alias: Living room away trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_boolean.living_room_occupied to: 'off' - platform: state entity_id: input_boolean.living_room_occupied to: 'off' for: minutes: 10 - platform: state entity_id: binary_sensor.home_occupied to: 'off' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'off' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Away - id: living_room_bedtime initial_state: 'on' alias: Living room bedtime trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.living_room_occupied to: 'off' condition: - condition: state entity_id: - binary_sensor.home_occupied - input_boolean.bedtime state: 'on' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Bedtime - id: living_room_christmas_tree_off alias: Living room Christmas Tree off initial_state: 'on' trigger: - platform: homeassistant event: start - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: binary_sensor.home_occupied to: 'off' condition: - condition: state entity_id: - input_boolean.living_room_christmas - switch.living_room_christmas_tree state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: binary_sensor.home_occupied state: 'off' action: - service: switch.turn_off entity_id: switch.living_room_christmas_tree - id: living_room_christmas_tree_on alias: Living room Christmas Tree on initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: - input_boolean.living_room_occupied - binary_sensor.home_occupied - group.downstairs_occupied - input_boolean.living_room_christmas to: 'on' - platform: state entity_id: sun.sun to: below_horizon condition: - condition: state entity_id: - group.downstairs_occupied - binary_sensor.home_occupied - input_boolean.living_room_christmas state: 'on' - condition: state entity_id: switch.living_room_christmas_tree state: 'off' action: - service: switch.turn_on entity_id: switch.living_room_christmas_tree - id: living_room_dark_motion initial_state: 'off' alias: Living room dark motion trigger: - platform: state entity_id: binary_sensor.living_room_presence_occupancy to: 'on' condition: condition: and conditions: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 5 - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Night off - condition: state entity_id: input_select.living_room state: 'Off' - condition: state entity_id: input_select.living_room state: Bedtime action: - service: input_boolean.turn_on entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Dim - service: timer.start data: entity_id: timer.living_room_motion duration: 00:02:00 - id: living_room_dark_no_motion initial_state: 'off' alias: Living room dark no motion trigger: - platform: state entity_id: binary_sensor.living_room_presence_occupancy to: 'off' for: 00:05:00 condition: - condition: state entity_id: - input_boolean.lighting_automations - input_boolean.livingroom_lights_auto state: 'on' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: state entity_id: input_select.living_room state: Dim action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: living_room_day_on initial_state: 'on' alias: Living room day on trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_boolean.living_room_occupied to: 'on' - platform: state entity_id: - input_boolean.livingroom_lights_auto - input_boolean.lighting_living_room to: 'on' - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 13 for: 00:05:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 11 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 7 for: 00:10:00 condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: and conditions: - condition: template value_template: '{{ not is_state(''input_select.living_room'',''Day on'') and not is_state(''input_select.living_room'',''Night on'')}}' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 13 above: 7 - condition: template value_template: '{{ trigger.entity_id == ''input_boolean.living_room_occupied'' or trigger.entity_id == ''input_boolean.lighting_living_room'' or ((now() - states.light.living_room_corner_lamp.last_changed).seconds > 30) and (trigger.entity_id == ''sensor.living_room_light_sensor_illuminance_lux'') }}' - condition: state entity_id: input_boolean.lighting_living_room state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Day on - id: living_room_dim alias: Living room dim initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' from: 'on' condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: template value_template: '{{ (now() - states.input_boolean.living_room_occupied.last_changed).seconds > 600 }}' - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 4 - condition: state entity_id: input_select.living_room state: - 'Off' - Auto - Bedtime - Away - condition: state entity_id: input_boolean.bedtime state: 'off' action: - wait_template: '{{ is_state(''binary_sensor.downstairs_hall_motion_occupancy'',''on'') }}' timeout: 00:05:00 - service: input_select.select_option data: entity_id: input_select.living_room option: Dim - id: living_room_dim_motion initial_state: 'on' alias: Living room dim motion trigger: - platform: state entity_id: - binary_sensor.living_room_presence_occupancy - binary_sensor.living_room_door_contact to: 'on' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.living_room state: Dim - condition: or conditions: - condition: state entity_id: switch.adaptive_lighting_sleep_mode_living_room_table state: 'on' - condition: state entity_id: switch.adaptive_lighting_sleep_mode_living_room_lamps state: 'on' action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_living_room_lamps - switch.adaptive_lighting_sleep_mode_living_room_table - id: living_room_dim_off initial_state: 'on' alias: Living room dim off trigger: - platform: state entity_id: input_select.living_room to: Dim for: 00:30:00 - platform: state entity_id: - binary_sensor.living_room_presence_occupancy to: 'off' for: 00:10:00 - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_boolean.person2_home to: 'off' - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 4 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.living_room state: Dim - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_select.living_room state: Dim for: 00:30:00 - condition: state entity_id: - binary_sensor.living_room_presence_occupancy state: 'off' for: 00:10:00 - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 4 - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: living_room_lights_bedtime initial_state: 'on' alias: Living room lights bedtime trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Bedtime - platform: state entity_id: input_select.house to: Bedtime - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Bedtime - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_off data: entity_id: - switch.living_room_cabinet_light - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - alias: Turn off the lights repeat: while: - condition: state entity_id: light.living_room state: 'on' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_off data: entity_id: light.living_room transition: 5 - delay: 00:00:07 - service: switch.turn_on entity_id: - switch.adaptive_lighting_sleep_mode_living_room_lamps - switch.adaptive_lighting_sleep_mode_living_room_table - id: living_room_lights_day_on initial_state: 'on' alias: Living room lights day on trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Day on - platform: state entity_id: input_select.house to: Day on - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Day on - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Day on action: - service: homeassistant.turn_off entity_id: input_boolean.livingroom_lights_auto - service: switch.turn_on entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - switch.living_room_cabinet_light - alias: Turn on the TV light repeat: while: - condition: state entity_id: light.living_room_tv_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_tv_lamp - delay: 00:00:10 - choose: - conditions: - condition: state entity_id: light.living_room_table_lamp state: 'on' sequence: - service: light.turn_off data: entity_id: light.living_room_table_lamp transition: 5 - choose: - conditions: - condition: state entity_id: light.living_room_corner_lamp state: 'on' sequence: - service: light.turn_off data: entity_id: light.living_room_corner_lamp transition: 5 - choose: - conditions: - condition: state entity_id: input_boolean.living_room_christmas state: 'on' sequence: - service: switch.turn_on entity_id: switch.living_room_christmas_tree - id: living_room_lights_dim_on initial_state: 'on' alias: Living room lights dim on trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Dim - platform: state entity_id: input_select.house to: Dim - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Dim - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Dim action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - alias: Turn on the table light repeat: while: - condition: state entity_id: light.living_room_table_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_table_lamp - delay: 00:00:10 - id: living_room_lights_motion initial_state: 'on' alias: Living room lights motion trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Motion - platform: state entity_id: input_select.house to: Motion - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Motion - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Motion action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - alias: Turn on the table light repeat: while: - condition: state entity_id: light.living_room_table_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_table_lamp - delay: 00:00:05 - id: living_room_lights_night_on initial_state: 'on' alias: Living room lights night on trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Night on - platform: state entity_id: input_select.house to: Night on - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Night on - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Night on action: - service: homeassistant.turn_off entity_id: input_boolean.livingroom_lights_auto - service: switch.turn_on entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - choose: - alias: Socket is off conditions: - condition: state entity_id: switch.living_room_cabinet_light state: 'off' sequence: - service: switch.turn_on entity_id: switch.living_room_cabinet_light - service: light.turn_on data: entity_id: light.living_room transition: 2 brightness_pct: '{{ state_attr(''switch.adaptive_lighting_living_room_lamps'',''brightness_pct'')|default(75,true) }}' color_temp_kelvin: '{{ state_attr(''switch.adaptive_lighting_living_room_lamps'',''color_temp_kelvin'')|default(5000,true) }}' - delay: 00:00:04 - choose: - alias: Table light is off conditions: - condition: state entity_id: light.living_room_table_lamp state: 'off' sequence: - alias: Turn on the table light repeat: while: - condition: state entity_id: light.living_room_table_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_table_lamp - delay: 00:00:04 - choose: - alias: Corner light is off conditions: - condition: state entity_id: light.living_room_corner_lamp state: 'off' sequence: - alias: Turn on the corner light repeat: while: - condition: state entity_id: light.living_room_corner_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_corner_lamp - delay: 00:00:04 - choose: - alias: TV light is off conditions: - condition: state entity_id: light.living_room_tv_lamp state: 'off' sequence: - alias: Turn on the TV light repeat: while: - condition: state entity_id: light.living_room_tv_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_tv_lamp - delay: 00:00:04 - id: living_room_lights_off initial_state: 'on' alias: Living room lights off trigger: - platform: homeassistant event: start - platform: state entity_id: - input_select.living_room - input_select.house to: - 'Off' - Away - platform: state entity_id: - input_select.living_room - input_select.house to: - 'Off' - Away for: 00:10:00 - platform: state entity_id: input_select.house to: Auto condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: 'Off' - condition: state entity_id: input_select.living_room state: Away - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: or conditions: - condition: state entity_id: input_select.house state: 'Off' - condition: state entity_id: input_select.house state: Away action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - choose: - conditions: - condition: state entity_id: switch.living_room_cabinet_light state: 'on' sequence: - service: switch.turn_off entity_id: switch.living_room_cabinet_light - choose: - conditions: - condition: state entity_id: light.living_room state: 'on' sequence: - alias: Turn off the lights repeat: while: - condition: state entity_id: light.living_room state: 'on' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_off data: entity_id: light.living_room transition: 5 - delay: 00:00:07 - choose: - conditions: - condition: state entity_id: input_boolean.living_room_christmas state: 'off' - condition: state entity_id: switch.living_room_christmas_tree state: 'on' sequence: - service: switch.turn_off entity_id: switch.living_room_christmas_tree - id: living_room_lights_on_when_off initial_state: 'on' alias: Living room lights on when off mode: parallel trigger: - platform: state entity_id: - light.living_room_table_lamp - light.living_room_tv_lamp - light.living_room_corner_lamp - switch.living_room_christmas_tree - switch.living_room_cabinet_light to: 'on' for: 00:00:30 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: - 'Off' - Away - Bedtime - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: or conditions: - condition: state entity_id: input_select.house state: - 'Off' - Away - Bedtime action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - choose: - conditions: - condition: state entity_id: switch.living_room_cabinet_light state: 'on' sequence: - service: switch.turn_off entity_id: switch.living_room_cabinet_light - choose: - conditions: - condition: state entity_id: light.living_room state: 'on' sequence: - service: light.turn_off data: entity_id: light.living_room - choose: - conditions: - condition: state entity_id: switch.living_room_christmas_tree state: 'on' sequence: - condition: state entity_id: input_boolean.living_room_christmas state: 'off' - service: switch.turn_off entity_id: switch.living_room_christmas_tree default: - service: homeassistant.turn_off data: entity_id: '{{ trigger.entity_id }}' - id: living_room_lights_wake_on initial_state: 'on' alias: Living room lights wake on trigger: - platform: homeassistant event: start - platform: state entity_id: input_select.living_room to: Wake - platform: state entity_id: input_select.house to: Wake - platform: state entity_id: input_select.living_room to: Auto - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.living_room state: Wake - condition: and conditions: - condition: state entity_id: input_select.living_room state: Auto - condition: state entity_id: input_select.house state: Wake action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - alias: Turn on the table light repeat: while: - condition: state entity_id: light.living_room_table_lamp state: 'off' - condition: template value_template: '{{ repeat.index <= 5 }}' sequence: - service: light.turn_on data: entity_id: light.living_room_table_lamp - delay: 00:00:10 - id: living_room_mode_motion initial_state: 'on' alias: Living room mode motion trigger: - platform: state entity_id: - binary_sensor.living_room_presence_occupancy - binary_sensor.living_room_door_contact to: 'on' condition: - condition: state entity_id: - binary_sensor.home_occupied - input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 2 - condition: state entity_id: input_select.living_room state: - Night off - 'Off' - Bedtime action: - service: input_boolean.turn_on entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Motion - service: timer.start data: entity_id: timer.living_room_motion duration: 00:02:00 - id: living_room_mode_motion_off initial_state: 'on' alias: Living room mode motion off trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: - binary_sensor.living_room_presence_occupancy to: 'off' for: 00:02:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 4 - platform: state entity_id: input_select.living_room to: Motion for: 00:05:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.living_room state: Motion - condition: or conditions: - condition: state entity_id: - binary_sensor.living_room_presence_occupancy state: 'off' for: 00:02:00 - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 4 action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: living_room_movement initial_state: 'on' alias: Living room movement trigger: platform: state entity_id: binary_sensor.living_room_presence_occupancy to: 'on' condition: condition: and conditions: - condition: state entity_id: input_boolean.livingroom_lights_auto state: 'on' - condition: state entity_id: timer.living_room_motion state: active action: - service: timer.cancel entity_id: timer.living_room_motion - service: timer.start data: entity_id: timer.living_room_motion duration: 00:02:00 - id: living_room_night_on initial_state: 'on' alias: Living room night on trigger: - platform: homeassistant event: start id: start - platform: event event_type: automation_reloaded id: reload - platform: state entity_id: input_boolean.living_room_occupied to: 'on' id: occupied - platform: state entity_id: - input_boolean.livingroom_lights_auto - input_boolean.lighting_living_room to: 'on' id: toggle - platform: state entity_id: switch.living_room_christmas_tree to: 'on' id: christmas - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 8 for: 00:02:00 id: lux - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 6 for: 00:01:00 id: lux - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 5 id: lux - platform: state entity_id: event.hue_dimmer_action to: null id: remote condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.lighting_living_room state: 'on' - condition: template value_template: '{{ trigger and trigger.id == ''remote'' and trigger.to_state.attributes.event_type == ''press'' and trigger.to_state.attributes.action == ''up_press'' }}' - condition: template value_template: '{{ not is_state(''input_select.living_room'',''Night on'') }}' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 8 - condition: template value_template: '{{ trigger.entity_id == ''input_boolean.living_room_occupied'' or trigger.entity_id == ''input_boolean.lighting_living_room'' or ((now() - states.light.living_room_corner_lamp.last_changed).seconds > 30) and (trigger.entity_id == ''sensor.living_room_light_sensor_illuminance_lux'') }}' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: Night on - condition: state entity_id: input_boolean.lighting_living_room state: 'off' - delay: 00:00:05 - service: input_boolean.turn_on entity_id: input_boolean.lighting_living_room - id: living_room_not_occupied initial_state: 'on' alias: Living room not occupied trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: media_player.sky_q_living_room to: 'off' for: 00:01:00 - platform: state entity_id: media_player.lounge_tcl_roku_tv to: 'off' for: 00:01:00 - platform: state entity_id: media_player.lounge_tcl_roku_tv to: - 'off' - unavailable for: 00:05:00 - platform: state entity_id: media_player.living_room_tv to: unavailable - platform: state entity_id: media_player.living_room_tv to: unavailable for: 00:05:00 - platform: state entity_id: media_player.living_room to: paused for: 00:03:00 - platform: state entity_id: media_player.living_room to: idle for: 00:03:00 - platform: state entity_id: - binary_sensor.living_room_presence_occupancy to: 'off' for: 00:01:00 condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'on' - condition: state entity_id: media_player.lounge_tcl_roku_tv state: - 'off' - unavailable - standby - condition: state entity_id: media_player.living_room state: - paused - idle - condition: state entity_id: - binary_sensor.living_room_presence_occupancy state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.living_room_occupied - delay: 00:00:01 - service: input_boolean.turn_on entity_id: input_boolean.lighting_living_room - id: living_room_occupied initial_state: 'on' alias: Living room occupied trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: media_player.lounge_tcl_roku_tv to: 'on' - platform: state entity_id: - media_player.sky_q_living_room - media_player.living_room_tv to: - playing - buffering id: playing - platform: state entity_id: - media_player.living_room to: - playing - buffering id: sonos - platform: state entity_id: - media_player.living_room_tv - media_player.living_room - media_player.sky_q_living_room to: - playing - buffering for: minutes: 5 - platform: state entity_id: media_player.lounge_tcl_roku_tv to: 'on' - platform: state entity_id: - binary_sensor.living_room_presence_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ (now() - states.binary_sensor.living_room_presence_occupancy.last_changed).seconds < 180 }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: or conditions: - condition: trigger id: playing - condition: and conditions: - condition: state entity_id: media_player.lounge_tcl_roku_tv state: 'on' - condition: state entity_id: media_player.sky_q_living_room state: - playing - buffering - condition: state entity_id: - media_player.living_room - media_player.living_room_tv state: - playing - buffering - 'off' match: any action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_living_room_lamps - switch.adaptive_lighting_sleep_mode_living_room_table - service: input_boolean.turn_on entity_id: - input_boolean.living_room_occupied - input_boolean.lighting_living_room - id: living_room_off initial_state: 'on' alias: Living room off trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 65 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 60 for: 00:01:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 55 for: 00:01:30 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 50 for: 00:02:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 45 for: 00:02:30 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 40 for: 00:03:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 35 for: 00:03:30 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 30 for: 00:04:00 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 25 for: 00:04:30 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 22 for: 00:05:00 - platform: state entity_id: input_boolean.living_room_occupied to: 'off' - platform: state entity_id: binary_sensor.home_occupied to: 'on' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: template value_template: '{{ states(''input_select.living_room'') not in (''Off'',''Bedtime'') }}' - condition: or conditions: - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 50 - condition: and conditions: - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: and conditions: - condition: state entity_id: binary_sensor.trend_sun_elevation state: 'on' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 20 action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: living_room_off_empty alias: Living room off empty trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_boolean.living_room_occupied to: 'off' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.living_room'',''Off'') }}' - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: living_room_override initial_state: 'on' alias: Living room override trigger: - platform: state entity_id: - light.living_room_corner_lamp - light.living_room_tv_lamp - light.living_room_table_lamp - switch.living_room_cabinet_light to: 'off' condition: - condition: and conditions: - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_select.living_room state: Night on - condition: or conditions: - condition: state entity_id: light.living_room_corner_lamp state: 'off' - condition: state entity_id: switch.living_room_cabinet_light state: 'off' - condition: state entity_id: light.living_room_tv_lamp state: 'off' - condition: state entity_id: light.living_room_table_lamp state: 'off' - condition: and conditions: - condition: state entity_id: input_select.living_room state: Day on - condition: or conditions: - condition: state entity_id: switch.living_room_cabinet_light state: 'off' - condition: state entity_id: light.living_room_tv_lamp state: 'off' action: - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - service: input_boolean.turn_off entity_id: input_boolean.lighting_living_room - id: living_room_sleep_mode alias: Living room sleep mode initial_state: 'on' trigger: - platform: time at: '22:00:00' condition: - condition: state entity_id: light.living_room state: 'on' action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_sleep_mode_living_room_lamps - switch.adaptive_lighting_sleep_mode_living_room_table - service: light.turn_on target: entity_id: light.living_room data: brightness_pct: 1 transition: 5 - delay: 00:00:05 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_living_room_lamps - switch.adaptive_lighting_living_room_table - id: living_room_table_light_unavailable_off initial_state: 'on' alias: Living room table light unavailable off trigger: - platform: state entity_id: light.living_room_table_lamp from: unavailable to: 'off' condition: - condition: or conditions: - condition: state entity_id: input_select.living_room state: Dim - condition: state entity_id: input_select.living_room state: Night on action: - service: light.turn_on data: entity_id: light.living_room_table_lamp transition: 3 - id: living_room_table_light_unavailable_on initial_state: 'on' alias: Living room table light unavailable on trigger: - platform: state entity_id: light.living_room_table_lamp from: unavailable to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.living_room state: 'Off' - condition: state entity_id: input_select.living_room state: Away - condition: state entity_id: input_select.living_room state: Day on action: - service: light.turn_off data: entity_id: light.living_room_table_lamp transition: 3 - id: living_room_table_off initial_state: 'on' alias: Living room table off trigger: - platform: state entity_id: light.living_room_table_lamp from: unavailable to: 'off' condition: - condition: or conditions: - condition: state entity_id: input_select.living_room state: Dim - condition: state entity_id: input_select.living_room state: Night on action: - service: light.turn_on data: entity_id: light.living_room_table_lamp transition: 15 - id: living_room_table_on initial_state: 'on' alias: Living room table on trigger: - platform: state entity_id: light.living_room_table_lamp from: unavailable to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.living_room state: Day off - condition: state entity_id: input_select.living_room state: Day on - condition: state entity_id: input_select.living_room state: Away action: - service: light.turn_off data: entity_id: light.living_room_table_lamp - id: living_room_wake_off initial_state: 'on' alias: Living room wake off trigger: - platform: state entity_id: input_select.living_room to: Wake for: 00:30:00 - platform: state entity_id: - binary_sensor.living_room_presence_occupancy to: 'off' for: 00:30:00 - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_boolean.person2_home to: 'off' - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 8 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.living_room state: Wake - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_select.living_room state: Wake for: 00:30:00 - condition: state entity_id: - binary_sensor.living_room_presence_occupancy state: 'off' for: 00:30:00 - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux above: 8 - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.livingroom_lights_auto - service: input_select.select_option data: entity_id: input_select.living_room option: 'Off' - id: awtrix_location_update alias: Awtrix location update initial_state: 'on' trigger: - platform: state entity_id: input_text.person_person3 id: person3 - platform: state entity_id: input_text.person_person1 id: person1 condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - choose: - conditions: - condition: trigger id: person3 - condition: state entity_id: input_boolean.person3_home state: 'off' sequence: - service: notify.awtrix_6d6f50 data: message: person3 is {{ states('input_text.person_person3') }} data: icon: '14717' pushIcon: 2 repeat: 1 - conditions: - condition: trigger id: person1 - condition: state entity_id: input_boolean.person1_home state: 'off' sequence: - service: notify.awtrix_6d6f50 data: message: person1 is {{ states('input_text.person_person1') }} data: icon: '14717' pushIcon: 2 repeat: 1 mode: queued - id: master_bedroom_button_pushed initial_state: 'on' alias: Master bedroom button pushed trigger: - platform: state entity_id: - event.master_bedroom_button_action - event.master_bedroom_button_r_action to: null id: event action: - choose: - conditions: - condition: template value_template: '{{ (trigger.id == ''sensor'' and trigger.to_state.state == ''single'') or (trigger.id == ''event'' and trigger.to_state.attributes.event_type == ''single'') }}' sequence: - choose: - conditions: - condition: state entity_id: input_select.master_bedroom state: - 'On' - Bedtime - Motion - Wake - Auto sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - conditions: - condition: state entity_id: input_select.master_bedroom state: - 'Off' - Motion sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' default: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - conditions: - condition: template value_template: '{{ (trigger.id == ''sensor'' and trigger.to_state.state == ''double'') or (trigger.id == ''event'' and trigger.to_state.attributes.event_type == ''double'') }}' sequence: - choose: - conditions: - condition: state entity_id: input_select.master_bedroom state: - Bedtime sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' default: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Bedtime - conditions: - condition: template value_template: '{{ (trigger.id == ''sensor'' and trigger.to_state.state == ''hold'') or (trigger.id == ''event'' and trigger.to_state.attributes.event_type == ''hold'') }}' sequence: - choose: - conditions: - condition: state entity_id: input_select.master_bedroom state: - Sleeping sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' default: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Sleeping - conditions: - condition: template value_template: '{{ (trigger.id == ''sensor'' and trigger.to_state.state == ''release'') or (trigger.id == ''event'' and trigger.to_state.attributes.event_type == ''release'') }}' sequence: - service: script.turn_on data: target: script.nop default: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - service: notify.send_message target: entity_id: notify.debug_log data: message: Trigger for master bedroom button was {{ trigger.id }} new state of {{ trigger.to_state.state }}\n{{ trigger.to_state.attributes }} - id: master_bedroom_cube initial_state: 'on' alias: Master bedroom cube description: Handles the master bedroom cube, it supports wakeup, shake/tap, rotate/flip, and fall trigger: - platform: state entity_id: event.master_bedroom_cube_action to: null action: - choose: - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''wakeup'' }}' - condition: state entity_id: input_select.master_bedroom state: - 'Off' - Auto - condition: state entity_id: input_boolean.person2_is_awake state: 'off' - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 20 sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Bedtime - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''tap'' or (''flip'' in trigger.to_state.state) }}' sequence: - choose: - conditions: - condition: state entity_id: input_select.master_bedroom state: - 'On' - Bedtime - Wake - Auto - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 20 sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - conditions: - condition: state entity_id: input_select.master_bedroom state: - 'Off' - Motion - Auto sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - conditions: - condition: state entity_id: input_select.master_bedroom state: - Auto - condition: state entity_id: light.master_bedroom_bedhead state: 'off' sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - conditions: - condition: state entity_id: input_select.master_bedroom state: - Auto - condition: state entity_id: light.master_bedroom_bedhead state: 'on' sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' default: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''rotate_right'' }}' - condition: state entity_id: input_select.master_bedroom state: Bedtime sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''rotate_left'' }}' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: 'On' - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: 'Off' - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Bedtime - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''fall'' }}' - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 20 sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Wake - conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''shake'' }}' sequence: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Auto - choose: - conditions: - condition: state entity_id: light.master_bedroom_bedhead state: 'off' sequence: - service: light.turn_on data: entity_id: light.master_bedroom_bedhead - service: light.turn_on data: entity_id: light.master_bedroom_bedhead brightness: 255 rgb_color: - '{{ range(0,255)|random }}' - id: master_bedroom_lights_bedtime initial_state: 'on' alias: Master bedroom lights bedtime trigger: - platform: state entity_id: input_select.master_bedroom to: Bedtime - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Bedtime - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_adapt_brightness_master_neon - switch.adaptive_lighting_sleep_mode_master_neon - switch.adaptive_lighting_master_neon - service: light.turn_on data: entity_id: light.master_bedroom_bedhead transition: 5 - service: light.turn_on data: entity_id: light.wled_master_neon transition: 5 effect: Solid - delay: 00:00:05 - service: adaptive_lighting.apply data: entity_id: switch.adaptive_lighting_master_neon - id: master_bedroom_lights_dim initial_state: 'on' alias: Master bedroom lights dim trigger: - platform: state entity_id: input_select.master_bedroom to: Dim - platform: state entity_id: input_select.house to: Dim condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Dim - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Dim action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_adapt_brightness_master_neon - switch.adaptive_lighting_sleep_mode_master_neon - switch.adaptive_lighting_master_neon - service: light.turn_on data: entity_id: - light.master_bedroom_bedhead transition: 2 - service: light.turn_on data: entity_id: - light.wled_master_neon transition: 2 effect: Solid - delay: 00:00:02 - service: adaptive_lighting.apply data: entity_id: switch.adaptive_lighting_master_neon - id: master_bedroom_lights_motion initial_state: 'on' alias: Master bedroom lights motion trigger: - platform: state entity_id: input_select.master_bedroom to: Motion - platform: state entity_id: input_select.house to: Motion condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Motion - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Motion action: - service: light.turn_on data: entity_id: - light.master_bedroom_bedhead transition: 0.5 - service: light.turn_on data: entity_id: - light.wled_master_neon transition: 0.5 effect: Solid - delay: 00:00:01 - service: adaptive_lighting.apply data: entity_id: switch.adaptive_lighting_master_neon - id: master_bedroom_lights_night initial_state: 'on' alias: Master bedroom lights night trigger: - platform: state entity_id: input_select.master_bedroom to: Night - platform: state entity_id: input_select.house to: Night condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Night - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Night action: - service: light.turn_off data: entity_id: light.master_bedroom_bedhead transition: 5 - service: switch.turn_off entity_id: - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_sleep_mode_master_bedroom - service: select.select_option target: entity_id: select.wled_master_neon_preset data: option: Night - id: master_bedroom_lights_off initial_state: 'on' alias: Master bedroom lights off trigger: - platform: state entity_id: input_select.master_bedroom to: 'Off' - platform: state entity_id: input_select.house to: 'Off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: 'Off' action: - parallel: - choose: - conditions: - condition: state entity_id: light.wled_master_neon state: 'on' sequence: - service: light.turn_off data: entity_id: light.wled_master_neon transition: 5 - choose: - conditions: - condition: state entity_id: light.master_bedroom_bedhead state: 'on' sequence: - service: light.turn_off data: entity_id: light.master_bedroom_bedhead transition: 5 - condition: template value_template: '{{ trigger.from_state.state != ''Motion'' }}' - delay: 00:05:00 - service: switch.turn_on entity_id: - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_master_neon - switch.adaptive_lighting_adapt_brightness_master_neon - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_sleep_mode_master_neon mode: restart - id: master_bedroom_lights_on initial_state: 'on' alias: Master bedroom lights on trigger: - platform: state entity_id: input_select.master_bedroom to: 'On' - platform: state entity_id: input_select.house to: 'On' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: 'On' - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: 'On' action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_adapt_brightness_master_neon - switch.adaptive_lighting_master_neon - service: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_master_bedroom - switch.adaptive_lighting_sleep_mode_master_neon - service: light.turn_on data: entity_id: - light.master_bedroom_bedhead transition: 0.5 - service: light.turn_on data: entity_id: - light.wled_master_neon transition: 0.5 effect: Solid - delay: 00:00:01 - service: adaptive_lighting.apply data: entity_id: switch.adaptive_lighting_master_neon - id: master_bedroom_lights_sleeping initial_state: 'on' alias: Master bedroom lights sleeping trigger: - platform: state entity_id: input_select.master_bedroom to: Sleeping - platform: state entity_id: input_select.house to: Sleeping condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Sleeping - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Sleeping action: - service: light.turn_off data: entity_id: light.master_bedroom_bedhead transition: 5 - service: switch.turn_off entity_id: - switch.adaptive_lighting_adapt_brightness_master_bedroom - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_sleep_mode_master_bedroom - service: select.select_option target: entity_id: select.wled_master_neon_preset data: option: Night - id: master_bedroom_lights_turned_off initial_state: 'on' alias: Master bedroom lights turned off trigger: - platform: state entity_id: light.master_bedroom to: 'off' condition: - condition: template value_template: '{{ states(''input_select.master_bedroom'') not in (''Off'') }}' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - id: master_bedroom_lights_turned_on initial_state: 'on' alias: Master bedroom lights turned on trigger: - platform: state entity_id: light.master_bedroom to: 'on' condition: - condition: state entity_id: input_select.master_bedroom state: 'Off' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Auto - id: master_bedroom_lights_wake initial_state: 'on' alias: Master bedroom lights wake trigger: - platform: state entity_id: input_select.master_bedroom to: Wake - platform: state entity_id: input_select.house to: Wake condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.master_bedroom state: Wake - condition: and conditions: - condition: state entity_id: input_select.master_bedroom state: Auto - condition: state entity_id: input_select.house state: Wake action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_master_bedroom - switch.adaptive_lighting_master_neon - service: light.turn_on data: entity_id: - light.master_bedroom_bedhead transition: 10 brightness_pct: 100 color_name: white - service: light.turn_on data: entity_id: - light.wled_master_neon transition: 10 brightness_pct: 100 color_name: white effect: Solid - id: master_bedroom_mode_bedtime alias: Master bedroom mode bedtime trigger: - platform: state entity_id: input_boolean.person2_in_bed to: 'on' for: 00:30:00 condition: - condition: template value_template: '{{ states(''input_select.master_bedroom'') not in (''Bedtime'',''Off'') }}' - condition: state entity_id: input_boolean.person2_is_awake state: 'on' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Bedtime - id: master_bedroom_mode_off initial_state: 'on' alias: Master bedroom mode off trigger: - platform: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux above: 15 - platform: state entity_id: input_select.master_bedroom to: Wake for: 00:30:00 - platform: state entity_id: input_boolean.master_bedroom_occupied to: 'off' condition: - condition: template value_template: '{{ not is_state(''input_select.master_bedroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'off' - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux above: 15 action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - id: master_bedroom_mode_on alias: Master bedroom mode on initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.master_bedroom_occupied to: 'on' - platform: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 14 condition: - condition: not conditions: - condition: state entity_id: input_select.master_bedroom state: 'On' - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 14 - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' - condition: state entity_id: input_boolean.person2_in_bed state: 'off' - condition: state entity_id: input_boolean.person2_home state: 'on' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'On' - id: master_bedroom_mode_wake initial_state: 'on' alias: Master bedroom mode wake trigger: - platform: state entity_id: - media_player.person2 - media_player.master_bedroom to: playing id: playing - platform: event event_type: tasker_webhook event_data: who: person2 id: tasker condition: - condition: time before: '10:00:00' - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: or conditions: - condition: trigger id: playing - condition: template value_template: '{{ trigger.event and '',Sleep alarm,'' in trigger.event.data.what }}' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Wake - id: master_bedroom_motion initial_state: 'on' alias: Master bedroom motion trigger: - platform: state entity_id: - binary_sensor.master_bedroom_motion_occupancy - binary_sensor.master_bedroom_door_contact to: 'on' condition: - condition: template value_template: '{{ states(''input_select.master_bedroom'') not in (''Dim'',''Wake'',''On'') }}' - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'off' - condition: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux below: 14 action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Motion - id: master_bedroom_not_occupied initial_state: 'on' alias: Master bedroom not occupied trigger: - platform: state entity_id: binary_sensor.master_bedroom_door_contact id: closed to: 'off' for: 00:02:00 - platform: state entity_id: binary_sensor.master_bedroom_door_contact id: open to: 'on' for: 00:02:00 - platform: state entity_id: binary_sensor.master_bedroom_motion_occupancy id: motion to: 'off' for: 00:00:30 condition: - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.master_bedroom_motion_occupancy state: 'off' for: 00:00:30 - condition: state entity_id: binary_sensor.master_ensuite_door_contact state: - 'on' - 'off' for: 00:02:00 - condition: trigger id: closed - condition: and conditions: - condition: trigger id: motion - condition: state entity_id: - binary_sensor.master_bedroom_door_contact state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.master_bedroom_occupied - id: master_bedroom_no_motion initial_state: 'on' alias: Master bedroom no motion trigger: - platform: state entity_id: binary_sensor.master_bedroom_motion_occupancy to: 'off' for: 00:03:00 - platform: numeric_state entity_id: sensor.master_bedroom_light_sensor_illuminance_lux above: 15 condition: - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'off' - condition: state entity_id: input_select.master_bedroom state: Motion action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - id: master_bedroom_occupied initial_state: 'on' alias: Master bedroom occupied trigger: - platform: state entity_id: - light.master_bedroom_bedhead - input_boolean.person2_in_bed to: 'on' - platform: state entity_id: input_boolean.person2_is_awake to: 'off' - platform: state entity_id: binary_sensor.master_bedroom_door_contact to: 'off' id: door - platform: state entity_id: binary_sensor.master_bedroom_motion_occupancy to: 'on' id: motion - platform: state entity_id: binary_sensor.master_ensuite_door_contact to: null id: ensuite condition: - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.master_bedroom_door_contact state: 'off' - condition: or conditions: - condition: trigger id: ensuite - condition: trigger id: motion - condition: state entity_id: binary_sensor.master_bedroom_motion_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.master_bedroom_occupied - id: master_bedroom_mode_to_off initial_state: 'on' alias: Master bedroom mode to off trigger: - platform: state entity_id: light.master_bedroom to: 'off' for: 00:00:05 - platform: state entity_id: input_boolean.master_bedroom_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: 'Off' - id: nearly_home alias: Nearly Home initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.garage_door_car_contact - binary_sensor.front_door_contact to: 'on' - platform: numeric_state entity_id: sensor.home_person2_distance below: 1000 - platform: numeric_state entity_id: sensor.home_person3_distance below: 1000 - platform: numeric_state entity_id: sensor.home_person1_distance below: 1000 condition: - condition: state entity_id: binary_sensor.home_occupied state: 'off' for: 00:10:00 - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 25 - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 15 action: - service: input_select.select_option data: entity_id: input_select.hall option: Night on - condition: state entity_id: input_select.season state: Christmas - service: input_select.select_option data: entity_id: input_select.vestibule option: 'On' - id: nighttime_garden_off initial_state: 'off' alias: Nighttime garden off description: Turn off the lights if they are left on between midnight and sunrise trigger: platform: state entity_id: switch.garden_lights to: 'on' for: 00:15:00 condition: - condition: time after: 00:00:00 - condition: state entity_id: sun.sun state: below_horizon action: service: switch.turn_off entity_id: switch.garden_lights - id: notify_about_unavailable mode: parallel alias: Notify about unavailable entities description: Notify either when an entity has been unavailable for a while (to avoid transient issues), or when they've been cleared initial_state: 'on' trigger: - platform: state entity_id: sensor.unavailable_entities for: 00:30:00 - platform: state entity_id: sensor.unavailable_entities condition: - condition: state entity_id: input_boolean.shutdown_in_progress state: 'off' - condition: not conditions: - condition: state entity_id: sensor.unavailable_entities state: unavailable action: - choose: - alias: Nothing to nothing conditions: - condition: template value_template: '{{ trigger.to_state.state == ''0'' }}' - condition: template value_template: '{{ trigger.from_state.state == ''0'' }}' sequence: - delay: 00:00:01 - alias: Everything is available now conditions: - condition: template value_template: '{{ trigger.to_state.state == ''0'' and ( (now()-trigger.to_state.last_changed).seconds < 5 ) }}' - condition: template value_template: '{{ trigger.from_state.state|int > 0 }}' sequence: - service: notify.discord_webhook data: message: ':grey_question: There are no entities unavailable {%- if trigger.from_state.state != ''0'' -%}, there were {{ trigger.from_state.state }} ({{ trigger.from_state.attributes.entities }}){%- endif -%}' - alias: Something has remained unavailable conditions: - condition: template value_template: '{{ trigger.to_state.state|int > 0 and ( (now()-trigger.to_state.last_changed).seconds > 600 ) }}' sequence: - service: notify.discord_webhook data: message: ':grey_question: There are {{ trigger.to_state.state }} entities unavailable, these are {{ trigger.to_state.attributes.entities }}' - alias: Something is unavailable right now conditions: - condition: template value_template: '{{ trigger.to_state.state|int > 0 and ( (now()-trigger.to_state.last_changed).seconds <= 600 ) }}' sequence: - service: notify.discord_webhook data: message: ':grey_question: There are {{ trigger.to_state.state }} entities unavailable, these are {{ trigger.to_state.attributes.entities }} - please hold' default: - service: notify.discord_webhook data: message: ':grey_question: Hey, there are {{ trigger.to_state.state }} entities unavailable {%- if trigger.to_state.state != ''0'' -%}, these are {{ trigger.to_state.attributes.entities }} {%- else -%}, these were {{ trigger.from_state.attributes.entities }} {%- endif -%}' - service: notify.send_message target: entity_id: notify.debug_log data: message: There are {{ trigger.to_state.state }} entities unavailable {%- if trigger.to_state.state != '0' -%}, these are {{ trigger.to_state.attributes.entities }} {%- else -%}, these were {{ trigger.from_state.attributes.entities }} {%- endif -%} - id: number_sign_off initial_state: 'on' alias: Number sign off trigger: - platform: time at: '23:59:00' id: time - platform: state entity_id: sun.sun to: above_horizon - platform: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux above: 50 - platform: homeassistant event: start condition: - condition: or conditions: - condition: trigger id: time - condition: and conditions: - condition: state entity_id: sun.sun state: above_horizon - condition: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux above: 50 action: - service: switch.turn_off entity_id: switch.number_sign - id: number_on_at_sunset initial_state: 'on' alias: Number on at sunset trigger: - platform: homeassistant event: start - platform: numeric_state entity_id: sensor.sun_solar_elevation below: 0 - platform: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux below: 50 - platform: homeassistant event: start condition: - condition: state entity_id: switch.number_sign state: 'off' - condition: or conditions: - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 0 - condition: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux below: 50 action: - service: switch.turn_on entity_id: switch.number_sign - id: number_on_in_the_morning initial_state: 'on' alias: Number on in the morning trigger: - platform: time at: 06:30:00 - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: sun.sun state: below_horizon - condition: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux below: 50 - condition: state entity_id: switch.number_sign state: 'off' action: - service: switch.turn_on entity_id: switch.number_sign - id: office_air alias: Office air initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.office_air_co2 above: 1000 for: 00:05:00 id: co2 - platform: numeric_state entity_id: sensor.office_air_voc above: 250 for: 01:00:00 id: voc_low - platform: numeric_state entity_id: sensor.office_air_voc above: 2000 id: voc_high - platform: numeric_state entity_id: sensor.office_air_pm25 above: 50 for: 00:05:00 id: pm_low - platform: numeric_state entity_id: sensor.office_air_pm25 above: 100 for: 00:05:00 id: pm_high condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - service: notify.awtrix_6d6f50 data: message: "The air quality is low\n {%- if is_state('binary_sensor.office_door_contact','off')\ \ and is_state('binary_sensor.office_window_contact','on') -%}\n , open\ \ the door\n {%- elif is_state('binary_sensor.office_door_contact','off')\ \ and is_state('binary_sensor.office_window_contact','off') -%}\n , open\ \ the door and window\n {%- elif is_state('binary_sensor.office_door_contact','on')\ \ and is_state('binary_sensor.office_window_contact','off') -%}\n , open\ \ the window\n {%- else -%}\n , turn on the fan\n {%- endif -%}\n. CO2\ \ levels are {{ \"high\" if states('sensor.office_air_co2')|float > 1000 else\ \ \"ok\" }}, VOC levels are{%- if states('sensor.office_air_voc')|float >\ \ 2000 %} high{%- elif states('sensor.office_air_voc')|float > 250 %} elevated{%-\ \ else %} ok{% endif -%}, and PM 2.5 levels are{%- if states('sensor.office_air_pm25')|float\ \ > 100 %} high{%- elif states('sensor.office_air_pm25')|float > 50 %} elevated{%-\ \ else %} ok{%- endif -%}" data: icon: '2644' duration: 25 repeat: 1 - id: office_alert alias: Office alert initial_state: 'on' trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: input_boolean.alarm_mode to: 'on' condition: - condition: state entity_id: input_boolean.alarm_mode state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.lighting_office - service: switch.turn_off entity_id: - switch.adaptive_lighting_office - service: light.turn_on entity_id: light.office_strip - repeat: while: - condition: state entity_id: input_boolean.alarm_mode state: 'on' sequence: - service: light.turn_on target: entity_id: light.office_strip data: brightness_pct: 100 color_name: red transition: 0.5 - delay: 1 - service: light.turn_on target: entity_id: light.office_strip data: brightness: 1 color_name: red transition: 0.5 - delay: 1 - service: input_boolean.turn_on entity_id: input_boolean.lighting_office - service: switch.turn_on entity_id: - switch.adaptive_lighting_office - id: office_calendar_announcement alias: Office calendar announcement initial_state: 'on' triggers: - trigger: state entity_id: input_boolean.office_occupied to: 'on' conditions: - condition: time before: 09:00:00 - condition: not conditions: - condition: state entity_id: sensor.person2_work_events state: unavailable - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: state entity_id: binary_sensor.person2_on_holiday state: 'off' actions: - wait_template: '{{ not is_state(''media_player.office'',''unavailable'') }}' - action: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=Today you have the following meetings. {%- for event in states('sensor.person2_work_events')|from_json %}{% if today_at(event.start) > now() %}{% if not loop.first %} and{% endif %} {{ event.summary }} at {{ event.start }}{% if not loop.last %},{% endif %}{% endif %}{%- endfor %} media_content_type: music announce: true extra: volume: 20 target: entity_id: media_player.office_sonos_cloud - id: office_calendar_reminder alias: Office calendar reminder initial_state: 'on' triggers: - trigger: calendar entity_id: calendar.person2_work event: start conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: template value_template: '{{ "Reminder:" in trigger.calendar_event.summary }}' actions: - action: media_player.play_media data: media_content_id: 'media-source://tts/tts.piper?message=Remember to {{ trigger.calendar_event.summary|replace("Reminder: ","") }}' media_content_type: music extra: volume: 20 announce: true target: entity_id: media_player.office_sonos_cloud - id: office_dial_action initial_state: 'on' alias: Office dial action triggers: - trigger: state entity_id: event.office_dial_moes_action to: null id: event conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type == ''toggle'' }}' actions: - if: - condition: state entity_id: media_player.office state: playing then: - action: media_player.media_pause data: entity_id: media_player.office else: - action: media_player.media_play data: entity_id: media_player.office - id: office_dial_rotate initial_state: 'on' alias: Office dial rotate triggers: - trigger: state entity_id: event.office_dial_moes_action to: null conditions: - condition: template value_template: '{{ trigger.to_state.attributes.event_type in [''brightness_step'',''brightness_step'',''color_temperature_step_up'',''color_temperature_step_down''] }}' variables: action: "{% if trigger.to_state.attributes.event_type == 'brightness_step' and\ \ trigger.to_state.attributes.direction|is_defined %}\n volume_{{trigger.to_state.attributes.direction}}\n\ {% elif trigger.to_state.attributes.event_type == 'color_temperature_step_up'\ \ %}\n next_track\n{% else %}\n prev_track\n{% endif %}" current_vol: '{{ state_attr(''media_player.office'',''volume_level'')|float(0) }}' vol_step: '0.01' new_vol: '{{ (min(1,(current_vol|float(0)+vol_step|float(0))))|round(2) if (action == ''volume_up'') else (max(0,(current_vol|float(0)-vol_step|float(0))))|round(2) }}' action: - choose: - conditions: - condition: template value_template: '{{ action == ''volume_up'' or action == ''volume_down''}}' sequence: - service: media_player.volume_set data: entity_id: media_player.office volume_level: '{{ new_vol }}' - conditions: - condition: template value_template: '{{ action == ''next_track'' }}' sequence: - service: media_player.media_play data: entity_id: media_player.office - service: media_player.media_next_track data: entity_id: media_player.office - conditions: - condition: template value_template: '{{ action == ''prev_track'' }}' sequence: - service: media_player.media_play data: entity_id: media_player.office - service: media_player.media_previous_track data: entity_id: media_player.office default: - service: notify.send_message target: entity_id: notify.debug_log data: message: Action is {{ action }} with {{ new_vol }} - id: office_dial_test alias: Office dial test trigger: - platform: state entity_id: event.office_dial_moes_action to: null action: - service: notify.send_message target: entity_id: notify.debug_log data: message: Office dial from {{ trigger.from_state.attributes.event_type }}/{{ trigger.from_state.attributes.direction }} to {{ trigger.to_state.attributes.event_type }}/{{ trigger.to_state.attributes.direction }} - id: office_lights_dim initial_state: 'on' alias: Office lights dim trigger: - platform: state entity_id: input_select.office to: Dim - platform: state entity_id: input_select.office to: Auto - platform: state entity_id: input_select.house to: Dim - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: Dim - condition: and conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.house state: Dim action: - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_office - switch.adaptive_lighting_sleep_mode_office - switch.adaptive_lighting_adapt_brightness_office - service: light.turn_on data: entity_id: light.office_strip - id: office_lights_motion initial_state: 'on' alias: Office lights motion trigger: - platform: state entity_id: input_select.office to: Motion - platform: state entity_id: input_select.office to: Auto - platform: state entity_id: input_select.house to: Motion - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: Motion - condition: and conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.house state: Motion action: - if: - condition: time after: '22:00:00' before: 05:00:00 then: - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_sleep_mode_office - switch.adaptive_lighting_adapt_brightness_office else: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_office - switch.adaptive_lighting_adapt_brightness_office - service: switch.turn_on target: entity_id: switch.adaptive_lighting_office - service: light.turn_on data: entity_id: light.office_strip brightness_pct: 5 - id: office_lights_off initial_state: 'on' alias: Office lights off trigger: - platform: state entity_id: input_select.office to: 'Off' - platform: state entity_id: input_select.office to: Away - platform: state entity_id: input_select.office to: Auto - platform: state entity_id: input_select.house to: 'Off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: 'Off' - condition: state entity_id: input_select.office state: Away - condition: and conditions: - condition: state entity_id: input_select.office state: Auto - condition: or conditions: - condition: state entity_id: input_select.house state: 'Off' - condition: state entity_id: input_select.house state: Away action: - service: light.turn_off data: entity_id: light.office_strip transition: 15 - delay: 00:00:20 - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_office - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_office - switch.adaptive_lighting_adapt_brightness_office - id: office_lights_on initial_state: 'on' alias: Office lights on trigger: - platform: state entity_id: input_select.office to: 'On' - platform: state entity_id: input_select.office to: Auto - platform: state entity_id: input_select.house to: 'On' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: 'On' - condition: and conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.house state: 'On' action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_office - switch.adaptive_lighting_sleep_mode_office - service: light.turn_on data: entity_id: light.office_strip transition: 3 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_adapt_brightness_office - switch.adaptive_lighting_office - id: office_lights_on_when_off alias: Office lights on when off initial_state: 'on' trigger: - platform: state entity_id: light.office_strip to: 'on' for: 00:00:30 condition: - condition: state entity_id: input_select.office state: 'Off' action: - service: light.turn_off data: entity_id: light.office_strip transition: 1 - id: office_lights_pause initial_state: 'on' alias: Office lights pause trigger: - platform: state entity_id: input_select.office to: Pause - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.office state: Pause action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_office - service: light.turn_on target: entity_id: light.office_strip data: brightness_pct: 2 transition: 1 - id: office_lights_turned_off initial_state: 'on' alias: Office lights turned off trigger: - platform: state entity_id: light.office_strip to: 'off' for: 00:00:30 condition: - condition: not conditions: - condition: state entity_id: input_select.office state: 'Off' action: - service: input_select.select_option data: entity_id: input_select.office option: 'Off' - id: office_lights_turned_on initial_state: 'on' alias: Office lights turned on trigger: - platform: state entity_id: light.office_strip to: 'on' for: 00:30:00 condition: - condition: state entity_id: input_select.office state: 'Off' action: - choose: - conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' sequence: - service: input_select.select_option data: entity_id: input_select.office option: 'On' default: - service: light.turn_off data: entity_id: light.office_strip - id: office_lights_unpaused initial_state: 'on' alias: Office lights unpaused trigger: - platform: state entity_id: input_select.office from: Pause - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: - input_boolean.lighting_automations - input_boolean.office_occupied state: 'on' - condition: not conditions: - condition: state entity_id: input_select.office state: Pause action: - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_office - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_office - id: office_lights_wake initial_state: 'on' alias: Office lights wake trigger: - platform: state entity_id: input_select.office to: Wake - platform: state entity_id: input_select.office to: Auto - platform: state entity_id: input_select.house to: Wake - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: Wake - condition: and conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.house state: Wake action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_adapt_brightness_office - switch.adaptive_lighting_sleep_mode_office - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_office - service: light.turn_on target: entity_id: light.office_strip data: brightness_pct: 5 - id: office_meeting_ended initial_state: 'on' alias: Office meeting ended triggers: - trigger: state entity_id: calendar.person2_work to: 'off' id: calendar - trigger: calendar entity_id: calendar.person2_work event: end id: calendar - trigger: state entity_id: binary_sensor.kelsie_webcamactive to: 'off' id: webcam - trigger: state entity_id: input_boolean.office_occupied to: 'on' id: occupied - trigger: state entity_id: binary_sensor.office_mmwave_region_1 to: 'on' id: presence - trigger: state entity_id: input_boolean.office_paused to: 'off' id: paused - trigger: state entity_id: input_select.office to: Motion id: select - trigger: state entity_id: media_player.office to: playing conditions: - condition: state entity_id: switch.home_assistant_voice_0907a0_mute state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_select.office state: Motion - condition: trigger id: presence actions: - service: switch.turn_off data: entity_id: switch.home_assistant_voice_0907a0_mute - id: office_meeting_started initial_state: 'on' alias: Office meeting started triggers: - trigger: state entity_id: calendar.person2_work to: 'on' id: calendar - trigger: calendar entity_id: calendar.person2_work event: start id: calendar - trigger: state entity_id: binary_sensor.kelsie_webcamactive to: 'on' id: webcam - trigger: state entity_id: input_boolean.office_occupied to: 'off' id: unoccupied - trigger: state entity_id: input_boolean.office_paused to: 'on' id: paused conditions: - condition: state entity_id: switch.home_assistant_voice_0907a0_mute state: 'off' actions: - service: switch.turn_on data: entity_id: switch.home_assistant_voice_0907a0_mute - id: office_mode_no_wake initial_state: 'on' alias: Office mode no wake trigger: - platform: state entity_id: input_select.office to: Wake for: 01:00:00 action: - service: input_select.select_option data: entity_id: input_select.office option: 'Off' - id: office_mode_off initial_state: 'on' alias: Office mode off trigger: - platform: state entity_id: input_boolean.office_occupied - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 90 - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 80 for: 00:01:00 - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 70 for: 00:02:00 - platform: state entity_id: input_select.office to: Dim for: 01:00:00 - platform: state entity_id: input_select.office to: 'On' for: 00:03:00 - platform: state entity_id: input_boolean.lighting_office to: 'on' condition: - condition: state entity_id: input_boolean.lighting_office state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 70 action: - service: input_select.select_option data: entity_id: input_select.office option: 'Off' - id: office_mode_on initial_state: 'on' alias: Office mode on trigger: - platform: state entity_id: - input_boolean.office_occupied - input_boolean.lighting_office to: 'on' - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux below: 50 - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux below: 60 for: 00:01:00 - platform: state entity_id: input_boolean.office_paused to: 'off' condition: - condition: state entity_id: - input_boolean.lighting_office - input_boolean.office_occupied state: 'on' - condition: state entity_id: input_boolean.office_paused state: 'off' - condition: template value_template: '{{ states(''input_select.office'') not in (''Pause'',''On'') }}' - condition: numeric_state entity_id: sensor.office_illuminance_illuminance_lux below: 60 - condition: time before: '22:00:00' after: 05:00:00 action: - service: input_select.select_option data: entity_id: input_select.office option: 'On' - id: office_mode_wake initial_state: 'on' alias: Office mode Wake trigger: - platform: state entity_id: input_boolean.person2_is_awake to: 'on' for: 00:15:00 condition: - condition: state entity_id: input_boolean.person2_is_awake state: 'on' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: state entity_id: binary_sensor.person2_on_holiday state: 'off' - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: numeric_state entity_id: sensor.office_illuminance_illuminance_lux below: 15 action: - wait_template: '{{ is_state(''binary_sensor.master_bedroom_door_contact'', ''on'') }}' - service: input_select.select_option data: entity_id: input_select.office option: Wake - id: office_motion initial_state: 'on' alias: Office motion trigger: - platform: state entity_id: - binary_sensor.office_presence_occupancy - binary_sensor.office_mmwave_region_1 to: 'on' condition: - condition: template value_template: '{{ states(''input_select.office'') not in (''Pause'',''Dim'',''Wake'',''On'') }}' - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: numeric_state entity_id: sensor.office_illuminance_illuminance_lux below: 15 action: - service: input_select.select_option data: entity_id: input_select.office option: Motion - id: office_not_occupied initial_state: 'on' alias: Office not occupied trigger: - platform: state entity_id: group.work_laptop to: not_home - platform: state entity_id: binary_sensor.office_mmwave_region_1 to: 'off' - platform: state entity_id: binary_sensor.office_mmwave_region_1 to: 'off' for: 00:10:00 condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: or conditions: - condition: state entity_id: group.work_laptop state: not_home - condition: state entity_id: binary_sensor.office_mmwave_region_1 state: 'off' for: 00:10:00 - condition: state entity_id: binary_sensor.office_mmwave_region_1 state: 'off' action: - service: input_boolean.turn_off entity_id: - input_boolean.office_occupied - id: office_no_motion initial_state: 'on' alias: Office no motion trigger: - platform: state entity_id: - binary_sensor.office_presence_occupancy - binary_sensor.office_mmwave_region_1 to: 'off' - platform: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 20 condition: - condition: state entity_id: input_select.office state: Motion - condition: or conditions: - condition: state entity_id: - binary_sensor.office_presence_occupancy - binary_sensor.office_mmwave_region_1 state: 'off' - condition: numeric_state entity_id: sensor.office_illuminance_illuminance_lux above: 20 action: - service: input_select.select_option data: entity_id: input_select.office option: 'Off' - id: office_no_presence alias: Office no presence initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.office_mmwave_region_1 to: 'off' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: media_player.office state: playing action: - service: input_select.select_option data: entity_id: input_select.office option: Pause - service: input_boolean.turn_on data: entity_id: input_boolean.office_paused - id: office_occupied initial_state: 'on' alias: Office occupied trigger: - platform: state entity_id: group.work_laptop to: home - platform: state entity_id: input_boolean.person2_in_bed to: 'off' - platform: state entity_id: input_boolean.person2_home to: 'on' - platform: state entity_id: - binary_sensor.office_presence_occupancy - binary_sensor.office_mmwave_region_1 to: 'on' - platform: state entity_id: binary_sensor.office_mmwave_presence to: 'on' for: 00:05:00 condition: - condition: or conditions: - condition: state entity_id: binary_sensor.office_presence_occupancy state: 'on' - condition: state entity_id: binary_sensor.office_mmwave_region_1 state: 'on' - condition: state entity_id: sensor.office_mmwave_presence_event state: approach - condition: state entity_id: - input_boolean.office_occupied - input_boolean.person2_in_bed state: 'off' - condition: or conditions: - condition: state entity_id: group.work_laptop state: home - condition: state entity_id: binary_sensor.office_mmwave_region_1 state: 'on' for: 00:04:00 - condition: state entity_id: input_boolean.person2_home state: 'on' action: - service: input_boolean.turn_on entity_id: - input_boolean.office_occupied - input_boolean.lighting_office - input_boolean.stream_front_camera_motion - id: office_paused_motion initial_state: 'on' alias: Office paused motion trigger: - platform: state entity_id: - binary_sensor.office_presence_occupancy - binary_sensor.office_mmwave_region_1 to: 'on' condition: - condition: state entity_id: input_select.office state: Pause - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.office option: 'On' - service: media_player.media_play data: entity_id: media_player.office - id: office_presence alias: Office presence initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.office_mmwave_region_1 - binary_sensor.office_presence_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.office_paused state: 'on' action: - service: input_boolean.turn_off data: entity_id: input_boolean.office_paused - id: office_sonos_switch_off alias: Office Sonos switch off initial_state: 'on' trigger: - platform: state entity_id: switch.office_sonos to: 'off' for: 00:00:20 action: - service: switch.turn_on entity_id: switch.office_sonos - id: office_sonos_unavailable alias: office sonos unavailable initial_state: 'on' trigger: - platform: state entity_id: media_player.office to: unavailable for: 00:20:00 - platform: state entity_id: binary_sensor.office_sonos_family to: 'off' for: 00:03:00 condition: - condition: state entity_id: switch.office_sonos state: 'on' for: 00:01:00 action: - service: switch.turn_off entity_id: switch.office_sonos - delay: 00:00:15 - service: switch.turn_on entity_id: switch.office_sonos - service: notify.discord_webhook data: message: ':speaker: The office Sonos was unavailable so we power cycled it' - id: office_unoccupied initial_state: 'on' alias: Office unoccupied trigger: - platform: state entity_id: input_boolean.office_occupied to: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.stream_front_camera_motion - service: input_boolean.turn_on entity_id: - input_boolean.lighting_living_room - input_boolean.lighting_office - id: office_unoccupied_window_open alias: Office unoccupied window open initial_state: 'on' trigger: - platform: state entity_id: input_boolean.office_occupied to: 'off' condition: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: binary_sensor.office_window_contact state: 'on' action: - service: notify.person2 data: message: You left the office window open - id: office_volume_change initial_state: 'on' alias: Office volume change trigger: - platform: state entity_id: media_player.office attribute: volume_level action: - service: notify.awtrix_6d6f50 data: message: '{{ ((state_attr(''media_player.office'',''volume_level'')|float(0))*100)|round(0) }}' data: icon: 56192 progress: '{{ ((state_attr(''media_player.office'',''volume_level'')|float(0))*200)|round(0) }}' progressC: 18B04C progressBC: '333344' repeat: 1 duration: 2 - id: office_white_noise alias: Office white noise initial_state: 'on' trigger: - platform: time_pattern minutes: 5 condition: - condition: state entity_id: input_boolean.office_occupied state: 'off' for: 00:30:00 action: - service: media_player.volume_set target: entity_id: media_player.office data: volume_level: 0.01 - delay: 00:00:10 - condition: state entity_id: input_boolean.office_occupied state: 'off' - service: media_player.play_media data: media_content_id: x-sonos-http:sonos%3asleep%3ac7d23b1f899776d5dd850c21de30ca91%3aloopSD.mp4?sid=303&flags=0&sn=10 media_content_type: music target: entity_id: media_player.office - delay: 00:05:00 - condition: state entity_id: input_boolean.office_occupied state: 'off' - service: media_player.media_pause target: entity_id: media_player.office - delay: 00:00:10 - condition: state entity_id: input_boolean.office_occupied state: 'off' - service: media_player.volume_set target: entity_id: media_player.office data: volume_level: 0.08 - id: awtrix_outside_door_opened alias: Awtrix outside door opened initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.front_door_contact - binary_sensor.garage_door_car_contact - binary_sensor.garage_door_bike_contact - binary_sensor.garden_gate - binary_sensor.utility_door_exterior_contact - input_boolean.door_test - input_boolean.gate_test - input_boolean.garage_door_test to: 'on' id: opened - platform: state entity_id: - binary_sensor.front_door_contact - binary_sensor.garage_door_car_contact - binary_sensor.garage_door_bike_contact - binary_sensor.garden_gate - binary_sensor.utility_door_exterior_contact - input_boolean.door_test - input_boolean.gate_test - input_boolean.garage_door_test to: 'off' id: closed variables: opened_icon: '{{ "44477" if "garage_door" in trigger.entity_id else ( "34928" if "gate" in trigger.entity_id else "40857" ) }}' closed_icon: '{{ "44478" if "garage_door" in trigger.entity_id else ( "34929" if "gate" in trigger.entity_id else "40858" ) }}' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - choose: - conditions: - condition: trigger id: opened sequence: - service: notify.awtrix_6d6f50 data: message: The {{ trigger.to_state.name }} was opened data: icon: '{{ opened_icon }}' pushIcon: 2 repeat: 1 - conditions: - condition: trigger id: closed sequence: - service: notify.awtrix_6d6f50 data: message: The {{ trigger.to_state.name }} is closed data: icon: '{{ closed_icon }}' pushIcon: 2 repeat: 1 - id: pause_music_in_the_office initial_state: 'on' alias: Pause music in the office trigger: - platform: state entity_id: calendar.person2_work to: 'on' id: calendar - platform: calendar entity_id: calendar.person2_work event: start id: calendar - platform: state entity_id: binary_sensor.kelsie_webcamactive to: 'on' id: webcam - platform: state entity_id: input_boolean.office_occupied to: 'off' id: unoccupied - platform: state entity_id: input_boolean.office_paused to: 'on' id: paused - platform: state entity_id: input_select.office to: Pause id: paused condition: - condition: state entity_id: media_player.office state: playing - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_boolean.office_paused state: 'on' - condition: and conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.kelsie_webcamactive state: 'on' - condition: state entity_id: calendar.person2_work state: 'on' - condition: trigger id: calendar - condition: trigger id: webcam action: - service: media_player.media_pause data: entity_id: media_player.office - id: people_reloaded_when_just_arrived alias: People reloaded when just arrived initial_state: 'on' trigger: - platform: event event_type: automation_reloaded - platform: homeassistant event: start action: - choose: conditions: - condition: state entity_id: input_select.person2_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.person2_status_dropdown option: Home - choose: conditions: - condition: state entity_id: input_select.person3_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.person3_status_dropdown option: Home - choose: conditions: - condition: state entity_id: input_select.person1_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.person1_status_dropdown option: Home - choose: conditions: - condition: state entity_id: input_select.person4_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.person4_status_dropdown option: Home - id: people_reloaded_when_just_left alias: People reloaded when just left initial_state: 'on' trigger: - platform: event event_type: automation_reloaded - platform: homeassistant event: start action: - choose: conditions: - condition: state entity_id: input_select.person2_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.person2_status_dropdown option: Away - choose: conditions: - condition: state entity_id: input_select.person3_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.person3_status_dropdown option: Away - choose: conditions: - condition: state entity_id: input_select.person1_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.person1_status_dropdown option: Away - choose: conditions: - condition: state entity_id: input_select.person4_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.person4_status_dropdown option: Away - id: mark_person_as_just_arrived alias: Mark person as just arrived mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_home - input_boolean.person3_home - input_boolean.person1_home - input_boolean.person4_home to: 'on' action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_boolean.person2_home' %}\n input_select.person2_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.person3_home' %}\n input_select.person3_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.person1_home' %}\n input_select.person1_status_dropdown\n\ {% else %}\n input_select.person4_status_dropdown\n{% endif %}\n" option: "{% if trigger.entity_id == 'input_boolean.person2_home' %}\n {% if\ \ states.input_select.person2_status_dropdown.state == 'Just Left' %}\n \ \ Home\n {% else %}\n Just Arrived\n {% endif %}\n{% elif trigger.entity_id\ \ == 'input_boolean.person3_home' %}\n {% if states.input_select.person3_status_dropdown.state\ \ == 'Just Left' %}\n Home\n {% else %}\n Just Arrived\n {% endif\ \ %}\n{% elif trigger.entity_id == 'input_boolean.person1_home' %}\n {% if\ \ states.input_select.person1_status_dropdown.state == 'Just Left' %}\n \ \ Home\n {% else %}\n Just Arrived\n {% endif %}\n{% else %}\n {% if\ \ states.input_select.person4_status_dropdown.state == 'Just Left' %}\n \ \ Home\n {% else %}\n Just Arrived\n {% endif %}\n{% endif %}\n" - service: script.turn_on entity_id: script.scan_bt_arrive - id: mark_person_as_away alias: Mark person as away mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown to: Just Left for: minutes: 5 action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_select.person2_status_dropdown'\ \ %}\n input_select.person2_status_dropdown\n{% elif trigger.entity_id ==\ \ 'input_select.person3_status_dropdown' %}\n input_select.person3_status_dropdown\n\ {% elif trigger.entity_id == 'input_select.person1_status_dropdown' %}\n \ \ input_select.person1_status_dropdown\n{% else %}\n input_select.person4_status_dropdown\n\ {% endif %}\n" option: Away - id: mark_person_as_home alias: Mark person as home mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown to: Just Arrived for: minutes: 5 - platform: state entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown from: Just Left to: Just Arrived action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_select.person2_status_dropdown'\ \ %}\n input_select.person2_status_dropdown\n{% elif trigger.entity_id ==\ \ 'input_select.person3_status_dropdown' %}\n input_select.person3_status_dropdown\n\ {% elif trigger.entity_id == 'input_select.person1_status_dropdown' %}\n \ \ input_select.person1_status_dropdown\n{% else %}\n input_select.person4_status_dropdown\n\ {% endif %}\n" option: Home - id: mark_person_as_just_left alias: Mark person as just left mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_home - input_boolean.person3_home - input_boolean.person1_home - input_boolean.person4_home to: 'off' action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_boolean.person2_home' %}\n input_select.person2_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.person3_home' %}\n input_select.person3_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.person1_home' %}\n input_select.person1_status_dropdown\n\ {% else %}\n input_select.person4_status_dropdown\n{% endif %}\n" option: Just Left - id: mark_person_as_nearly_home alias: Mark person as nearly home mode: parallel initial_state: 'on' trigger: - platform: zone entity_id: - person.person2 - person.person1 - person.person3 - device_tracker.dsb_0230 zone: zone.nearly_home action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'person.person2' %}\n input_select.person2_status_dropdown\n\ {% elif trigger.entity_id == 'person.person3' %}\n input_select.person3_status_dropdown\n\ {% elif trigger.entity_id == 'person.person1' %}\n input_select.person1_status_dropdown\n\ {% else %}\n input_select.person4_status_dropdown\n{% endif %}\n" option: "{% if trigger.entity_id == 'person.person2' %}\n {% if states('input_select.person2_status_dropdown')\ \ == 'Away' %}\n Pre Arrival\n {% else %}\n {{ states('input_select.person2_status_dropdown')\ \ }}\n {% endif %}\n{% elif trigger.entity_id == 'person.person3' %}\n {%\ \ if states('input_select.person3_status_dropdown') == 'Away' %}\n Pre\ \ Arrival\n {% else %}\n {{ states('input_select.person3_status_dropdown')\ \ }}\n {% endif %}\n{% elif trigger.entity_id == 'person.person1' %}\n {%\ \ if states('input_select.person1_status_dropdown') == 'Away' %}\n Pre\ \ Arrival\n {% else %}\n {{ states('input_select.person1_status_dropdown')\ \ }}\n {% endif %}\n{% else %}\n {% if states('input_select.person4_status_dropdown')\ \ == 'Away' %}\n Pre Arrival\n {% else %}\n {{ states('input_select.person4_status_dropdown')\ \ }}\n {% endif %}\n{% endif %}\n" - id: person1_alarm_left_playing alias: person1 alarm left playing initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.second_bedroom_door_contact to: 'off' for: 00:02:00 - platform: state entity_id: media_player.person1 to: playing for: 00:01:00 - platform: state entity_id: input_boolean.person1_in_bed to: 'off' condition: - condition: state entity_id: input_boolean.person1_in_bed state: 'off' - condition: state entity_id: media_player.person1 state: playing - condition: state entity_id: binary_sensor.second_bedroom_door_contact state: 'off' for: 00:02:00 - condition: time after: 04:00:00 before: '12:00:00' action: - service: media_player.turn_off data: entity_id: media_player.person1 - id: person1_alarm_light alias: person1 alarm light initial_state: 'on' trigger: - platform: state entity_id: light.second_bedroom to: 'off' condition: - condition: state entity_id: - input_boolean.person1_alarm_sounded - input_boolean.person1_in_bed state: 'on' action: - service: light.turn_on target: entity_id: light.second_bedroom data: transition: 5 - id: person1_alarm_playing alias: person1 Alarm Playing initial_state: 'on' trigger: - platform: state entity_id: media_player.person1 to: - playing - paused condition: - condition: state entity_id: - input_boolean.person1_home - input_boolean.second_bedroom_occupied state: 'on' - condition: state entity_id: input_boolean.person1_alarm_sounded state: 'off' - condition: time after: 04:00:00 before: '12:00:00' action: - service: input_boolean.turn_on entity_id: input_boolean.person1_alarm_sounded - service: media_player.turn_on data: entity_id: media_player.cast_second_bedroom_speaker - wait_template: '{{ is_state(''media_player.cast_second_bedroom_speaker'',''idle'') }}' - service: media_player.volume_set data: entity_id: media_player.cast_second_bedroom_speaker volume_level: 0.2 - service: media_player.turn_off data: entity_id: media_player.cast_second_bedroom_speaker - id: person1_asleep alias: person1 asleep initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person1_in_bed to: 'on' for: 00:05:00 - platform: time at: '23:00:00' - platform: time at: 00:00:00 - platform: time at: 01:00:00 condition: - condition: state entity_id: - input_boolean.person1_in_bed - input_boolean.person1_is_awake - input_boolean.person1_home state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person1_is_awake - service: script.turn_on entity_id: script.person1_travel_sensor - id: person1_at_ep alias: person1 at work Park initial_state: 'on' trigger: - platform: state entity_id: device_tracker.sm_a546b to: work Park condition: - condition: state entity_id: input_boolean.person1_at_hw state: 'on' - condition: state entity_id: input_boolean.person2_home state: 'on' action: - service: notify.apprise data: target: telegram_ha title: '' message: person1 is at work Park - service: input_boolean.turn_off entity_id: input_boolean.person1_at_hw - id: person1_at_station alias: person1 at Haymerket initial_state: 'on' trigger: - platform: state entity_id: device_tracker.sm_a546b to: station Train Station condition: - condition: or conditions: - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: numeric_state entity_id: sensor.home_person2_distance below: 2000 - condition: state entity_id: input_boolean.person1_at_hw state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person1_at_hw - service: homeassistant.update_entity target: entity_id: sensor.next_train_to_abc_3 - service: notify.person2_telegram data: message: person1 is at station, and the next train is in {{ states('sensor.next_train_to_abc_3')|int }} minutes, leaving at {{ state_attr('sensor.next_train_to_abc_3','next_trains')[0].estimated }}. The following train leaves at {{ state_attr('sensor.next_train_to_abc_3','next_trains')[1].estimated }}. - id: person1_at_station2 alias: person1 at station2 initial_state: 'on' trigger: - platform: state entity_id: device_tracker.sm_a546b to: station2 condition: - condition: or conditions: - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: numeric_state entity_id: sensor.home_person2_distance below: 2000 - condition: state entity_id: input_boolean.person1_at_hw state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person1_at_hw - service: homeassistant.update_entity target: entity_id: sensor.next_train_to_abc - service: notify.person2_telegram data: message: person1 is at station2, and the next train is in {{ states('sensor.next_train_to_abc')|int }} minutes, leaving at {{ state_attr('sensor.next_train_to_abc','next_trains')[0].estimated }}. The following train leaves at {{ state_attr('sensor.next_train_to_abc','next_trains')[1].estimated }}. - id: person1_awake alias: person1 awake initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person1_in_bed to: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person1_is_awake - service: input_boolean.turn_off entity_id: input_boolean.person1_alarm_sounded - service: media_player.turn_off entity_id: - media_player.cast_second_bedroom_speaker - media_player.person1 - service: script.turn_on entity_id: script.person1_travel_sensor - id: person1_away alias: person1 away initial_state: 'on' trigger: - platform: state entity_id: device_tracker.sm_a546b id: gps - platform: state entity_id: - device_tracker.person1_bt_mobile_2 - device_tracker.person1_bt_front_mobile_2 - device_tracker.person_person1_wifi - device_tracker.nmap_tracker_samsung_a54 to: not_home id: passive - platform: event event_type: automation_reloaded id: reload - platform: homeassistant event: start id: start condition: - condition: state entity_id: input_boolean.person1_home state: 'on' for: 00:02:00 - condition: or conditions: - condition: and conditions: - condition: template value_template: "{{ \n (expand('group.person_person1')|selectattr('attributes.source_type','eq','router')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person1')|selectattr('attributes.source_type','eq','router')|list|count\ \ <= 0.5)\n and\n (expand('group.person_person1')|selectattr('attributes.source_type','eq','bluetooth')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person1')|selectattr('attributes.source_type','eq','bluetooth')|list|count\ \ <= 0.5)\n}}" - condition: template value_template: '{{ (now() - states.binary_sensor.front_door_contact.last_changed < timedelta(minutes=5)) or (now() - states.binary_sensor.garage_door_car_contact.last_changed < timedelta(minutes=5)) }} ' - condition: and conditions: - condition: template value_template: '{{ (expand(''group.person_person1'')|selectattr(''state'',''eq'',''home'')|list|count / expand(''group.person_person1'')|list|count) < 1}}' - condition: template value_template: '{{ distance(''device_tracker.sm_a546b'')|float > 0.3 and trigger.id == ''gps'' }}' - condition: template value_template: '{{ distance(''device_tracker.sm_a546b'')|float > 0.6 and trigger.id == ''gps'' }}' action: - service: script.turn_on data: entity_id: script.person1_away - service: input_boolean.turn_off entity_id: input_boolean.person1_alarm_sounded - id: person1_bedside_left_on alias: person1 bedside left on initial_state: 'on' trigger: - platform: time at: '23:59:59' condition: - condition: state entity_id: light.second_bedroom state: 'on' action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Bedtime - delay: 00:01:00 - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'Off' - id: person1_changing_zones initial_state: 'on' alias: person1 changing zones trigger: - platform: state entity_id: - device_tracker.sm_a546b to: not_home for: 00:05:00 - platform: state entity_id: - device_tracker.sm_a546b from: not_home - platform: state entity_id: sensor.sm_a546b_wifi_connection to: - platform: state entity_id: sensor.sm_a546b_wifi_connection from: condition: - condition: template value_template: '{{ (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 300 }}' action: - service: script.turn_on entity_id: script.person1_traveltime - id: person1_home initial_state: 'on' alias: person1 home trigger: - platform: state entity_id: - device_tracker.person1_bt_mobile_2 - device_tracker.person1_bt_front_mobile_2 - device_tracker.person_person1_wifi - device_tracker.nmap_tracker_samsung_a54 to: home - platform: state entity_id: binary_sensor.front_door_contact to: - 'off' - 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: group.person_person1 state: home - condition: or conditions: - condition: numeric_state entity_id: group.person_person1 above: 1 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person1'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' - condition: and conditions: - condition: template value_template: '{{ ((now() - states.binary_sensor.front_door_contact.last_changed).seconds < 120 ) }}' - condition: numeric_state entity_id: group.person_person1 above: 0 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person1'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' action: - service: script.turn_on entity_id: script.person1_home - id: person1_home_after_work initial_state: 'off' alias: person1 home after work trigger: platform: state entity_id: device_tracker.sm_a546b to: home for: minutes: 10 condition: condition: and conditions: - condition: state entity_id: input_boolean.notify_person1_work state: 'on' - condition: or conditions: - condition: time after: '15:00:00' weekday: - mon - tue - wed - thu - condition: time after: '12:00:00' weekday: - fri action: - service: homeassistant.turn_off entity_id: automation.person1_home_after_work - id: person1_in_bed alias: person1 in bed initial_state: 'on' trigger: - platform: state entity_id: input_boolean.second_bedroom_occupied to: 'on' for: 00:05:00 - platform: state entity_id: binary_sensor.second_ensuite_door_contact to: 'off' for: 00:05:00 - platform: time at: '22:01:00' - platform: state entity_id: sensor.roku_x00200y5s7lx_active_app from: PlayStation 5 condition: - condition: state entity_id: input_boolean.person1_in_bed state: 'off' - condition: state entity_id: input_boolean.person1_home state: 'on' - condition: time after: '22:00:00' before: 06:00:00 - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'on' for: 00:05:00 - condition: state entity_id: binary_sensor.second_ensuite_door_contact state: 'off' - condition: not conditions: - condition: state entity_id: sensor.roku_x00200y5s7lx_active_app state: PlayStation 5 action: - service: input_boolean.turn_on entity_id: input_boolean.person1_in_bed - service: input_boolean.turn_off entity_id: input_boolean.person1_alarm_sounded - id: person1_location_update initial_state: 'on' alias: person1 location update trigger: - platform: state entity_id: - device_tracker.sm_a546b - input_select.person1_status_dropdown - input_boolean.person1_home - sensor.person1s_time_to_home_duration - sensor.person1s_time_to_home_by_bus_google - sensor.person1s_time_to_home_by_foot_duration - sensor.person1s_time_to_home_waze - sensor.person1_places action: - service: script.turn_on entity_id: script.person1_travel_sensor - id: person1_next_alarm initial_state: 'on' alias: person1 next alarm trigger: - platform: state entity_id: sensor.sm_a546b_next_alarm to: null for: 00:05:00 action: - service: input_datetime.set_datetime entity_id: input_datetime.person1_next_alarm data: timestamp: '{{ states(''sensor.sm_a546b_next_alarm'')|as_timestamp(0) }}' - id: person1_not_at_work alias: person1 not at work initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.university_person1_distance above: 10000 condition: - condition: state entity_id: input_boolean.person1_at_hw state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person1_at_hw - id: person1_on_the_move initial_state: 'on' alias: person1 on the move trigger: - platform: state entity_id: - device_tracker.sm_a546b condition: - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: state entity_id: input_boolean.person1_overseas state: 'off' - condition: or conditions: - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: template value_template: '{{ ''University'' in trigger.to_state.state and trigger.from_state.state == ''not_home'' }}' - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 1800 }}' - condition: state entity_id: input_boolean.person1_at_hw state: 'on' - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: numeric_state entity_id: sensor.home_person1_distance below: 2000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 900 }}' - condition: numeric_state entity_id: sensor.home_person1_distance above: 1999 below: 10000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 1800 }}' - condition: numeric_state entity_id: sensor.home_person1_distance above: 9999 below: 20000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person1_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person1_traveltime'',''last_triggered'')).seconds > 3600 }}' - condition: numeric_state entity_id: sensor.home_person1_distance above: 19999 action: - service: script.turn_on entity_id: script.person1_traveltime - id: person1_phone_alarm alias: person1 phone alarm initial_state: 'on' trigger: - platform: time at: sensor.sm_a546b_next_alarm condition: - condition: state entity_id: input_boolean.person1_home state: 'on' - condition: not conditions: - condition: state entity_id: sensor.sm_a546b_next_alarm state: unavailable action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Wake - id: person1_phone_plugged initial_state: 'on' alias: person1 phone plugged trigger: - platform: event event_type: tasker_webhook event_data: who: person1 condition: - condition: template value_template: '{{ ''Plugged'' in trigger.event.data.what }}' action: - service: input_boolean.turn_off entity_id: input_boolean.person1_phone_charging - delay: 00:00:02 - service: input_boolean.turn_on entity_id: input_boolean.person1_phone_charging - id: person1_phone_unplugged initial_state: 'on' alias: person1 phone unplugged trigger: - platform: event event_type: tasker_webhook event_data: who: person1 condition: - condition: template value_template: '{{ ''Unplugged'' in trigger.event.data.what }}' action: - service: input_boolean.turn_on entity_id: input_boolean.person1_phone_charging - delay: 00:00:02 - service: input_boolean.turn_off entity_id: input_boolean.person1_phone_charging - id: awtrix_person1_status_pixel alias: Awtrix person1 status pixel initial_state: 'on' trigger: - platform: state entity_id: person.person1 to: null - platform: state entity_id: sensor.home_person1_distance - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_boolean.person1_home to: 'on' variables: near_home: 200 status_colour: "{{ \"[0,64,0]\" if is_state('input_boolean.person1_home','on')\ \ else \n ( \"[0,162,128]\" if is_state('person.person1','work') else \n \ \ ( \"[0,128,128]\" if states('sensor.university_person1_distance')|float <\ \ 1500 else \n ( \"[64,41,0]\" if states('sensor.home_person1_distance')|float\ \ < 500 else \n ( \"[255,255,0]\" if ( is_state('person.person1','station\ \ Train Station') or is_state('person.person1','station2') ) else\n \ \ ( \"[64,0,64]\" if not is_state('person.person1','not_home') else \"[64,0,0]\"\ \ )\n )\n )\n )\n ) }}" action: - choose: - conditions: - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: template value_template: '{{ ( states(''sensor.home_person1_distance'')|float < near_home ) }}' sequence: - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"color\": {{ status_colour }},\n fade: 2000\n}" topic: awtrix_6d6f50/indicator3 default: - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"color\": {{ status_colour }}\n}" topic: awtrix_6d6f50/indicator3 - id: person1_tablet_away alias: person1 tablet away initial_state: 'on' trigger: - platform: state entity_id: group.person_person1_tablet to: not_home - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.person1_tablet_home state: 'on' - condition: state entity_id: group.person_person1_tablet state: not_home - condition: template value_template: "{{ ((now() - states.binary_sensor.front_door_contact.last_changed).seconds\ \ < 300)\n or\n ((now() - states.binary_sensor.garage_door_car_contact.last_changed).seconds\ \ < 300)\n}}" action: - service: input_boolean.turn_off entity_id: input_boolean.person1_tablet_home - id: person1_tablet_home initial_state: 'on' alias: person1 tablet home trigger: - platform: state entity_id: - group.person_person1_tablet to: home - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.person1_tablet_home state: 'off' - condition: state entity_id: group.person_person1_tablet state: home action: - service: input_boolean.turn_on entity_id: input_boolean.person1_tablet_home - id: person1_travelling alias: person1 Travelling initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.home_person1_distance above: 50000 for: hours: 3 - platform: time at: '23:00:00' condition: condition: and conditions: - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: numeric_state entity_id: sensor.home_person1_distance above: 20000 action: - service: input_boolean.turn_on entity_id: input_boolean.person1_travelling - id: person1_up alias: person1 Up initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.second_bedroom_occupied - input_boolean.person1_home to: 'off' - platform: state entity_id: binary_sensor.second_bedroom_door_contact to: 'on' for: 00:00:30 - platform: state entity_id: binary_sensor.second_ensuite_door_contact to: 'on' - platform: state entity_id: sensor.roku_x00200y5s7lx_active_app to: PlayStation 5 condition: - condition: state entity_id: input_boolean.person1_in_bed state: 'on' - condition: time after: 05:00:00 before: '21:00:00' - condition: or conditions: - condition: state entity_id: sensor.roku_x00200y5s7lx_active_app state: PlayStation 5 - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.person1_alarm_sounded state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.second_bedroom_door_contact state: 'on' - condition: state entity_id: binary_sensor.second_ensuite_door_contact state: 'on' action: - service: input_boolean.turn_off entity_id: - input_boolean.person1_in_bed - input_boolean.person1_alarm_sounded - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_second_bedroom - id: person1_up_reminder_off alias: person1 up reminder off initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person1_alarm_sounded to: 'off' action: - service: script.turn_off entity_id: script.wake_person1 - id: person1_wifi_status alias: person1 WiFi status initial_state: 'on' trigger: - platform: state entity_id: sensor.sm_a546b_wifi_connection - platform: homeassistant event: start - platform: event event_type: automation_reloaded action: - choose: - conditions: - condition: template value_template: '{{ ''Cogs-n-Gears'' in states(''sensor.sm_a546b_wifi_connection'') }}' sequence: - service: mqtt.publish data: topic: location/person1_wifi payload: home retain: true default: - service: mqtt.publish data: topic: location/person1_wifi payload: not_home retain: true - id: person2_up_early initial_state: 'on' alias: person2 up early trigger: - platform: state entity_id: media_player.person2 to: playing - platform: state entity_id: media_player.master_bedroom to: playing condition: - condition: and conditions: - condition: sun before: sunrise - condition: time after: 02:00:00 - condition: state entity_id: switch.number_sign state: 'off' action: - service: switch.turn_on entity_id: switch.number_sign - id: person2_asleep alias: person2 asleep initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person2_in_bed to: 'on' for: 00:05:00 - platform: state entity_id: sensor.sleepasandroid_person2 from: - sleep_tracking_stopped - unavailable - sleep_tracking_paused not_to: - sleep_tracking_stopped - sleep_tracking_paused - unavailable for: 00:01:00 condition: - condition: state entity_id: - input_boolean.person2_is_awake - input_boolean.person2_home - input_boolean.person2_phone_charging state: 'on' - condition: not conditions: - condition: state entity_id: sensor.sleepasandroid_person2 state: - sleep_tracking_stopped - unavailable action: - service: input_boolean.turn_on entity_id: input_boolean.person2_in_bed - service: input_boolean.turn_off entity_id: input_boolean.person2_is_awake - service: script.turn_on entity_id: script.person2_travel_sensor - id: person2_at_amsterdam_airport alias: person2 at Amsterdam Airport initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Amsterdam Airport action: - service: notify.person3 data: message: person2 has arrived at Amsterdam Airport - id: person2_at_brussels_airport alias: person2 at Brussels Airport initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Brussels Airport action: - service: notify.person3 data: message: person2 has arrived at Brussels Airport - id: person2_at_paris_cdg_airport alias: person2 at Paris CDG Airport initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Paris CDG Airport action: - service: notify.person3 data: message: person2 has arrived at Paris CDG Airport - id: person2_at_gym alias: person2 at gym initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Gym for: minutes: 15 action: - service: homeassistant.turn_on entity_id: automation.person2_returning_home - condition: state entity_id: input_boolean.person2_driving state: 'on' - service: input_boolean.turn_off entity_id: input_boolean.person2_driving - id: person2_at_dulles_airport alias: person2 at Dulles Airport initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Dulles Airport action: - service: notify.person3 data: message: person2 has arrived at Dulles Airport - id: person2_at_lcy alias: person2 at LCY initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: London City Airport - platform: state entity_id: device_tracker.pixel_xl to: LHR T2 action: - service: notify.person3 data: message: person2 has arrived at London City Airport - id: person2_at_lhr alias: person2 at LHR initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: London Heathrow Airport - platform: state entity_id: device_tracker.pixel_xl to: LHR T2 action: - service: notify.person3 data: message: person2 has arrived at London Heathrow Airport - id: person2_at_sin alias: person2 at SIN initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: Singapore Airport action: - service: notify.person3 data: message: person2 has arrived at Singapore Airport - id: person2_at_station alias: person2 at station trigger: - platform: state entity_id: device_tracker.pixel_xl to: home Station condition: - condition: state entity_id: binary_sensor.workday_sensor state: 'on' action: - service: automation.turn_on entity_id: automation.person2_returning_home - id: person2_at_work_airport alias: person2 at work Airport initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: work Airport for: 01:00:00 condition: - condition: state entity_id: automation.person2_at_work_airport_returning state: 'off' action: - service: automation.turn_on entity_id: automation.person2_at_work_airport_returning - id: person2_at_work_airport_returning alias: person2 at work Airport returning trigger: - platform: state entity_id: device_tracker.pixel_xl to: work Airport condition: condition: and conditions: - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: notify.person3 data: message: person2 has landed at work Aiport - service: automation.turn_off data: entity_id: automation.person2_at_work_airport_returning - id: person2_awake alias: person2 awake initial_state: 'on' trigger: - platform: state entity_id: - media_player.master_bedroom - media_player.person2 from: playing to: 'off' id: alarm - platform: state entity_id: - input_boolean.person2_phone_charging - input_boolean.person2_tablet_charging to: 'off' id: unplugged - platform: state entity_id: sensor.sleepasandroid_person2 to: sleep_tracking_stopped id: stopped - platform: event event_type: SleepAsAndroid_person2 event_data: event: alarm_alert_dismiss id: sleep_alarm - platform: event event_type: SleepAsAndroid_person2 event_data: event: alarm_skip_next id: sleep_alarm_skip - platform: state entity_id: sensor.sleepasandroid_person2 to: alarm_rescheduled id: sleep_alarm_rescheduled condition: - condition: state entity_id: input_boolean.person2_is_awake state: 'off' - condition: or conditions: - condition: trigger id: alarm - condition: trigger id: unplugged - condition: and conditions: - condition: state entity_id: input_boolean.person2_pre_alarm state: 'on' - condition: or conditions: - condition: trigger id: stopped - condition: trigger id: sleep_alarm - condition: trigger id: sleep_alarm_skip - condition: trigger id: sleep_alarm_rescheduled action: - service: input_boolean.turn_on entity_id: input_boolean.person2_is_awake - service: input_boolean.turn_off entity_id: - input_boolean.person2_in_bed - input_boolean.person2_pre_alarm - service: script.turn_on entity_id: script.person2_travel_sensor - id: person2_away alias: person2 away initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl - platform: state entity_id: - device_tracker.person2_bt_mobile_2 - device_tracker.person2_bt_front_mobile_2 - device_tracker.person_person2_wifi - device_tracker.google_pixel_8 to: not_home - platform: state entity_id: input_boolean.person2_driving to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.person2_home state: 'on' for: 00:02:00 - condition: or conditions: - alias: Driving condition: state entity_id: input_boolean.person2_driving state: 'on' - alias: Most away condition: and conditions: - condition: template value_template: "{{ \n (expand('group.person_person2')|selectattr('attributes.source_type','eq','router')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person2')|selectattr('attributes.source_type','eq','router')|list|count\ \ <= 0.5)\n and\n (expand('group.person_person2')|selectattr('attributes.source_type','eq','bluetooth')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person2')|selectattr('attributes.source_type','eq','bluetooth')|list|count\ \ <= 0.5)\n}}" - condition: state entity_id: binary_sensor.front_door_contact state: 'off' - condition: template value_template: '{{ (now() - states.binary_sensor.front_door_contact.last_changed < timedelta(minutes=5)) or (now() - states.binary_sensor.garage_door_car_contact.last_changed < timedelta(minutes=5)) }} ' - alias: Some away condition: and conditions: - condition: template value_template: '{{ (expand(''group.person_person2'')|selectattr(''state'',''eq'',''home'')|list|count / expand(''group.person_person2'')|list|count) < 1}}' - condition: template value_template: '{{ distance(''device_tracker.pixel_xl'')|float > 0.3 }}' - alias: All away condition: template value_template: '{{ (expand(''group.person_person2'')|selectattr(''state'',''eq'',''home'')|list|count / expand(''group.person_person2'')|list|count) == 0}}' - alias: Far away condition: template value_template: '{{ distance(''device_tracker.pixel_xl'')|float > 0.6 }}' action: - service: script.turn_on data: entity_id: script.person2_away - id: person2_away_garage_open alias: person2 away Garage open initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person2_home to: 'off' for: 00:02:00 condition: - condition: state entity_id: binary_sensor.garage_door_car_contact state: 'on' action: - service: notify.mobile_app_pixel_xl data: message: TTS data: media_stream: alarm_stream_max tts_text: You left the garage door open, you pillock. priority: high ttl: 0 - service: automation.turn_off entity_id: automation.person2_away_garage_open - id: person2_changing_zones initial_state: 'on' alias: person2 changing zones trigger: - platform: state entity_id: device_tracker.pixel_xl to: not_home for: 00:05:00 - platform: state entity_id: device_tracker.pixel_xl from: not_home condition: - condition: template value_template: '{{ (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 300 }}' action: - service: script.person2_traveltime - id: person2_coming_home alias: person2 coming home trigger: - platform: state entity_id: device_tracker.pixel_xl to: home Station condition: - condition: and conditions: - condition: time after: '10:00:00' - condition: state entity_id: binary_sensor.home_occupied state: 'off' action: - service: notify.person2 data: message: Nobody's home right now - service: homeassistant.turn_off entity_id: automation.person2_coming_home - id: person2_driving initial_state: 'on' alias: person2 driving trigger: - platform: state entity_id: binary_sensor.pixel_xl_android_auto to: 'on' id: auto condition: - condition: state entity_id: input_boolean.person2_driving state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person2_driving - id: person2_high_accuracy alias: person2 high accuracy mode initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.pixel_xl_high_accuracy_mode to: 'on' for: 00:05:00 - platform: state entity_id: input_boolean.person2_home to: 'on' condition: - condition: state entity_id: binary_sensor.pixel_xl_high_accuracy_mode state: 'on' action: - service: notify.mobile_app_pixel_xl data: message: command_high_accuracy_mode data: command: turn_off - id: person2_home initial_state: 'on' alias: person2 home trigger: - platform: state entity_id: - device_tracker.person2_bt_mobile_2 - device_tracker.person2_bt_front_mobile_2 - device_tracker.person_person2_wifi - device_tracker.google_pixel_8 to: home - platform: state entity_id: binary_sensor.front_door_contact to: - 'off' - 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: group.person_person2 state: home - condition: or conditions: - condition: numeric_state entity_id: group.person_person2 above: 1 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person2'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' - condition: and conditions: - condition: template value_template: '{{ (now() - states.binary_sensor.front_door_contact.last_changed) < timedelta(minutes=2) }}' - condition: numeric_state entity_id: group.person_person2 above: 0 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person2'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' action: - service: script.turn_on entity_id: script.person2_home - id: person2_home_disable_garage_open alias: person2 home disable Garage open initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person2_home to: 'on' condition: - condition: state entity_id: input_boolean.person2_home state: 'on' action: - service: automation.turn_off entity_id: automation.person2_away_garage_open - id: person2_home_enable_garage_open alias: person2 home enable Garage open initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person2_home to: 'on' for: 00:15:00 - platform: state entity_id: binary_sensor.garage_door_car_contact to: 'off' for: 00:15:00 condition: - condition: state entity_id: input_boolean.person2_home state: 'on' for: 00:15:00 - condition: state entity_id: binary_sensor.garage_door_car_contact state: 'off' for: 00:15:00 action: - service: automation.turn_on entity_id: automation.person2_away_garage_open - id: person2_in_bed alias: person2 in bed initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.person2_tablet_charging - input_boolean.person2_phone_charging to: 'on' - platform: state entity_id: input_boolean.master_bedroom_occupied to: 'on' - platform: time at: '22:00:01' condition: - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: state entity_id: input_boolean.master_bedroom_occupied state: 'on' - condition: time after: '22:00:00' before: 04:00:00 - condition: state match: any entity_id: - input_boolean.person2_tablet_charging - input_boolean.person2_phone_charging state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.person2_in_bed - condition: state entity_id: input_boolean.person2_driving state: 'on' - service: input_boolean.turn_off entity_id: input_boolean.person2_driving - id: person2_in_the_car initial_state: 'on' alias: person2 in the car trigger: - platform: event event_type: tasker_webhook event_data: who: person2 condition: - condition: template value_template: '{{ ''BT Car'' in trigger.event.data.what }}' - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Location last updated within last 60 seconds? {{ ( as_timestamp(now()) - as_timestamp(states.device_tracker.pixel_xl.last_updated)|float)|float < 60 }} Location last updated {{ ( as_timestamp(now()) - as_timestamp(states.device_tracker.pixel_xl.last_updated)|float)|float }} seconds ago ' - condition: template value_template: '{{ ( as_timestamp(now()) - as_timestamp(states.device_tracker.pixel_xl.last_updated)|float)|float < 60 }}' - service: script.turn_on entity_id: script.person2_traveltime - id: person2_location_update initial_state: 'on' alias: person2 location update mode: single trigger: - platform: state entity_id: - device_tracker.pixel_xl - device_tracker.person_person2_wifi - device_tracker.person2_bt_front_mobile_2 - device_tracker.person2_bt_mobile_2 - input_boolean.office_occupied - input_boolean.person2_home - input_boolean.person2_in_bed - input_boolean.person2_is_awake - input_boolean.person2_overseas - input_boolean.person2_travelling - input_select.person2_status_dropdown - sensor.person2s_time_to_home_distance - sensor.person2s_time_to_home_waze - sensor.person2_places action: - service: script.person2_travel_sensor - id: person2_nearly_home alias: person2 nearly home initial_state: 'on' trigger: - platform: zone entity_id: device_tracker.pixel_xl zone: zone.nearly_home condition: - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: notify.send_message target: entity_id: notify.debug_log data: message: person2 is nearly home - id: person2_next_alarm alias: person2 next alarm trigger: - platform: event event_type: tasker_webhook event_data: what: next_alarm who: person2 action: - service: input_datetime.set_datetime entity_id: input_datetime.person2_next_alarm data: time: "{% if trigger.event.data.when.split(' ')[1] == '%taskertime' %}\n 12:00\n\ {% else %}\n {{ as_timestamp(trigger.event.data.when)|timestamp_custom(\"\ %T\") }}\n{% endif %}" date: "{% if trigger.event.data.when.split(' ')[1] == '%taskertime' %}\n 1970-01-01\n\ {% else %}\n {{ as_timestamp(trigger.event.data.when)|timestamp_custom(\"\ %F\") }}\n{% endif %}" - id: person2_not_driving initial_state: 'on' alias: person2 not driving trigger: - platform: state entity_id: binary_sensor.pixel_xl_android_auto to: 'off' id: auto condition: - condition: state entity_id: input_boolean.person2_driving state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person2_driving - id: person2_not_overseas initial_state: 'on' alias: person2 not overseas trigger: - platform: state entity_id: sensor.pixel_xl_geocoded_location attribute: iso_country_code to: GB condition: - condition: state entity_id: sensor.pixel_xl_geocoded_location attribute: iso_country_code state: GB - condition: state entity_id: input_boolean.person2_overseas state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person2_overseas - id: person2_on_the_move initial_state: 'on' alias: person2 on the move trigger: - platform: state entity_id: device_tracker.pixel_xl condition: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: state entity_id: input_boolean.person2_home state: 'off' - condition: or conditions: - condition: and conditions: - condition: template value_template: '{{ (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 10 below: 20000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 600 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 19999 below: 40000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 900 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 39999 below: 60000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 3600 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 59999 below: 100000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 10800 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 99999 below: 199999 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person2_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person2_traveltime'',''last_triggered'')).seconds > 86400 }}' - condition: numeric_state entity_id: sensor.home_person2_distance above: 200000 action: - service: script.turn_on entity_id: script.person2_traveltime - id: person2_overseas initial_state: 'on' alias: person2 overseas trigger: - platform: state entity_id: sensor.pixel_xl_geocoded_location attribute: iso_country_code from: GB condition: - condition: not conditions: - condition: state entity_id: sensor.pixel_xl_geocoded_location state: unknown - condition: state entity_id: sensor.pixel_xl_geocoded_location attribute: iso_country_code state: GB - condition: state entity_id: input_boolean.person2_overseas state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person2_overseas - id: person2_phone_not_plugged alias: person2 phone not plugged in initial_state: 'on' trigger: - platform: time at: '22:45:00' condition: - condition: state entity_id: sensor.pixel_xl_charger_type state: none - condition: state entity_id: input_boolean.person2_home state: 'on' action: - service: notify.person2 data: message: Don't forget to plug the phone in - id: person2_phone_plugged initial_state: 'on' alias: person2 phone plugged trigger: - platform: event event_type: tasker_webhook event_data: who: person2 - platform: state entity_id: sensor.pixel_xl_charger_type from: none condition: - condition: state entity_id: input_boolean.person2_phone_charging state: 'off' - condition: or conditions: - condition: template value_template: '{{ trigger.platform == ''event'' and ''Plugged'' in trigger.event.data.what }}' - condition: not conditions: - condition: state entity_id: sensor.pixel_xl_charger_type state: none action: - service: input_boolean.turn_on entity_id: input_boolean.person2_phone_charging - id: person2_phone_unplugged initial_state: 'on' alias: person2 phone unplugged trigger: - platform: event event_type: tasker_webhook event_data: who: person2 - platform: state entity_id: sensor.pixel_xl_charger_type to: none condition: - condition: state entity_id: input_boolean.person2_phone_charging state: 'on' - condition: or conditions: - condition: template value_template: '{{ trigger.platform == ''event'' and ''Unplugged'' in trigger.event.data.what }}' - condition: state entity_id: sensor.pixel_xl_charger_type state: none action: - service: input_boolean.turn_off entity_id: input_boolean.person2_phone_charging - id: person2_pre_alarm alias: person2 pre alarm initial_state: 'on' trigger: - platform: event event_type: SleepAsAndroid_person2 event_data: event: smart_period - platform: event event_type: SleepAsAndroid_person2 event_data: event: before_smart_period action: - service: input_boolean.turn_on entity_id: input_boolean.person2_pre_alarm - id: person2_returning alias: person2 Returning initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_xl to: work Airport - platform: state entity_id: device_tracker.pixel_xl to: other Airport - platform: state entity_id: device_tracker.pixel_xl to: station2 - platform: state entity_id: device_tracker.pixel_xl to: other station3 condition: condition: and conditions: - condition: state entity_id: input_boolean.person2_home state: 'off' - condition: state entity_id: input_boolean.person2_travelling state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person2_travelling - id: person2_returning_home alias: person2 returning home initial_state: 'on' trigger: - platform: event event_type: tasker_webhook event_data: who: person2 condition: condition: and conditions: - condition: state entity_id: input_boolean.adults_away state: 'off' - condition: state entity_id: input_boolean.person2_home state: 'off' - condition: template value_template: '{{ ''BT Car'' in trigger.event.data.what }}' - condition: template value_template: '{{ not is_state(''device_tracker.pixel_xl'',''not_home'') }}' action: - service: automation.turn_off data: entity_id: automation.person2_returning_home - service: script.person2_traveltime - delay: 00:00:30 - service: notify.person3 data: message: person2 should be home from {{ states('device_tracker.pixel_xl') }} in around {%- set travel_time = states('sensor.person2s_time_to_home_duration_') %} {{ travel_time[0] }} to {{ travel_time[0] | int + 25 }}{{ state_attr('sensor.person2s_time_to_home_duration_','unit_of_measurement') }} - id: person2_sleep_status alias: person2 sleep status initial_state: 'on' trigger: - platform: webhook webhook_id: 01234567-dead-beef-cafe-0123456789abc allowed_methods: - POST local_only: false action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Sleep as Android: {{ trigger.json.event }} / {{ trigger.json }}' - id: person2_tablet_plugged initial_state: 'on' alias: person2 tablet plugged trigger: - platform: state entity_id: sensor.person2_p11_charger_type from: none condition: - condition: state entity_id: sensor.person2_p11_charger_type state: none action: - service: input_boolean.turn_on entity_id: input_boolean.person2_tablet_charging - id: person2_tablet_unplugged initial_state: 'on' alias: person2 tablet unplugged trigger: - platform: state entity_id: sensor.person2_p11_charger_type to: none condition: - condition: state entity_id: sensor.person2_p11_charger_type state: none action: - service: input_boolean.turn_off entity_id: input_boolean.person2_tablet_charging - id: person2_tablet_wifi_status alias: person2 tablet WiFi status initial_state: 'on' trigger: - platform: state entity_id: sensor.person2_p11_wifi_connection - platform: homeassistant event: start - platform: event event_type: automation_reloaded action: - choose: - conditions: - condition: template value_template: '{{ ''Cogs-n-Gears'' in states(''sensor.person2_p11_wifi_connection'') }}' sequence: - service: mqtt.publish data: topic: location/person2_tablet_wifi payload: home retain: true default: - service: mqtt.publish data: topic: location/person2_tablet_wifi payload: not_home retain: true - id: person2_up alias: person2 up initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person2_is_awake to: 'on' condition: - condition: state entity_id: - input_boolean.person2_home - input_boolean.master_bedroom_occupied state: 'on' - condition: time after: 03:00:00 before: '21:00:00' action: - service: input_select.select_option data: entity_id: input_select.master_bedroom option: Wake - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_master_bedroom - id: person2_wifi_status alias: person2 WiFi status initial_state: 'on' trigger: - platform: state entity_id: sensor.pixel_xl_wifi_connection - platform: homeassistant event: start - platform: event event_type: automation_reloaded action: - choose: - conditions: - condition: template value_template: '{{ ''Cogs-n-Gears'' in states(''sensor.pixel_xl_wifi_connection'') }}' sequence: - service: mqtt.publish data: topic: location/person2_wifi payload: home retain: true default: - service: mqtt.publish data: topic: location/person2_wifi payload: not_home retain: true - id: person3_asleep alias: person3 asleep initial_state: 'on' trigger: - platform: state entity_id: input_boolean.person3_in_bed to: 'on' for: 00:05:00 - platform: time at: '23:00:00' - platform: time at: 00:00:00 - platform: time at: 01:00:00 condition: - condition: state entity_id: - input_boolean.person3_in_bed - input_boolean.person3_is_awake - input_boolean.person3_home state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.person3_is_awake - service: script.turn_on entity_id: script.person3_travel_sensor - id: person3_awake initial_state: 'on' alias: person3 awake trigger: - platform: state entity_id: - input_boolean.person3_in_bed - input_boolean.person3_home to: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person3_is_awake - service: input_boolean.turn_off entity_id: input_boolean.person3_in_bed - service: script.turn_on entity_id: script.person3_travel_sensor - id: person3_away alias: person3 away initial_state: 'on' trigger: - platform: state entity_id: device_tracker.pixel_6a - platform: state entity_id: - device_tracker.person3_bt_mobile_2 - device_tracker.person3_bt_front_mobile_2 - device_tracker.person_person3_wifi - device_tracker.nmap_tracker_person3 to: not_home - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.person3_home state: 'on' for: 00:02:00 - condition: or conditions: - condition: and conditions: - condition: template value_template: "{{ \n (expand('group.person_person3')|selectattr('attributes.source_type','eq','router')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person3')|selectattr('attributes.source_type','eq','router')|list|count\ \ <= 0.5)\n and\n (expand('group.person_person3')|selectattr('attributes.source_type','eq','bluetooth')|selectattr('state','eq','home')|list|count\ \ / expand('group.person_person3')|selectattr('attributes.source_type','eq','bluetooth')|list|count\ \ <= 0.5)\n}}" - condition: template value_template: '{{ (now() - states.binary_sensor.front_door_contact.last_changed < timedelta(minutes=5)) or (now() - states.binary_sensor.garage_door_car_contact.last_changed < timedelta(minutes=5)) }} ' - condition: and conditions: - condition: template value_template: '{{ (expand(''group.person_person3'')|selectattr(''state'',''eq'',''home'')|list|count / expand(''group.person_person3'')|list|count) < 1}}' - condition: template value_template: '{{ distance(''device_tracker.pixel_6a'')|float > 0.3 }}' - condition: template value_template: '{{ (expand(''group.person_person3'')|selectattr(''state'',''eq'',''home'')|list|count / expand(''group.person_person3'')|list|count) == 0}}' - condition: template value_template: '{{ distance(''device_tracker.pixel_6a'')|float > 0.6 }}' action: - service: script.turn_on data: entity_id: script.person3_away - id: person3_changing_zones initial_state: 'on' alias: person3 changing zones trigger: - platform: state entity_id: device_tracker.pixel_6a to: not_home for: 00:05:00 - platform: state entity_id: device_tracker.pixel_6a from: not_home condition: - condition: template value_template: '{{ (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 300 }}' action: - service: script.turn_on entity_id: script.person3_traveltime - id: person3_coming_home alias: person3 coming home initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.home_person3_distance below: 550 - platform: numeric_state entity_id: sensor.person3s_time_to_home_by_foot_duration below: 12 condition: - condition: state entity_id: input_boolean.person3_home state: 'off' for: 00:02:00 - condition: state entity_id: sensor.home_person3_distance attribute: dir_of_travel state: towards - condition: state entity_id: input_boolean.person2_home state: 'on' for: 00:05:00 - condition: numeric_state entity_id: sensor.home_person3_distance below: 550 action: - if: - alias: Travel time above 11 condition: numeric_state entity_id: sensor.person3s_time_to_home_by_foot_duration above: 11 then: - alias: Update travel time continue_on_error: true service: script.person3_traveltime - service: notify.person2 data: message: person3's nearly home, and will be home in {{ states('sensor.person3s_time_to_home_by_foot_duration') }} {{ state_attr('sensor.person3s_time_to_home_by_foot_duration','unit_of_measurement') }} - delay: 00:05:00 - id: person3_home initial_state: 'on' alias: person3 home trigger: - platform: state entity_id: - device_tracker.person3_bt_mobile_2 - device_tracker.person3_bt_front_mobile_2 - device_tracker.person_person3_wifi to: home - platform: state entity_id: binary_sensor.front_door_contact to: - 'off' - 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: group.person_person3 state: home - condition: or conditions: - condition: numeric_state entity_id: group.person_person3 above: 1 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person3'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' - condition: and conditions: - condition: template value_template: '{{ ((now() - states.binary_sensor.front_door_contact.last_changed).seconds < 120 ) }}' - condition: numeric_state entity_id: group.person_person3 above: 0 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person3'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' action: - service: script.turn_on entity_id: script.person3_home - id: person3_in_bed initial_state: 'on' alias: person3 in bed trigger: - platform: state entity_id: input_boolean.person3_phone_charging to: 'on' - platform: state entity_id: binary_sensor.pixel_6a_device_locked to: 'on' for: 00:10:00 - platform: state entity_id: binary_sensor.master_bedroom_door_contact to: 'off' - platform: state entity_id: input_boolean.living_room_occupied to: 'off' - platform: time at: '22:30:00' condition: - condition: state entity_id: - input_boolean.person3_is_awake - input_boolean.person3_home state: 'on' - condition: or conditions: - condition: and conditions: - condition: time after: '22:00:00' before: 04:00:00 - condition: or conditions: - condition: state entity_id: input_boolean.person3_phone_charging state: 'on' - condition: state entity_id: binary_sensor.pixel_6a_device_locked state: 'on' for: 00:10:00 - condition: and conditions: - condition: time after: '22:29:00' before: 04:00:00 - condition: state entity_id: input_boolean.living_room_occupied state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person3_in_bed - id: person3_location_update initial_state: 'on' alias: person3 location update mode: single trigger: - platform: state entity_id: - device_tracker.pixel_6a - input_select.person3_status_dropdown - input_boolean.person3_home - sensor.person3s_time_to_home_duration - sensor.person3s_time_to_home_by_bus_duration - sensor.person3s_time_to_home_by_google - sensor.person3s_time_to_home_by_foot_duration - sensor.person3_places action: - service: script.turn_on entity_id: script.person3_travel_sensor - id: person3_next_alarm alias: person3 next alarm trigger: - platform: state entity_id: sensor.pixel_6a_next_alarm to: null action: - condition: template value_template: '{{ state_attr(''sensor.pixel_6a_next_alarm'',''Time in Milliseconds'') is not none }}' - service: input_datetime.set_datetime entity_id: input_datetime.person3_next_alarm data: timestamp: '{{ state_attr(''sensor.pixel_6a_next_alarm'',''Time in Milliseconds'')/1000 }}' - id: person3_on_the_move initial_state: 'on' alias: person3 on the move trigger: - platform: state entity_id: device_tracker.pixel_6a condition: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: or conditions: - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 10 below: 2000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 600 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 1999 below: 4000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 1200 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 3999 below: 10000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 3600 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 9999 below: 100000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 10800 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 99999 below: 199999 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person3_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person3_traveltime'',''last_triggered'')).seconds > 86400 }}' - condition: numeric_state entity_id: sensor.home_person3_distance above: 200000 action: - service: script.turn_on entity_id: script.person3_traveltime - id: person3_phone_plugged initial_state: 'on' alias: person3 phone plugged trigger: - platform: event event_type: tasker_webhook event_data: who: person3 - platform: state entity_id: sensor.pixel_6a_charger_type from: none condition: - condition: state entity_id: input_boolean.person3_phone_charging state: 'off' - condition: or conditions: - condition: template value_template: '{{ trigger.platform == ''event'' and ''Plugged'' in trigger.event.data.what }}' - condition: not conditions: - condition: state entity_id: sensor.pixel_6a_charger_type state: none action: - service: input_boolean.turn_on entity_id: input_boolean.person3_phone_charging - id: person3_phone_unplugged initial_state: 'on' alias: person3 phone unplugged trigger: - platform: event event_type: tasker_webhook event_data: who: person3 - platform: state entity_id: sensor.pixel_6a_charger_type to: none condition: - condition: state entity_id: input_boolean.person3_phone_charging state: 'on' - condition: or conditions: - condition: template value_template: '{{ trigger.platform == ''event'' and ''Unplugged'' in trigger.event.data.what }}' - condition: state entity_id: sensor.pixel_6a_charger_type state: none action: - service: input_boolean.turn_off entity_id: input_boolean.person3_phone_charging - id: awtrix_person3_status_pixel alias: Awtrix person3 status pixel initial_state: 'on' mode: queued trigger: - platform: state entity_id: person.person3 to: null - platform: state entity_id: sensor.home_person3_distance - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_boolean.person3_home variables: near_home: 200 status_colour: "{{ \"[0,64,0]\" if is_state('input_boolean.person3_home','on')\ \ else ( \"[255,165,0]\" if states('sensor.home_person3_distance')|float < near_home\ \ else\n ( \"[64,0,64]\" if not is_state('person.person3','not_home') else\ \ \"[64,0,0]\") ) }}" action: - choose: - conditions: - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: template value_template: '{{ states(''sensor.home_person3_distance'')|float < near_home }}' sequence: - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"color\": {{ status_colour }},\n fade: 2000\n}" topic: awtrix_6d6f50/indicator1 default: - service: mqtt.publish data: qos: 0 retain: false payload: "{\n \"color\": {{ status_colour }}\n}" topic: awtrix_6d6f50/indicator1 - id: person3_travelling alias: person3 Travelling initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.home_person3_distance above: 100000 for: hours: 3 - platform: homeassistant event: start - platform: time at: '21:00:00' condition: condition: and conditions: - condition: state entity_id: input_boolean.person3_home state: 'off' - condition: numeric_state entity_id: sensor.home_person3_distance above: 100000 action: - service: input_boolean.turn_on entity_id: input_boolean.person3_travelling - id: person3_up initial_state: 'on' alias: person3 up trigger: - platform: state entity_id: - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.vestibule_multi_occupancy to: 'on' - platform: state entity_id: - input_boolean.person3_phone_charging - input_boolean.person3_home to: 'off' condition: - condition: state entity_id: input_boolean.person3_in_bed state: 'on' - condition: state entity_id: binary_sensor.master_bedroom_door_contact state: 'on' - condition: state entity_id: input_boolean.person3_phone_charging state: 'off' - condition: time after: 03:00:00 before: '21:00:00' action: - service: input_boolean.turn_off entity_id: input_boolean.person3_in_bed - id: person3_wifi_status alias: person3 WiFi status trigger: - platform: state entity_id: sensor.pixel_6a_wifi_connection - platform: homeassistant event: start - platform: event event_type: automation_reloaded action: - choose: - conditions: - condition: template value_template: '{{ ''Cogs-n-Gears'' in states(''sensor.pixel_6a_wifi_connection'') }}' sequence: - service: mqtt.publish data: topic: location/person3_wifi payload: home retain: true default: - service: mqtt.publish data: topic: location/person3_wifi payload: not_home retain: true - id: person4_away alias: Elizabeth away initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.home_2_dsb_0230_distance above: 2000 - platform: state entity_id: - device_tracker.00_1d_29_f0_4d_da - device_tracker.person4_bt_front_mobile_2 - device_tracker.person4_bt_mobile_2 to: not_home - platform: homeassistant event: start condition: - condition: numeric_state entity_id: group.person_person4 below: 2 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person4'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' - condition: or conditions: - condition: template value_template: "{{ ((now() - states.binary_sensor.front_door_contact.last_changed).seconds\ \ < 300)\n or\n ((now() - states.binary_sensor.garage_door_car_contact.last_changed).seconds\ \ < 300)\n or\n ((now() - states.binary_sensor.vestibule_multi_occupancy.last_changed).seconds\ \ < 300)\n}}" - condition: and conditions: - condition: state entity_id: group.person_person4 state: not_home - condition: numeric_state entity_id: sensor.home_2_dsb_0230_distance above: 2 action: - service: script.turn_on entity_id: script.person4_away - id: person4_changing_zones initial_state: 'on' alias: Elizabeth changing zones trigger: - platform: state entity_id: device_tracker.dsb_0230 to: not_home for: 00:05:00 - platform: state entity_id: device_tracker.dsb_0230 from: not_home condition: - condition: template value_template: '{{ (now() - state_attr(''script.person4_traveltime'',''last_triggered'')).seconds > 300 }}' action: - service: script.turn_on entity_id: script.person4_traveltime - id: person4_home initial_state: 'on' alias: Elizabeth home trigger: - platform: state entity_id: - device_tracker.00_1d_29_f0_4d_da - device_tracker.person4_bt_front_mobile_2 - device_tracker.person4_bt_mobile_2 to: home condition: - condition: numeric_state entity_id: group.person_person4 above: 0 value_template: '{{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.person_person4'', ''entity_id''))|list)|groupby(''state''))[''home'']|count }}' action: - service: script.turn_on entity_id: script.person4_home - id: person4_location_update initial_state: 'on' alias: Elizabeth location update trigger: - platform: state entity_id: - device_tracker.dsb_0230 - input_select.person4_status_dropdown - input_boolean.person4_home - sensor.person4s_time_to_home_distance - sensor.person4s_time_to_home_waze - sensor.person4s_time_to_person4_o action: - service: script.turn_on entity_id: script.person4_travel_sensor - id: person4_on_the_move initial_state: 'on' alias: Elizabeth on the move trigger: - platform: state entity_id: device_tracker.dsb_0230 condition: - condition: template value_template: '{{ state_attr(''script.person4_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person4_traveltime'',''last_triggered'')).seconds > 300 }}' - condition: state entity_id: device_tracker.dsb_0230 state: not_home - condition: or conditions: - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person4_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person4_traveltime'',''last_triggered'')).seconds > 600 }}' - condition: numeric_state entity_id: sensor.home_2_dsb_0230_distance above: 10 below: 20000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person4_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person4_traveltime'',''last_triggered'')).seconds > 900 }}' - condition: numeric_state entity_id: sensor.home_2_dsb_0230_distance above: 19999 below: 40000 - condition: and conditions: - condition: template value_template: '{{ state_attr(''script.person4_traveltime'',''last_triggered'') is none or (now() - state_attr(''script.person4_traveltime'',''last_triggered'')).seconds > 3600 }}' - condition: numeric_state entity_id: sensor.home_2_dsb_0230_distance above: 39999 action: - service: script.turn_on entity_id: script.person4_traveltime - id: play_music_in_the_office initial_state: 'on' alias: Play music in the office trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' id: occupied - platform: state entity_id: input_boolean.office_paused to: 'off' id: unpaused condition: - condition: state entity_id: media_player.office state: - paused - idle - 'off' - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: time after: 06:30:00 before: 09:00:00 - condition: trigger id: occupied - condition: trigger id: unpaused action: - service: media_player.media_play data: entity_id: media_player.office - id: plex_hook initial_state: 'on' alias: Plex hook trigger: - platform: webhook webhook_id: secret plex_token allowed_methods: - POST local_only: false action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Plex: {{ trigger.data }} ' - id: power_cycle_loki alias: Power cycle loki initial_state: 'on' triggers: - trigger: state entity_id: device_tracker.rpi_loki to: not_home for: 00:10:00 conditions: - condition: state entity_id: switch.cloudfree_usb_loki state: 'on' actions: - action: switch.turn_off target: entity_id: switch.cloudfree_usb_loki - delay: 00:00:05 - action: switch.turn_on target: entity_id: switch.cloudfree_usb_loki - action: notify.discord_webhook data: message: Loki was down for 10 minutes so we power cycled it - id: power_cycle_tempus alias: Power cycle tempus initial_state: 'on' triggers: - trigger: state entity_id: device_tracker.rpi_tempus to: not_home for: 00:10:00 conditions: - condition: state entity_id: switch.cloudfree_usb_switch_tempus state: 'on' actions: - action: switch.turn_off target: entity_id: switch.cloudfree_usb_switch_tempus - delay: 00:00:05 - action: switch.turn_on target: entity_id: switch.cloudfree_usb_switch_tempus - action: notify.discord_webhook data: message: Tempus was down for 10 minutes so we power cycled it - id: printer_low initial_state: 'on' alias: Printer low trigger: - platform: numeric_state entity_id: sensor.printer below: 100 - platform: numeric_state entity_id: sensor.printer below: 20 action: - service: notify.person2 data: message: The printer is running low on consumables, time to buy something. - id: printer_problems alias: The printer has problems initial_state: 'on' trigger: - platform: homeassistant event: start - platform: event event_type: automation_reloaded - platform: state entity_id: sensor.samsung_m283x_series_active_alerts to: null - platform: state entity_id: binary_sensor.samsung_m283x_series_health to: 'on' condition: - condition: or conditions: - condition: numeric_state entity_id: sensor.samsung_m283x_series_active_alerts above: 0 - condition: state entity_id: binary_sensor.samsung_m283x_series_health state: 'on' action: - service: notify.discord_webhook data: message: "{% if is_state('binary_sensor.samsung_m283x_series_health','on') %}\n\ \ :rotating_light: :printer: The printer is unhealthy, there are {{ states('sensor.samsung_m283x_series_active_alerts')\ \ }} active alerts\n{% else %}\n :rotating_light: :printer: There is a problem\ \ with the printer, there are {{ states('sensor.samsung_m283x_series_active_alerts')\ \ }} active alerts\n{% endif %}" - id: probably_leaving initial_state: 'off' alias: Probably leaving trigger: - platform: state entity_id: binary_sensor.front_door_contact to: 'on' - platform: state entity_id: binary_sensor.vestibule_multi_occupancy to: 'on' condition: - condition: or conditions: - condition: state entity_id: group.my_other_exterior_doors state: 'on' - condition: state entity_id: group.my_downstairs_windows state: 'on' - condition: state entity_id: group.my_upstairs_windows state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.living_room_occupied state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.living_room_occupied.last_updated)) | int < 300 }}' - condition: and conditions: - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.family_room_occupied.last_updated)) | int < 300 }}' - condition: state entity_id: binary_sensor.vestibule_multi_occupancy state: 'on' - condition: state entity_id: binary_sensor.front_door_contact state: 'on' - condition: state entity_id: input_boolean.office_occupied state: 'off' action: - service: notify.person2 data: message: 'The following are open: {{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.my_downstairs_windows'', ''entity_id'') + state_attr(''group.my_upstairs_windows'', ''entity_id'') + state_attr(''group.my_other_exterior_doors'', ''entity_id''))|list)|groupby(''state''))[''on'']|map(attribute=''name'')|list|join('', '') }}' - service: notify.person3 data: message: 'The following are open: {{ dict((states|selectattr(''entity_id'', ''in'', state_attr(''group.my_downstairs_windows'', ''entity_id'') + state_attr(''group.my_upstairs_windows'', ''entity_id'') + state_attr(''group.my_other_exterior_doors'', ''entity_id''))|list)|groupby(''state''))[''on'']|map(attribute=''name'')|list|join('', '') }}' - id: rain_alert alias: Rain alert description: Warn if it's likely to rain when we're walking the dog initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.vestibule_multi_occupancy to: 'on' variables: rain_probability: '{{ state_attr(''weather.tomorrow_io_home_nowcast'',''forecast'')|selectattr(''precipitation_probability'')|map(attribute=''precipitation_probability'')|max()|default(0)|int }}' rain_total: '{{ state_attr(''weather.tomorrow_io_home_nowcast'',''forecast'')|selectattr(''precipitation'')|sum(attribute=''precipitation'')|default(0)|round(1)|int }}' probability_text: "{% if rain_probability < 25 %}\n may\n{% elif rain_probability\ \ < 50 %}\n likely to\n{% elif rain_probability < 75 %}\n is probably going\ \ to\n{% else %}\n is going to\n{% endif %}" total_text: "{% if rain_total < 1 %}\n a little damp\n{% elif rain_total < 3\ \ %}\n a little wet\n{% elif rain_total < 5 %}\n slightly wet\n{% elif rain_total\ \ < 8 %}\n wet\n{% elif rain_total < 12 %}\n very wet\n{% else %}\n torrential\n\ {% endif %}" condition: - condition: state entity_id: input_boolean.person2_home state: 'on' - condition: time after: '18:55:00' before: '20:00:00' - condition: template value_template: '{{ state_attr(''automation.rain_alert'',''last_triggered'') < today_at(''18:55'') }}' action: - if: - condition: template value_template: '{{ rain_probability == 0 and rain_total == 0 }}' then: - service: notify.person2 data: message: It'll be dry while you're out, and feel like {{ states('sensor.tomorrow_io_home_feels_like')|round(0) -}}{{ state_attr('sensor.tomorrow_io_home_feels_like','unit_of_measurement') }} else: - service: notify.person2 data: message: 'It {{ probability_text }} ({{ rain_probability}}) be {{ total_text}} ({{ rain_total}}) while you''re out, and feel like {{ states(''sensor.tomorrow_io_home_feels_like'')|round(0) -}}{{ state_attr(''sensor.tomorrow_io_home_feels_like'',''unit_of_measurement'') }} ' - id: reset_family_room_sonos alias: Reset radio initial_state: 'on' trigger: - platform: time at: 09:00:00 condition: - condition: state entity_id: media_player.family_room state: paused - condition: state entity_id: media_player.roku_x00200y5s7lx state: - 'off' - standby - unavailable - condition: time weekday: - sat action: - service: media_player.volume_set data: volume_level: 0 target: entity_id: media_player.family_room - service: media_player.play_media data: media_content_id: x-rincon-mp3radio://http://s7.myradiostream.com:10126 media_content_type: music target: entity_id: media_player.family_room - delay: 00:00:10 - service: media_player.media_pause data: entity_id: media_player.office - service: media_player.volume_set data: volume_level: 0.08 target: entity_id: media_player.family_room - id: return_train_status alias: Return train status trigger: - platform: time at: input_datetime.return_train_time condition: - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: numeric_state entity_id: sensor.work_person2_distance below: 5 action: - service: notify.person2 data: message: '{{ states(''input_text.train_message'') }}' - id: returned_gate_open alias: Returned gate open initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'on' - platform: state entity_id: input_boolean.adults_away to: 'off' condition: - condition: state entity_id: binary_sensor.garden_gate_contact state: 'on' action: - delay: 00:02:00 - condition: state entity_id: binary_sensor.garden_gate_contact state: 'on' - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The garden gate was opened while you were away, and is still open media_content_type: music announce: true extra: volume: 25 target: entity_id: - media_player.family_room_sonos_cloud - media_player.living_room_sonos_cloud - id: returned_home initial_state: 'on' alias: Returned home trigger: - platform: state entity_id: binary_sensor.front_door_contact to: 'on' - platform: state entity_id: - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person2_status_dropdown to: Pre Arrival - platform: state entity_id: - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person2_status_dropdown to: Just Arrived condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 15 - condition: and conditions: - condition: state entity_id: light.downstairs_hall state: 'off' - condition: state entity_id: binary_sensor.front_door_contact state: 'on' - condition: state entity_id: - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person2_status_dropdown state: - Pre Arrival - Just Arrived match: any action: - service: input_boolean.turn_on data: entity_id: input_boolean.hall_occupied - condition: state entity_id: input_select.season state: Christmas - service: input_select.select_option data: entity_id: input_select.vestibule option: 'On' - id: scanner_stuck mode: parallel alias: BT scanner stuck initial_state: 'on' trigger: - platform: state entity_id: - script.scan_bt - script.scan_bt_arrive - script.scan_bt_depart to: 'on' for: 00:15:00 action: - service: script.turn_off data: entity_id: '{{ trigger.entity_id }}' - id: season_is_autumn alias: Season is autumn initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 03:00:00 condition: - condition: template value_template: '{{ 12 > now().month > 8 }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Autumn action: - service: input_select.select_option data: entity_id: input_select.season option: Autumn - id: season_is_christmas alias: Season is Christmas initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 02:00:00 condition: - condition: template value_template: '{{ ( now().month == 1 and now().day < 7 ) or ( now().month == 12 and now().day >= 12 ) }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Christmas action: - service: input_select.select_option data: entity_id: input_select.season option: Christmas - id: season_is_easter alias: Season is Easter initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 02:00:00 - platform: state entity_id: calendar.holidays_in_the_united_kingdom to: 'on' condition: - condition: template value_template: '{{ states.calendar.holidays_in_the_united_kingdom.attributes.message in "Good Friday" "Easter Sunday" "Easter Monday" }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Easter action: - service: input_select.select_option data: entity_id: input_select.season option: Easter - id: season_is_spring alias: Season is spring initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 03:00:00 condition: - condition: and conditions: - condition: template value_template: '{{ 6 > now().month > 2 }}' - condition: template value_template: '{{ states.calendar.holidays_in_the_united_kingdom.attributes.message not in "Good Friday" "Easter Sunday" "Easter Monday" }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Spring action: - service: input_select.select_option data: entity_id: input_select.season option: Spring - id: season_is_summer alias: Season is summer initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 03:00:00 condition: - condition: template value_template: '{{ 9 > now().month > 5 }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Summer action: - service: input_select.select_option data: entity_id: input_select.season option: Summer - id: season_is_winter alias: Season is winter initial_state: 'on' trigger: - platform: homeassistant event: start - platform: time at: 03:00:00 condition: - condition: not conditions: - condition: state entity_id: input_select.season state: Winter - condition: template value_template: '{{ ( now().month == 12 ) or ( now().month < 3 ) }}' - condition: or conditions: - condition: template value_template: '{{ now().month == 1 and now().day >= 7 }}' - condition: and conditions: - condition: template value_template: '{{ now().month == 12 and now().day < 12 }}' - condition: not conditions: - condition: state entity_id: input_select.season state: Christmas action: - service: input_select.select_option data: entity_id: input_select.season option: Winter - id: second_bedroom_button alias: Second bedroom button initial_state: 'on' triggers: - trigger: state entity_id: event.second_bedroom_button_action to: null id: event variables: action: '{{ trigger.id if trigger.id != ''event'' else trigger.to_state.attributes.event_type }}' actions: - choose: - conditions: - condition: template value_template: '{{ action == ''hold'' }}' sequence: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Bedtime - conditions: - condition: template value_template: '{{ action == ''single'' }}' sequence: - if: - condition: state entity_id: light.second_bedroom state: 'off' then: - service: light.turn_on data: entity_id: light.second_bedroom - choose: - conditions: - condition: time after: 00:00 before: 05:00 sequence: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Bedtime - conditions: - condition: or conditions: - condition: time after: '23:00' before: 00:00 - condition: time after: 05:00 before: 06:00 sequence: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Dim default: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'On' else: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'Off' default: - service: notify.send_message target: entity_id: notify.debug_log data: message: Second bedroom button action {{ action }}. Trigger was {{ trigger.id }} new state of {{ trigger.to_state.state }}\n{{ trigger.to_state.attributes }} - id: second_bedroom_lights_to_bedtime initial_state: 'on' alias: Second bedroom lights to bedtime trigger: - platform: state entity_id: input_select.second_bedroom to: Bedtime - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: Bedtime - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: light.turn_on data: entity_id: light.second_bedroom effect: Solid - id: second_bedroom_lights_to_dim initial_state: 'on' alias: Second bedroom lights to dim trigger: - platform: state entity_id: input_select.second_bedroom to: Dim - platform: state entity_id: input_select.house to: Dim condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: Dim - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: Dim action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: select.select_option target: entity_id: select.wled_neon_k_preset data: option: Red - service: select.select_option target: entity_id: select.wled_cob_k_preset data: option: Red - service: light.turn_on data: entity_id: light.second_bedroom - id: second_bedroom_lights_to_motion initial_state: 'on' alias: Second bedroom lights to motion trigger: - platform: state entity_id: input_select.second_bedroom to: Motion - platform: state entity_id: input_select.house to: Motion condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: Motion - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: Motion action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 - service: light.turn_on data: entity_id: light.second_bedroom effect: Solid - id: second_bedroom_lights_to_off initial_state: 'on' alias: Second bedroom lights to off trigger: - platform: state entity_id: input_select.second_bedroom to: 'Off' - platform: state entity_id: input_select.house to: 'Off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: 'Off' action: - service: light.turn_off data: entity_id: light.second_bedroom - delay: 00:00:05 - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 mode: restart - id: second_bedroom_lights_to_on initial_state: 'on' alias: Second bedroom lights to on trigger: - platform: state entity_id: input_select.second_bedroom to: 'On' - platform: state entity_id: input_select.house to: 'On' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: 'On' - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: 'On' action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 - service: light.turn_on data: entity_id: light.second_bedroom effect: Solid - id: second_bedroom_lights_to_wake initial_state: 'on' alias: Second bedroom lights to wake trigger: - platform: state entity_id: input_select.second_bedroom to: Wake - platform: state entity_id: input_select.house to: Wake condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.second_bedroom state: Wake - condition: and conditions: - condition: state entity_id: input_select.second_bedroom state: Auto - condition: state entity_id: input_select.house state: Wake action: - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_second_bedroom - switch.adaptive_lighting_wled_cob_person1 - switch.adaptive_lighting_sleep_mode_second_bedroom - switch.adaptive_lighting_sleep_mode_wled_cob_person1 - service: select.select_option target: entity_id: select.wled_cob_k_preset data: option: White - service: select.select_option target: entity_id: select.wled_neon_k_preset data: option: White - service: light.turn_on data: entity_id: light.second_bedroom - id: second_bedroom_mode_bedtime alias: Second bedroom mode bedtime trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.second_bedroom'',''Bedtime'') }}' - condition: state entity_id: - input_boolean.bedtime - input_boolean.person1_home state: 'on' - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Bedtime - id: second_bedroom_mode_motion initial_state: 'on' alias: Second bedroom mode motion trigger: - platform: state entity_id: - binary_sensor.second_bedroom_door_contact - binary_sensor.second_bedroom_motion_occupancy to: 'on' condition: - condition: template value_template: '{{ states(''input_select.second_bedroom'') not in (''Dim'',''Wake'',''On'') }}' - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.second_bedroom_door_contact state: 'on' - condition: numeric_state entity_id: sensor.second_bedroom_light_sensor_illuminance_lux below: 14 action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Motion - id: second_bedroom_mode_no_motion initial_state: 'on' alias: Second bedroom mode no motion trigger: - platform: state entity_id: binary_sensor.second_bedroom_door_contact to: null for: 00:03:00 - platform: state entity_id: binary_sensor.second_bedroom_motion_occupancy to: 'off' for: 00:03:00 condition: - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'off' - condition: state entity_id: input_select.second_bedroom state: Motion - condition: state entity_id: binary_sensor.second_bedroom_motion_occupancy state: 'off' for: 00:03:00 action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'Off' - id: second_bedroom_mode_off initial_state: 'on' alias: Second bedroom mode off trigger: - platform: state entity_id: - input_boolean.person1_in_bed - input_boolean.second_bedroom_occupied to: 'off' for: 00:05:00 - platform: state entity_id: - input_boolean.person1_home - input_boolean.second_bedroom_occupied to: 'off' - platform: numeric_state entity_id: sensor.sun_solar_elevation above: 5 - platform: state entity_id: input_select.second_bedroom to: - Bedtime - Wake for: 00:30:00 - platform: numeric_state entity_id: sensor.second_bedroom_light_sensor_illuminance_lux above: 32 id: lux - platform: numeric_state entity_id: sensor.second_bedroom_light_sensor_illuminance_lux above: 42 condition: - condition: template value_template: '{{ not is_state(''input_select.second_bedroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.person1_home state: 'off' - condition: state entity_id: input_select.second_bedroom state: - Bedtime - Wake for: 00:30:00 - condition: state entity_id: - input_boolean.second_bedroom_occupied - input_boolean.person1_in_bed state: 'off' for: 00:05:00 - condition: and conditions: - condition: trigger id: lux - condition: template value_template: '{{ states.input_select.second_bedroom.last_changed < now() - timedelta(minutes=1) }}' action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'Off' - id: second_bedroom_mode_on alias: Second bedroom mode on trigger: - platform: state entity_id: input_boolean.second_bedroom_occupied to: 'on' condition: - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'on' - condition: numeric_state entity_id: sensor.second_bedroom_light_sensor_illuminance_lux below: 14 - condition: state entity_id: input_boolean.person1_home state: 'on' action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: 'On' - id: second_bedroom_mode_wake initial_state: 'on' alias: Second bedroom mode wake trigger: - platform: state entity_id: input_boolean.person1_alarm_sounded to: 'on' condition: - condition: state entity_id: input_boolean.person1_home state: 'on' - condition: time before: '10:00:00' action: - service: input_select.select_option data: entity_id: input_select.second_bedroom option: Wake - id: second_bedroom_not_occupied initial_state: 'on' alias: Second bedroom not occupied trigger: - platform: state entity_id: binary_sensor.second_bedroom_door_contact id: closed to: 'off' for: 00:01:00 - platform: state entity_id: binary_sensor.second_bedroom_door_contact id: open to: 'on' for: 00:01:00 - platform: state entity_id: binary_sensor.second_bedroom_motion_occupancy id: motion to: 'off' for: 00:01:00 condition: - condition: state entity_id: binary_sensor.second_ensuite_door_contact state: - 'on' - 'off' for: 00:01:00 - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: trigger id: motion - condition: state entity_id: binary_sensor.second_bedroom_door_contact state: 'on' - condition: and conditions: - condition: trigger id: closed - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.second_bedroom_motion_occupancy state: 'on' - condition: template value_template: '{{ as_datetime(state_attr(''binary_sensor.second_bedroom_motion_occupancy'',''last_seen'')) < states.binary_sensor.second_bedroom_door_contact.last_changed }}' - condition: state entity_id: binary_sensor.second_bedroom_motion_occupancy state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.second_bedroom_occupied - id: second_bedroom_occupied initial_state: 'on' alias: Second bedroom occupied trigger: - platform: state entity_id: binary_sensor.second_bedroom_door_contact to: 'off' id: door - platform: state entity_id: binary_sensor.second_bedroom_motion_occupancy to: 'on' id: motion - platform: state entity_id: binary_sensor.second_bedroom_motion_occupancy attribute: last_seen to: null id: seen - platform: state entity_id: binary_sensor.second_ensuite_door_contact to: null id: ensuite condition: - condition: state entity_id: input_boolean.second_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.second_bedroom_door_contact state: 'off' - condition: or conditions: - condition: trigger id: ensuite - condition: trigger id: motion action: - service: input_boolean.turn_on entity_id: input_boolean.second_bedroom_occupied - id: signal_received alias: Signal received initial_state: 'on' trigger: - platform: state entity_id: sensor.signal_message_received attribute: source to: secret signal_recipient action: - service: input_text.set_value target: entity_id: input_text.command data: value: '{{- state_attr(''sensor.signal_message_received'',''dataMessage'').message -}}' - id: sleep_as_android alias: Sleep as android initial_state: 'on' trigger: - platform: event event_type: SleepAsAndroid_person2 action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'SleepAsAndroid: {{ trigger.event.data }}' - id: somebody_arrived_scan alias: Somebody arrived scan initial_state: 'on' trigger: - platform: state entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown to: Just Arrived condition: - condition: state entity_id: script.scan_bt_arrive state: 'off' action: - service: script.turn_on entity_id: script.scan_bt_arrive - id: sonos_off_tv_unmute initial_state: 'on' alias: Sonos off TV unmute trigger: - platform: state entity_id: media_player.living_room from: playing to: paused - platform: state entity_id: media_player.living_room from: playing to: idle condition: - condition: state entity_id: media_player.lounge_tcl_roku_tv state: 'on' action: - service: media_player.volume_mute data: entity_id: media_player.lounge_tcl_roku_tv is_volume_muted: false - id: sonos_on_tv_mute initial_state: 'on' alias: Sonos on TV mute trigger: - platform: state entity_id: media_player.living_room from: paused to: playing - platform: state entity_id: media_player.living_room from: idle to: playing condition: - condition: state entity_id: media_player.lounge_tcl_roku_tv state: 'on' action: - service: media_player.volume_mute data: entity_id: media_player.lounge_tcl_roku_tv is_volume_muted: true - id: startup_location_update initial_state: 'on' alias: Startup location update trigger: - platform: homeassistant event: start action: - delay: 00:00:30 - service: script.person3_traveltime - delay: 00:00:30 - service: script.person1_traveltime - delay: 00:00:30 - service: script.person2_traveltime - delay: 00:01:00 - service: script.person4_traveltime - id: startup_person1_up alias: Startup person1 up initial_state: 'on' trigger: - platform: homeassistant event: start condition: - condition: or conditions: - condition: time after: 06:00:00 before: '22:00:00' - condition: state entity_id: input_boolean.person1_home state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person1_is_awake - id: startup_person2_up alias: Startup person2 up initial_state: 'on' trigger: - platform: homeassistant event: start condition: - condition: or conditions: - condition: time after: 06:00:00 before: '22:00:00' - condition: state entity_id: input_boolean.person2_home state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person2_is_awake - id: startup_person3_up alias: Startup person3 up initial_state: 'on' trigger: - platform: homeassistant event: start condition: - condition: or conditions: - condition: time after: 06:00:00 before: '22:00:00' - condition: state entity_id: input_boolean.person3_home state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.person3_is_awake - id: start_camera_stream alias: Start camera stream initial_state: 'on' mode: restart trigger: - platform: state entity_id: input_boolean.stream_camera to: 'on' condition: - condition: state entity_id: binary_sensor.home_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.camera_stream_target option: "{%- if is_state('input_boolean.office_occupied','on') -%}\n media_player.office_smart_display\n\ {%- elif is_state('input_boolean.living_room_occupied','on') -%}\n media_player.living_room_display\n\ {%- elif is_state('input_boolean.master_bedroom_occupied','on') -%}\n media_player.master_bedroom_display\n\ {%- else -%}\n media_player.family_room_display\n{%- endif -%}" - service: camera.play_stream data: entity_id: camera.front_camera_lowres format: hls media_player: '{{ states(''input_select.camera_stream_target'') }}' - id: stop_camera_stream alias: Stop camera stream initial_state: 'on' trigger: - platform: state entity_id: input_boolean.stream_camera to: 'off' action: - service: media_player.turn_off data: entity_id: '{{ states(''input_select.camera_stream_target'') }}' - id: tasker_hook initial_state: 'on' alias: Tasker hook trigger: - platform: webhook webhook_id: secret assistant_api_key allowed_methods: - POST local_only: false action: - event: tasker_webhook event_data: id: '{{ trigger.webhook_id }}' who: '{{ trigger.json.who }}' what: '{{ trigger.json.what }}' when: '{{ trigger.json.when }}' device: '{{ trigger.json.device }}' roaming: '{{ trigger.json.roaming }}' phonenet: '{{ trigger.json.phonenet }}' - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Triggered by {{ trigger.webhook_id }} user {{ trigger.json.who }} with {{ trigger.json.what }} at {% if trigger.json.what == "next_alarm" %} {{ trigger.json.when }} {% else %} {{ as_timestamp(now())|timestamp_local }} {% endif %} Full data: {{ trigger.json }} ' - id: telegram_callback alias: Telegram callback initial_state: 'on' trigger: - platform: event event_type: telegram_callback action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Received callback: {{ trigger.event.data.data }} with message {{ trigger.event.data.message }} From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} ' - id: telegram_callback_trains alias: Telegram callback trains initial_state: 'on' trigger: - platform: event event_type: telegram_callback event_data: data: /trains action: - service: script.train_message - service: telegram_bot.answer_callback_query data: message: '{{ states(''input_text.train_message'') }}' callback_query_id: '{{ trigger.event.data.id }}' - id: telegram_command alias: Telegram command initial_state: 'on' trigger: - platform: event event_type: telegram_command action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Received a command {{ trigger.event.data.command }} {{ trigger.event.data.args }} From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} ' - id: telegram_text alias: Telegram text initial_state: 'on' trigger: - platform: event event_type: telegram_text action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'Received text: {{ trigger.event.data.text }} From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} ' - id: test_alarm alias: Test alarm trigger: - platform: time at: sensor.pixel_xl_next_alarm action: - service: notify.person2 data: message: The alarm, it's time - id: test_calendar_automation alias: test calendar automation initial_state: 'on' trigger: - platform: time at: 00:00:01 action: - action: calendar.get_events target: entity_id: calendar.person2_work data: start_date_time: '{{ today_at(''00:00:00'') }}' duration: hours: 24 response_variable: agenda - variables: holiday: '{{ (agenda[''calendar.person2_work''].events | selectattr(''summary'', ''contains'', ''holiday'') | list | length) > 0 }}' - action: input_boolean.turn_{{ 'on' if holiday else 'off' }} target: entity_id: input_boolean.person2_on_holiday - id: toilet_occupied alias: Toilet occupied initial_state: 'on' trigger: - platform: event event_type: automation_reloaded - platform: numeric_state entity_id: sensor.toilet_light_sensor_illuminance_lux above: 2 - platform: state entity_id: binary_sensor.toilet_door_contact to: 'off' condition: - condition: numeric_state entity_id: sensor.toilet_light_sensor_illuminance_lux above: 2 - condition: state entity_id: binary_sensor.toilet_door_contact state: 'off' action: - service: input_boolean.turn_on target: entity_id: input_boolean.toilet_occupied - id: toilet_unoccupied alias: Toilet unoccupied initial_state: 'on' trigger: - platform: event event_type: automation_reloaded - platform: numeric_state entity_id: sensor.toilet_light_sensor_illuminance_lux below: 2 - platform: state entity_id: binary_sensor.toilet_door_contact to: - 'on' - 'off' condition: - condition: numeric_state entity_id: sensor.toilet_light_sensor_illuminance_lux below: 2 action: - service: input_boolean.turn_off target: entity_id: input_boolean.toilet_occupied - id: train_status alias: Train status trigger: - platform: time at: 07:10:00 condition: - condition: state entity_id: - input_boolean.notify_train_status_work - input_boolean.person2_is_awake - input_boolean.person2_home - input_boolean.person2_working_trains state: 'on' variables: icon: 17608 action: - service: script.train_message - service: notify.person2 data: message: '{{ states(''input_text.train_message'') }}' - service: notify.awtrix_living_room data: message: '{{ states(''input_text.train_message'') }}' data: icon: '{{ icon }}' duration: 30 repeat: 2 - id: turned_off_by_person3 alias: Turned off by person3 initial_state: 'on' trigger: - platform: state entity_id: light.downstairs_hall to: 'off' from: 'on' condition: - condition: not conditions: - condition: state entity_id: input_select.hall state: 'Off' - condition: template value_template: '{{ trigger.to_state.context.user_id == ''cc64811238de43b5a2e3d15637a0bde7'' }}' action: - service: notify.send_message target: entity_id: notify.debug_log data: message: The hall light was manually turned off by person3 - delay: 00:02:00 - service: switch.turn_on data: entity_id: switch.adaptive_lighting_sleep_mode_hall - service: light.turn_on data: entity_id: light.downstairs_hall - id: tv_on_sonos_off initial_state: 'on' alias: TV on Sonos off trigger: - platform: state entity_id: media_player.lounge_tcl_roku_tv to: 'on' condition: - condition: state entity_id: media_player.living_room state: playing action: - service: media_player.media_stop entity_id: media_player.living_room - id: tv_light_on initial_state: 'on' alias: TV light on trigger: - platform: state entity_id: light.living_room_tv_lamp to: 'on' condition: - condition: state entity_id: input_boolean.livingroom_lights_auto state: 'on' action: - service: homeassistant.turn_off entity_id: input_boolean.livingroom_lights_auto - id: family_tv_not_sattv alias: Family TV not on SatTV initial_state: 'on' trigger: - alias: TV changed input platform: state entity_id: sensor.roku_x00200y5s7lx_active_app not_to: Satellite TV for: 00:05:00 - alias: TV turned off platform: state entity_id: media_player.roku_x00200y5s7lx to: - standby - 'off' for: 00:05:00 condition: - condition: template value_template: '{{ ''Satellite'' not in states(''sensor.roku_x00200y5s7lx_active_app'') }}' - condition: state entity_id: media_player.sky_q_family_room state: playing action: - service: media_player.turn_off target: entity_id: media_player.sky_q_family_room - id: living_tv_off alias: Living room TV turned off initial_state: 'on' trigger: - alias: TV turned off platform: state entity_id: media_player.lounge_tcl_roku_tv to: - 'off' - standby for: 00:03:00 condition: - condition: state entity_id: media_player.sky_q_living_room state: playing action: - service: media_player.turn_off target: entity_id: media_player.sky_q_living_room - id: tv_on_reconnect alias: TV on reconnect initial_state: 'on' trigger: - platform: state entity_id: device_tracker.living_room_chromecast to: home for: 00:00:30 - platform: state entity_id: media_player.lounge_tcl_roku_tv to: 'on' for: 00:00:30 condition: - condition: state entity_id: media_player.living_room_tv state: unavailable action: - service: homeassistant.update_entity entity_id: media_player.living_room_tv - id: utility_door_left_open alias: Utility door left open initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact to: 'on' from: 'off' for: 00:05:00 condition: - condition: numeric_state entity_id: sensor.accuhome_apparent_temperature below: 5 action: - service: media_player.play_media data: media_content_id: media-source://tts/tts.piper?message=The {{ trigger.to_state.name }} has been left open and it is {{ states('sensor.accuhome_apparent_temperature') }} {{ state_attr('sensor.accuhome_apparent_temperature','unit_of_measurement') }} outside media_content_type: music announce: true extra: volume: 25 target: entity_id: "{%- if is_state('input_boolean.family_room_occupied','on') -%}\n\ \ media_player.family_room_sonos_cloud\n{%- elif is_state('input_boolean.living_room_occupied','on')\ \ -%}\n media_player.living_room_sonos_cloud\n{%- else -%}\n media_player.office_sonos_cloud\n\ {%- endif -%}" - id: utility_door_open_after_sunset_closed alias: Utility door open after sunset closed initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact to: 'off' from: 'on' condition: - condition: state entity_id: automation.utility_door_open_after_sunset_turn_off state: 'off' action: - delay: 00:00:01 - service: input_boolean.turn_on entity_id: input_boolean.garden_lights - service: homeassistant.turn_on entity_id: automation.utility_door_open_after_sunset_turn_off - id: utility_door_open_after_sunset_turn_off alias: Utility door open after sunset turn off initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact to: 'off' from: 'on' condition: - condition: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact state: 'off' - condition: state entity_id: switch.garden_lights state: 'on' action: - service: switch.turn_off entity_id: switch.garden_lights - service: input_boolean.turn_off entity_id: input_boolean.garden_lights - id: utility_door_open_after_sunset_turn_on alias: Utility door open after sunset turn on initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.utility_door_exterior_contact - binary_sensor.patio_door_left_contact - binary_sensor.patio_door_right_contact to: 'on' from: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: switch.garden_lights state: 'off' - condition: or conditions: - condition: numeric_state entity_id: sensor.sun_solar_elevation below: -4 - condition: numeric_state entity_id: sensor.outside_light_sensor_illuminance_lux below: 16 action: - service: script.turn_on entity_id: script.garden_door_after_sunset - id: utility_remote alias: Utility remote description: Toggle the garden lights when the remote is operated. They can turn off at any time, but only turn on when the sun has set initial_state: 'on' trigger: - platform: state entity_id: event.utility_remote_action to: null id: event variables: action: '{{ trigger.id if trigger.id != ''event'' else trigger.to_state.attributes.event_type }}' action: - choose: - conditions: - condition: or conditions: - condition: state entity_id: switch.garden_lights state: 'off' - condition: template value_template: '{{ action == ''single'' }}' sequence: - alias: Toggle the lights service: switch.toggle data: entity_id: switch.garden_lights - conditions: - condition: template value_template: '{{ action == ''double'' }}' sequence: - alias: Don't turn off the lights when we close the door service: homeassistant.turn_off entity_id: automation.utility_door_open_after_sunset_turn_off - conditions: - condition: template value_template: '{{ action == ''hold'' }}' sequence: - alias: Don't turn off the lights when we close the door service: homeassistant.turn_off entity_id: automation.utility_door_open_after_sunset_turn_off default: - alias: Toggle the lights by default service: switch.toggle data: entity_id: switch.garden_lights - service: notify.send_message target: entity_id: notify.debug_log data: message: Utility remote action {{ action }}. Trigger was {{ trigger.id }} new state of {{ trigger.to_state.state }}\n{{ trigger.to_state.attributes }} - id: vestibule_lights_to_away initial_state: 'on' alias: Vestibule lights to away trigger: - platform: state entity_id: input_select.vestibule to: Away - platform: state entity_id: input_select.house to: Away condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.vestibule state: Away - condition: and conditions: - condition: state entity_id: input_select.vestibule state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: switch.vestibule_socket state: 'on' action: - service: switch.turn_off entity_id: switch.vestibule_socket - id: vestibule_lights_to_bedtime initial_state: 'on' alias: Vestibule lights to bedtime trigger: - platform: state entity_id: input_select.vestibule to: Bedtime - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.vestibule state: Bedtime - condition: and conditions: - condition: state entity_id: input_select.vestibule state: Auto - condition: state entity_id: input_select.house state: Bedtime action: - service: switch.turn_off entity_id: switch.vestibule_socket - id: vestibule_lights_to_night_on initial_state: 'on' alias: Vestibule lights to Night on trigger: - platform: state entity_id: input_select.vestibule to: Night on - platform: state entity_id: input_select.house to: Night on condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.vestibule state: Night on - condition: and conditions: - condition: state entity_id: input_select.vestibule state: Auto - condition: state entity_id: input_select.house state: Night on - condition: state entity_id: switch.vestibule_socket state: 'off' - condition: state entity_id: input_boolean.vestibule_christmas state: 'on' action: - service: switch.turn_on entity_id: switch.vestibule_socket - id: vestibule_lights_to_off initial_state: 'on' alias: Vestibule lights to off trigger: - platform: state entity_id: input_select.vestibule to: 'Off' - platform: state entity_id: input_select.house to: 'Off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.vestibule state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.vestibule state: Auto - condition: state entity_id: input_select.house state: 'Off' - condition: state entity_id: switch.vestibule_socket state: 'on' action: - service: switch.turn_off entity_id: switch.vestibule_socket - id: vestibule_lights_to_on initial_state: 'on' alias: Vestibule lights to On trigger: - platform: state entity_id: input_select.vestibule to: 'On' - platform: state entity_id: input_select.house to: 'On' - platform: state entity_id: input_select.house to: Auto condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.vestibule state: 'On' - condition: and conditions: - condition: state entity_id: input_select.vestibule state: Auto - condition: state entity_id: input_select.house state: 'On' - condition: state entity_id: switch.vestibule_socket state: 'off' - condition: state entity_id: input_boolean.vestibule_christmas state: 'on' action: - service: switch.turn_on entity_id: switch.vestibule_socket - id: vestibule_mode_away initial_state: 'on' alias: Vestibule mode away trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'off' condition: - condition: template value_template: '{{ not is_state(''input_select.vestibule'',''Away'') }}' action: - service: input_select.select_option data: entity_id: input_select.vestibule option: Away - id: vestibule_mode_bedtime alias: Vestibule mode bedtime initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: - group.downstairs_occupied - binary_sensor.vestibule_multi_occupancy - binary_sensor.downstairs_hall_motion_occupancy to: 'off' for: 00:03:00 condition: - condition: template value_template: '{{ not is_state(''input_select.vestibule'',''Bedtime'') }}' - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: - group.downstairs_occupied - binary_sensor.vestibule_multi_occupancy - binary_sensor.downstairs_hall_motion_occupancy state: 'off' for: 00:03:00 action: - service: input_select.select_option data: entity_id: input_select.vestibule option: Bedtime - id: vestibule_mode_night_on alias: Vestibule mode Night on trigger: - platform: state entity_id: binary_sensor.vestibule_multi_occupancy to: 'on' - platform: numeric_state entity_id: sensor.sun_solar_elevation below: 2.5 - platform: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 15 for: minutes: 5 - platform: numeric_state entity_id: sensor.vestibule_multi_illuminance_lux below: 10 - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: - input_boolean.living_room_occupied - input_boolean.family_room_occupied to: 'on' - platform: state to: Just Arrived entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown - platform: state entity_id: binary_sensor.front_door_contact to: 'on' condition: - condition: and conditions: - condition: template value_template: '{{ not is_state(''input_select.vestibule'',''Night on'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: numeric_state entity_id: sensor.living_room_light_sensor_illuminance_lux below: 25 - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 15 - condition: or conditions: - condition: numeric_state entity_id: sensor.vestibule_multi_illuminance_lux below: 5 - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 5 - condition: or conditions: - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: state entity_id: input_boolean.guest_mode state: 'on' action: - service: input_select.select_option data: entity_id: input_select.vestibule option: Night on - id: vestibule_mode_off initial_state: 'on' alias: Vestibule mode off trigger: - platform: state entity_id: binary_sensor.home_occupied to: 'on' - platform: numeric_state entity_id: sensor.sun_solar_elevation above: 5 condition: - condition: template value_template: '{{ not is_state(''input_select.vestibule'',''Off'') }}' - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: numeric_state entity_id: sensor.sun_solar_elevation above: 5 action: - service: input_select.select_option data: entity_id: input_select.vestibule option: 'Off' - id: vestibule_mode_on initial_state: 'on' alias: Vestibule mode on trigger: - platform: numeric_state entity_id: sensor.sun_solar_elevation below: 2.5 - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state to: Just Arrived entity_id: - input_select.person2_status_dropdown - input_select.person3_status_dropdown - input_select.person1_status_dropdown - input_select.person4_status_dropdown - platform: state entity_id: - binary_sensor.front_door_contact - binary_sensor.downstairs_hall_motion_occupancy - binary_sensor.vestibule_multi_occupancy to: 'on' - platform: state entity_id: - input_boolean.living_room_occupied - input_boolean.family_room_occupied to: 'on' condition: - condition: and conditions: - condition: template value_template: '{{ not is_state(''input_select.vestibule'',''On'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: binary_sensor.home_occupied state: 'on' - condition: numeric_state entity_id: sensor.sun_solar_elevation below: 2.5 action: - service: input_select.select_option data: entity_id: input_select.vestibule option: 'On' - id: wan_ip_changed alias: WAN IP changed mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.fritz_box_3490_connection from: unavilable to: 'on' condition: - condition: template value_template: '{{ trigger.from_state.state != trigger.to_state.state }}' - condition: template value_template: '{{ (states(''sensor.fritz_box_3490_external_ip'') is not none) and (states(''sensor.fritz_box_3490_external_ip'')|length != 0) }}' action: - service: notify.send_message target: entity_id: notify.debug_log data: message: 'The WAN IP has changed to #{{ states(''sensor.fritz_box_3490_external_ip'') }}#' - service: notify.apprise data: target: discord_ha title: ' ' message: ':computer: The Internet was reconnected at {{ as_timestamp(states(''sensor.fritz_box_3490_connection_uptime''),now())|timestamp_custom(''%Y-%m-%d %H:%M:%S'') }} (WAN {{ states(''sensor.fritz_box_3490_external_ip'') }} / {{ states(''sensor.fritz_box_3490_external_ipv6'') }})' - id: weather_notification initial_state: 'on' alias: Weather notification trigger: - platform: time_pattern minutes: /5 seconds: '50' - platform: state entity_id: input_select.weather_source action: - choose: - conditions: - condition: state entity_id: input_select.weather_source state: here sequence: - service: script.weather_notification_here - conditions: - condition: state entity_id: input_select.weather_source state: owm sequence: - service: script.weather_notification_here - conditions: - condition: state entity_id: input_select.weather_source state: accuweather sequence: - service: script.weather_notification_accuweather default: - service: script.weather_notification_accuweather - id: zigbee2mqtt_devices alias: Zigbee2MQTT device joined or left initial_state: 'on' trigger: - platform: mqtt topic: zigbee2mqtt/bridge/event condition: - condition: template value_template: '{{ trigger.payload_json.type == "device_joined" or trigger.payload_json == "device_leave" }}' action: - service: notify.discord_webhook data: message: ':bee: Zigbee device {{ trigger.payload_json.data.friendly_name }} just {{ trigger.payload_json.type }}' - initial_state: 'on' id: zigbee_offline alias: Zigbee offline trigger: - platform: state entity_id: binary_sensor.zigbee2mqtt_bridge_state to: 'off' action: - service: notify.discord_webhook data: message: The Zigbee bridge is offline at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local - initial_state: 'on' id: zigbee_online alias: Zigbee online trigger: - platform: state entity_id: binary_sensor.zigbee2mqtt_bridge_state to: 'on' action: - service: notify.discord_webhook data: message: The Zigbee bridge is back online at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local