- id: air_quality_alert_good alias: Air Quality - Alert for Good Conditions initial_state: true trigger: - trigger: state entity_id: input_select.air_quality_state to: Good actions: - action: script.air_quality_alert_set_air_purifier_auto - id: air_quality_alert_unhealthy alias: Air Quality - Alert for Unhealthy Conditions initial_state: true trigger: - trigger: state entity_id: input_select.air_quality_state from: - Good - Moderate - Slightly Unhealthy to: Unhealthy for: minutes: 5 conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.air_quality_alert_unhealthy'',''last_triggered''), 0) ) | int > 7200 }}' actions: - action: script.voice_announcement data: media_players: auto sound: one-chime priority: high expires_in: 60 speech_message: Hey Fam, the air quality is looking unhealthy, please keep windows closed and make sure to take precautions. - action: script.air_quality_alert_turn_on_air_purifiers data: speed: 25 - id: air_quality_alert_very_unhealthy alias: Air Quality - Alert for Very Unhealthy Conditions initial_state: true trigger: - trigger: state entity_id: input_select.air_quality_state from: - Good - Moderate - Slightly Unhealthy - Unhealthy to: Very Unhealthy for: minutes: 5 conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.air_quality_alert_very_unhealthy'',''last_triggered''), 0) ) | int > 7200 }}' actions: - action: script.voice_announcement data: media_players: auto sound: one-chime priority: high expires_in: 60 speech_message: Hey Fam, the air quality is looking very unhealthy, please keep windows closed and make sure to take precautions. - action: script.air_quality_alert_turn_on_air_purifiers data: speed: 50 - id: air_quality_alert_hazardous alias: Air Quality - Alert for Very Unhealthy Conditions initial_state: true triggers: - trigger: state entity_id: input_select.air_quality_state to: Hazardous for: minutes: 2 conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.air_quality_alert_hazardous'',''last_triggered''), 0) ) | int > 7200 }}' actions: - action: script.voice_announcement data: media_players: auto sound: nuclear priority: critical speech_message: Attention! The air quality is hazardous today. Please stay indoors as much as possible. - action: script.air_quality_alert_turn_on_air_purifiers data: speed: 100 - id: update_air_quality_state alias: Update Air Quality State mode: single triggers: - trigger: state entity_id: sensor.desplns_illinois_usa_air_quality_index - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start action: - action: input_select.select_option data: entity_id: input_select.air_quality_state option: "{% set aqi = states.sensor.desplns_illinois_usa_air_quality_index.state\ \ | int %} {% if aqi <= 50 %}\n Good\n{% elif aqi <= 100 %}\n Moderate\n\ {% elif aqi <= 150 %}\n Slightly Unhealthy\n{% elif aqi <= 200 %}\n Unhealthy\n\ {% elif aqi <= 300 %}\n Very Unhealthy\n{% else %}\n Hazardous\n{% endif\ \ %}\n" - id: alarm_arm_at_bedtime alias: Alarm - Arm at Bedtime mode: single triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' conditions: - condition: state entity_id: alarm_control_panel.panel state: disarmed - condition: time after: '20:00:00' before: 05:00:00 actions: - action: script.alarm_arm_home - id: alarm_arm_away_when_vacation_mode alias: Alarm - Arm Away When Vacation Mode mode: single triggers: - trigger: state entity_id: input_select.house to: Vacation conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' actions: - action: alarm_control_panel.alarm_arm_away entity_id: alarm_control_panel.panel - action: script.general_notification data: message: Home is armed Away since the house is in Vacation mode. title: Security System devices: jk priority: time-sensitive tag: home-security - id: alarm_arm_if_john_away alias: Alarm - Arm if John Away mode: single initial_state: false triggers: - trigger: time at: '21:30:00' conditions: - condition: state entity_id: alarm_control_panel.panel state: disarmed - condition: state entity_id: input_boolean.john_home state: 'off' actions: - action: script.alarm_arm_home - action: script.general_notification data: message: Home is ARMED for stay since John's not home. title: Security System devices: cfalb priority: time-sensitive tag: home-security - action: script.voice_announcement data: media_players: auto sound: default priority: high speech_message: I'm arming the security system since John's out of town. Make sure to disarm before opening an exterior door. - id: active_alarm_automation_if_john_away alias: Activate Alarm Automation if John Away mode: single triggers: - trigger: state entity_id: input_boolean.john_home to: 'off' for: hours: 2 - trigger: state entity_id: input_select.john_status to: Extended Away actions: - action: automation.turn_on entity_id: automation.alarm_arm_if_john_away - id: deactive_alarm_automation_if_john_home alias: Deactivate Alarm Automation if John Home mode: single triggers: - trigger: state entity_id: input_boolean.john_home to: 'on' conditions: - condition: state entity_id: automation.alarm_arm_if_john_away state: 'on' actions: - action: automation.turn_off entity_id: automation.alarm_arm_if_john_away - id: alarm_arm_when_house_empty alias: Alarm - Arm When House is Empty mode: single trigger: - platform: state entity_id: input_select.house to: Away for: minutes: 5 - platform: zone entity_id: - person.john_koht - person.cristina_falbo zone: zone.neighborhood event: leave - platform: numeric_state entity_id: sensor.home_nearest_distance above: 5 condition: - condition: state entity_id: alarm_control_panel.panel state: disarmed - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - action: script.alarm_arm_home - id: alarm_disarm_in_morning alias: Alarm - Disarm in Morning mode: single trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' for: minutes: 3 - platform: state entity_id: input_select.house from: Bedtime to: Auto for: minutes: 3 condition: - condition: state entity_id: alarm_control_panel.panel state: armed_home - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: alarm_control_panel.alarm_disarm entity_id: alarm_control_panel.panel - service: script.general_notification data: message: Home is now disarmed! title: Security System devices: all priority: active tag: home-security - id: alarm_disarm_when_house_becomes_occupied alias: Alarm - Disarm When House Becomes Occupied mode: single triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'on' conditions: - condition: state entity_id: alarm_control_panel.panel state: - armed_home - armed_away - condition: state entity_id: input_boolean.house_occupied state: 'on' actions: - action: alarm_control_panel.alarm_disarm entity_id: alarm_control_panel.panel - action: script.general_notification data: message: Home is now disarmed upon the arrival of somebody. title: Home Security System devices: jk priority: active tag: home-security - id: alarm_disarm_when_somebody_arrives_and_house_occupied alias: Alarm - Disarm When Somebody Arrives and House Occupied mode: single triggers: - trigger: state entity_id: - sensor.john_person - sensor.cristina_person - sensor.nonna_person - sensor.tayta_person - sensor.jido_person - sensor.katia_person - sensor.joe_person - sensor.alex_person to: home conditions: - condition: state entity_id: alarm_control_panel.panel state: armed_home - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ state_attr(trigger.entity_id, ''unlock_privilege'') == "on" }} ' actions: - action: script.alarm_arm_home - id: security_alarm_trigger alias: Security Alarm - Triggered mode: single triggers: - trigger: state entity_id: alarm_control_panel.panel to: triggered actions: - action: script.security_alarm_alert data: {} - id: '1672413097885' alias: Hello World Response trigger: - platform: event event_type: alexa_actionable_notification event_data: event_id: hello_world variables: response_type: '{{ trigger.event.data.event_response_type }}' response: '{{ trigger.event.data.event_response }}' action: - service: input_text.set_value data: value: '{{ response_type }}' target: entity_id: input_text.l - service: input_text.set_value data: value: '{{ response }}' target: entity_id: input_text.hello_world_response - id: alexa_volume_control initial_state: true alias: Alexa Volume Control trigger: - platform: state entity_id: input_boolean.quiet_mode to: 'on' - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: media_player.volume_set data: entity_id: - media_player.john_s_echo_dot - media_player.john_s_2nd_echo_dot - media_player.kohbo_dot_main_bedroom - media_player.john_s_echo_show volume_level: 0.3 - id: alexa_volume_control_turn_up initial_state: true alias: Alexa Volume Control - Turn Up trigger: - platform: state entity_id: input_boolean.quiet_mode to: 'off' - platform: state entity_id: input_boolean.bedtime to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: media_player.volume_set data: entity_id: - media_player.john_s_echo_dot - media_player.john_s_2nd_echo_dot - media_player.kohbo_dot_main_bedroom - media_player.john_s_echo_show volume_level: 0.6 - id: alex_announce_arrival alias: Alex Presence - Announce Arrival mode: queued initial_state: true triggers: - trigger: state entity_id: person.alex from: not_home to: home conditions: - condition: state entity_id: person.alex state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: alex announcement_type: arrival - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - action: input_boolean.turn_on entity_id: input_boolean.guest_mode_announced - id: alex_announce_departure alias: Alex Presence - Announce Departure mode: queued initial_state: true triggers: - trigger: state entity_id: person.alex from: home conditions: - condition: state entity_id: person.alex state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: alex announcement_type: departure - id: alex_is_away alias: Alex Presence - Away initial_state: true triggers: - trigger: state entity_id: person.alex to: not_home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: not conditions: - condition: state entity_id: input_select.alex_status state: Just Left - or: - condition: state entity_id: person.alex state: not_home - condition: state entity_id: device_tracker.alex_iphone_detect state: not_home actions: - action: input_boolean.turn_off entity_id: input_boolean.alex_home - id: alex_is_home initial_state: true alias: Alex Presence - Home triggers: - trigger: state entity_id: person.alex to: home - trigger: state entity_id: device_tracker.alex_iphone_detect to: home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: person.alex state: home actions: - action: input_boolean.turn_on entity_id: input_boolean.alex_home - id: alex_presence_just_arrived alias: Alex Presence - Just Arrived mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.alex_home to: 'on' actions: - action: input_select.select_option data: entity_id: input_select.alex_status option: '{{ ''Home'' if states.input_select.alex_status.state else ''Just Arrived'' }}' - id: alex_presence_home alias: Alex Presence - Home mode: single initial_state: true triggers: - trigger: state entity_id: input_select.alex_status to: Just Arrived for: minutes: 5 - trigger: state entity_id: input_select.alex_status from: Just Left to: Just Arrived actions: - action: input_select.select_option data: entity_id: input_select.alex_status option: Home - id: alex_presence_just_left alias: Alex Presence - Just Left mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.alex_home to: 'off' actions: - action: input_select.select_option data: entity_id: input_select.alex_status option: Just Left - id: alex_presence_away alias: Alex Presence - Away mode: single initial_state: true triggers: - trigger: state entity_id: input_select.alex_status to: Just Left for: minutes: 5 actions: - action: input_select.select_option data: entity_id: input_select.alex_status option: Away - id: all_away_media_off alias: All away media off initial_state: 'off' trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: condition: or conditions: - condition: state entity_id: media_player.sonos_office state: playing - condition: state entity_id: media_player.sonos_family_room state: playing - condition: state entity_id: media_player.sonos_kitchen state: playing - condition: state entity_id: media_player.sony_bravia_tv state: playing - condition: state entity_id: media_player.kohbo_echo state: playing - condition: state entity_id: media_player.john_s_echo_show state: playing - condition: state entity_id: media_player.kohbo_dot_main_bedroom state: playing action: service: media_player.media_pause - id: announcement_queue_append alias: Announcement Queue - Append mode: single trigger: - trigger: mqtt topic: home/announcement_queue/append variables: new_item: "{% set item = trigger.payload | from_json %} {% if item.expires_in\ \ is defined %}\n {% set expires_at = now() + timedelta(minutes=item.expires_in)\ \ %}\n {{ item | combine({'expires_at': expires_at.isoformat()}) }}\n{% else\ \ %}\n {{ item }}\n{% endif %}" queue_data_topic: home/announcement_queue/data queue_state_topic: home/announcement_queue/state action: - variables: current_queue: "{% set q = state_attr('sensor.announcement_queue', 'queue')\ \ %} {% if q is iterable %}\n {{ q }}\n{% else %}\n []\n{% endif %}" updated: "{% if new_item.priority == 'critical' %}\n {# Keep only critical\ \ messages and add new critical message at start #}\n {% set critical_msgs\ \ = current_queue | selectattr('priority', 'eq', 'critical') | list %}\n \ \ {{ [new_item] + critical_msgs }}\n{% else %}\n {# For non-critical messages,\ \ sort by priority #}\n {% set high_priority = current_queue | selectattr('priority',\ \ 'eq', 'high') | list %}\n {% set normal_priority = current_queue | selectattr('priority',\ \ 'eq', 'normal') | list %}\n {% set low_priority = current_queue | selectattr('priority',\ \ 'eq', 'low') | list %}\n {% set critical_msgs = current_queue | selectattr('priority',\ \ 'eq', 'critical') | list %}\n \n {# Add new message to appropriate priority\ \ list #}\n {% if new_item.priority == 'high' %}\n {% set high_priority\ \ = high_priority + [new_item] %}\n {% elif new_item.priority == 'low' %}\n\ \ {% set low_priority = low_priority + [new_item] %}\n {% else %}\n \ \ {% set normal_priority = normal_priority + [new_item] %}\n {% endif %}\n\ \ \n {# Combine all lists in priority order #}\n {{ critical_msgs + high_priority\ \ + normal_priority + low_priority }}\n{% endif %}" payload_json: '{{ {"queue": updated} | to_json }}' - action: system_log.write data: level: warning message: 'Appended item. New queue: {{ payload_json }} ' - action: mqtt.publish data: topic: '{{ queue_data_topic }}' payload: '{{ payload_json }}' retain: true - action: mqtt.publish data: topic: '{{ queue_state_topic }}' payload: queue retain: true - id: audi_is_away alias: Audi is Away initial_state: true trigger: - platform: state entity_id: sensor.audi_presence to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: sensor.audi_presence state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.audi_home - id: audi_is_home initial_state: true alias: Audi is Home trigger: - platform: state entity_id: sensor.audi_presence from: not_home - platform: state entity_id: sensor.audi_presence to: garage - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: sensor.audi_presence state: garage - condition: template value_template: '{{ states.sensor.audi_presence.state != ''not_home''}}' action: - service: input_boolean.turn_on entity_id: input_boolean.audi_home - id: '1623896972382' alias: Start DnD via Webhook description: '' trigger: - platform: webhook webhook_id: 71c672f8399aad2ccec8769e9ce75f46b7260ddb308de102224b9fe03ebb21f0 condition: [] action: - type: turn_on device_id: cdddd3246291229c09cb7cc75ff1feb1 entity_id: light.hue_play_1 domain: light - service: hue.hue_activate_scene data: group_name: Office Signal scene_name: John DnD - repeat: count: '3' sequence: - service: light.turn_on target: area_id: office data: brightness_step_pct: -50 - delay: hours: 0 minutes: 0 seconds: 0 milliseconds: 750 - service: light.turn_on target: area_id: office data: brightness_step_pct: 50 mode: single - id: '1623985104359' alias: Garbage Day Reminder description: '' trigger: - platform: time at: '18:15:00' condition: - condition: time weekday: - thu before: 00:00:00 after: 00:00:00 action: - service: script.speech_engine data: speech_message: It's garbage day. Don't forget to collect garbage from the bathrooms and diaper bin! mode: single - id: '1624048450884' alias: Front Door Alert description: '' trigger: - type: motion platform: device device_id: 92b464fee4dab94c831b8ff8686f330a entity_id: binary_sensor.front_door_camera_motion domain: binary_sensor condition: [] action: - service: script.set_doorbell_message data: message: "{% if states('input_boolean.quiet_mode') == 'on' %}\n quiet_mode\n\ {% else %}\n welcome\n{% endif %}" - service: script.display_doorbell_snapshot_on_tvs data: {} mode: single - id: '1644810800643' alias: Vacation Faux Home On description: Make it appear as if people are home when we're out of town trigger: - platform: sun event: sunset offset: 00:01:00 condition: - condition: state entity_id: input_boolean.vacation_mode state: 'on' action: - type: turn_on device_id: 44fcccda63e4e38e416babd3f3e1fded entity_id: light.family_room_main_lights domain: light - type: turn_on device_id: 59ca60e52d36629d4f1c5cca974d0cfa entity_id: light.kitchen_main_light_switch domain: light mode: single - id: '1644810923409' alias: Vacation Faux Home Off description: '' trigger: - platform: time at: '22:01:00' condition: - condition: state entity_id: input_boolean.vacation_mode state: 'on' action: - type: turn_off device_id: 59ca60e52d36629d4f1c5cca974d0cfa entity_id: light.kitchen_main_light_switch domain: light - type: turn_off device_id: 44fcccda63e4e38e416babd3f3e1fded entity_id: light.family_room_main_lights domain: light mode: single - id: '1645246661438' alias: Mudroom Light Automation description: Automatically turn on the Mudroom lights when motion is detected. use_blueprint: path: homeassistant/motion_light.yaml input: light_target: device_id: - 37ab5381dccd0ec08d2043d4cf433d72 no_motion_wait: 240 motion_entity: binary_sensor.mudroom_trisensor_home_security_motion_detection - id: '1646251632973' alias: Doorbell Ring (Duplicate) description: '' trigger: - type: occupied platform: device device_id: 92b464fee4dab94c831b8ff8686f330a entity_id: binary_sensor.front_door_camera_doorbell domain: binary_sensor condition: [] action: - service: camera.snapshot data: filename: /config/www/images/doorbell_camera_alert.jpg target: device_id: 92b464fee4dab94c831b8ff8686f330a - service: script.display_doorbell_snapshot_on_tvs data: {} - service: script.play_doorbell data: {} - service: notify.ios_family data: message: ' Somebody is at the front door!' title: Kohbo Front Door data: image: /config/www/images/doorbell_camera_alert.jpg mode: single - id: '1646272122915' alias: Turn on Outdoor Lights description: '' trigger: - platform: sun event: sunset offset: 00:15:00 condition: [] action: - service: homeassistant.turn_on data: {} target: entity_id: group.exterior_lights - service: script.speech_engine data: speech_message: The sun has set, turning on the exterior lights. mode: single - id: '1646272166786' alias: Turn off Outdoor Lights description: '' trigger: - platform: sun event: sunrise offset: -00:30:00 condition: [] action: - service: homeassistant.turn_off data: {} target: entity_id: group.exterior_lights mode: single - id: '1646280009884' alias: 'Weather: Bad Weather Lighting' description: Extra interior lights when the weather is bad trigger: - platform: numeric_state entity_id: sensor.openweathermap_weather_code above: '199' below: '233' - platform: numeric_state entity_id: sensor.openweathermap_weather_code above: '500' below: '532' - platform: numeric_state entity_id: sensor.openweathermap_weather_code above: '761' below: '782' - platform: numeric_state entity_id: sensor.openweathermap_weather_code above: '311' below: '322' condition: - condition: and conditions: - condition: sun before: sunset after: sunset - condition: time before: '22:00:00' after: 07:00:00 weekday: - mon - tue - wed - thu - fri - sat - sun - condition: state entity_id: group.family state: home action: - service: homeassistant.turn_on data: {} target: entity_id: - group.kitchen_lights - light.family_room_main_lights - service: notify.mobile_app_jk data: title: Weather Automation message: The weather isn't looking to great so turning some interior lights on. - service: script.speech_engine data: speech_message: The weather isn't looking great so turning on the some interior lights. mode: single - id: '1646884521741' alias: Nino Pickup description: '' trigger: - platform: time at: '12:30:00' condition: - condition: time before: 00:00:00 weekday: - tue - wed - thu action: - service: script.notify_engine data: title: Kohbo Reminder message: Time to pick up Nino from school! who: family - service: script.speech_engine data: speech_message: Time to pick up Nino from school! mode: single - id: '1647462190395' alias: Quiet Mode - Enable description: '' trigger: - type: not_opened platform: device device_id: b68b546103678f1b18954634f33f230b entity_id: binary_sensor.gianlucas_door_sensor_ias_zone domain: binary_sensor condition: - condition: state entity_id: input_boolean.quiet_mode state: 'off' action: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.quiet_mode mode: single - id: '1647462317728' alias: Quite Mode - Disable description: '' trigger: - type: opened platform: device device_id: b68b546103678f1b18954634f33f230b entity_id: binary_sensor.gianlucas_door_sensor_ias_zone domain: binary_sensor for: hours: 0 minutes: 5 seconds: 0 condition: - condition: state entity_id: input_boolean.quiet_mode state: 'on' action: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.quiet_mode mode: single - id: '1703382935999' alias: Playroom play time description: '' trigger: - platform: conversation command: - Play mode condition: [] action: - service: media_player.play_media target: entity_id: media_player.sonos_playroom data: media_content_id: spotify://1ab9efdddfcfad61a69054a109320f8a/spotify:playlist:47VW3DAzyva9wf0o505XFq media_content_type: spotify://playlist metadata: title: Nino Songs thumbnail: https://mosaic.scdn.co/640/ab67616d00001e0219ae9f2ac27cfa4de951e56eab67616d00001e0258d16d8402fd5d1c2289ec65ab67616d00001e02774249cfb4814cce97478521ab67616d00001e027f9c9b62b5c266ec1f484397 media_class: playlist children_media_class: track navigateIds: - {} - media_content_type: spotify://library media_content_id: spotify://1ab9efdddfcfad61a69054a109320f8a - media_content_type: spotify://current_user_playlists media_content_id: spotify://1ab9efdddfcfad61a69054a109320f8a/current_user_playlists - media_content_type: spotify://playlist media_content_id: spotify://1ab9efdddfcfad61a69054a109320f8a/spotify:playlist:47VW3DAzyva9wf0o505XFq - service: light.turn_on target: entity_id: light.playroom_lights data: {} mode: single - id: '1705228787929' alias: New automation description: '' trigger: - platform: time at: 05:05:00 condition: [] action: - service: light.turn_off metadata: {} data: {} target: entity_id: light.hue_smart_plug_1 mode: single - id: '1708729229186' alias: Jumpy House Toggle New description: '' trigger: - device_id: 8f2fc00a55d6328dc30ed2d53372a1f4 domain: zha platform: device type: remote_button_short_press subtype: remote_button_short_press condition: [] action: - type: toggle device_id: 7468fd0c889aba8fcd895aa3387c3795 entity_id: e96ec63d4a34cf5ed92370e69442c31c domain: switch mode: single - id: '1710176506867' alias: Playroom button Test description: '' trigger: - platform: event event_type: zwave_js_value_notification event_data: device_id: cd626e869b9ddd77c680a7c1b1bd9bfc context: {} condition: [] action: [] mode: single - id: '1726030107950' alias: Toggle garage door 2 description: '' trigger: - event_data: actionID: 6EE7ECA3-E8C5-4603-B741-F2B23A89C131 platform: event event_type: ios.action_fired condition: [] action: - action: cover.toggle metadata: {} data: {} target: device_id: fbe1f9961737e541fa5e35c420d63bfd mode: single - id: '1728564743404' alias: Temp auto - unlock garage door description: '' trigger: - platform: state entity_id: - input_boolean.bedtime from: 'on' to: 'off' for: hours: 0 minutes: 2 seconds: 0 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: lock.garage_entry_door state: locked action: - action: lock.unlock metadata: {} data: {} target: entity_id: lock.garage_entry_door mode: single - id: '1745156745937' alias: ' Notify Cristina of Event' description: '' triggers: - trigger: calendar entity_id: calendar.kohbocal event: start offset: '-1:0:0' conditions: [] actions: null mode: single - id: '1754455487847' alias: custom assist weather test description: '' triggers: - trigger: conversation command: tell me the weather conditions: [] actions: - set_conversation_response: It's currently {{ states.weather.pirateweather.attributes.temperature }} degrees with {{ states.weather.pirateweather.attributes.humidity }} percent humidity mode: single - id: '1754970331821' alias: Music Assistant Voice Command description: Play music through voice commands use_blueprint: path: music-assistant/mass_assist_blueprint_en.yaml input: default_player_entity_id_input: media_player.office_3 - id: backyard_porch_camera_detections_animal alias: Backyard Porch Camera Detections - Animal mode: single trigger: - platform: state entity_id: binary_sensor.backyard_porch_camera_animal_detected to: 'on' variables: camera_name: Backyard Porch Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_backyard_porch_camera_high_resolution_channel condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.backyard_porch_camera_detections_animal'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' - condition: and conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''binary_sensor.kitchen_door'',''last_changed''), 0) ) | int > 600 }}' - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - action: script.camera_detection_alert data: detection_type: animal camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: backyard_porch_camera_detections_person alias: Backyard Porch Camera Detections - Person mode: single trigger: - platform: state entity_id: binary_sensor.backyard_porch_camera_person_detected to: 'on' variables: camera_name: Backyard Porch Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_backyard_porch_camera_high_resolution_channel condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.backyard_porch_camera_detections_person'',''last_triggered''), 0) ) | int > 180 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' - condition: and conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''binary_sensor.kitchen_door'',''last_changed''), 0) ) | int > 600 }}' - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - action: script.camera_detection_alert data: detection_type: person camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: backyard_south_camera_detections_animal alias: Backyard South Camera Detections - Animal mode: single trigger: - platform: state entity_id: binary_sensor.backyard_south_camera_animal_detected to: 'on' variables: camera_name: Backyard South Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_backyard_south_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.backyard_south_camera_detections_animal'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: animal camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: backyard_south_camera_detections_person alias: Backyard South Camera Detections - Person mode: single trigger: - platform: state entity_id: binary_sensor.backyard_south_person_detected to: 'on' variables: camera_name: Backyard South Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_backyard_south_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.backyard_south_camera_detections_person'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: person camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: bad_weather_mode_off initial_state: 'on' alias: Bad Weather Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: sensor.pirateweather_summary to: sunny - platform: numeric_state entity_id: sensor.pirateweather_cloud_coverage above: '41' - platform: numeric_state entity_id: sensor.tempest_illuminance above: 150 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bad_weather state: 'on' - condition: state entity_id: sun.sun state: above_horizon - condition: or conditions: - condition: state entity_id: sensor.pirateweather_summary state: sunny - condition: state entity_id: sensor.pirateweather_summary state: clear - condition: state entity_id: sensor.pirateweather_summary state: party cloudy - condition: numeric_state entity_id: sensor.pirateweather_cloud_coverage_1h below: '40' - condition: numeric_state entity_id: sensor.pirateweather_cloud_coverage above: '41' action: - service: input_boolean.turn_off entity_id: input_boolean.bad_weather - id: bad_weather_mode_on initial_state: 'on' alias: Bad Weather Mode On trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: sensor.pirateweather_summary to: - exceptional - lightning - rainy - snowy - snowy rainy - platform: state entity_id: sensor.pirateweather_alerts - platform: numeric_state entity_id: sensor.pirateweather_cloud_coverage above: 75 - platform: numeric_state entity_id: sensor.tempest_illuminance below: 50 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bad_weather state: 'off' - condition: state entity_id: sun.sun state: above_horizon - condition: or conditions: - condition: state entity_id: sensor.pirateweather_summary state: - exceptional - lightning - rainy - snowy - snowy rainy - condition: numeric_state entity_id: sensor.pirateweather_alerts above: 1 - condition: and conditions: - condition: or conditions: - condition: numeric_state entity_id: sensor.tempest_precipitation above: '.01' - condition: numeric_state entity_id: sensor.tempest_precipitation_intensity above: '.25' - condition: numeric_state entity_id: sensor.tempest_illuminance below: 150 action: - service: input_boolean.turn_on entity_id: input_boolean.bad_weather - id: basement_mode_auto initial_state: true alias: Basement mode Auto trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.basement'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.basement option: Auto - id: basement_mode_off initial_state: true alias: Basement mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.basement'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.basement option: 'Off' - id: basement_not_occupied initial_state: true alias: Basement not occupied trigger: - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''basement'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 5 - platform: state entity_id: binary_sensor.basement_motion_sensor to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.basement_occupancy_sensor to: 'off' - platform: state entity_id: binary_sensor.basement_occupancy_sensor to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.basement_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.guest_mode state: 'on' - condition: state entity_id: binary_sensor.basement_occupancy_sensor state: 'off' for: minutes: 5 - condition: and conditions: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: binary_sensor.basement_occupancy_sensor state: 'off' for: minutes: 2 - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''basement'')|map(attribute=''name'')|list | length == 0 }}' action: - service: input_boolean.turn_off entity_id: input_boolean.basement_occupied - id: basement_occupied initial_state: true alias: Basement occupied trigger: - platform: state entity_id: binary_sensor.basement_motion_sensor to: 'on' - platform: state entity_id: binary_sensor.basement_occupancy_sensor to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.basement_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''basement'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: binary_sensor.basement_occupancy_sensor state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.basement_occupied - id: bedtime_mode_off alias: Bedtime Mode - Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.everybody_in_bed to: 'off' - trigger: state entity_id: - input_boolean.cristina_is_awake - input_boolean.john_is_awake to: 'on' - trigger: time at: 06:30:00 - trigger: sun event: sunrise condition: - condition: time after: 05:00:00 - condition: or conditions: - condition: or conditions: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.john_home state: 'on' - condition: state entity_id: input_boolean.john_is_awake state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: and conditions: - condition: state entity_id: input_boolean.cristina_home state: 'on' - condition: state entity_id: input_boolean.cristina_is_awake state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.bedtime - id: bedtime_mode_on initial_state: true alias: Bedtime Mode - On triggers: - trigger: state entity_id: binary_sensor.everybody_in_bed to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - action: input_boolean.turn_on entity_id: input_boolean.bedtime - id: bedtime_mode_vacation_on initial_state: true alias: Bedtime Mode - Vacation On triggers: - trigger: time at: '22:00:00' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - action: input_boolean.turn_on entity_id: input_boolean.bedtime - id: bedtime_mode_vacation_off initial_state: true alias: Bedtime Mode - Vacation Off triggers: - trigger: time at: 07:00:00 conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - action: input_boolean.turn_off entity_id: input_boolean.bedtime - id: bedtime_notifications alias: Bedtime Notifications mode: single trigger: - platform: state entity_id: input_select.main_bedroom to: Bedtime condition: - condition: state entity_id: input_select.main_bedroom state: Bedtime - condition: state entity_id: binary_sensor.bedtime state: 'on' action: - service: input_text.set_value entity_id: input_text.bedtime_notification_message data: value: '' - if: - condition: state entity_id: lock.front_door state: unlocked then: - service: input_text.set_value entity_id: input_text.bedtime_notification_message data: value: The front door is unlocked. - if: - condition: state entity_id: binary_sensor.jr_suite_door_status state: 'off' then: - service: input_text.set_value entity_id: input_text.bedtime_notification_message data: value: "{% set message = states.input_text.bedtime_notification_message.state\ \ %} {% set vac_message = \"the junior suite door is closed, so the vacuum\ \ will get stuck\" %} {% if message | length > 0 %}\n \"{{message}} and\ \ {{vac_message}}\"\n{% else %}\n {{vac_message}}\n{% endif %}" - if: - condition: state entity_id: binary_sensor.windows state: 'on' then: - service: input_text.set_value entity_id: input_text.bedtime_notification_message data: value: "{% set open_windows = expand('binary_sensor.windows')|selectattr('state',\ \ 'eq', 'on')|map(attribute='name')|list|unique|join(', ') %} {% set window_message\ \ = \"The following windows are still open: \" + open_windows %}\n{% set\ \ message = states.input_text.bedtime_notification_message.state %} {% if\ \ message | length > 0 %}\n \"{{message}} and {{window_message}}\"\n{%\ \ else %}\n {{window_message}}\n{% endif %}" - condition: template value_template: '{{states.input_text.bedtime_notification_message.state | length > 0}}' - service: input_text.set_value entity_id: input_text.bedtime_notification_message data: value: Hey there, just wanted to let you know {{states.input_text.bedtime_notification_message.state}} - service: script.general_notification data: message: '{{states.input_text.bedtime_notification_message.state}}' title: Bedtime Notifications devices: jk priority: time-sensitive tag: bedtime-notifications - service: media_player.volume_set data: entity_id: media_player.main_bedroom volume_level: 0.25 - service: notify.alexa_media data: data: type: tts target: media_player.kohbo_dot_main_bedroom message: '{{states.input_text.bedtime_notification_message.state}}' - id: birthday_today_reminder alias: Birthday Today Reminder mode: single trigger: - platform: time at: 07:35:00 - platform: time at: '17:15:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: calendar.birthdays_2 state: 'on' action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: success-trumpets priority: normal speech_message: "{{ \n [\n \"Hey fam, just wanted to remind you that today\ \ is \" ~ states.calendar.birthdays_2.attributes.message,\n \"Just a quick\ \ reminder that it's \" ~ states.calendar.birthdays_2.attributes.message ~\ \ \" today!\",\n \"Pardon the interruption, don't forget that today is\ \ \" ~ states.calendar.birthdays_2.attributes.message\n ] | random\n}}" - service: script.general_notification data: message: Today is {{states.calendar.birthdays_2.attributes.message}} title: Birthday Reminder devices: jk priority: active tag: birthday-reminder - id: birthday_tomorrow_reminder alias: Birthday Tomorrow Reminder mode: single trigger: - platform: time at: '18:30:00' - platform: time at: '20:05:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.birthday_tomorrow state: 'on' - condition: time after: '17:00:00' action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: success-trumpets priority: high speech_message: "{{ \n [\n \"Hey fam, just wanted to remind you that tomorrow\ \ is \" ~ states.calendar.birthdays_2.attributes.message,\n \"Just a quick\ \ reminder that \" ~ states.calendar.birthdays_2.attributes.message ~ \" is\ \ tomorrow.\",\n \"Pardon the interruption, don't forget that tomorrow\ \ is \" ~ states.calendar.birthdays_2.attributes.message\n ] | random\n}}" - service: script.general_notification data: message: Tomorrow is {{states.calendar.birthdays_2.attributes.message}} title: Birthday Reminder devices: jk priority: active tag: birthday-reminder - id: bmw_is_away alias: BMW is Away initial_state: true trigger: - platform: state entity_id: sensor.bmw_presence to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: sensor.bmw_presence state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.bmw_home - id: bmw_is_home initial_state: true alias: BMW is Home trigger: - platform: state entity_id: sensor.bmw_presence from: not_home - platform: state entity_id: sensor.bmw_presence to: garage - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: sensor.bmw_presence state: garage - condition: template value_template: '{{ states.sensor.bmw_presence.state != ''not_home''}}' action: - service: input_boolean.turn_on entity_id: input_boolean.bmw_home - id: camera_notifications_activate alias: Camera Notifications - Activate mode: single initial_state: true trigger: - platform: state entity_id: input_select.house to: Away - platform: time at: '22:00:00' - platform: sun event: sunset offset: 00:15:00 - platform: state entity_id: binary_sensor.exterior_doors to: 'off' for: minutes: 45 - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: input_boolean.camera_notifications state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.camera_notifications - service: script.general_notification data: title: Security Cameras message: Camera detections have been enabled. devices: all priority: time-sensitive tag: camera-notifications - id: camera_notifications_deactivate alias: Camera Notifications - Deactivate mode: single initial_state: true trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' for: minutes: 15 - platform: state entity_id: input_select.house to: Auto for: minutes: 30 - platform: sun event: sunrise offset: 00:15:00 - platform: state entity_id: binary_sensor.exterior_doors to: 'on' - platform: state entity_id: - input_boolean.cristina_home - input_boolean.john_home - input_boolean.joe_home - input_boolean.nonna_home - input_boolean.katia_home to: 'on' - platform: state entity_id: cover.garage_doors to: open condition: - condition: state entity_id: input_boolean.camera_notifications state: 'on' - condition: state entity_id: group.family state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: sun.sun state: above_horizon action: - service: input_boolean.turn_off entity_id: input_boolean.camera_notifications - service: script.general_notification data: title: Security Cameras message: Camera detections have been disabled to cut down on notification overload. devices: all priority: time-sensitive tag: camera-notifications - id: christmas_activated alias: Christmas Activated mode: single trigger: - platform: state entity_id: input_boolean.dark_outside to: 'on' - platform: time at: '16:00:00' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.christmas_active state: 'off' - condition: or conditions: - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '16:00:00' - condition: time after: '12:00:00' before: '22:00:00' action: - service: input_boolean.turn_on entity_id: input_boolean.christmas_active - id: christmas_disabled alias: Christmas Disabled mode: single trigger: - platform: homeassistant event: start - platform: time at: 02:00:00 condition: - condition: state entity_id: input_boolean.christmas_season_active state: 'on' - condition: template value_template: '{% set d = now() %} {{ (d.month == 1 and d.day > 7) or (d.month > 2 and d.month < 12) }} ' action: - service: script.turn_on entity_id: script.christmas_disable_automations - id: christmas_enabled alias: Christmas Enabled mode: single trigger: - platform: homeassistant event: start - platform: time at: 02:00:00 condition: - condition: template value_template: '{% set d = now() %} {{ d.month == 12 or (d.month == 1 and ( 1<= d.day <= 7)) }} ' - condition: state entity_id: input_boolean.christmas_season_active state: 'off' action: - service: script.turn_on entity_id: script.christmas_enable_automations - id: turn_on_christmas_lights alias: Turn ON Christmas Lights mode: single trigger: - platform: state entity_id: input_boolean.christmas_active to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: switch.turn_on entity_id: switch.christmas_lights - id: turn_off_christmas_lights alias: Turn OFF Christmas Lights mode: single trigger: - platform: state entity_id: input_boolean.christmas_active to: 'off' - platform: state entity_id: input_boolean.christmas_active to: 'off' for: minutes: 3 action: - service: switch.turn_off entity_id: switch.christmas_lights - id: handle_ikea_unresponsive alias: Handle IKEA Unresponsive mode: single trigger: - platform: state entity_id: - switch.tradfri_smart_plug_1_switch - switch.tradfri_smart_plug_2_switch - switch.tradfri_smart_plug_3_switch - switch.tradfri_smart_plug_4_switch from: unresponsive action: choose: - conditions: - condition: state entity_id: input_boolean.christmas_active state: 'on' sequence: - service: switch.turn_on target: entity_id: - switch.tradfri_smart_plug_1_switch - switch.tradfri_smart_plug_2_switch - switch.tradfri_smart_plug_3_switch - switch.tradfri_smart_plug_4_switch - conditions: - condition: state entity_id: input_boolean.christmas_active state: 'off' sequence: - service: switch.turn_off target: entity_id: - switch.tradfri_smart_plug_1_switch - switch.tradfri_smart_plug_2_switch - switch.tradfri_smart_plug_3_switch - switch.tradfri_smart_plug_4_switch - id: christmas_not_activated alias: Christmas NOT Activated mode: single trigger: - platform: state entity_id: input_boolean.dark_outside to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_select.house to: Bedtime - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.christmas_active state: 'on' - condition: or conditions: - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_select.house state: Bedtime - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.christmas_active - service: notify.mobile_app_jk_2 data: title: Holidays message: Christmas is NO longer activate - id: christmas_shortcut_button alias: Christmas Shortcut Button initial_state: false trigger: - device_id: d98b081e7991a6e9ce1672128dad93ae domain: zha platform: device type: remote_button_short_press subtype: turn_on action: - service: input_boolean.toggle entity_id: input_boolean.christmas_active - alias: Wait 1 seconds delay: 1 - id: vacuum_clean_dining_and_foyer_at_night alias: Vacuum - Clean Dining and Foyer at Night mode: single triggers: - trigger: time at: '21:00:00' id: nightly_check - trigger: state entity_id: input_boolean.guest_mode to: 'off' for: minutes: 15 enabled: true id: guest_mode_off conditions: - condition: or conditions: - condition: trigger id: nightly_check - condition: and conditions: - condition: trigger id: guest_mode_off - condition: time after: '21:00:00' before: '23:00:00' - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: input_boolean.entertainment_mode state: 'off' - condition: template value_template: "{% set vacation = states.input_boolean.vacation_mode %} {% if\ \ vacation.state == \"on\" %}\n {{ (now() - vacation.last_changed).total_seconds()\ \ < 86400 }}\n{% else %}\n true\n{% endif %}\n" - condition: state entity_id: binary_sensor.jr_suite_door_status state: 'on' - condition: template value_template: "{% set last_run = state_attr('automation.vacuum_clean_dining_and_foyer_at_night',\ \ 'last_triggered') %} {% set yesterday_start = now().replace(hour=0, minute=0,\ \ second=0) - timedelta(days=1) %} {% set yesterday_end = now().replace(hour=0,\ \ minute=0, second=0) %} {% set entertainment_yesterday = states.input_boolean.entertainment_mode.last_changed.replace(hour=0,\ \ minute=0, second=0) >= yesterday_start \n and states.input_boolean.entertainment_mode.last_changed\ \ < yesterday_end %}\n\n{% if last_run != None %}\n {% set days_since_last_run\ \ = (now() - last_run).total_seconds() / 108000 %}\n {% if entertainment_yesterday\ \ %}\n {# Run if there was entertainment yesterday, regardless of last run\ \ #}\n {{ true }}\n {% else %}\n {# Otherwise run if it's been at least\ \ 2 days since last run #}\n {{ days_since_last_run >= 2 }}\n {% endif %}\n\ {% else %}\n {{ true }}\n{% endif %}\n" - condition: template value_template: "{{ states('input_boolean.sylvia_home') == 'off' \n and (now()\ \ - states.input_boolean.sylvia_home.last_changed).total_seconds() > 86400 }}\n" actions: - action: vacuum.send_command target: entity_id: vacuum.roborock_s7 data: command: app_segment_clean params: - 20 - 23 - id: clean_kitchen_and_family_room_at_night alias: Vacuum - Clean Kitchen and Family Room at Night mode: single triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' for: minutes: 30 - trigger: time at: 01:01:00 conditions: - condition: time after: '22:00:00' before: 07:00:00 - condition: state entity_id: binary_sensor.jr_suite_door_status state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.vacation_mode state: 'off' - condition: template value_template: "{% set vacation_last_changed = states.input_boolean.vacation_mode.last_changed\ \ %} {% if states.input_boolean.vacation_mode.state == \"on\" %}\n {{ (now()\ \ - vacation_last_changed).total_seconds() < 86400 }}\n{% else %}\n {{ false\ \ }}\n{% endif %}\n" actions: - action: vacuum.send_command target: entity_id: vacuum.roborock_s7 data: command: app_segment_clean params: - 24 - 25 - 26 - id: clean_kitchen_when_unoccupied alias: Vacuum - Clean Kitchen When Unoccupied mode: single triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' for: minutes: 5 conditions: - condition: state entity_id: vacuum.roborock_s7 state: docked - condition: or conditions: - condition: and conditions: - condition: time after: 08:00:00 before: 09:30:00 - condition: time weekday: - mon - tue - wed - thu - fri - condition: and conditions: - condition: time after: 08:30:00 before: '10:30:00' - condition: time weekday: - sat - sun - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: binary_sensor.jr_suite_door_status state: 'on' - condition: state entity_id: input_boolean.vacation_mode state: 'off' actions: - action: vacuum.send_command target: entity_id: vacuum.roborock_s7 data: command: app_segment_clean params: - 24 - id: return_vacuum_when_occupied alias: Vacuum - Return to Dock When House Occupied mode: single triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'on' conditions: - condition: state entity_id: vacuum.roborock_s7 state: cleaning - condition: or conditions: - condition: and conditions: - condition: time after: 08:00:00 before: 09:30:00 - condition: time weekday: - mon - tue - wed - thu - fri - condition: and conditions: - condition: time after: 08:30:00 before: '10:30:00' - condition: time weekday: - sat - sun actions: - action: vacuum.return_to_base target: entity_id: vacuum.roborock_s7 - id: cristina_announce_arrival alias: Cristina Announce Arrival mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_select.cristina_status_dropdown from: Away to: Just Arrived - platform: state entity_id: input_select.cristina_status_dropdown from: Extended Away to: Just Arrived condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - service: script.voice_announcement data: media_players: auto sound: fanfare speech_message: "{{\n [\n \"Guess who's home? It's Mamma!\",\n \"Stop\ \ what you're doing, mamma is home!\",\n \"Mamma is home! Yay!\",\n \ \ \"And the house becomes a home. Welcome back Mamma!\",\n \"Pardon the\ \ interruption but Mamma is home!\",\n \"Knock knock. Who's there? It's\ \ Mamma!\",\n \"Yo hey! Mamma is home!\",\n \"Our queen has arrived!\ \ Welcome Mamma!\",\n \"Ciao! Mamma is home!\"\n ] | random\n}}" - id: cristina_announce_departure alias: Cristina Announce Departure mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_boolean.cristina_home to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - service: script.voice_announcement data: media_players: auto expires_in: 2 speech_message: "{{\n [\n \"Arrivederci! Mamma has left the house.\",\n\ \ \"Ciao Mamma! See you later.\",\n \"Mamma just left, but she misses\ \ you dearly!\",\n \"Mamma just left, but don't worry, she'll be back soon.\"\ ,\n \"Pardon the interruption but Mamma has left the house.\",\n \"\ Attention! Mamma left the house.\"\n ] | random\n}}" - id: cristina_arrived_work alias: Cristina arrived at work initial_state: 'on' trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.cristina_s_work event: enter condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: time before: '10:00:00' - condition: state entity_id: person.cristina_falbo state: Cristina's Work action: - service: script.cristina_arrived_work data: who: cfalb - service: script.general_notification data: title: Cristina is at work message: Cristina has arrived at work! devices: jk priority: passive tag: cristina-arrived-work - id: cristina_away alias: Cristina away initial_state: 'on' trigger: - platform: zone entity_id: - person.cristina_falbo - device_tracker.cfalb_iphone_14 zone: zone.home event: leave - platform: state entity_id: - person.cristina_falbo - device_tracker.cfalb_iphone_14 to: not_home - platform: state entity_id: binary_sensor.cristina_presence to: 'off' - platform: state entity_id: binary_sensor.cristina_presence to: 'off' for: minutes: 3 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: template value_template: '{{ not is_state(''input_select.cristina_status_dropdown'', ''Just Arrived'') }}' - condition: state entity_id: input_boolean.cristina_home state: 'on' - condition: state entity_id: person.cristina_falbo state: not_home - condition: or conditions: - condition: state entity_id: binary_sensor.cristina_presence state: 'off' - condition: state entity_id: device_tracker.cfalb_iphone_14 state: not_home action: - service: script.turn_on data: entity_id: script.cristina_away - id: cristina_bed_awake alias: Cristina Bed - Awake mode: single trigger: - platform: state entity_id: input_select.cristina_sleep_state to: Just Got Up for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.cristina_sleep_state option: Awake - id: cristina_bed_just_got_up alias: Cristina Bed - Just Got Up mode: single trigger: - platform: state entity_id: binary_sensor.cristina_bed_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.cristina_sleep_state option: Just Got Up - id: cristina_bed_just_laid_down alias: Cristina Bed - Just Laid Down mode: single trigger: - platform: state entity_id: binary_sensor.cristina_bed_occupied to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.cristina_sleep_state'',''Sleep'') }}' action: - service: input_select.select_option data: entity_id: input_select.cristina_sleep_state option: Just Laid Down - id: cristina_bed_sleep alias: Cristina Bed - Sleep mode: single trigger: - platform: state entity_id: input_select.cristina_sleep_state to: Just Laid Down for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.cristina_sleep_state option: Sleep - id: cristina_commute_arrived_glenview_station alias: Cristina Commute - Arrived at Glenview Station initial_state: false trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.glenview_train_station event: enter condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.cristina_commuting state: 'on' action: - service: automation.turn_off entity_id: - automation.cristina_commute_departed_union_station - automation.cristina_commute_passing_morton_grove_station - automation.cristina_commute_arrived_at_glenview_station - id: cristina_commute_arrived_union_station alias: Cristina Commute - Arrived at Union Station initial_state: true trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.union_station event: enter condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: state entity_id: person.cristina_falbo state: Union Station - condition: time before: '12:00:00' action: - service: automation.turn_on entity_id: - automation.cristina_commute_departed_union_station - automation.cristina_commute_passing_morton_grove_station - automation.cristina_commute_arrived_at_glenview_station - service: script.voice_announcement data: media_players: auto priority: normal speech_message: "{{\n [\n \"Attention! Mamma just arrived at Union Station.\"\ ,\n \"Pardon the interruption, just wanted to let you know Mamma's train\ \ arrived downtown.\"\n ] | random\n}}" - id: cristina_commute_departed_union_station alias: Cristina Commute - Departed Union Station initial_state: false trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.union_station event: leave condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.cristina_commuting state: 'on' action: - service: script.voice_announcement data: media_players: auto priority: normal speech_message: "{{\n [\n \"Attention! Mamma just left Union Station.\"\ ,\n \"Pardon the interruption, but Mamma is on the train headed home.\"\ ,\n \"Just a friendly note that Mamma's train has departed.\"\n ] | random\n\ }}" - id: cristina_commute_passing_morton_grove_station alias: Cristina Commute - Passing Morton Grove Station initial_state: false trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.morton_grove_train_station event: enter condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.cristina_commuting state: 'on' action: - service: script.voice_announcement data: media_players: auto priority: normal expires_in: 3 speech_message: "{{\n [\n \"Attention! Mamma's train will arrive within\ \ five minutes!\",\n \"Pardon the interruption, but Mamma's train is arriving\ \ soon.\",\n \"Just a friendly note that Mamma's train is arriving shortly.\"\ \n ] | random\n}}" - id: cristina_daily_medication_reminder alias: Cristina Daily Medication Reminder trigger: - trigger: time at: 07:30:00 - trigger: event event_type: timer.finished event_data: entity_id: timer.cristina_daily_medication_timer - trigger: state entity_id: input_boolean.cristina_home to: 'on' for: minutes: 15 conditions: - condition: state entity_id: input_boolean.cristina_daily_medication_taken state: 'off' - condition: state entity_id: timer.cristina_daily_medication_timer state: idle - condition: state entity_id: input_boolean.cristina_is_awake state: 'on' - or: - condition: state entity_id: input_boolean.cristina_home state: 'on' - condition: state entity_id: input_select.cristina_status_dropdown state: Extended Away actions: - variables: action_taken: '{{ ''TAKEN_'' ~ context.id }}' action_snooze: '{{ ''SNOOZE_'' ~ context.id }}' - action: notify.mobile_app_cfalb2 data: message: Cristina, it's time to take your morning medication. title: Medication Reminder data: tag: cristina-morning-medication push: interruption-level: critical actions: - action: '{{ action_taken }}' title: Medication Taken - action: '{{ action_snooze }}' title: Snooze 30 Minutes - wait_for_trigger: - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_taken }}' - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_snooze }}' timeout: minutes: 30 - if: - '{{ not wait.completed }}' then: - action: timer.start entity_id: timer.cristina_daily_medication_timer else: - if: - condition: template value_template: '{{ wait.trigger.event.data.action == action_taken }}' then: - action: input_boolean.turn_on entity_id: input_boolean.cristina_daily_medication_taken - action: timer.cancel entity_id: timer.cristina_daily_medication_timer - action: automation.turn_off entity_id: automation.cristina_daily_medication_reminder - if: - condition: template value_template: '{{ wait.trigger.event.data.action == action_snooze }}' then: - action: timer.start entity_id: timer.cristina_daily_medication_timer - id: cristina_medication_reminder_reset alias: Cristina Medication Reminder Reset trigger: - trigger: time at: 03:00:01 actions: - action: input_boolean.turn_off entity_id: input_boolean.cristina_daily_medication_taken - action: timer.cancel entity_id: timer.cristina_daily_medication_timer - action: automation.turn_on entity_id: automation.cristina_daily_medication_reminder - id: cristina_departed_work alias: Cristina has left the office initial_state: 'on' trigger: - platform: zone entity_id: person.cristina_falbo zone: zone.cristina_s_work event: leave - platform: numeric_state entity_id: sensor.paramount_cristina_distance above: 1 condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: time after: '16:00:00' - condition: state entity_id: sensor.paramount_cristina_direction_of_travel state: away_from action: - service: script.cristina_left_work data: who: cfalb - id: cristina_extended_away alias: Cristina - Extended Away mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_select.cristina_status_dropdown to: Away for: hours: 24 - platform: numeric_state entity_id: sensor.home_cristina_distance above: 200 action: - service: input_select.select_option target: entity_id: input_select.cristina_status_dropdown data: option: Extended Away - id: cristina_friday_medication_reminder alias: Cristina Friday Medication Reminder triggers: - trigger: time at: '21:30:00' - trigger: event event_type: timer.finished event_data: entity_id: timer.cristina_friday_medication_timer conditions: - condition: template value_template: '{{ now().isoweekday() == 5 }}' - condition: state entity_id: input_boolean.cristina_friday_medication_taken state: 'off' action: - variables: action_taken: '{{ ''FRIDAY_TAKEN_'' ~ context.id }}' action_snooze: '{{ ''FRIDAY_SNOOZE_'' ~ context.id }}' - action: notify.mobile_app_cfalb2 data: message: Cristina, it's time to take your Friday evening medication. title: Friday Medication Reminder data: tag: cristina-friday-medication push: interruption-level: critical actions: - action: '{{ action_taken }}' title: Medication Taken - action: '{{ action_snooze }}' title: Snooze 30 Minutes - wait_for_trigger: - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_taken }}' - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_snooze }}' timeout: minutes: 30 - choose: - conditions: - condition: template value_template: '{{ not wait.completed }}' sequence: - action: timer.start entity_id: timer.cristina_friday_medication_timer - conditions: - condition: template value_template: '{{ wait.trigger.event.data.action == action_taken }}' sequence: - action: input_boolean.turn_on entity_id: input_boolean.cristina_friday_medication_taken - action: timer.cancel entity_id: timer.cristina_friday_medication_timer - conditions: - condition: template value_template: '{{ wait.trigger.event.data.action == action_snooze }}' sequence: - action: timer.start entity_id: timer.cristina_friday_medication_timer - id: cristina_friday_medication_reminder_reset alias: Cristina Friday Medication Reminder Reset triggers: - trigger: time at: 03:00:01 actions: - action: input_boolean.turn_off entity_id: input_boolean.cristina_friday_medication_taken - action: timer.cancel entity_id: timer.cristina_friday_medication_timer - id: cristina_home initial_state: 'on' alias: Cristina Home trigger: - platform: state entity_id: binary_sensor.cristina_presence to: 'on' - platform: zone entity_id: - person.cristina_falbo - device_tracker.cfalb_iphone_14 zone: zone.home event: enter - platform: state entity_id: - person.cristina_falbo - device_tracker.cfalb_iphone_14 to: home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.cristina_presence state: 'on' - condition: state entity_id: person.cristina_falbo state: home - condition: state entity_id: device_tracker.cfalb_iphone_14 state: home - condition: zone entity_id: - person.cristina_falbo - device_tracker.cfalb_iphone_14 zone: zone.home action: - service: script.turn_on entity_id: script.cristina_home - id: cristina_in_bed alias: Cristina in bed initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.cristina_sleeping to: 'on' for: minutes: 1 - platform: state entity_id: input_select.cristina_sleep_state to: Sleep - platform: state entity_id: input_select.cristina_sleep_state to: Just Laid Down condition: - condition: or conditions: - condition: state entity_id: input_select.cristina_sleep_state state: Sleep - condition: state entity_id: input_select.cristina_sleep_state state: Just Laid Down - condition: state entity_id: input_boolean.cristina_home state: 'on' - condition: state entity_id: binary_sensor.bedtime state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.cristina_in_bed - service: input_boolean.turn_off entity_id: input_boolean.cristina_is_awake - id: cristina_is_commuting alias: Cristina is Commuting initial_state: true trigger: - platform: state entity_id: person.cristina_falbo to: - Morton Grove Train Station - Union Station for: minutes: 2 condition: - condition: state entity_id: input_boolean.cristina_home state: 'off' - condition: state entity_id: input_boolean.cristina_commuting state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.cristina_commuting - service: automation.turn_on entity_id: automation.cristina_is_not_commuting - id: cristina_is_not_commuting alias: Cristina is Not Commuting initial_state: false trigger: - platform: state entity_id: input_boolean.cristina_home to: 'on' condition: - condition: state entity_id: input_boolean.cristina_commuting state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.cristina_commuting - service: automation.turn_off entity_id: automation.cristina_is_not_commuting - id: cristina_wake_up alias: Cristina wake up initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.cristina_sleeping to: 'off' for: minutes: 2 - platform: state entity_id: input_select.cristina_sleep_state to: Awake - platform: state entity_id: input_select.cristina_sleep_state to: Just Got Up for: minutes: 2 condition: - condition: state entity_id: binary_sensor.cristina_sleeping state: 'off' - condition: state entity_id: input_boolean.cristina_home state: 'on' - condition: state entity_id: input_boolean.cristina_in_bed state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.cristina_in_bed - service: input_boolean.turn_on entity_id: input_boolean.cristina_is_awake - id: turn_on_dark_outside alias: Turn on Dark Outside mode: single trigger: - platform: sun event: sunset - platform: sun event: sunset offset: 00:10:00 - platform: numeric_state entity_id: sun.sun attribute: elevation below: 4.0 - platform: numeric_state entity_id: sensor.tempest_illuminance below: 30 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.dark_outside state: 'off' - condition: numeric_state entity_id: sun.sun attribute: elevation below: 4.0 - condition: numeric_state entity_id: sensor.tempest_illuminance below: 30 action: - service: input_boolean.turn_on entity_id: input_boolean.dark_outside - id: turn_off_dark_outside alias: Turn off Dark Outside mode: single trigger: - platform: sun event: sunrise - platform: sun event: sunrise offset: -00:10:00 - platform: numeric_state entity_id: sun.sun attribute: elevation above: -4.0 - platform: numeric_state entity_id: sensor.tempest_illuminance above: 51 for: minutes: 2 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: numeric_state entity_id: sun.sun attribute: elevation above: -4.0 - condition: numeric_state entity_id: sensor.tempest_illuminance above: 31 action: - service: input_boolean.turn_off entity_id: input_boolean.dark_outside - id: dining_room_lights_off initial_state: true alias: Dining Room lights off trigger: - platform: state entity_id: input_select.dining_room to: 'Off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.dining_room_lights state: 'on' - condition: state entity_id: input_select.dining_room state: 'Off' action: - service: light.turn_off entity_id: light.dining_room_lights - id: dining_room_mode_auto initial_state: true alias: Dining Room mode Auto trigger: - platform: state entity_id: input_boolean.dining_room_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.dining_room'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.dining_room option: Auto - id: dining_room_mode_off initial_state: true alias: Dining Room mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.dining_room'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.dining_room option: 'Off' - id: dining_room_not_occupied initial_state: true alias: Dining Room not occupied trigger: - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''living_room'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 2 - platform: state entity_id: binary_sensor.dining_room_north_motion_sensor_motion to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.dining_room_north_motion_sensor_occupancy to: 'off' - platform: state entity_id: binary_sensor.dining_room_north_motion_sensor_occupancy to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.dining_room_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.guest_mode state: 'on' - condition: state entity_id: binary_sensor.dining_room_north_motion_sensor_occupancy state: 'off' for: minutes: 5 - condition: and conditions: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: binary_sensor.dining_room_north_motion_sensor_motion state: 'off' for: minutes: 5 - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''living_room'')|map(attribute=''name'')|list | length == 0 }}' action: - service: input_boolean.turn_off entity_id: input_boolean.dining_room_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.dining_room_lighting_automations - id: dining_room_occupied initial_state: true alias: Dining Room occupied trigger: - platform: state entity_id: binary_sensor.dining_room_north_motion_sensor_motion to: 'on' - platform: state entity_id: binary_sensor.dining_room_north_motion_sensor_occupancy to: 'on' - platform: state entity_id: light.dining_room_lights to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.dining_room_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''living_room'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: binary_sensor.dining_room_north_motion_sensor_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.dining_room_occupied - id: district_school_year_activate alias: District School Year - Activate mode: single trigger: - platform: time at: input_datetime.district_34_first_day_of_school - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: template value_template: "{{ \n states.input_datetime.district_34_first_day_of_school.attributes.timestamp\ \ < (now() | as_timestamp)\n and\n states.input_datetime.district_34_last_day_of_school.attributes.timestamp\ \ > (now() | as_timestamp)\n}}" action: - service: input_boolean.turn_on entity_id: input_boolean.district_school_year_active - service: automation.turn_on entity_id: - automation.primary_school_day_on - automation.primary_school_day_off - automation.nino_school_day_on - automation.nino_school_day_off - automation.school_departure_reminder - automation.school_day_reminder - id: district_school_year_deactivate alias: District School Year - Deactivate mode: single trigger: - platform: time at: input_datetime.district_34_last_day_of_school condition: - condition: state entity_id: input_boolean.district_school_year_active state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.district_school_year_active - service: automation.turn_off entity_id: - automation.primary_school_day_on - automation.primary_school_day_off - automation.school_departure_reminder - automation.school_day_reminder - id: doorbell_ring alias: Doorbell Ring mode: single triggers: - trigger: state entity_id: binary_sensor.front_door_camera_doorbell to: 'on' action: - action: script.activate_doorbell_chime data: {} - action: script.display_doorbell_snapshot_on_tv data: {} - action: script.general_notification data: title: Front Door message: Somebody is at the front door! devices: all priority: time-sensitive tag: doorbell-ring - id: door_left_open alias: Door Left Open mode: single initial_state: true triggers: - trigger: state entity_id: - binary_sensor.interior_garage_door - binary_sensor.front_door_status to: 'on' for: minutes: 5 - trigger: state entity_id: - binary_sensor.interior_garage_door - binary_sensor.front_door_status to: 'on' for: minutes: 10 - trigger: state entity_id: - binary_sensor.interior_garage_door - binary_sensor.front_door_status to: 'on' for: minutes: 15 - trigger: event event_type: timer.finished event_data: entity_id: timer.snooze_door_left_open_automation conditions: - condition: state entity_id: timer.snooze_door_left_open_automation state: idle - condition: or conditions: - condition: state entity_id: binary_sensor.interior_garage_door state: 'on' - condition: state entity_id: binary_sensor.front_door_status state: 'on' actions: - variables: action_snooze: '{{ ''SNOOZE_'' ~ context.id }}' - action: script.voice_announcement data: media_players: auto sound: police-whistle priority: high speech_message: '{{ trigger.from_state.attributes.friendly_name }} has been open for too long, please close the door!' - action: script.general_notification data: title: Exterior House Doors message: '{{ trigger.from_state.attributes.friendly_name }} has been open for too long, please close the door!' devices: all priority: time-sensitive tag: door-open actions: - action: '{{ action_snooze }}' title: Snooze 30 Minutes - wait_for_trigger: - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_snooze }}' timeout: minutes: 3 - if: - condition: template value_template: '{{ wait.trigger.event.data.action == action_snooze }}' then: - action: timer.start entity_id: timer.snooze_door_left_open_automation - id: driveway_front_camera_detections_animal alias: Driveway Front Camera Detections - Animal mode: single trigger: - platform: state entity_id: binary_sensor.driveway_front_camera_animal_detected to: 'on' variables: camera_name: Driveway Front Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_driveway_front_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.driveway_front_camera_detections_animal'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: animal camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: driveway_front_camera_detections_person alias: Driveway Front Camera Detections - Person mode: single triggers: - trigger: state entity_id: binary_sensor.driveway_front_camera_person_detected to: 'on' variables: camera_name: Driveway Front Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_driveway_front_camera_high conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.driveway_front_camera_detections_person'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: state entity_id: cover.garage_doors state: closed - condition: state entity_id: binary_sensor.garage_ble_occupancy state: 'off' for: minutes: 2 actions: - action: script.camera_detection_alert data: detection_type: person camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: driveway_front_camera_detections_vehicle alias: Driveway Front Camera Detections - Vehicle mode: single trigger: - platform: state entity_id: binary_sensor.driveway_front_camera_vehicle_detected to: 'on' variables: camera_name: Driveway Front Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_driveway_front_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.driveway_front_camera_detections_vehicle'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: vehicle camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: energy_prices_are_negative alias: Energy Prices Are Negative mode: single initial_state: true trigger: - platform: state entity_id: binary_sensor.energy_prices_are_negative to: 'on' action: - service: script.general_notification data: message: Energy prices are negative at {{ states.sensor.energy_price.state }}. Turn on everything!!! title: Energy Prices Are Negative devices: jk priority: time-sensitive tag: energy_prices_are_negative - id: entertainment_mode_activated initial_state: true alias: Entertainment Mode - Activated trigger: - platform: state entity_id: input_boolean.entertainment_mode to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: switch.turn_off entity_id: - switch.adaptive_lighting_foyer - switch.adaptive_lighting_kitchen - switch.adaptive_lighting_office - switch.adaptive_lighting_family_room - switch.adaptive_lighting_main_bedroom - service: input_boolean.turn_off entity_id: input_boolean.speech_notifications - service: automation.turn_on entity_id: automation.entertainment_mode_deactivated - id: entertainment_mode_deactivated initial_state: false alias: Entertainment Mode - Deactivated trigger: - platform: state entity_id: input_boolean.entertainment_mode to: 'off' - platform: state entity_id: input_boolean.house_occupied to: 'off' action: - service: switch.turn_on entity_id: - switch.adaptive_lighting_foyer - switch.adaptive_lighting_kitchen - switch.adaptive_lighting_office - switch.adaptive_lighting_family_room - switch.adaptive_lighting_main_bedroom - service: input_boolean.turn_on entity_id: input_boolean.speech_notifications - service: automation.turn_off entity_id: automation.entertainment_mode_deactivated - id: entertainment_mode_turn_off initial_state: false alias: Entertainment Mode - Turn Off trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: time at: '23:00:00' - platform: time at: '23:59:59' - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count below: 6 for: minutes: 10 condition: - condition: state entity_id: input_boolean.entertainment_mode state: 'on' - condition: numeric_state entity_id: sensor.indoor_bluetooth_device_count below: 6 action: - service: input_boolean.turn_off entity_id: input_boolean.entertainment_mode - service: automation.turn_off entity_id: automation.entertainment_mode_turn_off - id: entertainment_mode_turn_on initial_state: false alias: Entertainment Mode - Turn On trigger: - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 30 for: minutes: 1 - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 25 for: minutes: 5 - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 20 for: minutes: 10 - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 15 for: minutes: 10 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.entertainment_mode - service: automation.turn_on entity_id: automation.entertainment_mode_turn_off - service: script.general_notification data: title: Entertainment Mode message: Entertainment mode was trigger by {{state.sensor.indoor_bluetooth_device_count.state}} devices. devices: jk priority: passive tag: entertainment-mode-activated - id: family_room_arrival alias: Family room arrival initial_state: 'off' trigger: - platform: state entity_id: input_select.john_status to: Just Arrived - platform: state entity_id: input_select.cristina_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_speech_notifications_off initial_state: true alias: Family Room Speech Notifications Off trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.family_room_speech_notifications - id: family_room_lights_to_away initial_state: 'on' alias: Family room lights to away trigger: - platform: state entity_id: input_select.family_room 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.family_room state: Away - condition: and conditions: - condition: state entity_id: input_select.family_room state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: light.family_room_main_lights state: 'on' action: - service: light.turn_off entity_id: light.family_room_main_lights - id: family_room_lights_to_off initial_state: 'on' alias: Family room lights to off trigger: - platform: state entity_id: input_select.family_room to: 'Off' - platform: state entity_id: input_select.house to: 'Off' - platform: state entity_id: input_boolean.family_room_occupied to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.family_room state: 'Off' - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: and conditions: - condition: state entity_id: input_select.family_room state: Auto - condition: state entity_id: input_select.house state: 'Off' - condition: state entity_id: light.family_room_main_lights state: 'on' action: - service: light.turn_off entity_id: light.family_room_main_lights - id: family_room_lights_to_on initial_state: 'off' alias: Family room lights to On trigger: - platform: state entity_id: input_select.family_room 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.family_room state: 'On' - condition: and conditions: - condition: state entity_id: input_select.family_room state: Auto - condition: state entity_id: input_select.house state: 'On' - condition: state entity_id: light.family_room_main_lights state: 'off' action: - service: switch.turn_on entity_id: light.family_room_main_lights - id: family_room_mode_away initial_state: 'off' 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: input_boolean.house_occupied to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.family_room option: Away - id: family_room_mode_auto initial_state: true alias: Family Room Mode Auto trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.family_room'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.family_room option: Auto - id: family_room_not_occupied initial_state: 'on' alias: Family room not occupied trigger: - platform: state entity_id: binary_sensor.family_room_presence to: 'off' for: minutes: 3 - platform: state entity_id: binary_sensor.family_room_ble_occupancy to: 'off' for: minutes: 2 - platform: state entity_id: binary_sensor.family_room_motion_sensor to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.family_room_motion_sensor_occupancy to: 'off' - platform: state entity_id: binary_sensor.family_room_motion_sensor_occupancy to: 'off' for: minutes: 5 - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.family_room_motion_sensor_occupancy state: 'off' - condition: state entity_id: input_boolean.kitchen_occupied state: 'off' - condition: state entity_id: media_player.sony_bravia_tv state: 'off' - condition: state entity_id: binary_sensor.family_room_ble_occupancy state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.family_room_occupied - service: script.general_notification data: title: Family Room Logger message: The family room is NO LONGER occupied devices: jk priority: passive tag: family-room-not-occupied - id: family_room_occupied initial_state: 'on' alias: Family room occupied trigger: - platform: state entity_id: binary_sensor.family_room_motion_sensor_occupancy to: 'on' - platform: state entity_id: binary_sensor.family_room_motion_sensor to: 'on' - platform: state entity_id: device_tracker.family_room_tv to: home - platform: state entity_id: media_player.sony_bravia_tv to: playing - platform: state entity_id: media_player.sonos_family_room to: playing condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.family_room_ble_occupancy state: 'on' - condition: state entity_id: binary_sensor.family_room_motion_sensor_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.family_room_occupied - service: script.general_notification data: title: Family Room Logger message: The family room is occupied devices: jk priority: passive tag: family-room-occupied - id: family_room_mode_off initial_state: 'on' alias: Family Room Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.family_room'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.family_room option: 'Off' - id: family_room_mode_on initial_state: 'off' alias: Family room mode on trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'on' - platform: state entity_id: light.family_room_main_lights to: 'on' condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - 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: family_room_lights_sleep_mode_off initial_state: false alias: Family Room Lights Sleep Mode Off trigger: - platform: sun event: sunrise offset: 00:15:00 - platform: time at: 07:00:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: sun after: sunrise - condition: time after: 07:00:00 action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_family_room - service: automation.turn_off entity_id: automation.family_room_lights_sleep_mode_off - id: family_room_lights_sleep_mode_on initial_state: true alias: Family Room Lights Sleep Mode On trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: time at: '23:00:00' - platform: time at: 03:00:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunset - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '20:00:00' action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_family_room - service: automation.turn_on entity_id: automation.family_room_lights_sleep_mode_off - id: family_room_speech_notifications_on initial_state: true alias: Family Room Speech Notifications On trigger: - platform: state entity_id: input_boolean.family_room_occupied to: 'on' - platform: state entity_id: input_select.family_room to: Auto condition: - condition: state entity_id: input_boolean.family_room_occupied state: 'on' - condition: state entity_id: input_select.family_room state: Auto action: - service: input_boolean.turn_on entity_id: input_boolean.family_room_speech_notifications - id: family_room_turn_music_off initial_state: 'on' alias: Family room turn the music off trigger: - platform: state entity_id: input_select.family_room to: Away - platform: state entity_id: input_select.family_room to: 'Off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.family_room state: Away - condition: state entity_id: input_select.family_room state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.family_room state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: media_player.sonos_family_room state: playing action: - service: media_player.turn_off entity_id: media_player.sonos_family_room - id: family_room_turn_tv_off initial_state: 'on' alias: Family Room Turn the TV Off trigger: - platform: state entity_id: input_select.family_room to: 'Off' - platform: state entity_id: input_boolean.family_room_occupied to: 'off' condition: - condition: state entity_id: input_select.family_room state: 'Off' - condition: state entity_id: media_player.sony_bravia_tv state: 'on' action: - service: media_player.turn_off entity_id: media_player.sony_bravia_tv - id: family_room_turn_tv_off initial_state: 'off' alias: Family room turn the TV off trigger: - platform: state entity_id: input_select.family_room to: Away - platform: state entity_id: input_select.family_room to: 'Off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.family_room state: Away - condition: state entity_id: input_select.family_room state: 'Off' - condition: and conditions: - condition: state entity_id: input_select.family_room state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: media_player.sonos_family_room state: playing action: - service: media_player.turn_off entity_id: media_player.sony_bravia_tv - id: fire_alarm_trigger alias: Fire Alarm - Triggered mode: single triggers: - trigger: state entity_id: binary_sensor.smoke_detector from: 'off' to: 'on' actions: - action: script.fire_alarm_alert data: {} - id: foyer_lights_days_off initial_state: true alias: Foyer Lights Day Off trigger: - platform: state entity_id: input_boolean.bad_weather to: 'off' for: minutes: 5 - platform: numeric_state entity_id: sensor.tempest_illuminance above: 250 for: minutes: 3 - platform: numeric_state entity_id: sensor.tempest_illuminance above: 500 for: minutes: 3 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.foyer state: Auto - condition: state entity_id: sun.sun state: above_horizon - condition: time before: '18:00:00' - condition: or conditions: - condition: state entity_id: light.foyer_chandelier state: 'on' action: - service: light.turn_off entity_id: light.foyer_chandelier - id: foyer_lights_days_on initial_state: true alias: Foyer Lights Day On trigger: - platform: state entity_id: input_boolean.bad_weather to: 'on' for: minutes: 1 - platform: numeric_state entity_id: sensor.tempest_illuminance below: 40 for: minutes: 5 - platform: numeric_state entity_id: sensor.foyer_motion_illuminance below: 5 for: minutes: 5 - platform: sun event: sunrise condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.foyer state: Auto - condition: numeric_state entity_id: sensor.foyer_motion_illuminance below: 5 - condition: or conditions: - condition: state entity_id: light.foyer_chandelier state: 'off' action: - service: light.turn_on entity_id: light.foyer_chandelier - id: foyer_lights_nightlight initial_state: true alias: Foyer Lights Nightlight triggers: - trigger: sun event: sunset offset: -00:30:00 - trigger: state entity_id: input_boolean.dark_outside to: 'on' - trigger: numeric_state entity_id: sensor.tempest_illuminance below: 250 - trigger: time at: '18:00:00' - trigger: state entity_id: input_boolean.house_occupied to: 'on' conditions: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: numeric_state entity_id: sensor.tempest_illuminance below: 250 - condition: or conditions: - condition: sun before: sunset before_offset: -00:30:00 - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '18:00:00' - condition: state entity_id: light.foyer_chandelier state: 'off' actions: - action: light.turn_on entity_id: light.foyer_chandelier - action: automation.turn_on entity_id: automation.foyer_lights_nightlight_off - id: foyer_lights_nightlight_off initial_state: true alias: Foyer Lights Nightlight Off trigger: - platform: sun event: sunrise - platform: state entity_id: input_boolean.dark_outside to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: sun after: sunrise - condition: state entity_id: input_boolean.dark_outside state: 'off' - condition: state entity_id: light.foyer_chandelier state: 'on' action: - service: light.turn_off entity_id: light.foyer_chandelier - service: automation.turn_off entity_id: automation.foyer_lights_nightlight_off - id: foyer_lights_sleep_mode_off initial_state: false alias: Foyer Lights Sleep Mode Off trigger: - platform: sun event: sunrise - platform: time at: 08:00:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunrise action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_foyer - id: foyer_lights_sleep_mode_on initial_state: false alias: Foyer Lights Sleep Mode On trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: time at: '23:00:00' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunset - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '20:00:00' action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_foyer - id: foyer_lights_to_dim initial_state: true alias: Foyer lights to dim trigger: - platform: state entity_id: input_select.foyer to: Dim condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.foyer state: Dim - condition: or conditions: - condition: state entity_id: light.foyer_chandelier state: 'off' action: - service: light.turn_on entity_id: light.foyer_chandelier - service: switch.turn_on entity_id: - switch.adaptive_lighting_foyer - switch.adaptive_lighting_sleep_mode_foyer - id: foyer_lights_to_off initial_state: true alias: Foyer lights to off trigger: - platform: state entity_id: input_select.foyer to: 'Off' - platform: state entity_id: input_select.foyer to: Away condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.foyer state: 'Off' - condition: state entity_id: input_select.foyer state: Away - condition: and conditions: - condition: state entity_id: input_select.foyer state: Auto - condition: state entity_id: input_select.house state: 'Off' - condition: state entity_id: light.foyer_lights state: 'on' action: - service: light.turn_off entity_id: light.foyer_lights data: transition: 1 - id: foyer_mode_auto initial_state: true alias: Foyer mode auto trigger: - platform: state entity_id: input_select.house to: Auto condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.foyer'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: input_select.select_option data: entity_id: input_select.foyer option: Auto - id: foyer_mode_away initial_state: true alias: Foyer mode away trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: template value_template: '{{ not is_state(''input_select.foyer'',''Away'') }}' action: - service: input_select.select_option data: entity_id: input_select.foyer option: Away - id: foyer_mode_dim initial_state: false alias: Foyer mode dim trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: sun event: sunset - platform: time at: '21:00:00' - platform: state entity_id: input_boolean.dark_outside to: 'on' - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: input_select.house from: Bedtime to: Auto condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ states(''input_select.house'') in (''Auto'', ''Bedtime'', ''Quiet'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: sun after: sunset - condition: template value_template: '{{ not is_state(''input_select.foyer'',''Dim'') }}' action: - service: input_select.select_option data: entity_id: input_select.foyer option: Dim - service: switch.turn_on entity_id: - switch.adaptive_lighting_foyer - switch.adaptive_lighting_sleep_mode_foyer - id: foyer_mode_off initial_state: true alias: Foyer mode off trigger: - platform: state entity_id: input_select.house to: bedtime - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.foyer'',''Off'') }}' action: - service: input_select.select_option data: entity_id: input_select.foyer option: 'Off' - id: front_door_auto_lock alias: Front Door - Auto Lock initial_state: true trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: state entity_id: lock.front_door state: unlocked action: - service: lock.lock entity_id: lock.front_door - id: front_door_camera_detections_animal alias: Front Door Camera Detections - Animal mode: single trigger: - platform: state entity_id: binary_sensor.front_door_camera_animal_detected to: 'on' variables: camera_name: Front Doorbell Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_front_door_camera_high_resolution_channel condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.front_door_camera_detections_animal'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: animal camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: front_door_camera_detections_person alias: Front Door Camera Detections - Person mode: single trigger: - platform: state entity_id: binary_sensor.front_door_camera_person_detected to: 'on' variables: camera_name: Front Doorbell Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_front_door_camera_high_resolution_channel condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.front_door_camera_detections_person'',''last_triggered''), 0) ) | int > 60 }}' action: - action: script.camera_detection_alert data: detection_type: person camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: front_door_camera_detections_vehicle alias: Front Door Camera Detections - Vehicle mode: single trigger: - platform: state entity_id: binary_sensor.front_door_camera_vehicle_detected to: 'on' variables: camera_name: Front Doorbell Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_front_door_camera_high_resolution_channel condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.front_door_camera_detections_vehicle'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: vehicle camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: front_door_lock_if_open_too_long alias: Front Door - Lock If Open Too Long initial_state: true trigger: - platform: state entity_id: lock.front_door to: unlocked for: minutes: 15 - platform: state entity_id: input_boolean.entertainment_mode from: 'on' to: 'off' condition: - condition: state entity_id: lock.front_door state: unlocked - condition: or conditions: - condition: state entity_id: input_boolean.entertainment_mode state: 'off' - condition: time after: '22:00:00' action: - service: lock.lock entity_id: lock.front_door - id: garage_doors_close_when_empty_house alias: Garage doors close when empty house initial_state: true trigger: - platform: state entity_id: input_select.garage to: Away - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: cover.garage_doors state: open - condition: state entity_id: input_select.garage state: Away action: - service: cover.close_cover entity_id: cover.garage_doors - service: script.general_notification data: title: Garage Doors Open! message: The house is empty or off so I'm closing the garage doors devices: jk priority: time-sensitive tag: garage-doors-closed-empty - id: garage_doors_close_when_home alias: Garage doors close when home initial_state: true triggers: - trigger: state entity_id: cover.garage_doors to: open for: minutes: 30 - trigger: state entity_id: input_select.garage to: 'Off' - trigger: state entity_id: input_boolean.bedtime to: 'on' - trigger: state entity_id: input_boolean.garage_occupied to: 'off' for: minutes: 20 - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: or conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: and conditions: - condition: state entity_id: input_boolean.garage_occupied state: 'off' for: minutes: 20 - condition: state entity_id: input_boolean.garage_override state: 'off' - condition: or conditions: - condition: state entity_id: cover.garage_door_1 state: open for: minutes: 30 - condition: state entity_id: cover.garage_door_2 state: open for: minutes: 30 - condition: state entity_id: cover.garage_door_3 state: open for: minutes: 30 - condition: state entity_id: binary_sensor.garage_ble_occupancy state: 'off' actions: - action: script.voice_announcement data: media_players: auto sound: police-whistle priority: high speech_message: '{{ expand(''cover.garage_doors'')|selectattr(''state'', ''eq'', ''open'')|map(attribute=''name'')|list|join('', '') }} has been open for a while but nobody is around so I''m automaticallly closing.' - action: script.general_notification data: title: Garage Doors Open! message: '{{ expand(''cover.garage_doors'')|selectattr(''state'', ''eq'', ''open'')|map(attribute=''name'')|list|join('', '') }} has been open for a while but nobody is around so I''m automaticallly closing.' devices: all priority: time-sensitive tag: garage-doors-open-home - action: cover.close_cover data: {} target: entity_id: cover.garage_doors - action: light.turn_off entity_id: light.garage_lights - id: garage_doors_lock_remotes alias: Garage Doors - Lock Remotes initial_state: true triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' for: minutes: 5 - trigger: homeassistant event: start - trigger: event event_type: automation_reloaded conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' actions: - action: lock.lock entity_id: - lock.garage_door_1_lock_remotes - lock.garage_door_2_lock_remotes - lock.garage_door_3_lock_remotes - id: garage_doors_unlock_remotes alias: Garage Doors - Unlock Remotes initial_state: true triggers: - trigger: state entity_id: input_boolean.bedtime to: 'off' for: minutes: 5 - trigger: state entity_id: - person.john_koht - person.cristina_falbo - person.mary_falbo - person.antoun_koht - person.sonia_koht - person.katia - person.joe_falbo to: home - trigger: homeassistant event: start - trigger: event event_type: automation_reloaded conditions: - condition: state entity_id: - lock.garage_door_1_lock_remotes - lock.garage_door_2_lock_remotes - lock.garage_door_3_lock_remotes match: any state: locked actions: - action: lock.unlock entity_id: - lock.garage_door_1_lock_remotes - lock.garage_door_2_lock_remotes - lock.garage_door_3_lock_remotes - id: garage_door_2_open_upon_arrival alias: Garage Door 2 - Open Upon Arrival initial_state: false trigger: - platform: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status to: Just Arrived - platform: state entity_id: input_boolean.audi_home to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.cristina_status_dropdown state: Just Arrived - condition: state entity_id: input_select.john_status state: Just Arrived - condition: and conditions: - condition: state entity_id: input_boolean.audi_home state: 'on' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.audi_home.last_updated)) | int < 120 }}' - condition: state entity_id: cover.garage_door_2 state: closed action: - service: notify.mobile_app_jk_2 data: title: Garage Door 2 message: Garage door three is opening upon somebody's arrival - id: garage_door_3_open_upon_arrival alias: Garage Door 3 - Open Upon Arrival initial_state: false triggers: - trigger: state entity_id: - input_select.john_status to: Just Arrived - trigger: state entity_id: input_boolean.bmw_home to: 'on' conditions: - condition: or conditions: - condition: state entity_id: input_select.cristina_status_dropdown state: Just Arrived - condition: state entity_id: input_select.john_status state: Just Arrived - condition: and conditions: - condition: state entity_id: input_boolean.bmw_home state: 'on' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.bmw_home.last_updated)) | int < 120 }}' - condition: state entity_id: cover.garage_door_3 state: closed actions: - action: cover.open_cover entity_id: cover.garage_door_3 - action: script.general_notification data: title: Garage Door 3 message: Garage door three is opening upon somebody's arrival devices: jk priority: active tag: garage-door-3-automation - id: garage_driveway_camera_detections_animal alias: Garage Driveway Camera Detections - Animal mode: single trigger: - platform: state entity_id: binary_sensor.garage_driveway_camera_animal_detected to: 'on' variables: camera_name: Garage Driveway Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_garage_driveway_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.garage_driveway_camera_detections_animal'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: animal camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: garage_driveway_camera_detections_person alias: Garage Driveway Camera Detections - Person mode: single triggers: - trigger: state entity_id: binary_sensor.garage_driveway_person_detected to: 'on' variables: camera_name: Garage Driveway Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_garage_driveway_camera_high conditions: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.garage_driveway_camera_detections_person'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: state entity_id: cover.garage_doors state: closed - condition: state entity_id: binary_sensor.garage_ble_occupancy state: 'off' for: minutes: 2 actions: - action: script.camera_detection_alert data: detection_type: person camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: garage_driveway_camera_detections_vehicle alias: Garage Driveway Camera Detections - Vehicle mode: single trigger: - platform: state entity_id: binary_sensor.garage_driveway_vehicle_detected to: 'on' variables: camera_name: Garage Driveway Camera nvr_id: '{{ config_entry_id(trigger.entity_id) }}' event_id: '{{ trigger.to_state.attributes.event_id }}' image_path: /api/unifiprotect/thumbnail/{{ nvr_id }}/{{ event_id }} proxy_camera: camera.camera_proxy_camera_garage_driveway_camera_high condition: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''automation.garage_driveway_camera_detections_vehicle'',''last_triggered''), 0) ) | int > 60 }}' - condition: state entity_id: input_boolean.camera_notifications state: 'on' action: - action: script.camera_detection_alert data: detection_type: vehicle camera_name: '{{ camera_name }}' image_path: '{{ image_path }}' proxy_camera: '{{ proxy_camera }}' - id: garage_entry_door_lock_at_bedtime alias: Garage Entry Door - Lock initial_state: true trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: state entity_id: lock.garage_entry_door state: unlocked action: - service: lock.lock entity_id: lock.garage_entry_door - id: garage_entry_door_unlock_upon_arrival alias: Garage Entry Door - Unlock Upon Arrival initial_state: true trigger: - platform: state entity_id: - person.john_koht - person.cristina_falbo - person.mary_falbo - person.antoun_koht - person.sonia_koht - person.katia - person.joe_falbo to: home - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: lock.garage_entry_door state: locked - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: lock.unlock entity_id: lock.garage_entry_door - id: garage_lights_motion_off initial_state: true alias: Garage lights motion off trigger: - platform: state entity_id: binary_sensor.garage_motion_sensor_motion to: 'off' for: minutes: 2 - platform: state entity_id: binary_sensor.garage_motion_sensor_occupancy to: 'off' - platform: state entity_id: input_boolean.garage_occupied to: 'off' condition: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: state entity_id: binary_sensor.garage_motion_sensor_occupancy state: 'off' - condition: state entity_id: light.garage_lights state: 'on' action: - service: light.turn_off entity_id: light.garage_lights - id: garage_lights_motion_on initial_state: true alias: Garage lights Motion On trigger: - platform: state entity_id: binary_sensor.garage_motion_sensor_motion to: 'on' - platform: state entity_id: binary_sensor.interior_garage_door to: 'on' - platform: state entity_id: cover.garage_doors to: open condition: - condition: state entity_id: input_select.garage state: Auto - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.garage_lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.garage_motion_sensor_illuminance below: 100 - condition: state entity_id: light.garage_lights state: 'off' action: - service: light.turn_on entity_id: light.garage_lights - service: input_boolean.turn_on entity_id: input_boolean.garage_lights_auto - id: garage_lights_off initial_state: true alias: Garage lights off trigger: - platform: state entity_id: input_select.garage to: 'Off' - platform: state entity_id: input_select.garage to: Away - platform: state entity_id: input_boolean.garage_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.garage state: 'Off' - condition: state entity_id: input_select.garage state: Away - condition: state entity_id: input_boolean.garage_occupied state: 'off' action: - service: light.turn_off entity_id: light.garage_lights - id: garage_lights_to_off initial_state: 'off' alias: Garage lights to off trigger: - platform: state entity_id: input_select.house to: 'Off' - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: light.garage_lights to: 'on' for: minutes: 30 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: light.garage_lights state: 'on' action: - service: light.turn_off entity_id: light.garage_lights - id: garage_lights_turned_off initial_state: true alias: Garage lights Manually Turned Off trigger: - platform: state entity_id: light.garage_lights to: 'off' condition: - condition: state entity_id: input_boolean.garage_lights_auto state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.garage_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.garage_lighting_automations - id: garage_mode_auto initial_state: true alias: Garage mode auto trigger: - platform: state entity_id: input_boolean.garage_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: binary_sensor.garage_motion_sensor_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.garage'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: input_select.select_option data: entity_id: input_select.garage option: Auto - id: garage_mode_away initial_state: true alias: Garage mode away trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away condition: - condition: template value_template: '{{ not is_state(''input_select.garage'',''Away'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away action: - service: input_select.select_option data: entity_id: input_select.garage option: Away - id: garage_mode_off initial_state: true alias: Garage mode off trigger: - platform: state entity_id: input_select.house to: Bedtime condition: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: state entity_id: input_select.house state: Bedtime action: - service: input_select.select_option data: entity_id: input_select.garage option: 'Off' - service: automation.turn_on entity_id: automation.garage_doors_close_when_home - id: garage_not_occupied initial_state: true alias: Garage not occupied triggers: - trigger: state entity_id: binary_sensor.garage_ble_occupancy to: 'off' for: minutes: 5 - trigger: state entity_id: binary_sensor.garage_motion_sensor_occupancy to: 'off' - trigger: state entity_id: cover.garage_doors to: closed - trigger: state entity_id: cover.garage_doors to: open for: minutes: 15 conditions: - condition: state entity_id: input_boolean.garage_occupied state: 'on' - condition: state entity_id: binary_sensor.garage_motion_sensor_occupancy state: 'off' - condition: state entity_id: binary_sensor.garage_ble_occupancy state: 'off' actions: - action: input_boolean.turn_off entity_id: input_boolean.garage_occupied - delay: 00:00:30 - action: input_boolean.turn_on entity_id: input_boolean.garage_lighting_automations - id: garage_occupied initial_state: true alias: Garage occupied triggers: - trigger: state entity_id: binary_sensor.garage_motion_sensor_motion to: 'on' - trigger: state entity_id: light.garage_lights to: 'on' - trigger: state entity_id: cover.garage_doors to: open - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: input_boolean.garage_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.garage_ble_occupancy state: 'off' for: minutes: 2 - condition: state entity_id: binary_sensor.garage_motion_sensor_occupancy state: 'on' - condition: state entity_id: light.garage_lights state: 'on' - condition: state entity_id: cover.garage_doors state: open actions: - action: input_boolean.turn_on entity_id: input_boolean.garage_occupied - id: garbage_day_is_today_reminder alias: Garbage Day Is Today Reminder mode: single initial_state: false trigger: - platform: time at: 06:30:00 - platform: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'on' for: minutes: 15 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.garbage_day state: 'on' - condition: time after: 06:00:00 before: 09:00:00 action: - wait_template: '{{ (as_timestamp(now()) - as_timestamp(states.binary_sensor.kitchen_motion_sensor_occupancy.last_changed)) | int >= 900 }}' timeout: 00:15:00 continue_on_timeout: false - wait_template: '{{ is_state(''binary_sensor.kitchen_motion_sensor_status'', ''on'') }}' timeout: 00:15:00 continue_on_timeout: false - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: message-alert speech_message: "{{\n [\n \"Hey there, today is garbage day, make sure the\ \ trash it out.\",\n \"Garbage day! Don't forget to take the trash out.\"\ \n ] | random\n}}" - id: garbage_day_is_tomorrow_reminder alias: Garbage Day Is Tomorrow Reminder mode: single trigger: - platform: time at: '17:30:00' - platform: time at: '20:00:00' - platform: state entity_id: input_boolean.house_occupied to: 'on' for: minutes: 15 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.tomorrow_is_garbage_day state: 'on' - condition: time after: '17:00:00' action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: message-alert priority: high speech_message: "{{\n [\n \"Tomorrow is garbage day. Don't forget to take\ \ out the trash.\",\n \"Hey fam, don't forget that tomorrow is garbage\ \ day.\"\n ] | random\n}}" - service: script.general_notification data: message: Tomorrow is garbage day reminder! title: Garbage Day devices: jk priority: time-sensitive tag: garbage-day - id: garbage_day_off alias: Garbage Day Off mode: single trigger: - platform: calendar event: end entity_id: calendar.garbage_day condition: - condition: state entity_id: input_boolean.garbage_day state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.garbage_day - service: automation.turn_off entity_id: automation.garbage_day_is_today_reminder - id: garbage_day_on alias: Garbage Day On mode: single trigger: - platform: calendar event: start entity_id: calendar.garbage_day condition: - condition: state entity_id: input_boolean.garbage_day state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.garbage_day - service: automation.turn_on entity_id: automation.garbage_day_is_today_reminder - id: notifications_activate_important_only alias: Notifications - Activate Important Only mode: single triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' - trigger: state entity_id: input_boolean.entertainment_mode to: 'on' - trigger: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: state entity_id: input_select.notification_level state: All action: - action: input_select.select_option data: entity_id: input_select.notification_level option: Important - id: gianlucas_bedroom_mode_auto initial_state: true alias: Gianluca's Bedroom - Mode Auto triggers: - trigger: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' - trigger: state entity_id: input_select.house to: Auto - trigger: state entity_id: input_boolean.house_occupied to: 'on' - trigger: state entity_id: input_boolean.gianluca_in_bed to: 'off' for: minutes: 10 - trigger: state entity_id: input_boolean.bedtime to: 'off' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.gianlucas_bedroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: - Auto - Quiet - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' - condition: state entity_id: input_boolean.gianluca_in_bed state: 'off' actions: - action: input_select.select_option data: entity_id: input_select.gianlucas_bedroom option: Auto - id: gianlucas_bedroom_mode_bedtime initial_state: true alias: Gianluca's Bedroom - Mode Bedtime triggers: - trigger: state entity_id: input_boolean.gianluca_in_bed to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.gianlucas_bedroom'',''Bedtime'') }}' action: - action: input_select.select_option data: entity_id: input_select.gianlucas_bedroom option: Bedtime - id: gianlucas_bedroom_mode_off initial_state: true alias: Gianluca's Bedroom - Mode Off triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.house to: Away - trigger: homeassistant event: start - trigger: event event_type: automation_reloaded conditions: - condition: template value_template: '{{ not is_state(''input_select.gianlucas_bedroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away actions: - action: input_select.select_option data: entity_id: input_select.gianlucas_bedroom option: 'Off' - id: gianlucas_room_not_occupied initial_state: true alias: Gianluca's room not occupied triggers: - trigger: state entity_id: binary_sensor.gianlucas_door_sensor_status to: 'on' for: minutes: 5 - trigger: state entity_id: light.gianluca_bedroom_lights to: 'off' for: minutes: 3 - trigger: state entity_id: binary_sensor.gianluca_bed_occupied to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.gianlucas_door_sensor_status state: 'on' - condition: state entity_id: light.gianluca_bedroom_lights state: 'off' - condition: state entity_id: binary_sensor.gianluca_bed_occupied state: 'off' action: - action: input_boolean.turn_off entity_id: input_boolean.gianlucas_room_occupied - id: gianlucas_room_occupied initial_state: true alias: Gianluca's room occupied triggers: - trigger: state entity_id: binary_sensor.gianlucas_door_sensor_status to: 'off' - trigger: state entity_id: light.gianluca_bedroom_lights to: 'on' - trigger: state entity_id: binary_sensor.gianluca_bed_occupied to: 'on' conditions: - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.gianlucas_door_sensor_status state: 'off' - condition: state entity_id: light.gianluca_bedroom_lights state: 'on' - condition: state entity_id: binary_sensor.gianluca_bed_occupied state: 'on' actions: - action: input_boolean.turn_on entity_id: input_boolean.gianlucas_room_occupied - id: gianluca_bedroom_turn_off_purifier alias: Gianluca's Bedroom Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_boolean.gianlucas_room_occupied to: 'off' for: minutes: 30 actions: - action: fan.turn_off target: entity_id: fan.gianlucas_bedroom_air_purifier - id: gianluca_bed_awake alias: Gianluca Bed - Awake mode: single triggers: - trigger: state entity_id: input_select.gianluca_sleep_state to: Just Got Up for: minutes: 5 action: - action: input_select.select_option data: entity_id: input_select.gianluca_sleep_state option: Awake - action: input_boolean.turn_off entity_id: input_boolean.gianluca_in_bed - id: gianluca_bed_just_got_up alias: Gianluca Bed - Just Got Up mode: single triggers: - trigger: state entity_id: binary_sensor.gianluca_bed_occupied to: 'off' action: - action: input_select.select_option data: entity_id: input_select.gianluca_sleep_state option: Just Got Up - id: gianluca_bed_just_laid_down alias: Gianluca Bed - Just Laid Down mode: single triggers: - trigger: state entity_id: binary_sensor.gianluca_bed_occupied to: 'on' conditions: - condition: template value_template: '{{ not is_state(''input_select.gianluca_sleep_state'',''Sleep'') }}' action: - action: input_select.select_option data: entity_id: input_select.gianluca_sleep_state option: Just Laid Down - id: gianluca_bed_sleep alias: Gianluca Bed - Sleep mode: single triggers: - trigger: state entity_id: input_select.gianluca_sleep_state to: Just Laid Down for: minutes: 5 action: - action: input_select.select_option data: entity_id: input_select.gianluca_sleep_state option: Sleep - action: input_boolean.turn_on entity_id: input_boolean.gianluca_in_bed - id: gianluca_birthday_countdown_reminder alias: Gianluca Birthday Countdown Reminder mode: single initial_state: false trigger: - platform: time at: 07:05:00 - platform: time at: 07:35:00 - platform: time at: 08:05:00 - platform: time at: 08:35:00 - platform: time at: '18:05:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.gianluca_countdown_announced state: 'off' - condition: time after: 07:00:00 action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.gianluca_countdown_announced - choose: - conditions: - condition: template value_template: '{{ states.sensor.gianluca_days_to_birthday.state | int == 0 }}' sequence: - service: script.voice_announcement data: speech_message: Hey, Gianluca! Guess what? Today's your birthday! Happy Birthday!!! media_players: auto sound: success-trumpets priority: high - conditions: - condition: template value_template: '{{ states.sensor.gianluca_days_to_birthday.state | int == 1 }}' sequence: - service: script.voice_announcement data: speech_message: Gianluca! Guess what tomorrow is? You're birthday!!! Are you super excited to celebrate? media_players: auto sound: games-sfx priority: high default: - service: script.voice_announcement data: speech_message: "{{\n [\n \"Hey Gianluca! Guess what? There's \" ~ states.sensor.gianluca_days_to_birthday.state\ \ ~ \" days until your birthday!\",\n \"Gianluca! I'm so excited! You're\ \ birthday is in \" ~ states.sensor.gianluca_days_to_birthday.state ~ \"\ \ days! How exciting is that?\"\n ] | random\n}}" media_players: auto sound: games-sfx priority: high - id: gianluca_birthday_daily_reset alias: Gianluca Birthday Daily Reset mode: single initial_state: false trigger: - platform: time at: 00:00:05 condition: - condition: state entity_id: input_boolean.gianluca_countdown_to_birthday state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.gianluca_countdown_announced - id: gianluca_countdown_to_birthday_turn_off alias: Gianluca Countdown to Birthday - Turn Off mode: single initial_state: false trigger: - platform: time at: 00:00:01 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: numeric_state entity_id: sensor.gianluca_days_to_birthday above: 15 below: 0 action: - service: input_boolean.turn_off entity_id: input_boolean.gianluca_countdown_to_birthday - service: automation.turn_off entity_id: - automation.gianluca_countdown_to_birthday_turn_off - automation.gianluca_birthday_countdown_reminder - automation.gianluca_birthday_daily_reset - service: automation.turn_on entity_id: automation.gianluca_countdown_to_birthday_turn_on - id: gianluca_countdown_to_birthday_turn_on alias: Gianluca Countdown to Birthday - Turn On mode: single initial_state: true trigger: - platform: time at: 00:00:01 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: numeric_state entity_id: sensor.gianluca_days_to_birthday below: 16 action: - service: input_boolean.turn_on entity_id: input_boolean.gianluca_countdown_to_birthday - service: automation.turn_on entity_id: - automation.gianluca_countdown_to_birthday_turn_off - automation.gianluca_birthday_countdown_reminder - automation.gianluca_birthday_daily_reset - service: automation.turn_off entity_id: automation.gianluca_countdown_to_birthday_turn_on - id: gianluca_heater_off alias: Gianluca heater off initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.gianlucas_door_sensor_status to: 'on' for: minutes: 1 - platform: template value_template: '{{ (states.sensor.gianluca_bedroom_awair_temperature.state | float) > 71.5 }}' - platform: template value_template: '{{ (states.sensor.gianlucas_door_sensor_temperature.state | float) > 72.7 }}' - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'off' condition: - condition: or conditions: - condition: template value_template: '{{ (states.sensor.gianluca_bedroom_awair_temperature.state | float) >= 71.0 }}' - condition: template value_template: '{{ (states.sensor.gianlucas_door_sensor_temperature.state | float) >= 72.1 }}' - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' - condition: state entity_id: light.hue_smart_plug_1 state: 'on' action: - service: light.turn_off entity_id: light.hue_smart_plug_1 - id: gianluca_heater_on alias: Gianluca heater on initial_state: 'on' trigger: - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' - platform: state entity_id: group.gianlucas_room_lights to: 'off' - platform: numeric_state entity_id: sensor.gianluca_bedroom_awair_temperature below: 69 - platform: template value_template: '{{ (states.sensor.gianlucas_door_sensor_temperature.state | float) < 69.5 }}' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: or conditions: - condition: template value_template: '{{ (states.sensor.gianluca_bedroom_awair_temperature.state | float) <= 70 }}' - condition: template value_template: '{{ (states.sensor.gianlucas_door_sensor_temperature.state | float) <= 71.0 }}' action: - service: light.turn_on entity_id: light.hue_smart_plug_1 - id: gianluca_heater_turn_on_upon_arrival alias: Gianluca Heater - Turn On Upon Arrival initial_state: true trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: group.family from: not_home to: home - platform: state entity_id: - person.cristina_falbo - person.john_koht to: Just Arrived condition: - condition: or conditions: - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.house_occupied.last_updated)) | int < 300 }}' - condition: and conditions: - condition: state entity_id: group.family state: home - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.group.familiy.last_updated)) | int < 300 }}' - condition: state entity_id: - person.cristina_falbo - person.john_koht state: Just Arrived - condition: template value_template: '{{ (states.sensor.gianluca_bedroom_awair_temperature.state | float) < 69.5 }}' - condition: time after: '18:30:00' action: - service: light.turn_on entity_id: light.hue_smart_plug_1 - id: gianluca_bedroom_lights_off initial_state: true alias: Gianluca Bedroom - Lights Off trigger: - platform: state entity_id: input_select.gianlucas_bedroom to: 'Off' - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.gianlucas_bedroom state: 'Off' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' action: - service: light.turn_off entity_id: light.gianluca_bedroom_lights - id: gianluca_nap_time alias: Gianluca nap time initial_state: 'off' trigger: - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' for: minutes: 3 - platform: state entity_id: group.gianlucas_room_lights to: 'off' - platform: state entity_id: binary_sensor.gianlucas_door_sensor_status to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: state entity_id: binary_sensor.gianlucas_door_sensor_status state: 'off' - condition: state entity_id: input_boolean.quiet_mode state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.quiet_mode - service: script.voice_announcement data: media_players: auto sound: harp-flourish priority: low speech_message: "{{\n [\n \"Shhh...Gianluca is going to sleep.\",\n \"\ Quiet time, Gianluca is going to nap!\",\n \"Pardon the interruption but\ \ Gianluca is going to sleep, please be quiet.\",\n \"Attention! Quiet\ \ mode has been enabled for Gianluca's nap.\"\n ] | random\n}}" - id: gianluca_nap_time_ended alias: Gianluca nap time ended initial_state: 'off' trigger: - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'off' - platform: state entity_id: group.gianlucas_room_lights to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.gianlucas_door_sensor_status state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' - condition: state entity_id: input_boolean.quiet_mode state: 'on' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.quiet_mode - id: gianluca_bedroom_air_quality_detections alias: Gianluca's Bedroom Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.gianluca_bedroom_air_quality - trigger: state entity_id: input_select.gianlucas_bedroom to: Bedtime - trigger: state entity_id: input_boolean.gianlucas_room_occupied conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.gianlucas_bedroom_air_purifier aqi_state: '{{ states.sensor.gianluca_bedroom_air_quality.state }}' room_state: '{{ states.input_select.gianlucas_bedroom.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: gianluca_room_temperature_alert alias: Gianluca Room Temperature Alert initial_state: 'off' trigger: - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' for: minutes: 5 - platform: numeric_state entity_id: - sensor.gianluca_bedroom_awair_temperature - sensor.gianlucas_door_sensor_temperature above: 78 for: minutes: 1 - platform: numeric_state entity_id: - sensor.gianluca_bedroom_awair_temperature - sensor.gianlucas_door_sensor_temperature below: 67 for: minutes: 1 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: or conditions: - condition: numeric_state entity_id: - sensor.gianluca_bedroom_awair_temperature - sensor.gianlucas_door_sensor_temperature below: 67 - condition: numeric_state entity_id: - sensor.gianluca_bedroom_awair_temperature - sensor.gianlucas_door_sensor_temperature above: 78 action: - service: script.voice_announcement data: media_players: auto speech_message: "{% set temp = states.sensor.gianluca_bedroom_awair_temperature.state\ \ %} {% set door_temp = states.sensor.gianlucas_door_sensor_temperature.state\ \ %} {% set low = temp if temp < door_temp else door_temp %} {% set high =\ \ temp if temp > door_temp else door_temp %}\n{% if (low | float) <= 67 %}\n\ \ \"Attention, Gianluca's room is too cold at {{low}} degrees!\"\n{% else\ \ %}\n \"Attention, Gianluca's room is too hot at {{high}} degrees!\"\n{%\ \ endif %}" - id: gianluca_school_day_off alias: Gianluca School Day Off mode: single trigger: - platform: time at: '23:59:00' condition: - condition: state entity_id: input_boolean.gianluca_school_day state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.gianluca_school_day - service: automation.turn_off entity_id: - automation.gianluca_school_day_reminder - automation.gianluca_school_departure_reminder - automation.gianluca_school_pickup_reminder - id: gianluca_school_day_on alias: Gianluca School Day On mode: single trigger: - platform: time at: 00:00:01 - platform: state entity_id: binary_sensor.gianluca_is_today_school_day to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: binary_sensor.gianluca_is_today_school_day state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.gianluca_school_day - service: automation.turn_on entity_id: - automation.gianluca_school_day_reminder - automation.gianluca_school_departure_reminder - automation.gianluca_school_pickup_reminder - id: gianluca_school_pickup_reminder alias: Gianluca School Pickup Reminder mode: single initial_state: true trigger: - platform: calendar event: end entity_id: calendar.gianluca_school offset: -00:20:00 condition: - condition: state entity_id: input_boolean.gianluca_school_day state: 'on' - condition: template value_template: '{{ ''reminder'' not in (trigger.calendar_event.summary | lower) }}' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime priority: high speech_message: "{% set event = trigger.calendar_event.summary | lower %}\n\ {% if \"school day\" in event %}\n {% set label = \"school\" %}\n{% else\ \ %}\n {% set label = event %}\n{% endif %}\n{{\n [\n label ~ \" is done!\ \ Time to pick up Gianluca!\",\n \"Hey there! It's time to pickup Gianluca\ \ from \" ~ label,\n \"Dont forget to pick up Gianluca from \" ~ label,\n\ \ \"Quick reminder that \" ~ label ~ \" is almost over, time to pick Gianluca\ \ up.\"\n ] | random\n}}" - service: notify.ios_family data: message: School will be over soon, it's time to pick up Gianluca from school. title: Gianluca's school is ending soon - id: gianluca_school_reminder_notification alias: Gianluca School Reminder Notification mode: single initial_state: true trigger: - platform: calendar event: start entity_id: calendar.gianluca_school condition: - condition: state entity_id: input_boolean.gianluca_school_day state: 'on' - condition: template value_template: '{{ ''reminder'' in trigger.calendar_event.summary }}' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime speech_message: '{{states.calendar.gianluca_school.attributes.message}}' - id: grocery_store_announcement alias: Grocery Store Announcement mode: single trigger: - platform: state entity_id: - person.john_koht - person.cristina_falbo to: - Marianos - Heinen's Grocery Store - Costco - Costco Glenview - Costco Niles for: minutes: 5 action: - service: script.voice_announcement data: media_players: auto sound: musical-flute speech_message: "{% set person = \"\" %} {% set ent = trigger.entity_id %}\n\ {% if ent == \"person.john_koht\" %}\n {% set person = \"Baba\" %}\n{% else\ \ %}\n {% set person = \"Mama\" %}\n{% endif %}\n{% set store = trigger.to_state.state\ \ %}\n\"Just a friendly reminder that {{person}} is at {{store}} in case you\ \ need anything!\"\n" - id: guest_announce_arrival alias: Guest Announce Arrival mode: queued initial_state: 'off' trigger: - platform: state entity_id: group.guests to: home condition: - condition: state entity_id: group.guests state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - delay: 00:02:00 - service: notify.mobile_app_jk_2 data: title: Guest Arrived! message: "{% for entity in trigger.to_state.attributes.entity_id %}\n {% if\ \ states(entity) == 'home' %}\n {{ state_attr(entity, 'friendly_name')\ \ }} has arrived\n {% endif %}\n{% endfor %}" - id: guest_announce_departure alias: Guest Announce Departure mode: queued initial_state: 'off' trigger: - platform: state entity_id: group.guests to: not_home condition: - condition: state entity_id: group.guests state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''script.voice_announcement'',''last_triggered'')) ) | int > 90 }}' action: - service: group.set data: object_id: arriving add_entities: '{{ trigger.to_state.entity_id }}' - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{% set person = expand('group.arriving')|map(attribute='name')|join('\ \ and ') %} {% set peoplecount = expand('group.arriving') | count %} {% if\ \ peoplecount == 1 %}\n {% set is_are = ' is ' %}\n{% else %}\n {% set is_are\ \ = ' are ' %}\n{% endif %}" - service: notify.mobile_app_jk_2 data: title: Guest Arrived! message: "{% for entity in trigger.to_state.attributes.entity_id %}\n {% if\ \ states(entity) == 'not_home' %}\n {{ state_attr(entity, 'friendly_name')\ \ }} has left\n {% endif %}\n{% endfor %}" - id: guest_mode_off initial_state: 'on' alias: Guest mode off trigger: - platform: state entity_id: group.guests from: home to: not_home for: seconds: 91 - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.guest_mode state: 'on' - condition: state entity_id: group.guests state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.guest_mode - if: - condition: template value_template: '{{ ( now().timestamp() - as_timestamp(state_attr(''script.voice_announcement'',''last_triggered'')) ) | int > 90 }}' then: - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{{\n [\n \"Arrivederci guests! Guest mode disabled..\"\ ,\n \"Guests are gone, it's just us now.\",\n \"Pardon the interruption\ \ but guest mode has been disabled.\",\n \"Attention! Guest mode is disabled.\"\ \n ] | random\n}}" - if: - condition: state entity_id: input_boolean.guest_mode_announced state: 'on' then: - service: input_boolean.turn_off entity_id: input_boolean.guest_mode_announced - id: guest_mode_on initial_state: 'on' alias: Guest mode on trigger: - platform: state entity_id: group.guests from: not_home to: home - platform: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 13 for: minutes: 5 - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: or conditions: - condition: state entity_id: group.guests state: home - condition: numeric_state entity_id: sensor.indoor_bluetooth_device_count above: 13 action: - service: input_boolean.turn_on entity_id: input_boolean.guest_mode - delay: 00:02:00 - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{{\n [\n \"Guest mode has been enabled.\",\n \"Guests\ \ have arrived, act accordingly.\",\n \"You're not alone. Guest mode enabled.\"\ ,\n \"Pardon the interruption, but you have guests.\",\n \"Attention!\ \ Guest mode has been enabled.\"\n ] | random\n}}" - id: halloween_lights_turn_on alias: Halloween Lights - Turn On mode: single trigger: - platform: homeassistant event: start - platform: time at: 08:00:00 condition: - condition: state entity_id: input_boolean.halloween_season_active state: 'on' - condition: state entity_id: - switch.front_door_smart_plug_1 - switch.front_door_smart_plug_2 - switch.front_left_smart_plug_2 state: 'off' action: - action: switch.turn_on entity_id: - switch.front_door_smart_plug_1 - switch.front_door_smart_plug_2 - switch.front_left_smart_plug_2 - id: halloween_lights_turn_off alias: Halloween Lights - Turn Off mode: single trigger: - platform: homeassistant event: start - platform: time at: '22:00:00' - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: - switch.front_door_smart_plug_1 - switch.front_door_smart_plug_2 - switch.front_left_smart_plug_2 state: 'on' action: - action: switch.turn_off entity_id: - switch.front_door_smart_plug_1 - switch.front_door_smart_plug_2 - switch.front_left_smart_plug_2 - id: hourly_dong alias: Hourly Dong mode: single trigger: - platform: time at: 07:00:00 - platform: time at: 08:00:00 - platform: time at: 09:00:00 - platform: time at: '10:00:00' - platform: time at: '11:00:00' - platform: time at: '12:00:00' - platform: time at: '15:00:00' - platform: time at: '16:00:00' - platform: time at: '17:00:00' - platform: time at: '18:00:00' - platform: time at: '19:00:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.house state: Auto - condition: state entity_id: input_boolean.speech_notifications state: 'on' - condition: state entity_id: binary_sensor.announceable_rooms_occupied state: 'on' action: - alias: Sound File variables: media_players: "{% set media_players = [] %} {# Check which rooms are occupied\ \ and if speech notifications are turned #} {# on for them. If so, add them\ \ to an array of announceable rooms #} {% if states.input_boolean.office_occupied.state\ \ == \"on\" and states.input_boolean.office_speech_notifications.state ==\ \ \"on\" %}\n {% set media_players = media_players + [\"media_player.sonos_office\"\ ] %}\n{% endif %}{% if states.input_boolean.family_room_occupied.state ==\ \ \"on\" and states.input_boolean.family_room_speech_notifications.state ==\ \ \"on\" %}\n {% set media_players = media_players + [\"media_player.sonos_family_room\"\ ] %}\n{% endif %}{% if states.input_boolean.kitchen_occupied.state == \"on\"\ \ and states.input_boolean.kitchen_speech_notifications.state == \"on\" %}\n\ \ {% set media_players = media_players + [\"media_player.sonos_kitchen\"\ ] %}\n{% endif %}{% if states.input_boolean.playroom_occupied.state == \"\ on\" %}\n {% set media_players = media_players + [\"media_player.sonos_playroom\"\ ] %}\n{% endif %}{% if states.input_boolean.dining_room_occupied.state ==\ \ \"on\" %}\n {% set media_players = media_players + [\"media_player.sonos_living_room\"\ ] %}\n{% endif %} {{ media_players}}" primary_player: '{{media_players | first}}' sound_file: /local/sounds/dong.mp3 sound_file_length: 4 sound_file_volume: "{% if states.input_boolean.quiet_mode.state == \"on\" %}\n\ \ 25\n{% elif now().strftime('%H')|int > 8 and now().strftime('%H')|int <\ \ 20 %}\n 50\n{% else %}\n 35\n{% endif %}" - service: script.announcement_engine data: sound_file: '{{sound_file}}' sound_length: '{{sound_file_length}}' sound_volume: '{{sound_file_volume}}' media_players: '{{ media_players}}' - id: house_mode_auto alias: House mode auto initial_state: 'on' trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: input_boolean.quiet_mode to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - choose: - conditions: - condition: state entity_id: input_boolean.vacation_mode state: 'on' sequence: - action: input_select.select_option data: entity_id: input_select.house option: Vacation default: - action: input_select.select_option data: entity_id: input_select.house option: Auto - service: select.select_option data: entity_id: select.front_door_camera_doorbell_text option: WELCOME! - if: - alias: If speech notifications are off condition: state entity_id: input_boolean.speech_notifications state: 'off' then: - service: input_boolean.turn_on entity_id: input_boolean.speech_notifications - id: house_mode_away alias: House mode away initial_state: 'on' trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.house option: Away - service: select.select_option data: entity_id: select.front_door_camera_doorbell_text option: DO NOT DISTURB - service: script.general_notification data: title: Away Mode message: Nobody is home so away mode has been activated! devices: jk priority: passive tag: house-mode-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 - service: select.select_option data: entity_id: select.front_door_camera_doorbell_text option: DO NOT DISTURB - id: house_mode_quiet alias: House mode quiet initial_state: 'on' trigger: - platform: state entity_id: input_boolean.quiet_mode to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.house option: Quiet - service: select.select_option data: entity_id: select.front_door_camera_doorbell_text option: SHHH…KIDS SLEEPING - if: - alias: It's an afternoon nap condition: time after: '12:00:00' before: '15:00:00' then: - service: input_boolean.turn_off entity_id: input_boolean.speech_notifications - id: house_mode_quiet_off alias: House mode quiet off initial_state: 'off' trigger: - platform: state entity_id: input_boolean.quiet_mode to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.house option: Auto - id: house_mode_vacation alias: House Mode Vacation initial_state: 'on' trigger: - platform: state entity_id: input_boolean.vacation_mode to: 'on' - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_boolean.vacation_mode state: 'on' action: - service: input_select.select_option data: entity_id: input_select.house option: Vacation - service: select.select_option data: entity_id: select.front_door_camera_doorbell_text option: Please do not disturb! - id: house_not_occupied alias: House not occupied initial_state: 'on' triggers: - trigger: state entity_id: group.all_people to: not_home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: group.all_people state: not_home actions: - action: input_boolean.turn_off entity_id: input_boolean.house_occupied - id: jido_announce_arrival alias: Jido Presence - Announce Arrival mode: queued initial_state: true triggers: - trigger: state entity_id: person.antoun_koht from: not_home to: home conditions: - condition: state entity_id: person.antoun_koht state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: jido announcement_type: arrival - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - action: input_boolean.turn_on entity_id: input_boolean.guest_mode_announced - id: jido_announce_departure alias: Jido Presence - Announce Departure mode: queued initial_state: true triggers: - trigger: state entity_id: person.antoun_koht from: home conditions: - condition: state entity_id: person.antoun_koht state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: jido announcement_type: departure - id: jido_is_away alias: Jido Presence - Away initial_state: true triggers: - trigger: state entity_id: person.antoun_koht to: not_home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: not conditions: - condition: state entity_id: input_select.jido_status state: Just Left - or: - condition: state entity_id: person.antoun_koht state: not_home - condition: state entity_id: device_tracker.antoun_iphone_detect state: not_home actions: - action: input_boolean.turn_off entity_id: input_boolean.jido_home - id: jido_is_home initial_state: true alias: Jido Presence - Home triggers: - trigger: state entity_id: person.antoun_koht to: home - trigger: state entity_id: device_tracker.antoun_iphone_detect to: home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: person.antoun_koht state: home actions: - action: input_boolean.turn_on entity_id: input_boolean.jido_home - id: jido_presence_just_arrived alias: Jido Presence - Just Arrived mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.jido_home to: 'on' actions: - action: input_select.select_option data: entity_id: input_select.jido_status option: '{{ ''Home'' if states.input_select.jido_status.state else ''Just Arrived'' }}' - id: jido_presence_home alias: Jido Presence - Home mode: single initial_state: true triggers: - trigger: state entity_id: input_select.jido_status to: Just Arrived for: minutes: 5 - trigger: state entity_id: input_select.jido_status from: Just Left to: Just Arrived actions: - action: input_select.select_option data: entity_id: input_select.jido_status option: Home - id: jido_presence_just_left alias: Jido Presence - Just Left mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.jido_home to: 'off' actions: - action: input_select.select_option data: entity_id: input_select.jido_status option: Just Left - id: jido_presence_away alias: Jido Presence - Away mode: single initial_state: true triggers: - trigger: state entity_id: input_select.jido_status to: Just Left for: minutes: 5 actions: - action: input_select.select_option data: entity_id: input_select.jido_status option: Away - id: joe_announce_arrival alias: Joe Announce Arrival mode: queued initial_state: true triggers: - trigger: state entity_id: person.joe_falbo from: not_home to: home conditions: - condition: state entity_id: person.joe_falbo state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - action: script.person_announcement data: person: joe announcement_type: arrival - id: joe_announce_departure alias: Joe Announce Departure mode: queued initial_state: true triggers: - trigger: state entity_id: input_boolean.joe_home to: 'off' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: joe announcement_type: departure - id: joe_away alias: Joe away initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.joe_presence to: 'off' - platform: state entity_id: person.joe_falbo to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: not conditions: - condition: state entity_id: input_select.joe_status_dropdown state: Just Left - condition: or conditions: - condition: state entity_id: binary_sensor.joe_presence state: 'off' - condition: state entity_id: person.joe_falbo state: not_home action: - service: script.turn_on entity_id: script.joe_away - id: joe_home initial_state: 'on' alias: Joe Home trigger: - platform: state entity_id: binary_sensor.joe_presence to: 'on' - platform: state entity_id: person.joe_falbo to: home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.joe_home state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.joe_presence state: 'on' - condition: state entity_id: person.joe_falbo state: home action: - service: script.turn_on entity_id: script.joe_home - id: john_announce_arrival alias: John Announce Arrival mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_select.john_status from: Away to: Just Arrived - platform: state entity_id: input_select.john_status from: Extended Away to: Just Arrived condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - action: script.person_announcement data: person: john announcement_type: arrival - id: john_announce_departure alias: John Announce Departure mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_boolean.john_home to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - action: script.person_announcement data: person: john announcement_type: departure - id: john_arrived_glenview_station alias: John Arrived at Glenview Station initial_state: false trigger: - platform: zone entity_id: person.john_koht zone: zone.glenview_train_station event: enter condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.john_commuting state: 'on' action: - service: automation.turn_off entity_id: - automation.john_departed_union_station - automation.john_passing_morton_grove_station - automation.john_arrived_at_glenview_station - id: john_arrived_union_station alias: John Arrived at Union Station initial_state: true trigger: - platform: zone entity_id: person.john_koht zone: zone.union_station event: enter condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: state entity_id: person.john_koht state: Union Station - condition: time before: '12:00:00' action: - service: automation.turn_on entity_id: - automation.john_departed_union_station - automation.john_passing_morton_grove_station - automation.john_arrived_at_glenview_station - service: script.voice_announcement data: media_players: auto sound: arcade priority: normal speech_message: "{{\n [\n \"Attention! Baba just arrived at Union Station.\"\ ,\n \"Pardon the interruption, just wanted to let you know Baba's train\ \ arrived downtown.\"\n ] | random\n}}" - id: john_arrived_work alias: John arrived at work initial_state: 'on' trigger: - platform: zone entity_id: person.john_koht zone: zone.john_s_work event: enter - platform: numeric_state entity_id: sensor.lpl_john_distance below: 0.25 condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: time before: '10:30:00' - condition: state entity_id: person.john_koht state: John's Work action: - service: script.voice_announcement data: media_players: auto sound: one-chime speech_message: "{{\n [\n \"Attention! Baba arrived at the office.\",\n\ \ \"Pardon the interruption, but Baba just go to work.\",\n \"Just a\ \ friendly note that Baba has arrived at the office.\"\n ] | random\n}}" - id: john_away alias: John away initial_state: 'on' trigger: - platform: zone entity_id: - person.john_koht - device_tracker.jk_iphone_14 zone: zone.home event: leave - platform: state entity_id: binary_sensor.john_presence to: 'off' - platform: state entity_id: - person.john_koht - device_tracker.jk_iphone_14 to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: template value_template: '{{ not is_state(''input_select.john_status'', ''Just Arrived'') }}' - condition: state entity_id: input_boolean.john_home state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.john_presence state: 'off' - condition: state entity_id: person.john_koht state: not_home - condition: state entity_id: device_tracker.jk_iphone_14 state: not_home action: - service: script.turn_on data: entity_id: script.john_away - id: john_bed_awake alias: John Bed - Awake mode: single trigger: - platform: state entity_id: input_select.john_sleep_state to: Just Got Up for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.john_sleep_state option: Awake - id: john_bed_just_got_up alias: John Bed - Just Got Up mode: single trigger: - platform: state entity_id: binary_sensor.john_bed_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.john_sleep_state option: Just Got Up - id: john_bed_just_laid_down alias: John Bed - Just Laid Down mode: single trigger: - platform: state entity_id: binary_sensor.john_bed_occupied to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.john_sleep_state'',''Sleep'') }}' action: - service: input_select.select_option data: entity_id: input_select.john_sleep_state option: Just Laid Down - id: john_bed_sleep alias: John Bed - Sleep mode: single trigger: - platform: state entity_id: input_select.john_sleep_state to: Just Laid Down for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.john_sleep_state option: Sleep - id: john_daily_report alias: John Daily Report mode: single triggers: - trigger: time at: 08:05:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: person.john_koht state: home action: - wait_template: '{{ is_state(''binary_sensor.johns_macbook_pro_active'', ''on'') }}' timeout: 02:30:00 continue_on_timeout: false - delay: 00:02:00 - if: - condition: and conditions: - condition: state entity_id: input_boolean.john_dnd state: 'off' - condition: state entity_id: binary_sensor.john_laptop_audio_active state: 'off' then: - action: script.john_daily_update_announcement - id: john_departed_union_station alias: John Departed Union Station initial_state: false trigger: - platform: zone entity_id: person.john_koht zone: zone.union_station event: leave condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.john_commuting state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: arcade priority: normal speech_message: "{{\n [\n \"Attention! Baba just left Union Station.\",\n\ \ \"Pardon the interruption, but Baba is on the train headed home.\",\n\ \ \"Just a friendly note that Baba's train has departed.\"\n ] | random\n\ }}" - id: john_departed_work alias: John has left the office initial_state: 'on' trigger: - platform: zone entity_id: person.john_koht zone: zone.john_s_work event: leave condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: time after: '15:00:00' - condition: state entity_id: sensor.lpl_john_direction_of_travel state: away_from action: - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{{\n [\n \"Attention! Baba left the office.\",\n \"\ Pardon the interruption, but Baba just left work.\",\n \"Just a friendly\ \ note that Baba is headed home from the office.\"\n ] | random\n}}" - id: john_dnd_off initial_state: true alias: John DnD Off mode: queued triggers: - trigger: state entity_id: binary_sensor.john_laptop_camera_active to: 'off' for: seconds: 30 - trigger: state entity_id: binary_sensor.john_laptop_audio_active to: 'off' for: seconds: 30 conditions: - condition: state entity_id: binary_sensor.john_laptop_camera_active state: 'off' - condition: state entity_id: binary_sensor.john_laptop_audio_active state: 'off' - condition: state entity_id: input_boolean.john_dnd state: 'on' actions: - action: input_boolean.turn_off entity_id: input_boolean.john_dnd - id: john_dnd_on initial_state: true alias: John DnD On mode: queued triggers: - trigger: state entity_id: binary_sensor.john_laptop_camera_active to: 'on' for: seconds: 3 - trigger: state entity_id: binary_sensor.john_laptop_audio_active to: 'on' for: seconds: 5 conditions: - condition: or conditions: - condition: state entity_id: binary_sensor.john_laptop_camera_active state: 'on' - condition: state entity_id: binary_sensor.john_laptop_audio_active state: 'on' - condition: state entity_id: input_boolean.john_dnd state: 'off' actions: - action: input_boolean.turn_on entity_id: input_boolean.john_dnd - action: script.general_notification data: message: John's DnD mode has been turned on title: John DnD On! devices: jk priority: passive tag: john-dnd - id: john_extended_away alias: John - Extended Away mode: parallel initial_state: 'on' trigger: - platform: state entity_id: input_select.john_status to: Away for: hours: 24 - platform: numeric_state entity_id: sensor.home_john_distance above: 200 action: - service: input_select.select_option target: entity_id: input_select.john_status data: option: Extended Away - id: john_home initial_state: 'on' alias: John Home trigger: - platform: state entity_id: binary_sensor.john_presence to: 'on' - platform: zone entity_id: - person.john_koht - device_tracker.jk_iphone_14 zone: zone.home event: enter - platform: state entity_id: - person.john_koht - device_tracker.jk_iphone_14 to: home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: binary_sensor.john_presence state: 'on' - condition: state entity_id: person.john_koht state: home - condition: state entity_id: device_tracker.jk_iphone_14 state: home - condition: zone entity_id: - person.john_koht - device_tracker.jk_iphone_14 zone: zone.home - condition: state entity_id: input_boolean.john_home state: 'off' action: - service: script.turn_on entity_id: script.john_home - id: john_in_bed alias: John in Bed initial_state: true trigger: - platform: state entity_id: binary_sensor.john_in_bed to: 'on' for: minutes: 1 - platform: state entity_id: input_select.john_sleep_state to: Sleep - platform: state entity_id: input_select.john_sleep_state to: Just Laid Down condition: - condition: state entity_id: binary_sensor.john_in_bed state: 'on' - condition: or conditions: - condition: state entity_id: input_select.john_sleep_state state: Sleep - condition: state entity_id: input_select.john_sleep_state state: Just Laid Down - condition: state entity_id: input_boolean.john_home state: 'on' - condition: state entity_id: binary_sensor.bedtime state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.john_is_in_bed - service: input_boolean.turn_off entity_id: input_boolean.john_is_awake - id: john_in_bed alias: John in bed initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.john_in_bed to: 'on' for: minutes: 1 - platform: state entity_id: binary_sensor.bedtime to: 'on' - platform: state entity_id: binary_sensor.main_bedroom_door_sensor_status to: 'off' condition: - condition: state entity_id: binary_sensor.john_in_bed state: 'on' for: minutes: 1 - condition: state entity_id: input_boolean.john_home state: 'on' - condition: state entity_id: binary_sensor.bedtime state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.john_is_in_bed - service: input_boolean.turn_off entity_id: input_boolean.john_is_awake - id: john_is_commuting alias: John is Commuting initial_state: true trigger: - platform: state entity_id: person.john_koht to: - Morton Grove Train Station - Union Station for: minutes: 2 condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: state entity_id: input_boolean.john_commuting state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.john_commuting - service: automation.turn_on entity_id: automation.john_is_not_commuting - id: john_is_not_commuting alias: John is Not Commuting initial_state: false trigger: - platform: state entity_id: input_boolean.john_home to: 'on' condition: - condition: state entity_id: input_boolean.john_commuting state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.john_commuting - service: automation.turn_off entity_id: automation.john_is_not_commuting - id: john_passing_morton_grove_station alias: John Passing Morton Grove Station initial_state: false trigger: - platform: zone entity_id: person.john_koht zone: zone.morton_grove_train_station event: enter condition: - condition: state entity_id: input_boolean.john_home state: 'off' - condition: time after: '12:00:00' - condition: state entity_id: input_boolean.john_commuting state: 'on' action: - service: script.voice_announcement data: speech_message: "{{\n [\n \"Attention! Baba's train will arrive within five\ \ minutes!\",\n \"Pardon the interruption, but Baba's train is arriving\ \ soon.\",\n \"Just a friendly note that Baba's train is arriving shortly.\"\ \n ] | random\n}}" media_players: auto sound: arcade priority: normal expires_in: 3 - id: john_personal_time_off initial_state: true alias: John Personal Time Off mode: queued trigger: - platform: calendar event: end entity_id: calendar.john_block - platform: calendar event: end entity_id: calendar.john_gsd - platform: calendar event: end entity_id: calendar.john_ooo - platform: time at: 00:00:00 condition: - condition: state entity_id: input_boolean.john_personal_time state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.john_personal_time - service: script.general_notification data: message: John personal time turned OFF title: John Personal Time devices: jk priority: passive tag: john-personal-time - id: john_person_time_on initial_state: true alias: John Personal Time On mode: queued trigger: - platform: calendar event: start entity_id: calendar.john_block offset: 00:00:05 - platform: calendar event: start entity_id: calendar.john_gsd offset: 00:00:05 - platform: calendar event: start entity_id: calendar.john_ooo offset: 00:00:05 condition: - condition: state entity_id: input_boolean.john_personal_time state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.john_personal_time - service: script.general_notification data: message: John personal time turned ON title: John Personal Time devices: jk priority: passive tag: john-personal-time - id: john_wake_up alias: John wake up initial_state: true trigger: - platform: state entity_id: binary_sensor.john_in_bed to: 'off' - platform: state entity_id: binary_sensor.john_in_bed to: 'off' for: minutes: 3 - platform: state entity_id: binary_sensor.main_bedroom_door_sensor_status to: 'on' - platform: state entity_id: input_select.john_sleep_state to: Just Got Up for: minutes: 2 - platform: state entity_id: input_select.john_sleep_state to: Awake condition: - condition: state entity_id: binary_sensor.john_in_bed state: 'off' - condition: or conditions: - condition: state entity_id: input_select.john_sleep_state state: Awake - condition: state entity_id: input_select.john_sleep_state state: Just Got Up - condition: state entity_id: input_boolean.john_home state: 'on' - condition: state entity_id: input_boolean.john_is_in_bed state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.john_is_in_bed - service: input_boolean.turn_on entity_id: input_boolean.john_is_awake - id: john_work_call_off initial_state: true alias: John Work Call Off mode: queued trigger: - platform: calendar event: end entity_id: calendar.john_launchpadlab_com offset: 00:00:10 - platform: state entity_id: binary_sensor.work_hours to: 'off' condition: - condition: state entity_id: input_boolean.john_work_call state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.john_work_call - service: script.general_notification data: message: John's work call has been turned OFF title: John Work Call OFF devices: jk priority: passive tag: john-work-call - id: john_work_call_on initial_state: true alias: John Work Call On mode: queued trigger: - platform: calendar event: start entity_id: calendar.john_launchpadlab_com condition: - condition: template value_template: '{% set summary = trigger.calendar_event.summary | lower %} {{ false if "gsd" in summary or "ooo" in summary or "block" in summary else true }}' action: - service: input_boolean.turn_on entity_id: input_boolean.john_work_call - service: script.general_notification data: message: John's work call has been turned ON title: John Work Call ON devices: jk priority: passive tag: john-work-call - service: automation.turn_off entity_id: automation.john_work_call_off - delay: 00:01:00 - service: automation.turn_on entity_id: automation.john_work_call_off - id: jr_suite_air_quality_detections alias: Jr. Suite Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.jr_suite_air_quality conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.jr_suite_air_purifier aqi_state: '{{ states.sensor.jr_suite_air_quality.state }}' room_state: '{{ states.input_select.jr_suite.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: jr_suite_lights_off initial_state: true alias: Jr. Suite lights off trigger: - platform: state entity_id: input_select.jr_suite to: 'Off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.jr_suite_bedroom_main_lights state: 'on' - condition: state entity_id: input_select.jr_suite state: 'Off' action: - service: light.turn_off entity_id: light.jr_suite_bedroom_main_lights - id: jr_suite_mode_auto initial_state: true alias: Jr. Suite mode Auto trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.jr_suite'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.jr_suite option: Auto - id: jr_suite_mode_off initial_state: true alias: Jr. Suite mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.jr_suite'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.jr_suite option: 'Off' - id: jr_suite_turn_off_purifier alias: Jr. Suite Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.jr_suite to: 'Off' actions: - action: fan.turn_off target: entity_id: fan.jr_suite_air_purifier - id: katie_announce_arrival alias: Katia Announce Arrival mode: queued initial_state: true trigger: - platform: state entity_id: person.katia from: not_home to: home condition: - condition: state entity_id: person.katia state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - service: script.voice_announcement data: media_players: auto speech_message: "{{\n [\n \"Guess who's here? It's Katia!\",\n \"Ciao!\ \ Katia is in the house!\",\n \"Pardon the interruption but Katia is here!\"\ ,\n \"Knock knock. Who's there? Katia is here!\"\n ] | random\n}}" - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - service: input_boolean.turn_on entity_id: input_boolean.guest_mode_announced - id: katia_announce_departure alias: Katia Announce Departure mode: queued initial_state: true trigger: - platform: state entity_id: person.katia from: home to: not_home condition: - condition: state entity_id: person.katia state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 action: - service: script.voice_announcement data: media_players: auto speech_message: "{{\n [\n \"Katia has left the house!\",\n \"Arrivederci,\ \ Katia! See you next time!\",\n \"Ciao! Katia just left!\",\n \"Pardon\ \ the interruption but Katia just left\",\n ] | random\n}}" - id: katie_bluetooth_detected_not_home alias: Katia Bluetooth Detected Not Home mode: queued initial_state: false trigger: - platform: template value_template: '{{ states.sensor.katia_room_presence.state == ''not_home''}}' for: minutes: 10 condition: - condition: template value_template: '{{ states.sensor.katia_room_presence.state == ''not_home''}}' - condition: state entity_id: person.katia state: home action: - service: device_tracker.see data: dev_id: katias_iphone location_name: not_home - id: katia_is_away alias: Katia Is Away initial_state: true triggers: - trigger: state entity_id: person.katia to: not_home - trigger: state entity_id: binary_sensor.katia_presence to: 'off' - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: not conditions: - condition: state entity_id: input_select.katia_status state: Just Left - or: - condition: state entity_id: person.katia state: not_home - condition: state entity_id: binary_sensor.katia_presence state: 'off' actions: - action: input_boolean.turn_off entity_id: input_boolean.katia_home - id: katia_is_home initial_state: true alias: Katia is Home triggers: - trigger: state entity_id: person.katia to: home - trigger: state entity_id: binary_sensor.katia_presence to: 'on' - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: input_boolean.katia_home state: 'off' - or: - condition: state entity_id: person.katia state: home - condition: state entity_id: binary_sensor.katia_presence state: 'on' actions: - action: input_boolean.turn_on entity_id: input_boolean.katia_home - id: katia_open_garage_upon_arrival alias: Katia Open Garage Upon Arrival mode: queued initial_state: false trigger: - platform: state entity_id: input_boolean.katia_home to: 'on' for: seconds: 3 condition: - condition: state entity_id: person.katia state: home - condition: state entity_id: input_select.katia_status state: Just Arrived - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.binary_sensor.garage_driveway_camera_motion.last_updated)) | int < 60 }}' - condition: state entity_id: cover.garage_doors state: closed action: - service: cover.open_cover entity_id: cover.garage_door_2 - id: katie_bluetooth_detected_home alias: Katia Bluetooth Detected Home mode: queued initial_state: true trigger: - platform: template value_template: '{{ states.sensor.katia_room_presence.state != ''not_home''}}' condition: - condition: template value_template: '{{ states.sensor.katia_room_presence.state != ''not_home''}}' - condition: state entity_id: person.katia state: not_home action: - service: device_tracker.see data: dev_id: katias_iphone location_name: home - id: kids_activity_tomorrow_reminder alias: Kids Activity Tomorrow Reminder mode: single trigger: - platform: time at: '17:30:00' - platform: time at: '20:00:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.kids_activity_tomorrow state: 'on' - condition: time after: '17:00:00' action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: flute-cell-phone-alert priority: normal speech_message: "{% set time = states.calendar.kohbocal.attributes.start_time\ \ | as_datetime | as_local %} {% set time = time.timestamp() | timestamp_custom('%-I:%M\ \ %p') %}\n{{ \n [\n \"Hey fam, quick calendar reminder for tomorrow:\ \ \" ~ states.calendar.kohbocal.attributes.message ~ \" at \" ~ time,\n \ \ \"Just a quick reminder that \" ~ states.calendar.kohbocal.attributes.message\ \ ~ \" is tomorrow at \" ~ time,\n \"Heads up for tomorrow: \" ~ states.calendar.kohbocal.attributes.message\ \ ~ \" at \" ~ time\n ] | random\n}}" - service: script.general_notification data: message: '{% set time = states.calendar.kohbocal.attributes.start_time | as_datetime | as_local %} {% set time = time.timestamp() | timestamp_custom(''%-I:%M %p'') %} "Tomorrow is {{states.calendar.kohbocal.attributes.message}} at {{time}}"' title: Kids Activity Reminder devices: jk priority: active tag: kids-activity-reminder - id: kids_activity_upcoming_reminder alias: Kids Activity Upcoming Reminder mode: single trigger: - platform: calendar event: start entity_id: calendar.kohbocal offset: -01:00:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: flute-cell-phone-alert priority: normal speech_message: "{{ \n [\n \"Hey fam, \" ~ states.calendar.kohbocal.attributes.message\ \ ~ \" is in one hour.\",\n \"Just a quick reminder that \" ~ states.calendar.kohbocal.attributes.message\ \ ~ \" is in one hour.\",\n \"Pardon the interruption, I just wanted to\ \ remind you that \" ~ states.calendar.kohbocal.attributes.message ~ \" is\ \ in one hour.\"\n ] | random\n}}" - id: kitchen_air_quality_detections alias: Kitchen Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.kitchen_air_quality - trigger: state entity_id: input_boolean.kitchen_occupied conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.kitchen_air_purifier aqi_state: '{{ states.sensor.kitchen_air_quality.state }}' room_state: '{{ states.input_select.kitchen.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: kitchen_fridge_door_left_open initial_state: true alias: Kitchen Fridge Door Left Open trigger: - platform: state entity_id: binary_sensor.kitchen_fridge_door_status to: 'on' for: minutes: 2 condition: - condition: state entity_id: binary_sensor.kitchen_fridge_door_status state: 'on' action: - alias: Repeat until the fridge door is closed repeat: sequence: - service: script.voice_announcement data: media_players: auto sound: police-whistle speech_message: Fridge is open - delay: 00:01:00 until: - condition: state entity_id: binary_sensor.kitchen_fridge_door_status state: 'off' - id: kitchen_lights_day_off initial_state: true alias: Kitchen Lights Day Off trigger: - platform: numeric_state entity_id: sensor.kitchen_illuminance above: 450 for: minutes: 10 - platform: numeric_state entity_id: sensor.kitchen_illuminance above: 500 for: minutes: 5 - platform: numeric_state entity_id: sensor.kitchen_illuminance above: 600 for: minutes: 3 - platform: state entity_id: input_boolean.bad_weather to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'on' - condition: state entity_id: input_select.kitchen state: Auto - condition: state entity_id: input_boolean.bad_weather state: 'off' - condition: state entity_id: input_boolean.kitchen_lights_auto state: 'on' - condition: state entity_id: sun.sun state: above_horizon - condition: and conditions: - condition: numeric_state entity_id: sensor.kitchen_motion_sensor_table_illuminance above: 450 - condition: numeric_state entity_id: sensor.kitchen_motion_sensor_main_illuminance above: 450 - condition: state entity_id: light.kitchen_lights state: 'on' action: - service: light.turn_off entity_id: light.kitchen_lights - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lights_auto - id: kitchen_lights_day_on initial_state: true alias: Kitchen Lights Day On trigger: - platform: numeric_state entity_id: sensor.kitchen_illuminance below: 150 for: minutes: 2 - platform: numeric_state entity_id: sensor.kitchen_illuminance below: 125 for: minutes: 5 - platform: numeric_state entity_id: sensor.kitchen_illuminance below: 100 for: minutes: 10 - platform: state entity_id: input_boolean.bad_weather to: 'on' - platform: state entity_id: input_boolean.lighting_automations to: 'on' - platform: state entity_id: input_boolean.kitchen_lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'on' - condition: state entity_id: input_select.kitchen state: Auto - condition: state entity_id: input_boolean.kitchen_occupied state: 'on' - condition: state entity_id: sun.sun state: above_horizon - condition: numeric_state entity_id: sensor.kitchen_motion_sensor_main_illuminance below: 150 - condition: state entity_id: light.kitchen_lights state: 'off' action: - service: light.turn_on entity_id: light.kitchen_lights data: transition: 5 - service: input_boolean.turn_on entity_id: input_boolean.kitchen_lights_auto - id: kitchen_lights_dim_motion_off initial_state: false alias: Kitchen Lights Dim Motion Off trigger: - platform: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'off' for: minutes: 3 - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.kitchen state: Dim - condition: or conditions: - condition: state entity_id: input_boolean.kitchen_lights_auto state: 'on' - condition: state entity_id: input_boolean.kitchen_occupied state: 'off' - condition: state entity_id: binary_sensor.kitchen_motion_sensor_status state: 'off' action: - service: light.turn_off entity_id: light.kitchen_lights data: brightness_pct: 5 transition: 1 - service: automation.turn_off entity_id: automation.kitchen_lights_dim_motion_off - id: kitchen_lights_dim_motion_on initial_state: false alias: Kitchen Lights Dim Motion On trigger: - platform: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'on' - condition: state entity_id: input_select.kitchen state: Dim - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: - light.kitchen_main_light_switch - light.kitchen_table_light_switch state: 'off' action: - service: light.turn_on entity_id: light.kitchen_lights data: brightness_pct: 40 transition: 0.5 - service: automation.turn_on entity_id: automation.kitchen_lights_dim_motion_off - service: input_boolean.turn_on entity_id: input_boolean.kitchen_lights_auto - id: kitchen_lights_manually_turned_on initial_state: true alias: Kitchen lights Manually Turned On trigger: - platform: state entity_id: light.kitchen_lights to: 'on' condition: - condition: template value_template: '{{ trigger.to_state.context.parent_id == none }}' action: - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lighting_automations - service: script.general_notification data: title: Kitchen Lights message: The kitchen lights have been manually turned ON. The parent id is {{trigger.to_state.context.parent_id}} and the user_id is {{trigger.to_state.context.user_id}}. devices: jk priority: passive tag: kitchen-lighting-automation - id: kitchen_lights_motion_on initial_state: true alias: Kitchen Lights Motion On trigger: - platform: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.kitchen state: Auto - condition: state entity_id: input_select.kitchen state: Dim - condition: or conditions: - condition: state entity_id: light.kitchen_main_light_switch state: 'off' - condition: state entity_id: light.kitchen_table_light_switch state: 'off' - condition: or conditions: - condition: numeric_state entity_id: sensor.kitchen_motion_sensor_main_illuminance below: 150 - condition: numeric_state entity_id: sensor.kitchen_motion_sensor_table_illuminance below: 150 action: - choose: - conditions: - condition: state entity_id: input_select.kitchen state: Auto sequence: - service: light.turn_on entity_id: light.kitchen_lights data: transition: 5 - conditions: - condition: state entity_id: input_select.kitchen state: Dim sequence: - service: light.turn_on entity_id: light.kitchen_lights data: brightness_pct: 35 transition: 1 - service: input_boolean.turn_on entity_id: input_boolean.kitchen_lights_auto - id: kitchen_lights_sleep_mode_off initial_state: false alias: Kitchen Lights Sleep Mode Off trigger: - platform: sun event: sunrise offset: 00:15:00 - platform: time at: 07:00:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: sun after: sunrise - condition: time after: 07:00:00 action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_kitchen - service: automation.turn_off entity_id: automation.kitchen_lights_sleep_mode_off - id: kitchen_lights_sleep_mode_on initial_state: true alias: Kitchen Lights Sleep Mode On trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: time at: '23:00:00' - platform: time at: 03:00:00 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunset - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '20:00:00' action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_kitchen - service: automation.turn_on entity_id: automation.kitchen_lights_sleep_mode_off - id: kitchen_lights_to_away initial_state: true alias: Kitchen lights to away trigger: - platform: state entity_id: input_select.kitchen 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.kitchen state: Away - condition: and conditions: - condition: state entity_id: input_select.kitchen state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: light.kitchen_lights state: 'on' action: - service: light.turn_off entity_id: light.kitchen_lights - id: kitchen_lights_to_dim initial_state: false alias: Kitchen lights to Dim trigger: - platform: state entity_id: input_select.kitchen to: Dim - platform: state entity_id: input_select.house to: Dim condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.kitchen state: Dim - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: light.turn_on entity_id: light.kitchen_lights data: brightness_pct: 5 transition: 0.5 - id: kitchen_lights_to_off initial_state: true alias: Kitchen Lights to off trigger: - platform: state entity_id: input_select.kitchen to: 'Off' - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' for: minutes: 2 - 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_boolean.kitchen_lighting_automations state: 'on' - condition: and conditions: - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'off' - condition: template value_template: '{{ trigger.entity_id == ''input_boolean.kitchen_occupied'' }}' - condition: or conditions: - condition: state entity_id: input_select.kitchen state: 'Off' - condition: state entity_id: input_boolean.kitchen_occupied state: 'off' - condition: state entity_id: light.kitchen_lights state: 'on' action: - service: light.turn_off entity_id: light.kitchen_lights - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lights_auto - id: kitchen_lights_manually_turned_off initial_state: true alias: Kitchen lights Manually Turned Off trigger: - platform: state entity_id: light.kitchen_lights to: 'off' condition: - condition: state entity_id: input_boolean.kitchen_lights_auto state: 'on' - condition: template value_template: '{{ trigger.to_state.context.parent_id == none }}' action: - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.kitchen_lighting_automations - service: script.general_notification data: title: Kitchen Lights message: The kitchen lights have been turned off. The parent id is {{trigger.to_state.context.parent_id}} and the user_id is {{trigger.to_state.context.user_id}}. devices: jk priority: passive tag: kitchen-lighting-automation - id: kitchen_mode_auto initial_state: true alias: Kitchen mode Auto trigger: - platform: state entity_id: input_boolean.kitchen_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.kitchen'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.kitchen option: Auto - id: kitchen_mode_dim initial_state: true alias: Kitchen Mode Dim trigger: - platform: state entity_id: binary_sensor.evening_chill to: 'on' - platform: state entity_id: media_player.sony_bravia_tv to: playing - platform: state entity_id: light.family_room_main_lights to: 'off' - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.kitchen_lighting_automations state: 'on' - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: state entity_id: sun.sun state: below_horizon - condition: state entity_id: binary_sensor.evening_chill state: 'on' - condition: template value_template: '{{ not is_state(''input_select.kitchen'',''Dim'') }}' - condition: state entity_id: input_boolean.kitchen_occupied state: 'off' - condition: state entity_id: media_player.sony_bravia_tv state: playing - condition: state entity_id: light.family_room_main_lights state: 'off' action: - service: input_select.select_option data: entity_id: input_select.kitchen option: Dim - id: kitchen_mode_off initial_state: true alias: Kitchen mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.kitchen'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.kitchen option: 'Off' - id: kitchen_not_occupied initial_state: true alias: Kitchen not occupied triggers: - trigger: state entity_id: binary_sensor.kitchen_ble_occupancy to: 'off' for: minutes: 2 - trigger: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'off' for: minutes: 5 - trigger: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'off' - trigger: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'off' for: minutes: 5 - trigger: state entity_id: binary_sensor.kitchen_presence_sensor to: 'off' conditions: - condition: state entity_id: input_boolean.kitchen_occupied state: 'on' - condition: state entity_id: binary_sensor.kitchen_presence_sensor state: 'off' - condition: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy state: 'off' for: minutes: 5 - condition: state entity_id: binary_sensor.kitchen_ble_occupancy state: 'off' actions: - action: input_boolean.turn_off entity_id: input_boolean.kitchen_occupied - alias: Wait 2 seconds delay: 2 - action: input_boolean.turn_on entity_id: input_boolean.kitchen_lighting_automations - id: kitchen_occupied initial_state: true alias: Kitchen occupied trigger: - platform: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'on' - platform: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'on' - platform: state entity_id: light.kitchen_lights to: 'on' - platform: state entity_id: binary_sensor.kitchen_presence_sensor to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.kitchen_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.kitchen_ble_occupancy state: 'on' - condition: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy state: 'on' - condition: state entity_id: binary_sensor.kitchen_presence_sensor state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.kitchen_occupied - id: kitchen_speech_notifications_off initial_state: true alias: Kitchen Speech Notifications Off trigger: - platform: state entity_id: input_boolean.kitchen_occupied to: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.kitchen_speech_notifications - id: kitchen_speech_notifications_on initial_state: true alias: Kitchen Speech Notifications On trigger: - platform: state entity_id: input_boolean.kitchen_occupied to: 'on' - platform: state entity_id: input_select.kitchen to: Auto condition: - condition: state entity_id: input_boolean.kitchen_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_select.kitchen state: Auto - condition: state entity_id: input_select.kitchen state: Dim action: - service: input_boolean.turn_on entity_id: input_boolean.kitchen_speech_notifications - id: kitchen_turn_off_purifier alias: Kitchen Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.kitchen to: 'Off' actions: - action: fan.turn_off target: entity_id: fan.kitchen_air_purifier - id: late_night_reminders alias: Late Night Reminders mode: restart trigger: - platform: time at: '21:00:00' - platform: state entity_id: media_player.sony_bravia_tv to: 'off' condition: - condition: time after: '21:00:00' - condition: or conditions: - condition: state entity_id: binary_sensor.kitchen_motion_sensor_main_motion_detection state: 'on' - condition: and conditions: - condition: state entity_id: media_player.sony_bravia_tv state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.media_player.sony_bravia_tv.last_updated)) | int < 360 }}' action: - wait_template: '{{ is_state(''binary_sensor.kitchen_motion_sensor_main_motion_detection'', ''on'') }}' timeout: 00:05:00 - alias: Wait 5 seconds delay: 5 - service: media_player.volume_set data: entity_id: media_player.john_s_echo_show volume_level: 0.25 - service: notify.alexa_media data: data: type: tts target: media_player.john_s_echo_show message: Hey there! Just wanted to remind you to run the dishwasher. Goodnight! - id: laundry_room_lights_motion_on initial_state: true alias: Laundry Room lights Motion On trigger: - platform: state entity_id: binary_sensor.laundry_room_motion_sensor_motion to: 'on' condition: - condition: state entity_id: input_select.laundry_room state: Auto - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.laundry_room_motion_sensor_illuminance below: 40 - condition: state entity_id: light.laundry_room_main_lights state: 'off' action: - service: light.turn_on entity_id: light.laundry_room_main_lights - service: input_boolean.turn_on entity_id: input_boolean.laundry_room_lights_auto - id: laundry_room_lights_off initial_state: true alias: Laundry Room lights off trigger: - platform: state entity_id: input_select.laundry_room to: 'Off' - platform: state entity_id: input_boolean.laundry_room_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.laundry_room_main_lights state: 'on' - condition: or conditions: - condition: state entity_id: input_select.laundry_room state: 'Off' - condition: state entity_id: input_boolean.laundry_room_occupied state: 'off' action: - service: light.turn_off entity_id: light.laundry_room_main_lights - service: input_boolean.turn_off entity_id: input_boolean.laundry_room_lights_auto - id: laundry_room_mode_auto initial_state: true alias: Laundry Room mode Auto trigger: - platform: state entity_id: input_boolean.laundry_room_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.laundry_room'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.laundry_room option: Auto - id: laundry_room_mode_off initial_state: true alias: Laundry Room mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.laundry_room'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.laundry_room option: 'Off' - id: laundry_room_not_occupied initial_state: true alias: Laundry Room not occupied trigger: - platform: state entity_id: binary_sensor.laundry_room_motion_sensor_motion to: 'off' for: minutes: 3 - platform: state entity_id: binary_sensor.laundry_room_motion_sensor_motion to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.laundry_room_motion_sensor_occupancy to: 'off' condition: - condition: state entity_id: input_boolean.laundry_room_occupied state: 'on' - condition: state entity_id: binary_sensor.laundry_room_motion_sensor_motion state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''mudroom'')|map(attribute=''name'')|list | length == 0 }}' action: - service: input_boolean.turn_off entity_id: input_boolean.laundry_room_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.laundry_room_lighting_automations - id: laundry_room_occupied initial_state: true alias: Laundry Room occupied trigger: - platform: state entity_id: binary_sensor.laundry_room_motion_sensor_motion to: 'on' - platform: state entity_id: switch.laundry_room_main_lights to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.laundry_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.laundry_room_motion_sensor_occupancy state: 'on' - condition: state entity_id: binary_sensor.laundry_room_motion_sensor_motion state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.laundry_room_occupied - id: main_bathroom_bedtime_motion_on initial_state: true alias: Main Bathroom Bedtime Motion On trigger: - platform: state entity_id: binary_sensor.main_bathroom_motion_sensor_status to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bathroom_lighting_automations state: 'on' - condition: state entity_id: input_select.main_bathroom state: Bedtime - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: numeric_state entity_id: sensor.main_bathroom_motion_sensor_illuminance below: 15 action: - service: light.turn_on entity_id: light.main_bathroom_vanity_lights data: brightness_pct: 5 transition: 0.5 - service: input_boolean.turn_on entity_id: input_boolean.main_bathroom_lights_auto - id: main_bathroom_lights_motion_on initial_state: true alias: Main bathroom lights motion on trigger: - platform: state entity_id: binary_sensor.main_bathroom_motion_sensor_status to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bathroom_lighting_automations state: 'on' - condition: state entity_id: input_select.main_bathroom state: Auto - condition: numeric_state entity_id: sensor.main_bathroom_motion_sensor_illuminance below: 80 - condition: state entity_id: light.main_bathroom_main_lights state: 'off' action: - service: light.turn_on entity_id: light.main_bathroom_main_lights - service: input_boolean.turn_on entity_id: input_boolean.main_bathroom_lights_auto - id: main_bathroom_lights_off initial_state: true alias: Main Bathroom - Lights Off trigger: - platform: state entity_id: input_select.main_bathroom to: 'Off' - platform: state entity_id: input_boolean.main_bathroom_occupied to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bathroom_lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'off' - condition: state entity_id: light.main_bathroom_lights state: 'on' action: - service: light.turn_off entity_id: light.main_bathroom_lights - id: main_bathroom_lights_turned_off initial_state: true alias: Main Bathroom lights Manually Turned Off trigger: - platform: state entity_id: light.main_bathroom_main_lights to: 'off' condition: - condition: state entity_id: input_boolean.main_bathroom_lights_auto state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.main_bathroom_lights_auto - id: main_bathroom_mode_auto initial_state: true alias: Main Bathroom mode auto triggers: - trigger: state entity_id: input_select.house to: Auto - trigger: state entity_id: input_boolean.main_bathroom_occupied to: 'off' - trigger: state entity_id: input_select.main_bathroom to: Wake for: minutes: 5 - trigger: state entity_id: input_select.main_bedroom to: Wake - trigger: state entity_id: input_select.main_bedroom to: Auto - trigger: time at: 00:07:00 - trigger: state entity_id: binary_sensor.bedtime to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_select.main_bathroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: template value_template: '{{ not is_state(''input_select.main_bedroom'',''Bedtime'') }}' actions: - action: input_select.select_option data: entity_id: input_select.main_bathroom option: Auto - action: automation.turn_off entity_id: automation.main_bathroom_bedtime_motion_on - action: automation.turn_on entity_id: automation.main_bathroom_lights_motion_on - action: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_main_bathroom - switch.adaptive_lighting_sleep_mode_main_bathroom_toilet - id: main_bathroom_mode_bedtime initial_state: true alias: Main Bathroom mode bedtime triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' - trigger: state entity_id: binary_sensor.bedtime to: 'on' - trigger: state entity_id: input_select.main_bedroom to: Bedtime conditions: - condition: template value_template: '{{ not is_state(''input_select.main_bathroom'',''Bedtime'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: input_select.main_bedroom state: Bedtime action: - action: input_select.select_option data: entity_id: input_select.main_bathroom option: Bedtime - choose: - conditions: - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'on' sequence: - wait_for_trigger: - trigger: state entity_id: input_boolean.main_bathroom_occupied to: 'off' timeout: minutes: 10 continue_on_timeout: true - action: script.turn_on entity_id: script.main_bathroom_activate_bedtime_lighting_mode default: - action: script.turn_on entity_id: script.main_bathroom_activate_bedtime_lighting_mode - id: main_bathroom_mode_off initial_state: true alias: Main Bathroom Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.main_bathroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away action: - service: input_select.select_option data: entity_id: input_select.main_bathroom option: 'Off' - id: main_bathroom_not_occupied initial_state: true alias: Main bathroom not occupied trigger: - platform: state entity_id: binary_sensor.main_bathroom_motion_sensor_occupancy to: 'off' - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''main_bathroom'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 2 - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' - platform: state entity_id: input_boolean.main_bathroom_shower_occupied to: 'off' condition: - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'on' - condition: state entity_id: binary_sensor.main_bathroom_motion_sensor_occupancy state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''main_bathroom'')|map(attribute=''name'')|list | length == 0 }}' - condition: state entity_id: input_boolean.main_bathroom_shower_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.main_bathroom_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.main_bathroom_lighting_automations - id: main_bathroom_occupied initial_state: true alias: Main bathroom occupied trigger: - platform: state entity_id: binary_sensor.main_bathroom_motion_sensor_status to: 'on' - platform: state entity_id: binary_sensor.main_bathroom_motion_sensor_occupancy to: 'on' - platform: state entity_id: binary_sensor.main_bathroom_door_sensor_status - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''main_bathroom'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: binary_sensor.main_bathroom_motion_sensor_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.main_bathroom_occupied - id: main_bathroom_shower_occupied alias: Main Bathroom Shower Occupied mode: single trigger: - platform: numeric_state entity_id: sensor.main_bathroom_humidity above: 60 - platform: template value_template: '{{ (states.sensor.main_bathroom_humidity.state | int) - (states.input_number.main_bathroom_initial_humidity.state | int) > 25 }}' - platform: template value_template: '{{ (states.sensor.main_bathroom_humidity.state | int) - (states.input_number.main_bathroom_initial_humidity.state | int) > 40 }}' condition: - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'on' - condition: template value_template: '{{ (states.sensor.main_bathroom_humidity.state | int) - (states.input_number.main_bathroom_initial_humidity.state | int) > 25 }}' action: - service: input_boolean.turn_on entity_id: input_boolean.main_bathroom_shower_occupied - id: main_bathroom_shower_not_occupied alias: Main Bathroom Shower Not Occupied mode: single trigger: - platform: numeric_state entity_id: sensor.main_bathroom_humidity below: 85 - platform: numeric_state entity_id: sensor.main_bathroom_humidity below: 75 - platform: numeric_state entity_id: sensor.main_bathroom_humidity below: 65 - platform: template value_template: '{{ (states.sensor.main_bathroom_humidity.state | int) - (states.input_number.main_bathroom_initial_humidity.state | int) < 23 }}' for: minutes: 4 condition: - condition: template value_template: '{{ (states.sensor.main_bathroom_humidity.state | int) - (states.input_number.main_bathroom_initial_humidity.state | int) < 25 }}' - condition: state entity_id: input_boolean.main_bathroom_shower_occupied state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.main_bathroom_shower_occupied - id: main_bathroom_set_initial_humidity alias: Main bathroom Set Initial Humidity mode: single trigger: - platform: state entity_id: input_boolean.main_bathroom_occupied to: 'on' action: - service: input_number.set_value data: entity_id: input_number.main_bathroom_initial_humidity value: '{{ states.sensor.main_bathroom_humidity.state }}' - id: main_bathroom_turn_off_outlets initial_state: true alias: Main Bathroom - Turn Off Outlets trigger: - platform: state entity_id: input_select.main_bathroom to: 'Off' - platform: state entity_id: input_boolean.main_bathroom_occupied to: 'off' condition: - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: switch.smart_plug_12_switch state: 'on' - condition: state entity_id: switch.smart_plug_13_switch state: 'on' action: - service: switch.turn_off entity_id: - switch.smart_plug_12_switch - switch.smart_plug_13_switch - id: main_bathroom_turn_on_outlets initial_state: true alias: Main Bathroom - Turn On Outlets trigger: - platform: state entity_id: input_boolean.main_bathroom_occupied to: 'on' action: - service: switch.turn_on entity_id: - switch.smart_plug_12_switch - switch.smart_plug_13_switch - id: main_bedroom_air_quality_detections alias: Main Bedroom Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.main_bedroom_air_quality - trigger: state entity_id: input_select.main_bedroom to: Bedtime - trigger: state entity_id: input_boolean.main_bedroom_occupied conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.main_bedroom_air_purifier aqi_state: '{{ states.sensor.main_bedroom_air_quality.state }}' room_state: '{{ states.input_select.main_bedroom.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: main_bedroom_john_night_light initial_state: true alias: Main bedroom night light for John trigger: - platform: state entity_id: binary_sensor.main_bedroom_motion_sensor_entry_motion to: 'on' - platform: state entity_id: binary_sensor.main_bedroom_door_sensor_status to: 'off' - platform: state entity_id: binary_sensor.main_bedroom_door_sensor_status to: 'on' condition: - condition: state entity_id: input_boolean.john_home state: 'on' - condition: state entity_id: light.hue_ambiance_lamp_1 state: 'off' - condition: or conditions: - condition: state entity_id: input_select.main_bedroom state: Auto - condition: state entity_id: input_select.main_bedroom state: Bedtime - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: numeric_state entity_id: sensor.main_bedroom_motion_sensor_entry_illuminance below: 40 - condition: state entity_id: light.main_bedroom_main_lights state: 'off' - condition: state entity_id: input_boolean.cristina_in_bed state: 'on' - condition: state entity_id: input_boolean.john_is_in_bed state: 'off' - condition: state entity_id: input_select.john_sleep_state state: Awake for: minutes: 10 - condition: state entity_id: binary_sensor.bedtime state: 'on' - condition: time after: '20:00:00' before: 05:00:00 action: - service: light.turn_on entity_id: light.hue_ambiance_lamp_1 data: brightness_pct: 30 transition: 0.5 - id: main_bedroom_john_night_light_off initial_state: true alias: Main bedroom night light for John - Turn Off triggers: - trigger: state entity_id: input_boolean.john_is_in_bed to: 'on' for: minutes: 10 - trigger: state entity_id: input_boolean.bedtime to: 'on' for: minutes: 5 - trigger: state entity_id: light.hue_ambiance_lamp_1 to: 'on' for: minutes: 10 conditions: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.main_bedroom state: Auto - condition: state entity_id: input_select.main_bedroom state: Bedtime - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: state entity_id: input_boolean.john_is_in_bed state: 'on' for: minutes: 10 actions: - action: light.turn_off entity_id: - light.hue_ambiance_lamp_1 - light.hue_ambiance_lamp_1_2 - id: main_bedroom_lights_day_on initial_state: true alias: Main bedroom lights day on trigger: - platform: numeric_state entity_id: - sensor.main_bedroom_motion_sensor_entry_illuminance - sensor.main_bedroom_motion_sensor_back_illuminance below: 150 for: minutes: 2 - platform: numeric_state entity_id: - sensor.main_bedroom_motion_sensor_entry_illuminance - sensor.main_bedroom_motion_sensor_back_illuminance below: 100 for: minutes: 5 - platform: numeric_state entity_id: - sensor.main_bedroom_motion_sensor_entry_illuminance - sensor.main_bedroom_motion_sensor_back_illuminance below: 100 for: minutes: 10 - platform: state entity_id: input_boolean.bad_weather to: 'on' - platform: state entity_id: input_boolean.lighting_automations to: 'on' - platform: state entity_id: input_boolean.main_bedroom_lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bedroom_lighting_automations state: 'on' - condition: state entity_id: input_select.main_bedroom state: Auto - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: numeric_state entity_id: sensor.main_bedroom_motion_sensor_entry_illuminance below: 150 - condition: state entity_id: light.main_bedroom_main_lights state: 'off' action: - service: light.turn_on target: entity_id: light.main_bedroom_main_lights data: transition: 5 - service: input_boolean.turn_on entity_id: input_boolean.main_bedroom_lights_auto - id: main_bedroom_lights_motion_on initial_state: true alias: Main bedroom lights motion on trigger: - platform: state entity_id: binary_sensor.main_bedroom_motion_sensor to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.main_bedroom_lighting_automations state: 'on' - condition: state entity_id: input_select.main_bedroom state: Auto - condition: numeric_state entity_id: sensor.main_bedroom_motion_sensor_entry_illuminance below: 80 - condition: state entity_id: light.main_bedroom_main_lights state: 'off' action: - service: light.turn_on target: entity_id: light.main_bedroom_main_lights data: transition: 5 - service: input_boolean.turn_on entity_id: input_boolean.main_bedroom_lights_auto - id: main_bedroom_lights_off initial_state: true alias: Main bedroom lights off trigger: - platform: state entity_id: input_select.main_bedroom to: 'Off' - platform: state entity_id: input_select.house to: 'Off' - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' - platform: state entity_id: input_boolean.main_bedroom_lighting_automations from: 'off' to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.main_bedroom_lighting_automations state: 'on' - condition: state entity_id: input_select.main_bedroom state: 'Off' - condition: or conditions: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'off' - condition: state entity_id: - input_boolean.john_is_in_bed - input_boolean.cristina_in_bed state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: light.main_bedroom_lights state: 'on' action: - service: light.turn_off entity_id: light.main_bedroom_lights - id: main_bedroom_lights_turned_off initial_state: true alias: Main Bedroom lights Manually Turned Off trigger: - platform: state entity_id: light.main_bedroom_main_lights to: 'off' condition: - condition: state entity_id: input_boolean.main_bedroom_lights_auto state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.main_bedroom_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.main_bedroom_lighting_automations - id: main_bedroom_music_off initial_state: true alias: Main Bedroom Music Off trigger: - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' - platform: state entity_id: input_select.main_bedroom to: 'Off' condition: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.main_bedroom_ble_occupancy state: 'off' - condition: state entity_id: media_player.sonos_main_bedroom state: playing action: - service: media_player.unjoin entity_id: media_player.sonos_main_bedroom - service: media_player.media_pause entity_id: media_player.sonos_main_bedroom - id: main_bedroom_media_player_unjoin initial_state: true alias: Main Bedroom Media Player Unjoin trigger: - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' - platform: state entity_id: input_select.main_bedroom to: 'Off' - platform: state entity_id: media_player.sonos_main_bedroom to: paused for: minutes: 10 - platform: state entity_id: media_player.sonos_main_bedroom to: paused for: minutes: 30 condition: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'off' - condition: state entity_id: binary_sensor.main_bedroom_ble_occupancy state: 'off' - condition: state entity_id: media_player.sonos_main_bedroom state: paused - condition: template value_template: '{{ states.media_player.sonos_main_bedroom.attributes.group_members | count > 1 }}' action: - service: media_player.unjoin entity_id: media_player.sonos_main_bedroom - id: main_bedroom_mode_auto initial_state: true alias: Main Bedroom mode auto trigger: - platform: state entity_id: input_select.house to: Auto id: house_auto - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' id: main_bedroom_unoccupied - platform: state entity_id: input_select.main_bedroom to: Wake for: minutes: 10 id: main_bedroom_wake conditions: - condition: state entity_id: - binary_sensor.john_bed_occupied - binary_sensor.cristina_bed_occupied state: 'off' actions: - choose: - conditions: - condition: trigger id: main_bedroom_unoccupied sequence: - if: - condition: state entity_id: input_boolean.house_occupied state: 'on' then: - action: script.main_bedroom_mode_turn_on_auto default: - action: script.main_bedroom_mode_turn_on_auto - id: main_bedroom_mode_bedtime initial_state: true alias: Main Bedroom mode bedtime triggers: - trigger: state entity_id: input_boolean.bedtime to: 'on' - trigger: state entity_id: binary_sensor.bedtime to: 'on' - trigger: state entity_id: - input_boolean.john_is_in_bed - input_boolean.cristina_in_bed to: 'on' - trigger: state entity_id: - input_select.john_sleep_state - input_select.cristina_sleep_state to: Just Laid Down - trigger: state entity_id: light.main_bedroom_main_lights to: 'off' conditions: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.main_bedroom'',''Bedtime'') }}' - condition: state entity_id: light.main_bedroom_main_lights state: 'off' - condition: or conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: input_boolean.john_is_in_bed state: 'on' - condition: state entity_id: input_boolean.cristina_in_bed state: 'on' - condition: state entity_id: - input_select.john_sleep_state - input_select.cristina_sleep_state state: Just Laid Down actions: - action: input_select.select_option data: entity_id: input_select.main_bedroom option: Bedtime - action: automation.turn_on entity_id: - automation.main_bedroom_john_night_light_off - automation.main_bedroom_night_light_for_john - action: switch.turn_on entity_id: - switch.adaptive_lighting_sleep_mode_main_bedroom - switch.adaptive_lighting_sleep_mode_main_bedroom_lamps - id: main_bedroom_mode_off initial_state: true alias: Main Bedroom Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.main_bedroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away action: - service: input_select.select_option data: entity_id: input_select.main_bedroom option: 'Off' - id: main_bedroom_mode_awake alias: Main Bedroom mode awake initial_state: true trigger: - platform: state entity_id: - input_boolean.cristina_is_awake - input_boolean.john_is_awake to: 'on' - platform: state entity_id: light.main_bedroom_main_lights to: 'on' condition: - condition: state entity_id: input_select.main_bedroom state: Bedtime - condition: time after: 05:00:00 before: 09:00:00 - condition: and conditions: - condition: template value_template: '{{ states(''input_select.john_sleep_state'') not in (''Sleep'', ''Just Laid Down'') }}' - condition: template value_template: '{{ states(''input_select.cristina_sleep_state'') not in (''Sleep'', ''Just Laid Down'') }}' - condition: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.main_bedroom_door_sensor_status state: 'on' - condition: state entity_id: light.main_bedroom_main_lights state: 'on' action: - service: input_select.select_option data: entity_id: input_select.main_bedroom option: Wake - service: automation.turn_off entity_id: - automation.main_bedroom_john_night_light_off - automation.main_bedroom_night_light_for_john - action: switch.turn_off entity_id: - switch.adaptive_lighting_sleep_mode_main_bedroom - switch.adaptive_lighting_sleep_mode_main_bedroom_lamps - id: main_bedroom_not_occupied initial_state: true alias: Main bedroom not occupied triggers: - trigger: state entity_id: binary_sensor.main_bedroom_ble_occupancy to: 'off' for: minutes: 2 - trigger: state entity_id: input_boolean.bedtime to: 'off' - trigger: state entity_id: binary_sensor.main_bedroom_motion_sensor to: 'off' for: minutes: 5 - trigger: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy to: 'off' - trigger: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy to: 'off' for: minutes: 5 - trigger: state entity_id: input_boolean.main_bathroom_occupied to: 'off' conditions: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: state entity_id: binary_sensor.main_bedroom_ble_occupancy state: 'off' - condition: state entity_id: input_boolean.main_bathroom_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy state: 'off' - and: - condition: state entity_id: input_boolean.john_is_in_bed state: 'off' - condition: state entity_id: input_boolean.cristina_in_bed state: 'off' - condition: or conditions: - condition: and conditions: - condition: template value_template: '{{ not is_state(''input_select.main_bedroom'',''Bedtime'') }}' - condition: time after: 05:00:00 before: '23:59:59' - condition: and conditions: - condition: state entity_id: input_select.main_bedroom state: Bedtime - condition: time after: 06:00:00 before: '21:00:00' action: - action: input_boolean.turn_off entity_id: input_boolean.main_bedroom_occupied - alias: Wait 2 seconds delay: 2 - action: input_boolean.turn_on entity_id: input_boolean.main_bedroom_lighting_automations - id: main_bedroom_occupied initial_state: true alias: Main bedroom occupied trigger: - platform: state entity_id: binary_sensor.main_bedroom_motion_sensor to: 'on' - platform: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy to: 'on' - platform: state entity_id: binary_sensor.main_bedroom_door_sensor_status to: 'off' - platform: state entity_id: light.main_bedroom_main_lights to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.main_bedroom_ble_occupancy state: 'on' - condition: state entity_id: binary_sensor.main_bedroom_motion_sensor_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.main_bedroom_occupied - id: main_bedroom_speech_notifications_off initial_state: true alias: Main Bedroom Speech Notifications Off trigger: - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'off' - platform: state entity_id: input_select.main_bedroom to: Bedtime condition: - condition: or conditions: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'off' - condition: state entity_id: input_select.main_bedroom state: Bedtime action: - service: input_boolean.turn_off entity_id: input_boolean.main_bedroom_speech_notifications - id: main_bedroom_speech_notifications_on initial_state: true alias: Main Bedroom Speech Notifications On trigger: - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'on' - platform: state entity_id: input_select.main_bedroom to: Auto condition: - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_select.main_bedroom state: Auto - condition: state entity_id: input_select.main_bedroom state: Wake action: - service: input_boolean.turn_on entity_id: input_boolean.main_bedroom_speech_notifications - id: main_bedroom_turn_off_purifier alias: Main Bedroom Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.main_bedroom to: 'Off' - trigger: state entity_id: input_boolean.main_bedroom_occupied to: 'off' for: minutes: 30 actions: - action: fan.turn_off target: entity_id: fan.main_bedroom_air_purifier - id: main_floor_climate_activate_eco_when_energy_is_expensive alias: Main Floor Climate - Activate Eco When Energy is Expensive initial_state: true triggers: - trigger: state entity_id: binary_sensor.energy_prices_are_high to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.entertainment_mode state: 'off' - condition: state entity_id: binary_sensor.extreme_climate state: 'off' - condition: template value_template: '{{ states.climate.nest_main_floor.attributes.preset_mode == ''none'' }}' actions: - action: script.main_floor_climate_to_eco data: {} - id: main_floor_climate_resume alias: Main floor climate resume initial_state: 'on' trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: - input_boolean.john_is_in_bed - input_boolean.cristina_in_bed to: 'off' - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: time at: 06:00:00 condition: - condition: or conditions: - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: time after: 06:00:00 - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ states.climate.nest_main_floor.attributes.preset_mode != ''none'' }}' action: - service: script.main_floor_climate_to_resume data: {} - id: main_floor_climate_resume_when_energy_prices_fall alias: Main Floor Climate - Resume When Energy Prices Fall initial_state: true trigger: - platform: state entity_id: binary_sensor.energy_prices_are_high from: 'on' to: 'off' condition: - condition: template value_template: '{{ states.climate.nest_main_floor.attributes.preset_mode != ''none'' }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nearly_home state: 'on' action: - action: script.main_floor_climate_to_resume data: {} - id: main_floor_climate_resume_when_nearly_home alias: Main Floor Climate Resume When Nearly Home initial_state: 'on' trigger: - platform: state entity_id: input_boolean.nearly_home to: 'on' condition: - condition: template value_template: '{{ states.climate.nest_main_floor.attributes.preset_mode != ''none'' }}' action: - service: script.main_floor_climate_to_resume data: {} - id: main_floor_climate_to_eco alias: Main floor climate to Eco initial_state: 'on' trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: input_boolean.house_occupied to: 'off' for: minutes: 30 - platform: state entity_id: input_boolean.house_occupied to: 'off' for: minutes: 60 condition: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: template value_template: '{{ states.climate.nest_main_floor.attributes.preset_mode == ''none'' }}' action: - choose: - conditions: - condition: template value_template: '{{ trigger.entity_id == ''input_boolean.bedtime'' }}' - condition: time before: 04:00:00 sequence: - service: script.main_floor_climate_to_eco data: {} default: - service: script.main_floor_climate_to_eco data: {} - id: main_level_dryer_complete alias: Main Level Dryer Complete initial_state: true trigger: - platform: state entity_id: input_select.main_level_dryer_status to: Clean condition: - condition: state entity_id: input_select.main_level_dryer_status state: Clean action: - service: script.voice_announcement data: media_players: auto sound: chirp priority: normal expires_in: 120 speech_message: The main level dryer finished and is ready to be emptied. - service: script.general_notification data: message: The main level dryer is finished and ready to be emptied. title: Main Level Drying Machine devices: all priority: active tag: main-level-dryer - if: - alias: TV is ON condition: state entity_id: media_player.sony_bravia_tv state: 'on' then: - service: notify.family_room_sony_bravia_tv data: message: The main level dryer is finished and ready to be emptied. title: Laundry is complete! data: duration: 5 position: bottom-right fontsize: large transparency: 25% interrupt: false color: black - id: main_level_dryer_power_button alias: Main Level Dryer Power Button initial_state: true trigger: - platform: device device_id: 055647d59003c9dc03051ef8e575a427 domain: zha type: remote_button_short_press subtype: remote_button_short_press condition: - condition: state entity_id: switch.main_level_drying_machine state: 'off' action: - service: switch.turn_on entity_id: switch.main_level_drying_machine - id: main_level_dryer_to_clean alias: Main Level Dryer to Clean initial_state: true trigger: - platform: state entity_id: input_select.main_level_dryer_status to: Finishing for: minutes: 5 - platform: numeric_state entity_id: sensor.main_level_drying_machine_electric_consumption_w below: 50 condition: - condition: state entity_id: input_select.main_level_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.main_level_dryer_status option: Clean - id: main_level_dryer_to_finished alias: Main Level Dryer to Finishing initial_state: true trigger: - platform: numeric_state entity_id: sensor.main_level_drying_machine_electric_consumption_w below: 150 condition: - condition: state entity_id: input_select.main_level_dryer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.main_level_dryer_status option: Finishing - id: main_level_dryer_to_idle alias: Main Level Dryer to Idle initial_state: true trigger: - platform: state entity_id: input_select.main_level_dryer_status to: Clean for: minutes: 5 condition: - condition: or conditions: - condition: state entity_id: input_select.main_level_dryer_status state: Clean - condition: state entity_id: input_select.main_level_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.main_level_dryer_status option: Idle - id: main_level_dryer_to_running alias: Main Level Dryer to Running initial_state: true trigger: - platform: numeric_state entity_id: sensor.main_level_drying_machine_electric_consumption_w above: 10 condition: condition: or conditions: - condition: state entity_id: input_select.main_level_dryer_status state: Idle - condition: state entity_id: input_select.main_level_dryer_status state: Clean - condition: state entity_id: input_select.main_level_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.main_level_dryer_status option: Running - id: main_level_washer_complete_alert alias: Main Level Washer Complete Alert initial_state: true trigger: - platform: state entity_id: input_select.main_level_washer_status to: Clean - platform: state entity_id: input_boolean.house_occupied to: 'on' for: minutes: 10 - platform: time at: 08:01:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.main_level_washer_status state: Clean - condition: template value_template: "{% if states.automation.main_level_washer_complete_alert.attributes.last_triggered\ \ is not none %}\n {% if as_timestamp(now()) | int - as_timestamp(states.automation.main_level_washer_complete_alert.attributes.last_triggered)\ \ | int > 3600 %}\n true \n {% else %}\n false\n {% endif %}\n{% else\ \ %}\n false\n{% endif %}\n" action: - service: script.voice_announcement data: media_players: auto sound: chirp priority: normal expires_in: 120 speech_message: The main level washer finished and is ready to be emptied. - service: "{% if (is_state(\"input_boolean.john_home\", \"on\")) and (is_state(\"\ input_boolean.cristina_home\", \"on\")) %}\n notify.ios_family\n{% elif is_state(\"\ input_boolean.john_home\", \"on\") %}\n notify.mobile_app_jk_2\n{% elif (is_state(\"\ input_boolean.cristina_home\", \"on\")) %}\n notify.mobile_app_cfalb2\n{% endif\ \ %}\n" data: message: The main level washer is finished and is ready to be emptied. title: Main Level Washing Machine - if: - alias: TV is ON condition: state entity_id: media_player.sony_bravia_tv state: 'on' then: - service: notify.family_room_sony_bravia_tv data: message: The main level washer is finished and is ready to be emptied. title: Laundry is complete! data: duration: 5 position: bottom-right fontsize: large transparency: 25% interrupt: false color: black - id: main_level_washer_to_clean alias: Main Level Washer to Clean initial_state: true trigger: - platform: state entity_id: input_select.main_level_washer_status to: Finishing for: minutes: 1 - platform: numeric_state entity_id: sensor.main_level_washing_machine_electric_consumption_w below: 20 condition: - condition: state entity_id: input_select.main_level_washer_status state: Finishing - condition: numeric_state entity_id: sensor.main_level_washing_machine_electric_consumption_w below: 50 action: - service: input_select.select_option data: entity_id: input_select.main_level_washer_status option: Clean - id: main_level_washer_to_finished alias: Main Level Washer to Finished initial_state: true trigger: - platform: numeric_state entity_id: sensor.main_level_washing_machine_electric_consumption_w below: 20 condition: - condition: state entity_id: input_select.main_level_washer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.main_level_washer_status option: Finishing - id: main_level_washer_to_idle alias: Upstairs washer to idle initial_state: true trigger: - platform: state entity_id: binary_sensor.main_level_washer_door_sensor_status to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.main_level_washer_status state: Clean - condition: state entity_id: input_select.main_level_washer_status state: Finishing - condition: state entity_id: input_select.main_level_washer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.main_level_washer_status option: Idle - id: main_level_washer_to_running alias: Main Level Washer to Running initial_state: true trigger: - platform: numeric_state entity_id: sensor.main_level_washing_machine_electric_consumption_w above: 10 condition: condition: or conditions: - condition: state entity_id: input_select.main_level_washer_status state: Idle - condition: state entity_id: input_select.main_level_washer_status state: Clean - condition: state entity_id: input_select.main_level_washer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.main_level_washer_status option: Running - id: morning_update alias: Morning Update mode: single triggers: - trigger: time at: 07:05:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - wait_template: '{{ is_state(''input_boolean.quiet_mode'', ''off'') }}' timeout: 00:45:00 - wait_template: "{{\n states.binary_sensor.kitchen_motion_sensor_occupancy.state\ \ == \"on\" and\n (as_timestamp(now()) - as_timestamp(states.binary_sensor.kitchen_motion_sensor_occupancy.last_changed))\ \ | int >= 600\n}}" timeout: 00:30:00 continue_on_timeout: false - wait_template: '{{ is_state(''binary_sensor.kitchen_motion_sensor_status'', ''on'') }}' timeout: 00:30:00 continue_on_timeout: false - alias: Wait 2 seconds delay: 2 - action: script.morning_update_announcement - id: mudroom_bathroom_fan_off initial_state: true alias: Mudroom Bathroom Fan Off trigger: - platform: state entity_id: input_select.mudroom_bathroom to: 'Off' - platform: state entity_id: input_boolean.mudroom_bathroom_occupied to: 'off' for: minutes: 5 condition: - condition: state entity_id: fan.mudroom_bathroom_fan state: 'on' - condition: or conditions: - condition: state entity_id: input_select.mudroom_bathroom state: 'Off' - condition: state entity_id: input_boolean.mudroom_bathroom_occupied state: 'off' action: - service: fan.turn_off entity_id: fan.mudroom_bathroom_fan - id: mudroom_bathroom_motion_on initial_state: true alias: Mudroom Bathroom Lights Motion On trigger: - platform: state entity_id: binary_sensor.mudroom_bathroom_motion to: 'on' condition: - condition: state entity_id: input_select.mudroom_bathroom state: Auto - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.mudroom_bathroom_illuminance below: 200 - condition: state entity_id: light.mudroom_bathroom_main_lights state: 'off' action: - service: light.turn_on entity_id: light.mudroom_bathroom_main_lights - id: mudroom_bathroom_lights_off initial_state: true alias: Mudroom Bathroom lights off trigger: - platform: state entity_id: input_boolean.mudroom_bathroom_occupied to: 'off' - platform: state entity_id: input_select.mudroom_bathroom to: 'Off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.mudroom_bathroom_main_lights state: 'on' - condition: or conditions: - condition: state entity_id: input_select.mudroom_bathroom state: 'Off' - condition: state entity_id: input_boolean.mudroom_bathroom_occupied state: 'off' action: - service: light.turn_off entity_id: light.mudroom_bathroom_main_lights - id: mudroom_bathroom_mode_auto initial_state: true alias: Mudroom Bathroom Mode Auto trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.mudroom_bathroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.mudroom_bathroom option: Auto - id: mudroom_bathroom_mode_off initial_state: true alias: Mudroom Bathroom Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.mudroom_bathroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.mudroom_bathroom option: 'Off' - id: mudroom_bathroom_not_occupied initial_state: true alias: Mudroom Bathroom Not Occupied trigger: - platform: state entity_id: binary_sensor.mudroom_bathroom_motion to: 'off' for: minutes: 3 - platform: state entity_id: binary_sensor.mudroom_bathroom_motion to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.mudroom_bathroom_motion to: 'off' for: minutes: 7 - platform: state entity_id: binary_sensor.mudroom_bathroom_occupancy to: 'off' condition: - condition: state entity_id: input_boolean.mudroom_bathroom_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.mudroom_bathroom_motion state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.binary_sensor.mudroom_bathroom_door.last_changed)) | int < 180 }}' - condition: state entity_id: binary_sensor.mudroom_bathroom_occupancy state: 'off' - condition: and conditions: - condition: state entity_id: binary_sensor.mudroom_bathroom_motion state: 'off' for: minutes: 5 - condition: state entity_id: binary_sensor.mudroom_bathroom_door state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.mudroom_bathroom_occupied - id: mudroom_bathroom_occupied initial_state: true alias: Mudroom Bathroom Occupied trigger: - platform: state entity_id: binary_sensor.mudroom_bathroom_motion to: 'on' - platform: state entity_id: light.mudroom_bathroom_main_lights to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.mudroom_bathroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.mudroom_bathroom_motion state: 'on' - condition: state entity_id: binary_sensor.mudroom_bathroom_door state: 'off' - condition: state entity_id: light.mudroom_bathroom_main_lights state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.mudroom_bathroom_occupied - id: mudroom_lights_to_away initial_state: 'on' alias: Mudroom lights to away trigger: - platform: state entity_id: input_select.mudroom 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.mudroom state: Away - condition: and conditions: - condition: state entity_id: input_select.mudroom state: Auto - condition: state entity_id: input_select.house state: Away - condition: state entity_id: light.mudroom_main_lights state: 'on' action: - service: light.turn_off entity_id: light.mudroom_main_lights - id: mudroom_lights_to_dim initial_state: 'on' alias: Mudroom lights to dim trigger: - platform: state entity_id: binary_sensor.mudroom_motion_sensor_motion_detection to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.mudroom state: Night Motion - condition: state entity_id: light.mudroom_main_lights state: 'off' action: - service: light.turn_on entity_id: light.mudroom_main_lights data: brightness_pct: 30 - id: mudroom_lights_to_off initial_state: 'on' alias: Mudroom lights to off trigger: - platform: state entity_id: input_select.mudroom to: Away - platform: state entity_id: input_select.house to: 'Off' - platform: state entity_id: binary_sensor.mudroom_motion_sensor_motion_detection to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: light.mudroom_main_lights state: 'on' action: - service: light.turn_off entity_id: light.mudroom_main_lights - id: mudroom_lights_to_on initial_state: 'on' alias: Mudroom lights to on trigger: - platform: state entity_id: input_select.mudroom to: 'On' - platform: state entity_id: binary_sensor.mudroom_motion_sensor_motion_detection to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.mudroom state: 'On' - condition: state entity_id: input_select.mudroom state: Motion - condition: state entity_id: light.mudroom_main_lights state: 'off' action: - service: light.turn_on entity_id: light.mudroom_main_lights - id: mudroom_mode_away initial_state: 'on' alias: Mudroom mode away trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' condition: - condition: template value_template: '{{ not is_state(''input_select.mudroom'',''Away'') }}' - condition: state entity_id: input_boolean.house_occupied state: 'off' action: - service: input_select.select_option data: entity_id: input_select.mudroom option: Away - id: mudroom_mode_motion initial_state: 'on' alias: Mudroom mode motion trigger: - platform: state entity_id: binary_sensor.mudroom_motion_sensor_motion_detection to: 'off' for: minutes: 5 - platform: state entity_id: input_select.house to: Auto condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: or conditions: - condition: template value_template: '{{ is_state(''input_select.mudroom'',''On'') }}' - condition: template value_template: '{{ is_state(''input_select.mudroom'',''Night Motion'') }}' - condition: template value_template: '{{ not is_state(''input_select.mudroom'',''Motion'') }}' action: - service: input_select.select_option data: entity_id: input_select.mudroom option: Motion - id: mudroom_mode_night_motion initial_state: 'on' alias: Mudroom mode night motion trigger: - platform: state entity_id: input_select.house to: Bedtime for: minutes: 10 - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: binary_sensor.bedtime to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: binary_sensor.bedtime state: 'on' - condition: template value_template: '{{ not is_state(''input_select.mudroom'',''Night Motion'') }}' action: - service: input_select.select_option data: entity_id: input_select.mudroom option: Night Motion - id: mudroom_mode_on initial_state: 'on' alias: Mudroom mode on trigger: - platform: state to: Just Arrived entity_id: - input_select.john_status - input_select.cristina_status_dropdown - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: input_select.select_option data: entity_id: input_select.mudroom option: 'On' - id: nearly_home_off alias: Nearly Home - Turn Off initial_state: true trigger: - platform: state entity_id: group.family to: home - platform: state entity_id: - person.cristina_falbo - person.john_koht to: home - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: group.family state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nearly_home state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.nearly_home - service: automation.turn_off entity_id: automation.nearly_home_turn_off - service: script.general_notification data: title: Nearly Home Off message: Nearly Home turned off since you're home devices: jk priority: passive tag: nearly-home - id: nearly_home_on alias: Nearly Home - Turn On initial_state: true trigger: - platform: numeric_state entity_id: - sensor.home_nearest_distance below: 5 above: 1 condition: - condition: state entity_id: input_boolean.nearly_home state: 'off' - condition: state entity_id: group.family state: not_home for: minutes: 10 - condition: state entity_id: sensor.home_nearest_direction_of_travel state: towards action: - service: input_boolean.turn_on entity_id: input_boolean.nearly_home - service: automation.turn_on entity_id: automation.nearly_home_turn_off - service: script.general_notification data: title: Nearly Home On message: Nearly home automation turned on devices: jk priority: passive tag: nearly-home - id: neighborhood_event_tomorrow_reminder alias: Kids Activity Tomorrow Reminder mode: single trigger: - platform: time at: '20:00:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.neighborhood_event_tomorrow state: 'on' action: - wait_template: "{{ \n is_state('binary_sensor.kitchen_motion_sensor_status',\ \ 'on')\n or\n is_state('binary_sensor.family_room_motion_sensor', 'on')\n\ }}" timeout: 00:05:00 - alias: Wait 2 seconds delay: 2 - service: script.voice_announcement data: media_players: auto sound: message-alert speech_message: "{% set time = states.calendar.golf_acres.attributes.start_time\ \ | as_datetime | as_local %} {% set time = time.timestamp() | timestamp_custom('%-I:%M\ \ %p') %}\n{{ \n [\n \"Hey fam! Neighborhood event tomorrow: \" ~ states.calendar.golf_acres.attributes.message\ \ ~ \" at \" ~ time,\n \"Just a quick reminder that \" ~ states.calendar.golf_acres.attributes.message\ \ ~ \" is tomorrow at \" ~ time,\n \"Heads up for tomorrow: \" ~ states.calendar.golf_acres.attributes.message\ \ ~ \" at \" ~ time\n ] | random\n}}" - service: script.general_notification data: message: '{% set time = states.calendar.golf_acres.attributes.start_time | as_datetime | as_local %} {% set time = time.timestamp() | timestamp_custom(''%-I:%M %p'') %} "Tomorrow is {{states.calendar.golf_acres.attributes.message}} at {{time}}"' title: Neighborhood Event Reminder devices: jk priority: active tag: neighborhood-event-reminder - id: neighborhood_event_upcoming_reminder alias: Neighborhood Event Upcoming Reminder mode: single trigger: - platform: calendar event: start entity_id: calendar.golf_acres offset: -01:00:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: success-trumpets speech_message: "{{ \n [\n \"Hey fam, \" ~ states.calendar.golf_acres.attributes.message\ \ ~ \" is in one hour.\",\n \"Just a quick reminder that \" ~ states.calendar.golf_acres.attributes.message\ \ ~ \" is in one hour.\",\n \"Pardon the interruption, I just wanted to\ \ remind you that \" ~ states.calendar.golf_acres.attributes.message ~ \"\ \ is in one hour.\"\n ] | random\n}}" - id: enable_nino_bathroom_heater_automation alias: Enable Nino's Bathroom Heater Automation initial_state: false trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'on' for: minutes: 30 - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: time at: 00:01:00 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: time after: '18:00:00' - condition: state entity_id: automation.nino_s_bathroom_heater_on state: 'off' action: - service: automation.turn_on entity_id: automation.nino_s_bathroom_heater_on - id: ninos_bathroom_heater_on alias: Nino's Bathroom Heater On initial_state: false trigger: - platform: time at: 05:00:00 - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'on' - platform: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) < 71.0 }}' - platform: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) < 61.0 }}' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) < 65.0 }}' - condition: time after: 04:30:00 - condition: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) < 71.0 }}' - condition: state entity_id: switch.smart_plug_2_switch state: 'off' action: - service: switch.turn_on entity_id: switch.smart_plug_2_switch - service: automation.turn_off entity_id: automation.nino_s_bathroom_heater_on - id: ninos_bathroom_heater_off alias: Nino's Bathroom Heater Off initial_state: true trigger: - platform: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) > 73.5 }}' - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' for: minutes: 20 - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: switch.smart_plug_2_switch to: 'on' for: hours: 3 condition: - condition: state entity_id: switch.smart_plug_2_switch state: 'on' action: - service: switch.turn_off entity_id: switch.smart_plug_2_switch - id: ninos_bathroom_heater_turn_on_upon_arrival alias: Nino's Bathroom Heater - Turn On Upon Arrival initial_state: true trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: group.family from: not_home to: home - platform: state entity_id: - person.cristina_falbo - person.john_koht to: Just Arrived condition: - condition: or conditions: - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.house_occupied.last_updated)) | int < 300 }}' - condition: and conditions: - condition: state entity_id: group.family state: home - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.group.familiy.last_updated)) | int < 300 }}' - condition: state entity_id: - person.cristina_falbo - person.john_koht state: Just Arrived - condition: template value_template: '{{ (states.sensor.aqara_weather_sensor_1_temperature.state | float) < 71.5 }}' - condition: time after: '18:30:00' action: - service: switch.turn_on entity_id: switch.smart_plug_2_switch - id: nino_bedroom_heater_on alias: Nino bedroom heater on initial_state: true trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'on' for: minutes: 1 - platform: numeric_state entity_id: sensor.nino_room_temperature below: 70 for: minutes: 5 - platform: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) < 69.5 }}' - platform: numeric_state entity_id: sensor.nino_room_temperature below: 69 for: minutes: 5 - platform: time at: '18:30:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: time after: '18:30:00' - condition: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) < 71.3 }}' action: - service: switch.turn_on entity_id: switch.smart_plug_2_switch - id: nino_bedroom_heater_off alias: Nino bedroom heater off initial_state: true trigger: - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'on' for: minutes: 10 - platform: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) > 70.15 }}' - platform: numeric_state entity_id: sensor.nino_room_temperature above: 71 - platform: numeric_state entity_id: sensor.nino_room_temperature above: 72 - platform: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) > 72.5 }}' - platform: numeric_state entity_id: sensor.nino_room_temperature above: 73 - platform: numeric_state entity_id: sensor.nino_room_temperature above: 74 - platform: numeric_state entity_id: sensor.nino_room_temperature above: 75 - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' condition: - condition: or conditions: - condition: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) >= 72.0 }}' - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: state entity_id: switch.smart_plug_2_switch state: 'on' action: - service: switch.turn_off entity_id: switch.smart_plug_2_switch - id: ninos_bedroom_heater_turn_on_upon_arrival alias: Nino Bedroom Heater - Turn On Upon Arrival initial_state: true trigger: - platform: state entity_id: input_boolean.house_occupied to: 'on' - platform: state entity_id: group.family from: not_home to: home - platform: state entity_id: - person.cristina_falbo - person.john_koht to: Just Arrived condition: - condition: or conditions: - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.house_occupied.last_updated)) | int < 300 }}' - condition: and conditions: - condition: state entity_id: group.family state: home - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.group.familiy.last_updated)) | int < 300 }}' - condition: state entity_id: - person.cristina_falbo - person.john_koht state: Just Arrived - condition: template value_template: '{{ (states.sensor.nino_room_temperature.state | float) < 71.5 }}' - condition: time after: '18:30:00' action: - service: switch.turn_on entity_id: switch.smart_plug_2_switch - id: ninos_bedroom_lights_off initial_state: true alias: Nino's Bedroom - Lights Off trigger: - platform: state entity_id: input_select.ninos_bedroom to: 'Off' - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.ninos_bedroom state: 'Off' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' action: - service: light.turn_off entity_id: - light.ninos_bedroom_main_lights - light.nino_bedroom_lamp - id: ninos_bedroom_mode_auto initial_state: true alias: Nino's Bedroom - Mode Auto triggers: - trigger: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' - trigger: state entity_id: input_select.house to: Auto - trigger: state entity_id: input_boolean.house_occupied to: 'on' - trigger: state entity_id: input_boolean.nino_in_bed to: 'off' for: minutes: 10 - trigger: state entity_id: input_boolean.bedtime to: 'off' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.ninos_bedroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: state entity_id: input_boolean.nino_in_bed state: 'off' actions: - action: input_select.select_option data: entity_id: input_select.ninos_bedroom option: Auto - id: ninos_bedroom_mode_bedtime initial_state: true alias: Nino's Bedroom - Mode Bedtime triggers: - trigger: state entity_id: input_boolean.nino_in_bed to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.ninos_bedroom'',''Bedtime'') }}' action: - action: input_select.select_option data: entity_id: input_select.ninos_bedroom option: Bedtime - id: ninos_bedroom_mode_off initial_state: true alias: Nino's Bedroom - Mode Off triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.house to: Away - trigger: homeassistant event: start - trigger: event event_type: automation_reloaded conditions: - condition: template value_template: '{{ not is_state(''input_select.ninos_bedroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away actions: - action: input_select.select_option data: entity_id: input_select.ninos_bedroom option: 'Off' - id: ninos_bedroom_not_occupied initial_state: true alias: Nino's Bedroom - Not Occupied trigger: - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'on' for: minutes: 5 - platform: state entity_id: light.ninos_bedroom_main_lights to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.nino_bed_occupied to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'on' - condition: state entity_id: light.ninos_bedroom_main_lights state: 'off' - condition: state entity_id: binary_sensor.nino_bed_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.ninos_bedroom_occupied - id: ninos_bedroom_occupied initial_state: true alias: Nino's Bedroom - Occupied trigger: - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'off' - platform: state entity_id: light.ninos_bedroom_main_lights to: 'on' - platform: state entity_id: binary_sensor.nino_bed_occupied to: 'on' condition: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'off' - condition: state entity_id: light.ninos_bedroom_main_lights state: 'on' - condition: state entity_id: binary_sensor.nino_bed_occupied state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.ninos_bedroom_occupied - id: nino_bedroom_air_quality_detections alias: Nino's Bedroom Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.nino_bedroom_air_quality - trigger: state entity_id: input_select.ninos_bedroom to: Bedtime - trigger: state entity_id: input_boolean.ninos_bedroom_occupied conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.ninos_bedroom_air_purifier aqi_state: '{{ states.sensor.nino_bedroom_air_quality.state }}' room_state: '{{ states.input_select.ninos_bedroom.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: nino_bedroom_turn_off_purifier alias: Nino's Bedroom Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' for: minutes: 30 actions: - action: fan.turn_off target: entity_id: fan.ninos_bedroom_air_purifier - id: nino_bed_awake alias: Nino Bed - Awake mode: single trigger: - platform: state entity_id: input_select.nino_sleep_state to: Just Got Up for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.nino_sleep_state option: Awake - service: input_boolean.turn_off entity_id: input_boolean.nino_in_bed - id: nino_bed_just_got_up alias: Nino Bed - Just Got Up mode: single trigger: - platform: state entity_id: binary_sensor.nino_bed_occupied to: 'off' action: - service: input_select.select_option data: entity_id: input_select.nino_sleep_state option: Just Got Up - id: nino_bed_just_laid_down alias: Nino Bed - Just Laid Down mode: single trigger: - platform: state entity_id: binary_sensor.nino_bed_occupied to: 'on' condition: - condition: template value_template: '{{ not is_state(''input_select.nino_sleep_state'',''Sleep'') }}' action: - service: input_select.select_option data: entity_id: input_select.nino_sleep_state option: Just Laid Down - id: nino_bed_sleep alias: Nino Bed - Sleep mode: single trigger: - platform: state entity_id: input_select.nino_sleep_state to: Just Laid Down for: minutes: 5 action: - service: input_select.select_option data: entity_id: input_select.nino_sleep_state option: Sleep - service: input_boolean.turn_on entity_id: input_boolean.nino_in_bed - id: nino_countdown_to_birthday_turn_off alias: Nino Countdown to Birthday - Turn Off mode: single initial_state: false triggers: - trigger: template value_template: '{{ now().month == 4 and now().day == 18 }}' actions: - action: input_boolean.turn_off entity_id: input_boolean.nino_countdown_to_birthday - action: automation.turn_off entity_id: - automation.nino_countdown_to_birthday_turn_off - automation.nino_birthday_countdown_reminder - automation.nino_birthday_daily_reset - action: automation.turn_on entity_id: automation.nino_countdown_to_birthday_turn_on - id: nino_countdown_to_birthday_turn_on alias: Nino Countdown to Birthday - Turn On mode: single initial_state: true triggers: - trigger: template value_template: '{{ now().month == 4 and now().day == 2 }}' actions: - action: input_boolean.turn_on entity_id: input_boolean.nino_countdown_to_birthday - action: automation.turn_on entity_id: - automation.nino_countdown_to_birthday_turn_off - action: automation.turn_off entity_id: automation.nino_countdown_to_birthday_turn_on - id: nino_daily_medication_reminder alias: Nino Daily Medication Reminder trigger: - trigger: time at: 07:30:00 - trigger: event event_type: timer.finished event_data: entity_id: timer.nino_daily_medication_timer - trigger: state entity_id: input_select.nino_sleep_state to: Awake for: hours: 1 conditions: - condition: state entity_id: input_boolean.nino_daily_medication_taken state: 'off' - condition: state entity_id: timer.nino_daily_medication_timer state: idle - condition: state entity_id: input_select.nino_sleep_state state: Awake - condition: time after: 07:30:00 before: '10:30:00' actions: - action: script.voice_announcement data: media_players: auto sound: chirp priority: high speech_message: "{{\n [\n \"It's time for Nino to take his medication.\"\ ,\n \"Nino, it's time to take your medication.\",\n \"Don't forget to\ \ give Nino his medication.\",\n ] | random\n}}" - variables: action_taken: '{{ ''TAKEN_'' ~ context.id }}' action_snooze: '{{ ''SNOOZE_'' ~ context.id }}' - action: script.general_notification data: title: Nino's Daily Medication Reminder message: It's time for Nino to take his morning medication. devices: all priority: time-sensitive tag: nino-morning-medication actions: - action: '{{ action_taken }}' title: Medication Taken - action: '{{ action_snooze }}' title: Snooze 15 Minutes - wait_for_trigger: - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_taken }}' - trigger: event event_type: mobile_app_notification_action event_data: action: '{{ action_snooze }}' - trigger: device device_id: d98b081e7991a6e9ce1672128dad93ae domain: zha type: remote_button_short_press subtype: turn_on event_data: action: '{{ action_taken }}' timeout: minutes: 15 - if: - '{{ not wait.completed }}' then: - action: timer.start entity_id: timer.nino_daily_medication_timer else: - if: - condition: template value_template: '{{ wait.trigger.event.data.action == action_taken }}' then: - action: input_boolean.turn_on entity_id: input_boolean.nino_daily_medication_taken - action: timer.cancel entity_id: timer.nino_daily_medication_timer - action: automation.turn_off entity_id: automation.nino_daily_medication_reminder - if: - condition: template value_template: '{{ wait.trigger.event.data.action == action_snooze }}' then: - action: timer.start entity_id: timer.nino_daily_medication_timer - id: nino_medication_reminder_reset alias: Nino Medication Reminder Reset trigger: - trigger: time at: 03:00:01 actions: - action: input_boolean.turn_off entity_id: input_boolean.nino_daily_medication_taken - action: timer.cancel entity_id: timer.nino_daily_medication_timer - action: automation.turn_on entity_id: automation.nino_daily_medication_reminder - id: nino_medication_reminder_shortcut_button alias: Nino Medication Reminder Shortcut Button initial_state: true triggers: - trigger: device device_id: d98b081e7991a6e9ce1672128dad93ae domain: zha type: remote_button_short_press subtype: turn_on conditions: - condition: state entity_id: input_boolean.nino_daily_medication_taken state: 'off' actions: - action: input_boolean.turn_on entity_id: input_boolean.nino_daily_medication_taken - action: timer.cancel entity_id: timer.nino_daily_medication_timer - action: automation.turn_off entity_id: automation.nino_daily_medication_reminder - id: nino_escape_monitor alias: Nino Escape Monitor initial_state: true trigger: - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'on' condition: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''in'', [''nino_bedroom''])|map(attribute=''name'')|list | length == 0 }}' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.ninos_bedroom_occupied.last_updated)) | int > 900 }}' - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'off' for: minutes: 10 - condition: and conditions: - condition: state entity_id: input_boolean.bedtime state: 'on' - condition: state entity_id: binary_sensor.main_bedroom_door_sensor_status state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.binary_sensor.main_bedroom_door_sensor_status.last_updated)) | int > 90 }}' action: - service: notify.mobile_app_jk_2 data: message: Nino is escaping! title: Nino Escape Monitor - id: nino_escape_monitor_turn_off alias: Nino Escape Monitor - Turn Off initial_state: true trigger: - platform: state entity_id: input_boolean.bedtime to: 'off' - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' condition: - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: automation.turn_off entity_id: automation.nino_escape_monitor - id: nino_escape_monitor_turn_on alias: Nino Escape Monitor - Turn On initial_state: true trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: state entity_id: binary_sensor.ninos_door_sensor_status to: 'off' for: minutes: 30 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'off' action: - service: automation.turn_on entity_id: automation.nino_escape_monitor - id: nino_nap_time alias: Nino's nap time initial_state: 'off' trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'on' for: minutes: 3 - platform: state entity_id: light.ninos_bedroom_main_lights to: 'off' - platform: state entity_id: light.nino_bedroom_lamp to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'off' - condition: state entity_id: input_boolean.quiet_mode state: 'off' - condition: time after: '17:00:00' action: - service: input_boolean.turn_on entity_id: input_boolean.quiet_mode - service: script.voice_announcement data: media_players: auto sound: harp-flourish speech_message: "{{\n [\n \"Shhh...Nino is going to sleep.\",\n \"Quiet\ \ time, Nino is going to sleep!\",\n \"Pardon the interruption but Nino\ \ is going to sleep, please be quiet!\",\n \"Attention! Quiet mode has\ \ been enabled for Nino's nap.\"\n ] | random\n}}" - id: nino_nap_time_ended alias: Nino's nap time ended initial_state: 'off' trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: binary_sensor.ninos_door_sensor_status state: 'on' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'off' - condition: state entity_id: input_boolean.quiet_mode state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.quiet_mode - id: nino_nightlight_turn_off initial_state: true alias: Nino Nightlight - Turn Off trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'off' for: hours: 1 - platform: time at: 07:00:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: light.nino_bedroom_lamp state: 'on' - condition: time after: 06:00:00 action: - service: light.turn_off entity_id: light.nino_bedroom_lamp - id: nino_nightlight_turn_on initial_state: true alias: Nino Nightlight - Turn On trigger: - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'on' for: hours: 1 - platform: time at: '22:00:00' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: light.nino_bedroom_lamp state: 'on' - condition: time after: '19:00:00' action: - service: scene.turn_on target: entity_id: scene.ninos_room_nino_nightlight - id: nino_school_day_off alias: Nino School Day Off mode: single initial_state: false trigger: - platform: state entity_id: input_boolean.primary_school_day to: 'off' condition: - condition: state entity_id: input_boolean.nino_school_day state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.nino_school_day - service: automation.turn_off entity_id: - automation.nino_school_pickup_reminder - id: nino_school_day_on alias: Nino School Day On mode: single initial_state: true trigger: - platform: state entity_id: input_boolean.primary_school_day to: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.nino_school_day - service: automation.turn_on entity_id: - automation.nino_school_pickup_reminder - id: nino_school_day_reminder alias: Nino School Day Reminder mode: single initial_state: false trigger: - platform: calendar event: start entity_id: calendar.ninos_school offset: -01:30:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nino_school_day state: 'on' - condition: template value_template: '{{ ''reminder'' not in (trigger.calendar_event.summary | lower) }}' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime speech_message: "{% set event = trigger.calendar_event.summary | lower %}\n\ {% if \"school day\" in event %}\n {{\n [\n \"Hey gang, it's time\ \ to eat breakfast and get ready for school\",\n \"Hey there, it's time\ \ to get the kids breakfast ready. Today is a school day!\",\n \"Just\ \ at reminder that there's school today, so it's time for breakfast.\",\n\ \ ] | random\n }}\n{% else %}\n {{\n [\n \"Hey gang, it's time\ \ to eat breakfast and get ready for \" ~ event,\n \"Hey there, it's\ \ time to get the kids breakfast ready. Today is \" ~ event,\n \"Just\ \ at reminder that there's \" ~ event ~ \" today, so it's time for breakfast.\"\ ,\n ] | random\n }}\n{% endif %}" - id: nino_school_departure_reminder alias: Nino School Departure Reminder mode: single initial_state: false trigger: - platform: calendar event: start entity_id: calendar.ninos_school offset: -00:15:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nino_school_day state: 'on' - condition: template value_template: '{{ ''reminder'' not in (trigger.calendar_event.summary | lower) }}' action: - service: script.voice_announcement data: media_players: auto sound: school-bell priority: high expires_in: 5 speech_message: "{% set event = trigger.calendar_event.summary | lower %}\n\ {% if \"giggle gang\" in event %}\n {% set event_label = \"Giggle Gang\"\ \ %}\n{% elif \"little acorns\" in event %}\n {% set event_label = \"Little\ \ Acorns\" %}\n{% else %}\n {% set event_label = \"school\" %}\n{% endif\ \ %}\n{{\n [\n event_label ~ \" starts soon. Time to pack up and head\ \ out!\",\n \"Hey gang, time to start heading over to \" ~ event_label,\n\ \ \"Pack it up, pack it in, time to drop Nino at \" ~ event_label\n ]\ \ | random\n}}" - id: nino_school_pickup_reminder alias: Nino School Pickup Reminder mode: single initial_state: false trigger: - platform: time at: input_datetime.primary_school_pickup_reminder condition: - condition: state entity_id: input_boolean.nino_school_day state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime priority: normal speech_message: "{{\n [\n \"School is done! Time to pick up Nino!\",\n \ \ \"Hey there! It's time to pickup Nino from school!\",\n \"Dont forget\ \ to pick up Nino from school!\",\n \"Quick reminder that school is almost\ \ over, time to pick Nino up.\" \n ] | random\n}}" - service: script.general_notification data: title: Nino's school is ending soon message: School will be over soon, it's time to pick up Nino from school. devices: all priority: time-sensitive tag: nino_school_pikcup - id: nino_school_reminder_notification alias: Nino School Reminder Notification mode: single initial_state: false trigger: - platform: calendar event: start entity_id: calendar.nino_school_reminder condition: - condition: state entity_id: input_boolean.nino_school_day state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime speech_message: '{{states.calendar.nino_school_reminder.attributes.message}}' - id: nonna_announce_arrival alias: Nonna Announce Arrival mode: queued initial_state: true triggers: - trigger: state entity_id: person.mary_falbo from: not_home to: home conditions: - condition: state entity_id: person.mary_falbo state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: nonna announcement_type: arrival - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - action: input_boolean.turn_on entity_id: input_boolean.guest_mode_announced - id: nonna_announce_departure alias: Nonna Announce Departure mode: queued initial_state: true triggers: - trigger: state entity_id: person.mary_falbo from: home conditions: - condition: state entity_id: person.mary_falbo state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: nonna announcement_type: departure - id: nonna_bluetooth_detected_home alias: Nonna Bluetooth Detected Home mode: queued initial_state: false trigger: - platform: template value_template: '{{ states.sensor.mary_room_presence.state != ''not_home''}}' action: - service: device_tracker.see data: dev_id: nonna_iphone_ble_device_tracker location_name: "{% if not is_state('sensor.mary_room_presence', 'not_home')\ \ %}\n home\n{% else %}\n not_home\n{% endif %}" - id: nonna_is_away alias: Nonna is Away initial_state: true triggers: - trigger: state entity_id: person.mary_falbo to: not_home - trigger: state entity_id: binary_sensor.nonna_presence to: 'off' - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: not conditions: - condition: state entity_id: input_select.nonna_status state: Just Left - or: - condition: state entity_id: binary_sensor.nonna_presence state: 'off' - condition: state entity_id: person.mary_falbo state: 'off' actions: - action: input_boolean.turn_off entity_id: input_boolean.nonna_home - id: nonna_is_home initial_state: true alias: Nonna is Home triggers: - trigger: state entity_id: person.mary_falbo to: home - trigger: state entity_id: binary_sensor.nonna_presence to: 'on' - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: input_boolean.nonna_home state: 'off' - or: - condition: state entity_id: binary_sensor.nonna_presence state: 'on' - condition: state entity_id: person.mary_falbo state: home actions: - action: input_boolean.turn_on entity_id: input_boolean.nonna_home - id: nonna_open_garage_upon_arrival alias: Nonna Open Garage Upon Arrival mode: queued initial_state: false trigger: - platform: state entity_id: input_boolean.nonna_home to: 'on' for: seconds: 3 condition: - condition: state entity_id: person.mary_falbo state: home - condition: state entity_id: input_select.nonna_status state: Just Arrived - condition: state entity_id: cover.garage_doors state: closed - condition: state entity_id: input_boolean.bedtime state: 'off' action: - alias: Wait for a person to be detected wait_for_trigger: - platform: state entity_id: binary_sensor.garage_driveway_person_detected to: 'on' timeout: 00:03:00 continue_on_timeout: false - service: cover.open_cover entity_id: cover.garage_door_2 - alias: NWS Alerts Update Event ID History id: nws_alerts_update_event_id_history initial_state: 'on' trigger: - platform: state entity_id: sensor.nws_alerts action: - delay: minutes: 5 - repeat: sequence: - delay: seconds: 5 - condition: template value_template: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID %}\n\ \ {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list\ \ = set(ns.ids) %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None') | reject('match',\ \ 'unknown'))|list ) %} {{ (current_id_list.difference(history_id_list)|list)\ \ | count > 0 }}\n" - service: variable.update_sensor target: entity_id: sensor.nws_alerts_event_ids data: value: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID\ \ %}\n {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list\ \ = set(ns.ids) %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None') |\ \ reject('match', 'unknown'))|list ) %} {% if (current_id_list.difference(history_id_list)|list)[0]\ \ is defined %}\n {{ (current_id_list.difference(history_id_list)|list)[0]\ \ }}\n{% endif %}\n" - service: variable.update_sensor target: entity_id: sensor.nws_alerts_event_ids data: attributes: history_1: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID\ \ %}\n {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list\ \ = set(ns.ids) %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {% if (current_id_list.difference(history_id_list)|list)[0]\ \ is defined %}\n {{ (current_id_list.difference(history_id_list)|list)[0]\ \ }}\n{% endif %}\n" history_2: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_1'') }}' history_3: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_2'') }}' history_4: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_3'') }}' history_5: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_4'') }}' history_6: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_5'') }}' history_7: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_6'') }}' history_8: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_7'') }}' history_9: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_8'') }}' history_10: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_9'') }}' history_11: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_10'') }}' history_12: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_11'') }}' history_13: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_12'') }}' history_14: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_13'') }}' history_15: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_14'') }}' until: - condition: template value_template: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID %}\n\ \ {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list\ \ = set(ns.ids) %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None') | reject('match',\ \ 'unknown'))|list ) %} {{ (current_id_list.difference(history_id_list)|list)\ \ | count == 0}}\n" - id: office_air_quality_detections alias: Office Air Quality Sensor Detections mode: single initial_state: true triggers: - trigger: state entity_id: sensor.office_air_quality to: Hazardous for: minutes: 2 - trigger: state entity_id: sensor.office_air_quality to: Unhealthy for: minutes: 3 - trigger: state entity_id: sensor.office_air_quality to: Moderate for: minutes: 5 - trigger: state entity_id: sensor.office_air_quality to: Acceptable - trigger: state entity_id: input_boolean.office_occupied conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.almost_home state: 'on' variables: purifier: fan.office_air_purifier aqi_state: '{{ states.sensor.office_air_quality.state }}' room_state: '{{ states.input_select.office.state }}' actions: - action: script.air_quality_set_air_purifier_mode data: purifier: '{{ purifier }}' aqi_state: '{{ aqi_state }}' room_state: '{{ room_state }}' - id: office_camera_light_off initial_state: true alias: Office Camera Light Off trigger: - platform: state entity_id: binary_sensor.john_laptop_camera_active to: 'off' for: seconds: 4 - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: binary_sensor.johns_macbook_pro_active to: 'off' condition: - condition: state entity_id: binary_sensor.john_laptop_camera_active state: 'off' - condition: state entity_id: light.office_el_gato_light state: 'on' action: - service: light.turn_off entity_id: light.office_el_gato_light - id: office_camera_light_on initial_state: true alias: Office Camera Light On trigger: - platform: state entity_id: binary_sensor.john_laptop_camera_active to: 'on' for: seconds: 2 - platform: state entity_id: sensor.john_room_presence to: office condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: binary_sensor.john_laptop_camera_active state: 'on' - condition: state entity_id: sensor.john_room_presence state: office - condition: state entity_id: light.office_el_gato_light state: 'off' action: - service: light.turn_on entity_id: light.office_el_gato_light - id: office_dnd_on alias: Office DnD On mode: single trigger: - platform: state entity_id: input_boolean.john_dnd to: 'on' - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: sensor.john_room_presence to: office - platform: state entity_id: input_boolean.office_guest_mode to: 'on' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.john_dnd state: 'on' - condition: state entity_id: sensor.john_room_presence state: office - condition: state entity_id: input_boolean.office_guest_mode state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.office_dnd - id: office_dnd_off alias: Office DnD Off mode: single trigger: - platform: state entity_id: input_boolean.john_dnd to: 'off' for: minutes: 2 - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: input_boolean.office_guest_mode to: 'off' for: minutes: 2 - platform: state entity_id: sensor.john_room_presence from: office condition: - condition: and conditions: - condition: or conditions: - condition: state entity_id: input_boolean.john_dnd state: 'off' - condition: template value_template: '{{ not is_state(''sensor.john_room_presence'',''office'') }}' - condition: state entity_id: input_boolean.office_guest_mode state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.office_dnd - id: office_dnd_light_off initial_state: true alias: Office DnD Light Off trigger: - platform: state entity_id: input_select.office from: DnD condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' action: - service: light.turn_off entity_id: light.hue_play_1 - id: office_dnd_light_on initial_state: true alias: Office DnD Light On trigger: - platform: state entity_id: input_select.office to: DnD - 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_boolean.office_occupied state: 'on' - condition: state entity_id: input_select.office state: DnD action: - service: hue.hue_activate_scene data: group_name: Office Signal scene_name: John DnD - id: office_echo_dnd_off initial_state: true alias: Office Echo DnD Off trigger: - platform: state entity_id: input_select.office to: Auto for: minutes: 5 - platform: state entity_id: input_boolean.office_occupied to: 'off' condition: - condition: state entity_id: switch.john_s_echo_dot_do_not_disturb_switch state: 'on' action: - service: switch.turn_off entity_id: switch.john_s_echo_dot_do_not_disturb_switch - id: office_echo_dnd_on initial_state: true alias: Office Echo DnD On trigger: - platform: state entity_id: input_select.office to: DnD - platform: state entity_id: input_boolean.office_occupied to: 'on' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_select.office state: DnD - condition: state entity_id: binary_sensor.johns_macbook_pro_active state: 'on' action: - service: switch.turn_on entity_id: switch.john_s_echo_dot_do_not_disturb_switch - id: office_lighting_automation_off initial_state: false alias: Office Lighting Automation Off trigger: - platform: state entity_id: input_select.office to: DnD condition: - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.office_lighting_automations - id: office_lighting_automation_on initial_state: false alias: Office Lighting Automation On trigger: - platform: state entity_id: input_select.office from: DnD condition: - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_occupied state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.office_lighting_automations - id: office_lights_day_off initial_state: true alias: Office lights day off trigger: - platform: numeric_state entity_id: sensor.office_aqara_illuminance above: 151 for: minutes: 10 - platform: numeric_state entity_id: sensor.office_aqara_illuminance above: 250 for: minutes: 5 - platform: state entity_id: input_boolean.bad_weather to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' - condition: state entity_id: input_boolean.bad_weather state: 'off' - condition: numeric_state entity_id: sensor.office_aqara_illuminance above: 151 action: - service: light.turn_off entity_id: group.office_lights - service: input_boolean.turn_off entity_id: input_boolean.office_lights_auto - id: office_lights_day_on initial_state: true alias: Office lights Day On trigger: - platform: numeric_state entity_id: sensor.office_aqara_illuminance below: 150 for: minutes: 3 - platform: numeric_state entity_id: sensor.office_aqara_illuminance below: 125 for: minutes: 3 - platform: numeric_state entity_id: sensor.office_aqara_illuminance below: 100 for: minutes: 5 - platform: state entity_id: input_boolean.bad_weather to: 'on' - platform: state entity_id: input_boolean.lighting_automations to: 'on' - platform: state entity_id: input_boolean.office_lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: numeric_state entity_id: sensor.office_aqara_illuminance below: 150 - condition: state entity_id: group.office_lights state: 'off' - condition: or conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.office state: DnD action: - service: light.turn_on entity_id: group.office_lights - service: input_boolean.turn_on entity_id: input_boolean.office_lights_auto - id: office_lights_motion_off initial_state: false alias: Office lights motion off trigger: - platform: state entity_id: binary_sensor.office_aqara_motion_sensor to: 'off' for: minutes: 1 condition: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: binary_sensor.office_presence state: 'off' - condition: state entity_id: group.office_lights state: 'on' action: - service: light.turn_off entity_id: group.office_lights - service: automation.turn_off entity_id: automation.office_lights_motion_off - service: input_boolean.turn_off entity_id: input_boolean.office_lights_auto - id: office_lights_motion_on initial_state: true alias: Office lights Motion On trigger: - platform: state entity_id: binary_sensor.office_aqara_motion_sensor to: 'on' condition: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.office_aqara_illuminance below: 150 - condition: state entity_id: group.office_lights state: 'off' action: - service: light.turn_on entity_id: group.office_lights - service: automation.turn_on entity_id: automation.office_lights_motion_off - service: input_boolean.turn_on entity_id: input_boolean.office_lights_auto - id: office_lights_off initial_state: true alias: Office lights off trigger: - platform: state entity_id: input_select.office to: 'Off' - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_boolean.office_lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.office state: 'Off' - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: numeric_state entity_id: sensor.office_aqara_illuminance above: 151 action: - service: light.turn_off entity_id: group.office_lights - service: input_boolean.turn_off entity_id: input_boolean.office_lights_auto - id: office_lights_on initial_state: true alias: Office lights On trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: sun event: sunset offset: 00:15:00 condition: - condition: or conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_select.office state: DnD - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.office_aqara_illuminance below: 150 - condition: state entity_id: group.office_lights state: 'off' action: - service: light.turn_on entity_id: group.office_lights - service: input_boolean.turn_on entity_id: input_boolean.office_lights_auto - id: office_lights_sleep_mode_off initial_state: false alias: Office Lights Sleep Mode Off trigger: - platform: sun event: sunrise offset: -02:00:00 - platform: time at: 06:00:01 condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: or conditions: - condition: sun after: sunrise - condition: time after: 06:00:00 action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_office - id: office_lights_sleep_mode_on initial_state: false alias: Office Lights Sleep Mode On trigger: - platform: sun event: sunset offset: 00:15:00 - platform: time at: '20:00:01' - platform: state entity_id: input_boolean.dark_outside to: 'on' - platform: state entity_id: input_select.office from: DnD to: Auto condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunset - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: time after: '20:00:00' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_office - id: office_lights_manually_turned_off initial_state: false alias: Office Lights Manually Turned Off trigger: - platform: state entity_id: group.office_lights to: 'off' condition: - condition: state entity_id: input_boolean.office_lights_auto state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.office_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.office_lighting_automations - id: office_mode_auto initial_state: true alias: Office Mode Auto trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.office_dnd to: 'off' - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.office'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_boolean.office_dnd state: 'off' action: - service: input_select.select_option data: entity_id: input_select.office option: Auto - id: office_mode_dnd initial_state: true alias: Office Mode DnD trigger: - platform: state entity_id: input_boolean.office_dnd to: 'on' condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' - condition: state entity_id: input_boolean.office_dnd state: 'on' action: - service: input_select.select_option data: entity_id: input_select.office option: DnD - id: office_mode_dnd_off initial_state: false alias: Office Mode DnD Off trigger: - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: input_boolean.john_dnd to: 'off' for: minutes: 2 condition: - condition: state entity_id: input_select.office state: DnD - condition: or conditions: - condition: state entity_id: input_boolean.john_dnd state: 'off' - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: input_select.select_option data: entity_id: input_select.office option: Auto - id: office_mode_off initial_state: true alias: Office mode off triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_select.house to: Away - trigger: state entity_id: input_select.house to: Bedtime conditions: - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_select.house state: Bedtime actions: - action: input_select.select_option data: entity_id: input_select.office option: 'Off' - id: office_music_clear_queue initial_state: true alias: Office Music Clear Queue trigger: - trigger: time at: 01:00:00 actions: - action: media_player.clear_playlist target: entity_id: media_player.sonos_office data: {} - id: office_music_off initial_state: true alias: Office Music Off trigger: - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: input_select.office to: DnD - platform: state entity_id: input_select.office to: 'Off' - platform: state entity_id: binary_sensor.johns_macbook_pro_active to: 'off' condition: - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_select.office state: DnD - condition: and conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''office'')|map(attribute=''name'')|list | length == 0 }}' - condition: state entity_id: binary_sensor.office_aqara_motion_sensor state: 'off' for: minutes: 3 - condition: state entity_id: media_player.sonos_office state: playing action: - service: media_player.unjoin entity_id: media_player.sonos_main_bedroom - service: media_player.media_pause entity_id: media_player.sonos_office - service: input_boolean.turn_on entity_id: input_boolean.office_music_playing - id: office_music_on initial_state: false alias: Office Music On trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' for: minutes: 3 seconds: 10 condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: sensor.john_room_presence state: office - condition: state entity_id: media_player.sonos_office state: - paused - idle - 'off' - condition: time after: 08:01:00 before: '22:00:00' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' - condition: state entity_id: binary_sensor.johns_macbook_pro_active state: 'on' action: - service: sonos.play_queue entity_id: media_player.sonos_office - service: input_boolean.turn_off entity_id: input_boolean.office_music_playing - id: office_music_resume initial_state: true alias: Office music resume triggers: - trigger: state entity_id: input_boolean.office_occupied to: 'on' for: minutes: 3 seconds: 10 id: office_occupied - trigger: state entity_id: input_select.office from: DnD for: minutes: 2 id: dnd_off - trigger: state entity_id: binary_sensor.johns_macbook_pro_active to: 'on' for: minutes: 2 id: laptop_active - trigger: state entity_id: input_select.john_focus_mode id: focus_changed conditions: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: sensor.john_room_presence state: office - condition: or conditions: - condition: trigger id: focus_changed - condition: state entity_id: media_player.sonos_office state: - paused - idle - 'off' - condition: time after: 08:01:00 before: '23:45:00' - condition: template value_template: '{{ not is_state(''input_select.office'',''DnD'') }}' - condition: state entity_id: binary_sensor.johns_macbook_pro_active state: 'on' action: - action: sonos.get_queue target: entity_id: media_player.sonos_office response_variable: queue_items - choose: - conditions: - condition: or conditions: - condition: trigger id: focus_changed - condition: template value_template: '{{ queue_items[''media_player.sonos_office''] | length == 0 }}' sequence: - variables: playlists: '{{ states(''sensor.john_focus_mode_playlist'') }}' - if: - condition: template value_template: '{{ playlists is sequence }}' then: - repeat: sequence: - variables: media_content_type: "{% if repeat.item | contains('playlist') %}\n\ \ playlist\n{% else %}\n music\n{% endif %}" enqueue_mode: "{% if repeat.index == 1 %}\n replace\n{% else %}\n\ \ add\n{% endif %}" - action: media_player.play_media target: entity_id: media_player.sonos_office data: media_content_type: '{{ media_content_type }}' media_content_id: '{{ repeat.item }}' enqueue: '{{ enqueue_mode }}' for_each: '{{ playlists }}' - action: media_player.shuffle_set target: entity_id: media_player.sonos_office data: shuffle: true default: - if: - condition: state entity_id: media_player.sonos_office state: paused then: - action: media_player.media_play entity_id: media_player.sonos_office else: - action: sonos.play_queue entity_id: media_player.sonos_office - action: input_boolean.turn_off entity_id: input_boolean.office_music_playing - id: office_not_occupied initial_state: true alias: Office not occupied trigger: - platform: state entity_id: binary_sensor.office_presence to: 'off' for: minutes: 2 - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''office'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 2 - platform: state entity_id: binary_sensor.office_aqara_motion_sensor to: 'off' for: minutes: 3 - platform: state entity_id: binary_sensor.office_aqara_occupancy to: 'off' - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: binary_sensor.office_presence state: 'off' - condition: state entity_id: input_boolean.office_guest_mode state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.office_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.office_lighting_automations - id: office_occupied initial_state: true alias: Office occupied trigger: - platform: state entity_id: binary_sensor.office_presence to: 'on' - platform: state entity_id: binary_sensor.office_aqara_occupancy to: 'on' - platform: state entity_id: binary_sensor.office_aqara_motion_sensor to: 'on' - platform: state entity_id: group.office_lights to: 'on' - platform: state entity_id: input_boolean.office_guest_mode to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: binary_sensor.office_aqara_motion_sensor state: 'on' - condition: state entity_id: binary_sensor.office_presence state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.office_occupied - id: office_speech_notifications_off initial_state: true alias: Office Speech Notifications Off trigger: - platform: state entity_id: input_boolean.office_occupied to: 'off' - platform: state entity_id: input_select.office to: DnD condition: - condition: or conditions: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_select.office state: DnD action: - service: input_boolean.turn_off entity_id: input_boolean.office_speech_notifications - id: office_speech_notifications_on initial_state: true alias: Office Speech Notifications On trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' - platform: state entity_id: input_select.office from: DnD for: minutes: 2 condition: - condition: state entity_id: input_boolean.office_occupied state: 'on' - condition: state entity_id: input_select.office state: Auto action: - service: input_boolean.turn_on entity_id: input_boolean.office_speech_notifications - id: office_treadmill_off alias: Office - Treadmill Off mode: single initial_state: false trigger: - platform: time at: 00:00:01 - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: switch.smart_plug_11_switch state: 'on' action: - service: switch.turn_off entity_id: switch.smart_plug_11_switch - id: office_treadmill_on alias: Office - Treadmill On mode: single initial_state: false trigger: - platform: state entity_id: input_boolean.office_occupied to: 'on' condition: - condition: state entity_id: switch.smart_plug_11_switch state: 'off' action: - service: switch.turn_on entity_id: switch.smart_plug_11_switch - id: office_turn_off_purifier alias: Office Air Quality - Turn off Purifier mode: single initial_state: true triggers: - trigger: state entity_id: input_boolean.house_occupied to: 'off' actions: - action: fan.turn_off target: entity_id: fan.office_air_purifier - id: turn_on_exterior_lights alias: Turn On Exterior Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_house_lights to: 'on' action: - service: light.turn_on entity_id: light.exterior_lights - id: turn_off_exterior_lights alias: Turn Off Exterior Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_house_lights to: 'off' action: - service: light.turn_off entity_id: light.exterior_lights - id: turn_on_exterior_flood_lights alias: Turn On Exterior Flood Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_flood_lights to: 'on' action: - service: light.turn_on entity_id: light.exterior_flood_lights - id: turn_off_exterior_flood_lights alias: Turn Off Exterior Flood Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_flood_lights to: 'off' action: - service: light.turn_off entity_id: light.exterior_flood_lights - id: turn_on_exterior_accent_lights alias: Turn On Exterior Accent Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_accent_lights to: 'on' action: - service: light.turn_on entity_id: light.exterior_accent_lights - id: turn_off_exterior_accent_lights alias: Turn Off Exterior Accent Lights mode: single trigger: - platform: state entity_id: input_boolean.exterior_accent_lights to: 'off' action: - service: light.turn_off entity_id: light.exterior_accent_lights - id: activate_exterior_lighting_at_sunset alias: Activate Exterior Lighting at Sunset mode: single trigger: - platform: sun event: sunset offset: 00:15:00 - platform: state entity_id: input_boolean.dark_outside to: 'on' - platform: numeric_state entity_id: sensor.sun_elevation below: 4 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: input_boolean.exterior_house_lights state: 'off' - condition: state entity_id: input_boolean.exterior_flood_lights state: 'off' - condition: state entity_id: input_boolean.exterior_accent_lights state: 'off' - condition: or conditions: - condition: sun after: sunset - condition: numeric_state entity_id: sensor.sun_elevation below: 5 - condition: state entity_id: input_boolean.dark_outside state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.exterior_house_lights - service: input_boolean.turn_on entity_id: input_boolean.exterior_flood_lights - service: input_boolean.turn_on entity_id: input_boolean.exterior_accent_lights - service: script.voice_announcement data: media_players: auto sound: chime speech_message: The sun has set so I'm turning on the exterior lights. - id: activate_exterior_lighting_due_to_weather alias: Activate Exterior Lighting Due to Weather mode: single trigger: - platform: state entity_id: input_boolean.bad_weather to: 'on' - platform: state entity_id: input_boolean.bad_weather to: 'on' for: minutes: 5 - platform: state entity_id: input_boolean.bad_weather to: 'on' for: minutes: 15 - platform: numeric_state entity_id: sensor.tempest_illuminance below: 38 for: minutes: 5 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.exterior_house_lights state: 'off' - condition: not conditions: - condition: sun after: sunset after_offset: -00:10:00 - condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.bad_weather state: 'on' - condition: numeric_state entity_id: sensor.tempest_illuminance below: 45 - condition: numeric_state entity_id: sensor.tempest_illuminance below: 35 action: - service: input_boolean.turn_on entity_id: input_boolean.exterior_house_lights - service: script.voice_announcement data: media_players: auto sound: chime speech_message: The weather is looking a little dark, I'm turning on the exterior lights. - id: deactivate_exterior_lighting_at_sunrise alias: Deactivate Exterior Lighting at Sunrise mode: single trigger: - platform: sun event: sunrise - platform: state entity_id: input_boolean.dark_outside to: 'off' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.exterior_house_lights state: 'on' - condition: or conditions: - condition: sun after: sunrise before: sunset - condition: state entity_id: input_boolean.dark_outside state: 'off' action: - service: input_boolean.turn_off entity_id: input_boolean.exterior_house_lights - service: input_boolean.turn_off entity_id: input_boolean.exterior_flood_lights - service: input_boolean.turn_off entity_id: input_boolean.exterior_accent_lights - service: script.voice_announcement data: media_players: auto sound: chime speech_message: The sun is up so I'm turning off the exterior lights. - id: deactivate_exterior_lighting_due_to_weather alias: Deactivate Exterior Lighting Due to Weather mode: single trigger: - platform: state entity_id: input_boolean.bad_weather to: 'off' for: minutes: 5 - platform: state entity_id: input_boolean.bad_weather to: 'off' for: minutes: 15 - platform: numeric_state entity_id: sensor.tempest_illuminance above: 150 for: minutes: 3 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.exterior_house_lights state: 'on' - condition: numeric_state entity_id: sensor.tempest_illuminance above: 50 - condition: state entity_id: sun.sun state: above_horizon - condition: or conditions: - condition: state entity_id: input_boolean.bad_weather state: 'off' - condition: numeric_state entity_id: sensor.tempest_illuminance above: 150 action: - service: input_boolean.turn_off entity_id: input_boolean.exterior_house_lights - service: script.voice_announcement data: media_players: auto sound: chime speech_message: The weather has improved so I'm turning off the exterior lights. - id: deactivate_accent_lighting_at_bedtime alias: Deactivate Exterior Accent Lighting at Bedtime mode: single trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: input_boolean.exterior_accent_lights state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.exterior_accent_lights - id: garage_lights_accidentally_turned_off_fix alias: Garage Lights Accidentally Turned Off Fix mode: single trigger: - platform: state entity_id: light.exterior_garage_sconces to: 'off' condition: - condition: state entity_id: input_boolean.exterior_house_lights state: 'on' action: - service: light.turn_on entity_id: light.exterior_garage_sconces - id: garage_lights_accidentally_turned_on_fix alias: Garage Lights Accidentally Turned On Fix mode: single trigger: - platform: state entity_id: light.exterior_garage_sconces to: 'on' condition: - condition: state entity_id: input_boolean.exterior_house_lights state: 'off' action: - service: light.turn_off entity_id: light.exterior_garage_sconces - id: house_occupied alias: House occupied initial_state: 'on' triggers: - trigger: state entity_id: - sensor.john_person - sensor.cristina_person - sensor.nonna_person - sensor.tayta_person - sensor.jido_person - sensor.katia_person - sensor.joe_person - sensor.sylvia_person - sensor.alex_person to: home - trigger: event event_type: automation_reloaded - trigger: homeassistant event: start conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: template value_template: '{{ state_attr(trigger.entity_id, ''unlock_privilege'') == "on" }} ' - condition: state entity_id: group.all_people state: home actions: - action: input_boolean.turn_on entity_id: input_boolean.house_occupied - 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.cristina_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.cristina_status_dropdown option: Home - choose: conditions: - condition: state entity_id: input_select.john_status state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.john_status option: Home - choose: conditions: - condition: state entity_id: input_select.joe_status_dropdown state: Just Arrived sequence: - service: input_select.select_option data: entity_id: input_select.joe_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.cristina_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.cristina_falbo_status_dropdown option: Away - choose: conditions: - condition: state entity_id: input_select.john_status state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.john_status option: Away - choose: conditions: - condition: state entity_id: input_select.joe_status_dropdown state: Just Left sequence: - service: input_select.select_option data: entity_id: input_select.joe_status_dropdown option: Away - id: people_status_arrived alias: Mark person as just arrived mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.john_home - input_boolean.cristina_home - input_boolean.joe_home - input_boolean.nonna_home - input_boolean.katia_home - input_boolean.sylvia_home to: 'on' action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_boolean.john_home' %}\n input_select.john_status\n\ {% elif trigger.entity_id == 'input_boolean.cristina_home' %}\n input_select.cristina_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.joe_home' %}\n input_select.joe_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.nonna_home' %}\n input_select.nonna_status\n\ {% elif trigger.entity_id == 'input_boolean.katia_home' %}\n input_select.katia_status\n\ {% elif trigger.entity_id == 'input_boolean.sylvia_home' %}\n input_select.sylvia_status\n\ {% endif %}\n" option: "{% if trigger.entity_id == 'input_boolean.cristina_home' %}\n {% if\ \ states.input_select.cristina_status_dropdown.state == 'Just Left' %}\n \ \ Home\n {% else %}\n Just Arrived\n {% endif %}\n{% elif trigger.entity_id\ \ == 'input_boolean.john_home' %}\n {% if states.input_select.john_status.state\ \ == 'Just Left' %}\n Home\n {% else %}\n Just Arrived\n {% endif\ \ %}\n{% elif trigger.entity_id == 'input_boolean.joe_home' %}\n {% if states.input_select.joe_status_dropdown.state\ \ == 'Just Left' %}\n Home\n {% else %}\n Just Arrived\n {% endif\ \ %}\n{% elif trigger.entity_id == 'input_boolean.nonna_home' %}\n {% if\ \ states.input_select.nonna_status.state == 'Just Left' %}\n Home\n {%\ \ else %}\n Just Arrived\n {% endif %}\n{% elif trigger.entity_id == 'input_boolean.katia_home'\ \ %}\n {% if states.input_select.katia_status.state == 'Just Left' %}\n \ \ Home\n {% else %}\n Just Arrived\n {% endif %}\n{% elif trigger.entity_id\ \ == 'input_boolean.sylvia_home' %}\n {% if states.input_select.sylvia_status.state\ \ == 'Just Left' %}\n Home\n {% else %}\n Just Arrived\n {% endif\ \ %}\n{% endif %}\n" - id: people_status_away alias: Mark person as away mode: parallel initial_state: 'on' triggers: - trigger: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status - input_select.joe_status_dropdown - input_select.nonna_status - input_select.katia_status - input_select.sylvia_status to: Just Left for: minutes: 5 actions: - action: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_select.cristina_status_dropdown'\ \ %}\n input_select.cristina_status_dropdown\n{% elif trigger.entity_id ==\ \ 'input_select.john_status' %}\n input_select.john_status\n{% elif trigger.entity_id\ \ == 'input_select.joe_status_dropdown' %}\n input_select.joe_status_dropdown\n\ {% elif trigger.entity_id == 'input_select.nonna_status' %}\n input_select.nonna_status\n\ {% elif trigger.entity_id == 'input_select.katia_status' %}\n input_select.katia_status\n\ {% elif trigger.entity_id == 'input_select.sylvia_status' %}\n input_select.sylvia_status\n\ {% endif %}\n" option: Away - id: people_status_extended_away alias: Mark person as extended away mode: parallel initial_state: 'on' triggers: - trigger: state entity_id: input_select.john_status to: Away for: hours: 24 - trigger: state entity_id: input_select.cristina_status_dropdown to: Away for: hours: 24 actions: - action: input_select.select_option data_template: entity_id: "{% if trigger.entity_id == 'input_select.john_status' %}\n input_select.john_status\n\ {% elif trigger.entity_id == 'input_select.cristina_status_dropdown' %}\n\ \ input_select.cristina_status_dropdown\n{% endif %}\n" option: Extended Away - id: people_status_home alias: Mark person as home mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status - input_select.joe_status_dropdown - input_select.nonna_status - input_select.katia_status - input_select.sylvia_status to: Just Arrived for: minutes: 5 - platform: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status - input_select.joe_status_dropdown - input_select.nonna_status - input_select.katia_status from: Just Left to: Just Arrived action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_select.cristina_status_dropdown'\ \ %}\n input_select.cristina_status_dropdown\n{% elif trigger.entity_id ==\ \ 'input_select.john_status' %}\n input_select.john_status\n{% elif trigger.entity_id\ \ == 'input_select.joe_status_dropdown' %}\n input_select.joe_status_dropdown\n\ {% elif trigger.entity_id == 'input_select.nonna_status' %}\n input_select.nonna_status\n\ {% elif trigger.entity_id == 'input_select.katia_status' %}\n input_select.katia_status\n\ {% elif trigger.entity_id == 'input_select.sylvia_status' %}\n input_select.sylvia_status\n\ {% endif %}\n" option: Home - id: people_status_left alias: Mark person as just left mode: parallel initial_state: 'on' trigger: - platform: state entity_id: - input_boolean.cristina_home - input_boolean.john_home - input_boolean.joe_home - input_boolean.nonna_home - input_boolean.katia_home - input_boolean.sylvia_home to: 'off' action: - service: input_select.select_option data: entity_id: "{% if trigger.entity_id == 'input_boolean.cristina_home' %}\n input_select.cristina_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.john_home' %}\n input_select.john_status\n\ {% elif trigger.entity_id == 'input_boolean.joe_home' %}\n input_select.joe_status_dropdown\n\ {% elif trigger.entity_id == 'input_boolean.nonna_home' %}\n input_select.nonna_status\n\ {% elif trigger.entity_id == 'input_boolean.katia_home' %}\n input_select.katia_status\n\ {% elif trigger.entity_id == 'input_boolean.sylvia_home' %}\n input_select.sylvia_status\n\ {% endif %}\n" option: Just Left - id: cristina_phone_plugged_in alias: Cristina's phone is plugged in mode: single trigger: - platform: state entity_id: sensor.cfalb2_battery_level to: Charging - platform: state entity_id: sensor.cfalb2_battery_level to: Full condition: - condition: state entity_id: input_boolean.cristina_phone_plugged_in state: 'off' - condition: or conditions: - condition: state entity_id: sensor.cfalb2_battery_level state: Charging - condition: state entity_id: sensor.cfalb2_battery_level state: Full action: - service: input_boolean.turn_on entity_id: input_boolean.cristina_phone_plugged_in - id: cristina_phone_unplugged alias: Cristina's phone is unplugged mode: single trigger: - platform: state entity_id: sensor.cfalb2_battery_level to: Not Charging condition: - condition: state entity_id: sensor.cfalb2_battery_level state: Not Charging action: - service: input_boolean.turn_off entity_id: input_boolean.cristina_phone_plugged_in - id: john_phone_plugged_in alias: John's phone is plugged in mode: single trigger: - platform: state entity_id: sensor.jk_iphone_14_battery_state to: Charging - platform: state entity_id: sensor.jk_iphone_14_battery_state to: Full condition: - condition: state entity_id: input_boolean.john_phone_plugged_in state: 'off' - condition: or conditions: - condition: state entity_id: sensor.jk_iphone_14_battery_state state: Charging - condition: state entity_id: sensor.jk_iphone_14_battery_state state: Full action: - service: input_boolean.turn_on entity_id: input_boolean.john_phone_plugged_in - id: john_phone_unplugged alias: John's phone is unplugged mode: single trigger: - platform: state entity_id: sensor.jk_iphone_14_battery_state to: Not Charging condition: - condition: state entity_id: sensor.jk_iphone_14_battery_state state: Not Charging action: - service: input_boolean.turn_off entity_id: input_boolean.john_phone_plugged_in - id: playroom_activate_party_time initial_state: true alias: Playroom - Activate Party Time mode: single trigger: - platform: event event_type: zwave_js_value_notification event_data: device_id: cd626e869b9ddd77c680a7c1b1bd9bfc condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.playroom_occupied state: 'on' action: - if: - alias: Party mode is already enabled condition: state entity_id: input_boolean.playroom_party_time_boolean state: 'on' then: - alias: Skip to the next track service: media_player.media_next_track target: entity_id: media_player.sonos_playroom else: - service: media_player.play_media target: entity_id: media_player.sonos_playroom data: media_content_type: playlist media_content_id: spotify:playlist:0DSw040Fn3W2uodatu4Fdn extra: volume: 60 - service: scene.turn_on target: entity_id: scene.playroom_osaka - service: input_boolean.turn_on target: entity_id: input_boolean.playroom_party_time_boolean - service: script.general_notification data: title: Playroom Party Time message: Playroom party time has been turned on! devices: jk priority: time-sensitive tag: playroom-party-time - id: playroom_deactivate_party_time initial_state: true alias: Playroom - Deactivate Party Time mode: single trigger: - platform: event event_type: zwave_js_value_notification event_data: device_id: cd626e869b9ddd77c680a7c1b1bd9bfc value: KeyReleased condition: - condition: state entity_id: input_boolean.playroom_party_time_boolean state: 'on' action: - service: media_player.media_pause entity_id: media_player.sonos_playroom - service: scene.turn_off target: entity_id: scene.playroom_osaka - service: input_boolean.turn_on target: entity_id: input_boolean.playroom_party_time_boolean - service: script.general_notification data: title: Playroom Party Time Off message: Playroom party time has been turned OFF! devices: jk priority: time-sensitive tag: playroom-party-time - id: playroom_lights_day_off initial_state: true alias: Playroom lights day off trigger: - platform: numeric_state entity_id: - sensor.playroom_motion_sensor_illuminance - sensor.playroom_entry_motion_sensor_illuminance above: 115 for: minutes: 3 - platform: state entity_id: input_boolean.bad_weather to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.playroom_lighting_automations state: 'on' - condition: state entity_id: input_select.playroom state: Auto - condition: state entity_id: input_boolean.bad_weather state: 'off' - condition: state entity_id: input_boolean.playroom_lights_auto state: 'on' - condition: state entity_id: sun.sun state: above_horizon - condition: numeric_state entity_id: - sensor.playroom_motion_sensor_illuminance - sensor.playroom_entry_motion_sensor_illuminance above: 115 - condition: state entity_id: light.playroom_lights state: 'on' action: - service: light.turn_off entity_id: group.playroom_lights - id: playroom_lights_day_on initial_state: true alias: Playroom lights Day On trigger: - platform: numeric_state entity_id: - sensor.playroom_motion_sensor_illuminance - sensor.playroom_entry_motion_sensor_illuminance below: 100 for: minutes: 5 - platform: numeric_state entity_id: - sensor.playroom_motion_sensor_illuminance - sensor.playroom_entry_motion_sensor_illuminance below: 75 for: minutes: 2 - platform: numeric_state entity_id: - sensor.playroom_motion_sensor_illuminance - sensor.playroom_entry_motion_sensor_illuminance below: 25 for: minutes: 1 - platform: state entity_id: input_boolean.bad_weather to: 'on' - platform: state entity_id: input_boolean.lighting_automations to: 'on' - platform: state entity_id: input_boolean.playroom_lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.playroom_lighting_automations state: 'on' - condition: state entity_id: input_boolean.playroom_occupied state: 'on' - condition: or conditions: - condition: numeric_state entity_id: sensor.playroom_entry_motion_sensor_illuminance below: 100 - condition: numeric_state entity_id: sensor.playroom_motion_sensor_illuminance below: 100 - condition: state entity_id: group.playroom_lights state: 'off' - condition: state entity_id: input_select.playroom state: Auto action: - service: light.turn_on entity_id: group.playroom_lights - id: playroom_lights_motion_off initial_state: false alias: Playroom lights motion off trigger: - platform: state entity_id: binary_sensor.playroom_motion to: 'off' for: minutes: 2 - platform: state entity_id: binary_sensor.playroom_occupancy to: 'off' condition: - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: state entity_id: group.playroom_lights state: 'on' action: - service: light.turn_off entity_id: group.playroom_lights - service: automation.turn_off entity_id: automation.playroom_lights_motion_off - id: playroom_lights_motion_on initial_state: true alias: Playroom lights Motion On trigger: - platform: state entity_id: binary_sensor.playroom_entry_motion_sensor_motion to: 'on' condition: - condition: state entity_id: input_select.playroom state: Auto - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.playroom_lighting_automations state: 'on' - condition: or conditions: - condition: numeric_state entity_id: sensor.playroom_entry_motion_sensor_illuminance below: 75 - condition: numeric_state entity_id: sensor.playroom_motion_sensor_illuminance below: 75 - condition: state entity_id: group.playroom_lights state: 'off' action: - service: light.turn_on entity_id: group.playroom_lights - service: input_boolean.turn_on entity_id: input_boolean.playroom_lights_auto - id: playroom_lights_off initial_state: false alias: Playroom lights off trigger: - trigger: state entity_id: input_select.playroom to: 'Off' - trigger: state entity_id: input_boolean.playroom_occupied to: 'off' - trigger: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: or conditions: - condition: state entity_id: input_select.playroom state: 'Off' - condition: state entity_id: input_boolean.playroom_occupied state: 'off' action: - action: light.turn_off entity_id: group.playroom_lights - if: - condition: state entity_id: switch.christmas_playroom_lights state: 'on' then: - action: switch.turn_off entity_id: swtich.christmas_playroom_lights - id: playroom_lights_to_off initial_state: true alias: Playroom Lights to Off trigger: - platform: state entity_id: input_select.playroom to: 'Off' - platform: state entity_id: input_boolean.playroom_occupied to: 'off' - 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_boolean.playroom_lighting_automations state: 'on' - condition: or conditions: - condition: state entity_id: input_select.playroom state: 'Off' - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: state entity_id: light.playroom_lights state: 'on' action: - service: light.turn_off entity_id: light.playroom_lights - service: input_boolean.turn_off entity_id: input_boolean.playroom_lights_auto - id: playroom_lights_manually_turned_off initial_state: true alias: Playroom Lights Manually Turned Off trigger: - platform: state entity_id: light.playroom_lights to: 'off' condition: - condition: state entity_id: input_boolean.playroom_lights_auto state: 'on' - condition: template value_template: '{{ trigger.to_state.context.parent_id == none }}' action: - service: input_boolean.turn_off entity_id: input_boolean.playroom_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.playroom_lighting_automations - service: script.general_notification data: title: Playroom Lights message: The playroom lights have been turned off. The parent id is {{trigger.to_state.context.parent_id}} and the user_id is {{trigger.to_state.context.user_id}}. devices: jk priority: passive tag: playroom-lighting-automation - id: playroom_media_player_unjoin initial_state: true alias: Playroom Media Player Unjoin trigger: - platform: state entity_id: input_boolean.playroom_occupied to: 'off' - platform: state entity_id: input_select.playroom to: 'Off' - platform: state entity_id: media_player.sonos_playroom to: paused for: minutes: 10 - platform: state entity_id: media_player.sonos_playroom to: paused for: minutes: 30 condition: - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''playroom'')|map(attribute=''name'')|list | length == 0 }}' - condition: state entity_id: media_player.sonos_playroom state: paused - condition: template value_template: '{{ states.media_player.sonos_playroom.attributes.group_members | count > 1 }}' action: - service: media_player.unjoin entity_id: media_player.sonos_playroom - id: playroom_mode_auto initial_state: true alias: Playroom mode auto trigger: - platform: state entity_id: input_boolean.playroom_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.playroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.playroom option: Auto - id: playroom_mode_off initial_state: true alias: Playroom mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.playroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.playroom option: 'Off' - id: playroom_music_off initial_state: true alias: Playroom Music Off trigger: - platform: state entity_id: input_boolean.playroom_occupied to: 'off' - platform: state entity_id: input_select.playroom to: 'Off' condition: - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''playroom'')|map(attribute=''name'')|list | length == 0 }}' - condition: state entity_id: media_player.sonos_playroom state: playing action: - service: media_player.unjoin entity_id: media_player.sonos_playroom - service: media_player.media_pause entity_id: media_player.sonos_playroom - id: playroom_not_occupied initial_state: true alias: Playroom not occupied trigger: - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''playroom'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 2 - platform: state entity_id: binary_sensor.playroom_occupancy to: 'off' - platform: state entity_id: binary_sensor.playroom_occupancy to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.playroom_occupancy to: 'off' for: minutes: 10 - platform: state entity_id: binary_sensor.playroom_motion to: 'off' for: minutes: 5 - platform: state entity_id: binary_sensor.playroom_presence_sensor to: 'off' condition: - condition: state entity_id: input_boolean.playroom_occupied state: 'on' - condition: state entity_id: binary_sensor.playroom_entry_motion_sensor_motion state: 'off' - condition: state entity_id: binary_sensor.playroom_presence_sensor state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''playroom'')|map(attribute=''name'')|list | length == 0 }}' - condition: state entity_id: binary_sensor.playroom_motion state: 'off' for: minutes: 10 action: - service: input_boolean.turn_off entity_id: input_boolean.playroom_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.playroom_lighting_automations - id: playroom_occupied initial_state: true alias: Playroom occupied trigger: - platform: state entity_id: binary_sensor.playroom_entry_motion_sensor_motion to: 'on' - platform: state entity_id: group.playroom_lights to: 'on' - platform: state entity_id: binary_sensor.playroom_presence_sensor to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.playroom_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''playroom'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: binary_sensor.playroom_occupancy state: 'on' - condition: state entity_id: binary_sensor.playroom_motion state: 'on' - condition: state entity_id: binary_sensor.playroom_presence_sensor state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.playroom_occupied - id: pool_mode_auto initial_state: true alias: Pool Mode Auto trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.pool'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.pool option: Auto - id: pool_mode_off initial_state: true alias: Pool Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.pool'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.pool option: 'Off' - id: pool_motion_restart_timer initial_state: true alias: Pool Motion - Restart Timer mode: single trigger: - platform: state entity_id: - binary_sensor.pool_motion_east_entry_occupancy - binary_sensor.pool_motion_west_occupancy to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.pool state: Auto action: - service: timer.start entity_id: timer.pool_occupancy - id: pool_not_occupied initial_state: true alias: Pool Not Occupied trigger: - platform: state entity_id: timer.pool_occupancy to: idle - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''gazebo'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 2 - platform: state entity_id: binary_sensor.pool_main_gate_opening to: 'off' condition: - condition: state entity_id: input_boolean.pool_occupied state: 'on' - condition: state entity_id: binary_sensor.pool_motion_sensor_status state: 'off' - condition: state entity_id: timer.pool_occupancy state: idle - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''gazebo'')|map(attribute=''name'')|list | length == 0 }}' action: - service: input_boolean.turn_off entity_id: input_boolean.pool_occupied - id: pool_occupied initial_state: true alias: Pool Occupied trigger: - platform: state entity_id: binary_sensor.pool_motion_sensor_status to: 'on' - platform: state entity_id: binary_sensor.pool_main_gate_opening - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.pool_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''gazebo'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: timer.pool_occupancy state: active action: - service: input_boolean.turn_on entity_id: input_boolean.pool_occupied - id: powder_room_fan_off initial_state: true alias: Powder Room Fan Off trigger: - platform: state entity_id: input_select.powder_room to: 'Off' - platform: state entity_id: input_boolean.powder_room_occupied to: 'off' for: minutes: 5 condition: - condition: state entity_id: fan.powder_room_fan state: 'on' - condition: or conditions: - condition: state entity_id: input_select.powder_room state: 'Off' - condition: state entity_id: input_boolean.powder_room_occupied state: 'off' action: - service: fan.turn_off entity_id: fan.powder_room_fan - id: powder_room_lights_off initial_state: true alias: Powder Room lights off trigger: - platform: state entity_id: input_select.powder_room to: 'Off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.powder_room_main_lights state: 'on' - condition: state entity_id: input_select.powder_room state: 'Off' action: - service: light.turn_off entity_id: light.powder_room_main_lights - id: powder_room_mode_auto initial_state: true alias: Powder Room mode Auto trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.powder_room'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.powder_room option: Auto - id: powder_room_mode_off initial_state: true alias: Powder Room mode off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.powder_room'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.house state: Away - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.powder_room option: 'Off' - id: powder_room_not_occupied initial_state: true alias: Powder Room Not Occupied trigger: - platform: state entity_id: binary_sensor.powder_room_door to: 'on' - platform: state entity_id: binary_sensor.powder_room_door to: 'on' for: minutes: 5 - platform: state entity_id: light.powder_room_main_lights to: 'off' - platform: state entity_id: light.powder_room_main_lights to: 'off' for: minutes: 5 condition: - condition: state entity_id: input_boolean.powder_room_occupied state: 'on' - condition: or conditions: - condition: and conditions: - condition: state entity_id: binary_sensor.powder_room_door state: 'on' - condition: state entity_id: light.powder_room_main_lights state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.powder_room_door state: 'on' for: minutes: 5 - condition: state entity_id: light.powder_room_main_lights state: 'on' for: minutes: 5 action: - service: input_boolean.turn_off entity_id: input_boolean.powder_room_occupied - id: powder_room_occupied initial_state: true alias: Powder Room Occupied trigger: - platform: state entity_id: binary_sensor.powder_room_door to: 'off' - platform: state entity_id: light.powder_room_main_lights to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.powder_room_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.powder_room_door state: 'off' - condition: state entity_id: light.powder_room_main_lights state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.powder_room_occupied - id: primary_school_day_off alias: Primary School Day Off mode: single initial_state: false trigger: - platform: time at: '23:59:00' condition: - condition: state entity_id: input_boolean.primary_school_day state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.primary_school_day - service: automation.turn_on entity_id: - automation.school_day_reminder - if: - condition: time weekday: - wed - condition: state entity_id: input_boolean.district_late_start_wednesday state: 'on' then: - service: input_boolean.turn_off entity_id: input_boolean.district_late_start_wednesday - id: primary_school_day_on alias: Primary School Day On mode: single initial_state: false trigger: - platform: time at: 02:00:01 - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.district_school_year_active state: 'on' - condition: state entity_id: binary_sensor.school_day state: 'on' - condition: state entity_id: binary_sensor.primary_school_closed state: 'off' action: - service: input_boolean.turn_on entity_id: input_boolean.primary_school_day - service: automation.turn_on entity_id: - automation.school_day_reminder - if: - condition: time weekday: - wed then: - service: input_boolean.turn_on entity_id: input_boolean.district_late_start_wednesday - id: announcement_queue_processor alias: Announcement Queue - Processor mode: single initial_state: true trigger: - trigger: state entity_id: sensor.announcement_queue - trigger: state entity_id: input_boolean.announcement_queue_running to: 'off' - trigger: mqtt topic: home/announcement_queue/state - trigger: state entity_id: input_boolean.house_occupied to: 'on' for: minutes: 5 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{% set q = state_attr(''sensor.announcement_queue'', ''queue'') %} {{ q is iterable and q | length > 0 }} ' - condition: state entity_id: input_boolean.announcement_queue_running state: 'off' - condition: template value_template: "{% set q = state_attr('sensor.announcement_queue', 'queue') %}\ \ {% if q is iterable and q | length > 0 %}\n {% set next_msg = q[0] %}\n \ \ {% if next_msg.priority == 'critical' %}\n true\n {% else %}\n {{ states('binary_sensor.announceable_rooms_occupied')\ \ == 'on' }}\n {% endif %}\n{% else %}\n false\n{% endif %}\n" action: - action: input_boolean.turn_on entity_id: input_boolean.announcement_queue_running - variables: raw_queue: '{{ state_attr(''sensor.announcement_queue'', ''queue'') }}' queue: "{% if raw_queue is iterable %}\n {# Filter out expired messages and\ \ apply priority rules #}\n {% set now_iso = now().isoformat() %}\n {% set\ \ valid_msgs = namespace(list=[]) %}\n {% for msg in raw_queue %}\n {%\ \ if msg is mapping %}\n {% set expires_at = msg.get('expires_at') %}\n\ \ {% set priority = msg.get('priority', 'normal') %}\n {# Keep message\ \ if not expired - we process all priorities when occupied #}\n {% if\ \ not expires_at or expires_at > now_iso %}\n {% set valid_msgs.list\ \ = valid_msgs.list + [msg] %}\n {% endif %}\n {% endif %}\n {% endfor\ \ %}\n {{ valid_msgs.list }}\n{% else %}\n [] \n{% endif %}" next: '{{ queue[0] if queue | length > 0 else {} }}' updated: '{{ queue[1:] if queue | length > 1 else [] }}' payload_json: '{{ {"queue": updated} | to_json }}' - choose: - conditions: - condition: template value_template: '{{ queue | length > 0 and (next.get(''speech_message'') is string or next.get(''sound_file'') is string) }}' sequence: - alias: Broadcast the announcement continue_on_error: true action: script.announcement_engine data: speech_message: '{{ next.speech_message }}' sound_file: '{{ next.sound_file }}' sound_length: '{{ next.sound_length }}' sound_volume: '{{ next.sound_volume }}' speech_volume: '{{ next.speech_volume }}' media_players: '{{ next.media_players }}' - action: mqtt.publish data: topic: home/announcement_queue/data payload: '{{ payload_json }}' retain: true - action: mqtt.publish data: topic: home/announcement_queue/state payload: queue retain: true - delay: 00:00:03 - action: input_boolean.turn_off entity_id: input_boolean.announcement_queue_running - id: announcement_queue_cleanup alias: Announcement Queue - Cleanup on Empty House mode: single trigger: - trigger: state entity_id: input_boolean.house_occupied to: 'off' action: - variables: raw_queue: '{{ state_attr(''sensor.announcement_queue'', ''queue'') }}' cleaned_queue: "{% if raw_queue is iterable %}\n {# When house becomes empty:\ \ #}\n {# 1. Keep only critical and high priority messages #}\n {# 2. Remove\ \ expired messages #}\n {% set now_iso = now().isoformat() %}\n {% set valid_msgs\ \ = namespace(list=[]) %}\n {% for msg in raw_queue %}\n {% set expires_at\ \ = msg.get('expires_at') %}\n {% set priority = msg.get('priority', 'normal')\ \ %}\n {% if (not expires_at or expires_at > now_iso) and\n (priority\ \ in ['critical', 'high']) %}\n {% set valid_msgs.list = valid_msgs.list\ \ + [msg] %}\n {% endif %}\n {% endfor %}\n {{ valid_msgs.list }}\n{%\ \ else %}\n []\n{% endif %}" payload_json: '{{ {"queue": cleaned_queue} | to_json }}' - action: system_log.write data: level: warning message: 'Queue cleaned due to empty house. Remaining messages: {{ cleaned_queue | length }} ' - action: mqtt.publish data: topic: home/announcement_queue/data payload: '{{ payload_json }}' retain: true - action: mqtt.publish data: topic: home/announcement_queue/state payload: queue retain: true - id: quiet_mode_turn_off initial_state: true alias: Quiet Mode - Turn Off triggers: - trigger: state entity_id: binary_sensor.everybody_awake to: 'on' conditions: - condition: state entity_id: input_boolean.quiet_mode state: 'on' - condition: and conditions: - condition: state entity_id: binary_sensor.nino_bed_occupied state: 'off' - condition: state entity_id: binary_sensor.gianluca_bed_occupied state: 'off' - condition: state entity_id: binary_sensor.john_bed_occupied state: 'off' - condition: state entity_id: binary_sensor.cristina_bed_occupied state: 'off' actions: - action: input_boolean.turn_off entity_id: input_boolean.quiet_mode - id: quiet_mode_turn_on initial_state: true alias: Quiet Mode - Turn On triggers: - trigger: state entity_id: binary_sensor.somebody_in_bed to: 'on' conditions: - condition: state entity_id: input_boolean.quiet_mode state: 'off' actions: - action: input_boolean.turn_on entity_id: input_boolean.quiet_mode - action: script.voice_announcement data: media_players: auto sound: harp-flourish speech_message: "{% set who = \"\" %} {% if states.input_boolean.gianluca_in_bed.state\ \ == \"on\" %}\n {% set who = \"Gianluca\" %}\n{% elif states.input_boolean.nino_in_bed.state\ \ == \"on\" %}\n {% set who = \"Nino\" %}\n{% elif states.input_boolean.john_is_in_bed.state\ \ == \"on\" %}\n {% set who = \"John\" %}\n{% elif states.input_boolean.cristina_in_bed.state\ \ == \"on\" %}\n {% set who = \"Cristina\" %}\n{% endif %}\n{{\n [\n \ \ \"Shhh...\" ~ who ~ \" is going to sleep.\",\n \"Quiet time, \" ~ who\ \ ~ \" is going to sleep!\",\n \"Pardon the interruption but \" ~ who ~\ \ \" is going to sleep, please be quiet!\",\n \"Attention! Quiet mode has\ \ been enabled for \" ~ who ~ \"'s nap.\"\n ] | random\n}}" - alias: Reset Room Selection After Vacuum Finishes description: Turns off all room selection booleans when the vacuum completes cleaning trigger: - platform: state entity_id: vacuum.roborock_s7 to: returning condition: - condition: template value_template: "{% for entity in states.input_boolean if 'vacuum_' in entity.entity_id\ \ %}\n {% if is_state(entity.entity_id, 'on') %}\n {{ true }}\n {% break\ \ %}\n {% endif %}\n{% endfor %} {{ false }}\n" action: - service: input_boolean.turn_off target: entity_id: "{% set entities = [] %} {% for entity in states.input_boolean if\ \ 'vacuum_' in entity.entity_id %}\n {% if is_state(entity.entity_id, 'on')\ \ %}\n {% set entities = entities + [entity.entity_id] %}\n {% endif %}\n\ {% endfor %} {{ entities | join(',') }} " - id: returned_home initial_state: 'on' alias: Returned home trigger: - platform: numeric_state entity_id: sensor.home_nearest_distance below: 0.5 - platform: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status to: Just Arrived condition: condition: and conditions: - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.house_occupied.last_updated)) | int < 300 }}' - condition: or conditions: - condition: template value_template: '{{ is_state(''input_select.john_status'',''Just Arrived'') }}' - condition: template value_template: '{{ is_state(''input_select.cristina_status_dropdown'',''Just Arrived'') }}' action: - service: script.general_notification data: title: Home Arrival Mode message: I noticed that you're arriving home so I've opened the garage and turned on a couple of lights. devices: jk priority: passive - alias: If it's late then turn on a late night scene choose: - alias: Late night conditions: - condition: and conditions: - condition: state entity_id: sun.sun state: below_horizon - condition: time after: '21:00:00' sequence: - scene: scene.returned_home_late default: - scene: scene.returned_home - id: robot_vacuum_maintenance_reminder alias: Robot Vacuum Maintenance Reminder mode: single triggers: - trigger: time at: '20:45:00' id: reminder_time - trigger: time at: 07:05:00 id: reminder_time conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' actions: - wait_for_trigger: - trigger: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'on' for: minutes: 5 timeout: minutes: 20 continue_on_timeout: true - wait_for_trigger: - trigger: state entity_id: binary_sensor.kitchen_motion_sensor_status to: 'on' timeout: minutes: 10 continue_on_timeout: true - action: script.voice_announcement data: media_players: auto sound: one-chime priority: high speech_message: "{% if trigger.entity_id == \"binary_sensor.roborock_s7_water_shortage\"\ \ %}\n \"The robot vacuum is water tank is empty, please refill it as soon\ \ as possible.\"\n{% elif trigger.entity_id == \"sensor.roborock_s7_sensor_dirty_left\"\ \ %}\n \"The robot vacuum sensors are dirty and need to be cleaned.\"\n{%\ \ else %}\n \"The robot vacuum needs maintenance, please check the app for\ \ more details.\"\n{% endif %}" - action: script.general_notification data: message: "{% if trigger.entity_id == \"binary_sensor.roborock_s7_water_shortage\"\ \ %}\n \"The robot vacuum is water tank is empty, please refill it as soon\ \ as possible.\"\n{% elif trigger.entity_id == \"sensor.roborock_s7_sensor_dirty_left\"\ \ %}\n \"The robot vacuum sensors are dirty and need to be cleaned.\"\n{%\ \ else %}\n \"The robot vacuum needs maintenance, please check the app for\ \ more details.\"\n{% endif %}" title: Robot Vacuum Maintenance devices: jk priority: time-sensitive tag: vacuum-notifications - id: robot_vacuum_reorder_reminder alias: Robot Vacuum Reorder Reminder mode: single trigger: - platform: numeric_state entity_id: sensor.roborock_s7_main_brush_left below: 72000 - platform: numeric_state entity_id: sensor.roborock_s7_side_brush_left below: 72000 - platform: numeric_state entity_id: sensor.roborock_s7_filter_left below: 72000 action: - wait_for_trigger: - platform: time at: 07:05:00 - wait_for_trigger: - platform: state entity_id: binary_sensor.kitchen_motion_sensor_occupancy to: 'on' for: minutes: 10 timeout: minutes: 10 continue_on_timeout: true - wait_for_trigger: - platform: state entity_id: sensor.john_room_presence to: kitchen timeout: minutes: 5 continue_on_timeout: true - service: script.voice_announcement data: media_players: auto sound: one-chime priority: high speech_message: The robot vacuum will need some maintenance soon. Please reoder {{trigger.from_state.attributes.friendly_name}} - service: script.general_notification data: message: The robot vacuum will need some maintenance soon. Please reorder {{trigger.from_state.attributes.friendly_name}} title: Robot Vacuum Maintenance devices: jk priority: time-sensitive tag: vacuum-notifications - id: school_day_reminder alias: School Day Reminder mode: single initial_state: false trigger: - platform: time at: input_datetime.school_day_breakfast_reminder_time condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.nino_school_day state: 'on' - condition: state entity_id: input_boolean.gianluca_school_day state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: school-bell-chime speech_message: "{% set nino_school = states.input_boolean.nino_school_day.state\ \ %} {% set late_start = states.input_boolean.district_late_start_wednesday.state\ \ %} {% set gl_school = states.input_boolean.gianluca_school_day.state %}\n\ {# Both kids have school today #} {% if nino_school == \"on\" and gl_school\ \ == \"on\" %}\n {% if late_start == \"on\" %}\n {{\n [\n \ \ \"Hey gang, it's time to eat breakfast and get ready for school! As a reminder,\ \ Nino has a late start today!\",\n \"Hey there, it's time to get the\ \ kids breakfast ready. Today's a school day, but remember that Nino has a\ \ late start today.\",\n \"Just at reminder that there's school today,\ \ so it's time for breakfast. Just an FYI, Nino has late start today!\"\n\ \ ] | random\n }}\n {% else %}\n {{\n [\n \"Hey gang,\ \ it's time to eat breakfast and get ready for school!\",\n \"Hey there,\ \ it's time to get the kids breakfast ready. Today's a school day.\",\n \ \ \"Just at reminder that there's school today, so it's time for breakfast.\"\ \n ] | random\n }}\n {% endif %}\n\n{# Only Nino has school #} {%\ \ elif nino_school == \"on\" %}\n {% if late_start == \"on\" %}\n {{\n\ \ [\n \"Hey Nino, today's a school day and it's time to get ready,\ \ but guess what, it's a late start!\",\n \"Hey there, it's time to\ \ get the Nino's breakfast ready. Just a reminder that today's a late start\ \ day!\",\n \"Hey Nino! There's school today, but lucky for you it's\ \ a late start day!\"\n ] | random\n }}\n {% else %}\n {{\n \ \ [\n \"Hey Nino, today's a school day so it's time to get ready!\"\ ,\n \"Hey there, it's time to get the Nino's breakfast ready. Today\ \ is a school day.\",\n \"Hey Nino! Just a reminder that today's a\ \ school day so it's time to eat breakfast and get ready.\"\n ] | random\n\ \ }}\n {% endif %}\n\n{# Only Gianluca has school #} {% elif gl_school\ \ == \"on\" %}\n {{\n [\n \"Hey Gianluca, it's time to eat breakfast\ \ and get ready for school\",\n \"Hey there, it's time to get Gianluca's\ \ breakfast ready. Today is a school day.\",\n \"Hey Gianluca! Just a\ \ reminder that today's a school day so it's time to eat breakfast and get\ \ ready.\"\n ] | random\n }}\n{% endif %}" - id: school_departure_reminder alias: School Departure Reminder mode: single initial_state: false trigger: - platform: time at: input_datetime.school_day_departure_reminder condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.nino_school_day state: 'on' - condition: state entity_id: input_boolean.gianluca_school_day state: 'on' action: - service: script.voice_announcement data: media_players: auto sound: school-bell speech_message: "{{\n [\n \"School starts soon. Time to pack up and head\ \ out!\",\n \"Hey boys! Time to start heading over to school!\",\n \"\ Pack it up, pack it in, time to drop the kids at school!\"\n ] | random\n\ }}" - id: second_floor_climate_activate_eco_when_energy_is_expensive alias: Second Floor Climate - Activate Eco When Energy is Expensive initial_state: true triggers: - trigger: state entity_id: binary_sensor.energy_prices_are_high to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: - input_boolean.ninos_bedroom_occupied - input_boolean.gianlucas_room_occupied state: 'off' - condition: state entity_id: binary_sensor.extreme_climate state: 'off' - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode == ''none'' }}' actions: - action: script.second_floor_climate_to_eco data: {} - id: second_floor_climate_resume alias: Second Floor Climate Resume initial_state: 'on' trigger: - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_select.house to: Quiet - platform: state entity_id: input_boolean.main_bedroom_occupied to: 'on' - platform: state entity_id: input_boolean.ninos_bedroom_occupied to: 'on' - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_select.house state: Quiet - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: state entity_id: input_boolean.main_bedroom_occupied state: 'on' - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode != ''none'' }}' action: - service: script.second_floor_climate_to_resume data: {} - id: second_floor_climate_resume_when_energy_prices_fall alias: Second Floor Climate - Resume When Energy Prices Fall initial_state: true trigger: - platform: state entity_id: binary_sensor.energy_prices_are_high from: 'on' to: 'off' condition: - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode != ''none'' }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nearly_home state: 'on' action: - action: script.second_floor_climate_to_resume data: {} - id: second_floor_climate_resume_when_nearly_home alias: Second Floor Climate Resume When Nearly Home initial_state: 'on' trigger: - platform: state entity_id: input_boolean.nearly_home to: 'on' condition: - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode != ''none'' }}' action: - service: script.second_floor_climate_to_resume data: {} - id: second_floor_climate_resume_before_bed alias: Second Floor Climate - Resume Before Bed initial_state: true trigger: - platform: time at: '18:30:00' condition: - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode != ''none'' }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.nearly_home state: 'on' action: - action: script.second_floor_climate_to_resume data: {} - id: second_floor_climate_off alias: Second floor climate Off initial_state: 'on' trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' for: minutes: 30 condition: - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: template value_template: '{{ states.climate.nest_2nd_floor.attributes.preset_mode == ''none'' }}' action: - service: script.second_floor_climate_to_eco data: {} - id: security_lighting_garage_flood_motion_off alias: Security Lighting - Garage Flood Motion Off mode: single initial_state: true trigger: - platform: state entity_id: - binary_sensor.driveway_front_camera_object_detected - binary_sensor.driveway_front_camera_person_detected to: 'off' for: minutes: 3 - platform: state entity_id: - binary_sensor.driveway_front_camera_object_detected - binary_sensor.driveway_front_camera_person_detected to: 'off' for: minutes: 5 - platform: state entity_id: light.driveway_flood_light to: 'on' for: minutes: 30 condition: - condition: state entity_id: - binary_sensor.driveway_front_camera_object_detected - binary_sensor.driveway_front_camera_person_detected - binary_sensor.driveway_front_camera_vehicle_detected state: 'off' - condition: state entity_id: light.driveway_flood_light state: 'on' action: - action: light.turn_off entity_id: light.driveway_flood_light - id: security_lighting_garage_flood_motion_on alias: Security Lighting - Garage Flood Motion On mode: single initial_state: true trigger: - platform: state entity_id: binary_sensor.driveway_front_camera_object_detected to: 'on' condition: - condition: state entity_id: input_boolean.dark_outside state: 'on' - condition: state entity_id: light.driveway_flood_light state: 'off' action: - action: light.turn_on entity_id: light.driveway_flood_light - id: security_status_notification alias: Security - Status Notification mode: single trigger: - platform: state entity_id: input_boolean.bedtime to: 'on' for: minutes: 5 - platform: state entity_id: input_boolean.house_occupied to: 'off' for: minutes: 7 condition: - condition: template value_template: "{% set last_triggered = state_attr('automation.security_status_notification',\ \ 'last_triggered') %} {% if last_triggered != None %}\n {% set time_diff =\ \ (now() - last_triggered).total_seconds() | int %}\n {{ time_diff > 3600 }}\n\ {% else %}\n true\n{% endif %}\n" action: - service: script.general_notification data: message: "{% set trigger = trigger.to_state.entity_id %} {% if 'bedtime' in\ \ trigger %}\n The house security protocol has been activated for bedtime.\n\ {% else %}\n The house security protocol has been activated since nobody's\ \ home.\n{% endif %} The house is {{ states('sensor.house_security_status')\ \ | lower }}. {% if states('sensor.house_security_score') | int < 85 %}\n\ \ {% if is_state('binary_sensor.windows', 'on') %}\n Windows are open.\n\ \ {% endif %}\n {% if is_state('binary_sensor.exterior_doors', 'on') %}\n\ \ Exterior doors are open.\n {% endif %}\n {% if is_state('cover.garage_doors',\ \ 'open') %}\n Garage doors are open.\n {% endif %}\n {% if is_state('lock.front_door',\ \ 'unlocked') %}\n Front door is unlocked.\n {% endif %}\n {% if is_state('lock.garage_entry_door',\ \ 'unlocked') %}\n Garage entry door is unlocked.\n {% endif %}\n{% endif\ \ %}\n" title: Home Security - Shields Up devices: jk priority: time-sensitive tag: home-security - id: john_set_focus_mode alias: John Set Focus Mode mode: queued triggers: - trigger: state entity_id: sensor.john_calendar_focus_mode - trigger: state entity_id: input_boolean.john_dnd to: 'off' - trigger: homeassistant event: start - trigger: event event_type: automation_reloaded condition: - condition: time after: 05:00:00 - condition: state entity_id: input_boolean.john_home state: 'on' - condition: template value_template: '{% set calendar_mode = states(''sensor.john_calendar_focus_mode'') %} {% set current_mode = states(''input_select.john_focus_mode'') %} {{ calendar_mode != current_mode and calendar_mode != '''' }}' action: - action: input_select.select_option target: entity_id: input_select.john_focus_mode data: option: '{{ states(''sensor.john_calendar_focus_mode'') }}' - id: severe_weather_warning alias: Severe Weather Warning initial_state: true triggers: - trigger: state entity_id: sensor.nws_alerts conditions: - '{{states(''sensor.nws_alerts'') | int > 0}}' - condition: template value_template: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID %}\n \ \ {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list = set(ns.ids)\ \ %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None') | reject('match',\ \ 'unknown'))|list ) %} {{ (current_id_list.difference(history_id_list)|list)\ \ | count > 0 }}\n" - condition: template value_template: "{% set ns = namespace(events=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns.events = ns.events + [event] %}\n{% endfor -%} {% set alerts_list\ \ = set(ns.events) %} {% set test_list = set(['Tornado Warning', 'Severe Thunderstorm\ \ Warning', 'Air Quality Alert', 'Heat Advisory', 'Severe Thunderstorm Watch',\ \ 'Excessive Heat Warning', 'Extreme Heat Warning']) %} {{ test_list.intersection(alerts_list)\ \ | count > 0 }}\n" actions: - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {{ ns_dict.events_dict[repeat.index\ \ - 1].event == 'Tornado Warning' and ns_dict.events_dict[repeat.index\ \ - 1].id not in history_id_list }}\n" then: - action: script.voice_announcement data: media_players: auto sound: nuclear priority: critical speech_message: Attention!!,,,Attention!!,,,The National Weather Service Has issued a tornado warning for our area! - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {{ ns_dict.events_dict[repeat.index\ \ - 1].event == 'Severe Thunderstorm Warning' and ns_dict.events_dict[repeat.index\ \ - 1].id not in history_id_list }}\n" then: - action: script.voice_announcement data: media_players: auto sound: nuclear priority: critical speech_message: Attention!!,,,Attention!!,,,The National Weather Service Has issued a severe thunderstorm warning for our area! - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {{ ns_dict.events_dict[repeat.index\ \ - 1].event == 'Heat Advisory' and ns_dict.events_dict[repeat.index -\ \ 1].id not in history_id_list }}\n" then: - action: script.voice_announcement data: media_players: auto sound: default priority: high speech_message: Attention!!,,,Attention!!,,,The National Weather Service Has issued a heat advisory for our area! - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {{ ns_dict.events_dict[repeat.index\ \ - 1].event == 'Severe Thunderstorm Watch' and ns_dict.events_dict[repeat.index\ \ - 1].id not in history_id_list }}\n" then: - action: script.voice_announcement data: media_players: auto sound: default priority: high speech_message: Attention!!,,,Attention!!,,,The National Weather Service Has issued a severe thunderstorm watch for our area! - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {{ ns_dict.events_dict[repeat.index\ \ - 1].event == 'Air Quality Alert' and ns_dict.events_dict[repeat.index\ \ - 1].id not in history_id_list }}\n" then: - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - repeat: count: '{{ states(''sensor.nws_alerts'') | int }}' sequence: - if: - condition: template value_template: "{% set ns_events = namespace(events=[]) %} {% set ns_dict\ \ = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event\ \ %}\n {% set ns_events.events = ns_events.events + [event] %}\n {%\ \ set event_dict_list = dict(event = state_attr('sensor.nws_alerts', 'Alerts')[x].Event,\ \ id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID) %}\n {% set ns_dict.events_dict\ \ = ns_dict.events_dict + [event_dict_list] %}\n{% endfor -%} {%- set\ \ history_id_list = set( (states.sensor.nws_alerts_announced_ids.attributes.values()\ \ | reject('match', 'nws_alerts_announced_ids') | reject('match', 'None')\ \ | reject('match', 'unknown'))|list ) %} {% set event = ns_dict.events_dict[repeat.index\ \ - 1].event %} {{ (event == 'Excessive Heat Warning' or event == 'Extreme\ \ Heat Warning') and ns_dict.events_dict[repeat.index - 1].id not in history_id_list\ \ }}\n" then: - action: script.voice_announcement data: media_players: auto sound: nuclear priority: critical speech_message: '{% set event = ns_dict.events_dict[repeat.index - 1].event %} Attention!!,,,Attention!!,,,The National Weather Service Has issued an {{ event.lower() }} for our area! ' - action: variable.update_sensor target: entity_id: sensor.nws_alerts_announced_ids data: value: "{% set ns_dict = namespace(events_dict=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set event_dict_list = dict(event = state_attr('sensor.nws_alerts',\ \ 'Alerts')[x].Event, id=state_attr('sensor.nws_alerts', 'Alerts')[x].ID)\ \ %}\n {% set ns_dict.events_dict = ns_dict.events_dict + [event_dict_list]\ \ %}\n{% endfor -%} {{ ns_dict.events_dict[repeat.index - 1].id}}\n" - delay: minutes: 1 - id: nws_update_event_id_variable alias: NWS Update Event ID Variable initial_state: true triggers: - trigger: state entity_id: sensor.nws_alerts actions: - action: variable.set_variable data: variable: nws_alerts_event_ids attributes: history_1: '{{ states(''sensor.nws_alerts_event_ids'') }}' history_2: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_1'') }}' history_3: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_2'') }}' history_4: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_3'') }}' history_5: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_4'') }}' history_6: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_5'') }}' history_7: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_6'') }}' history_8: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_7'') }}' history_9: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_8'') }}' history_10: '{{ state_attr(''sensor.nws_alerts_event_ids'', ''history_9'') }}' - action: variable.set_variable data: variable: nws_alerts_event_ids value: '{{ (trigger.to_state.attributes.event_id).split(''-'')[0] }}' - id: severe_rain_incoming alias: Severe Rain Incoming initial_state: true triggers: - trigger: numeric_state entity_id: - sensor.pirateweather_precip_intensity_0h - sensor.pirateweather_precip_intensity_1h above: 0.5 - trigger: numeric_state entity_id: - sensor.pirateweather_precip_accumulation_0h - sensor.pirateweather_precip_accumulation_1h above: 0.05 conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' actions: - action: script.general_notification data: title: Severe Rain Warning message: The forecast is showing a lot of rain in the next hour. Might be a good idea to put out the pumps. devices: jk priority: time-sensitive tag: daily-update - action: script.voice_announcement data: media_players: auto sound: nuclear priority: high expires_in: 10 speech_message: The forecast is showing a lot of rain in the next hour. Keep an eye out for any leaks and it might be a good idea to put out the pumps. - alias: NWS Alerts Notification Weather Alert id: nws_alerts_notification_weather_alert initial_state: true triggers: trigger: state entity_id: sensor.nws_alerts conditions: - '{{states(''sensor.nws_alerts'') | int > 0}}' actions: - choose: - conditions: - '{{ states(''sensor.nws_alerts'') | int >= 3 }}' sequence: - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[0].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{0}} - delay: seconds: 2 - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[1].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[1].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[1].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{1}} - delay: seconds: 2 - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[2].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[2].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[2].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{2}} - conditions: - '{{ states(''sensor.nws_alerts'') | int == 2 }}' sequence: - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[0].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{0}} - delay: seconds: 2 - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[1].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[1].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[1].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{1}} - conditions: - '{{ states(''sensor.nws_alerts'') | int == 1 }}' sequence: - if: - '{{ (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list) and (state_attr(''sensor.nws_alerts'', ''Alerts'')[0].ID != states(''sensor.nws_alerts_event_ids'')) }}' then: - action: script.general_notification data: title: NWS Alert message: '"NWS: {{ state_attr(''sensor.nws_alerts'', ''Alerts'')[0].Event }}" ' devices: jk priority: time-sensitive tag: severe-weather-alert-{{0}} - delay: seconds: 5 - condition: template value_template: '{{ states(''sensor.nws_alerts'') | int >= 4 }}' - condition: template value_template: "{% set ns = namespace(ids=[]) %} {% for x in range(0,states('sensor.nws_alerts')|int\ \ ) %}\n {% set id = state_attr('sensor.nws_alerts', 'Alerts')[x].ID %}\n \ \ {% set ns.ids = ns.ids + [id] %}\n{% endfor -%} {% set current_id_list = set(ns.ids)\ \ %} {% set history_id_list = set( (states.sensor.nws_alerts_event_ids.attributes.values()|\ \ reject('match', 'nws_alerts_event_ids') | reject('match', 'None') | reject('match',\ \ 'unknown'))|list ) %} {{ (current_id_list.difference(history_id_list)|list)\ \ | count > 0 }}\n" - condition: template value_template: "{{ (state_attr('sensor.nws_alerts', 'Alerts')[0].ID not in states.sensor.nws_alerts_event_ids.attributes.values()|list)\ \ \n and (state_attr('sensor.nws_alerts', 'Alerts')[0].ID != states('sensor.nws_alerts_event_ids'))\ \ }}\n" - action: script.general_notification data: title: NWS Alert message: 'NWS: More Than 3 New Alerts! Check your local National Weather Service for all current alerts!' devices: jk priority: time-sensitive tag: severe-weather-alert-multiple - id: stairs_lights_motion_on initial_state: true alias: Stairs lights Motion On trigger: - platform: state entity_id: binary_sensor.stairs_motion_status to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: and conditions: - condition: numeric_state entity_id: sensor.foyer_motion_illuminance below: 15 - condition: numeric_state entity_id: sensor.stairs_up_motion_sensor_illuminance below: 10 - condition: and conditions: - condition: state entity_id: light.stairs_light state: 'off' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.light.stairs_light.last_updated)) | int > 180 }}' - condition: state entity_id: light.foyer_chandelier state: 'off' action: - service: light.turn_on entity_id: light.stairs_light - id: stairs_lights_off initial_state: true alias: Stairs lights off trigger: - platform: state entity_id: binary_sensor.stairs_motion_status to: 'off' for: minutes: 3 - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' condition: - condition: state entity_id: light.stairs_light state: 'on' action: - service: light.turn_off entity_id: light.stairs_light - id: sunroom_mode_auto initial_state: true alias: Sunroom Mode Auto trigger: - platform: state entity_id: input_boolean.sunroom_occupied to: 'on' - platform: state entity_id: input_select.house to: Auto - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.sunroom'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' - condition: state entity_id: input_select.house state: Auto action: - service: input_select.select_option data: entity_id: input_select.sunroom option: Auto - id: sunroom_mode_off initial_state: true alias: Sunroom Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_boolean.bedtime to: 'on' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: template value_template: '{{ not is_state(''input_select.sunroom'',''Off'') }}' - condition: or conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_boolean.bedtime state: 'on' action: - service: input_select.select_option data: entity_id: input_select.sunroom option: 'Off' - id: sunroom_occupied initial_state: true alias: Sunroom Occupied trigger: - platform: state entity_id: binary_sensor.sunroom_motion_sensor_occupancy to: 'on' - platform: state entity_id: binary_sensor.sunroom_motion_sensor_status to: 'on' - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.sunroom_occupied state: 'off' - condition: or conditions: - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''sunroom'')|map(attribute=''name'')|list | length > 0 }}' - condition: state entity_id: binary_sensor.sunroom_motion_sensor_occupancy state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.sunroom_occupied - id: sunroom_not_occupied initial_state: true alias: Sunroom Not Occupied trigger: - platform: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''sunroom'')|map(attribute=''name'')|list | length == 0 }}' for: minutes: 3 - platform: state entity_id: binary_sensor.sunroom_motion_sensor_occupancy to: 'off' - platform: state entity_id: media_player.sonos_patio to: 'off' for: minutes: 5 - platform: state entity_id: media_player.sonos_patio to: idle for: minutes: 5 - platform: state entity_id: media_player.sonos_patio to: paused for: minutes: 5 condition: - condition: state entity_id: input_boolean.sunroom_occupied state: 'on' - condition: state entity_id: binary_sensor.sunroom_motion_sensor_occupancy state: 'off' - condition: template value_template: '{{ expand(''group.room_presence_devices'')|selectattr(''state'', ''eq'', ''sunroom'')|map(attribute=''name'')|list | length == 0 }}' action: - service: input_boolean.turn_off entity_id: input_boolean.sunroom_occupied - id: sylvia_is_away alias: Sylvia is Away initial_state: true trigger: - platform: state entity_id: person.sylvia to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: not conditions: - condition: state entity_id: input_select.sylvia_status state: Just Left - condition: state entity_id: person.sylvia state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.sylvia_home - id: sylvia_is_home initial_state: true alias: Sylvia is Home trigger: - platform: state entity_id: person.sylvia to: home - platform: state entity_id: device_tracker.sylvia_android_phone to: home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: person.sylvia state: home - condition: state entity_id: device_tracker.sylvia_android_phone state: home action: - service: input_boolean.turn_on entity_id: input_boolean.sylvia_home - id: tayta_announce_arrival alias: Tayta Announce Arrival mode: queued initial_state: true triggers: - trigger: state entity_id: person.sonia_koht from: not_home to: home conditions: - condition: state entity_id: person.sonia_koht state: home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: tayta announcement_type: arrival - condition: state entity_id: input_boolean.guest_mode_announced state: 'off' - action: input_boolean.turn_on entity_id: input_boolean.guest_mode_announced - id: tayta_announce_departure alias: Tayta Announce Departure mode: queued initial_state: true triggers: - trigger: state entity_id: person.sonia_koht from: home to: not_home conditions: - condition: state entity_id: person.sonia_koht state: not_home - condition: state entity_id: input_boolean.house_occupied state: 'on' for: minutes: 5 actions: - action: script.person_announcement data: person: tayta announcement_type: departure - id: tayta_is_away alias: Tayta is Away initial_state: true trigger: - platform: state entity_id: person.mary_falbo to: not_home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: not conditions: - condition: state entity_id: input_select.tayta_status state: Just Left - condition: state entity_id: person.sonia_koht state: not_home action: - service: input_boolean.turn_off entity_id: input_boolean.tayta_home - id: tayta_is_home initial_state: true alias: Tayta is Home trigger: - platform: state entity_id: sensor.tayta_room_presence from: not_home - platform: state entity_id: person.sonia_koht to: home - platform: event event_type: automation_reloaded - platform: homeassistant event: start condition: - condition: or conditions: - condition: state entity_id: person.sonia_koht state: home - condition: template value_template: '{{ states.sensor.tayta_room_presence.state != ''not_home''}}' action: - service: input_boolean.turn_on entity_id: input_boolean.tayta_home - id: tempest_high_uv_alert alias: Tempest - High UV Alert initial_state: true trigger: - platform: numeric_state entity_id: sensor.tempest_uv above: 7 - platform: numeric_state entity_id: sensor.tempest_uv above: 8 - platform: numeric_state entity_id: sensor.tempest_uv above: 10 action: - service: script.voice_announcement data: speech_message: "{% set uv = state_attr('sensor.tempest_uv') %}\n{% if uv >\ \ 10 %}\n \"Warning! UV levels are extremely high. Please take precautions\ \ and avoid unprotected sun exposure.\"\n{% elif uv > 8 %}\n \"Attention!\ \ UV levels are very high so please take precautions when going outside.\"\ \n{% else %}\n \"Attention! UV levels are elevated today, please take precautions.\"\ \n{% endif %}" sound: police-whistle media_players: auto priority: "{% set uv = state_attr('sensor.tempest_uv') %}\n{% if uv > 10 %}\n\ \ \"critical\"\n{% elif uv > 8 %}\n \"high\"\n{% else %}\n \"normal\"\n\ {% endif %}" - service: script.general_notification data: title: Outdoor UV Alert! message: "{% set uv = state_attr('sensor.tempest_uv') %}\n{% if uv > 10 %}\n\ \ \"Warning! UV levels are extremely high. Please take precautions and avoid\ \ unprotected sun exposure.\"\n{% elif uv > 8 %}\n \"Attention! UV levels\ \ are very high so please take precautions when going outside.\"\n{% else\ \ %}\n \"Attention! UV levels are elevated today, please take precautions.\"\ \n{% endif %}" devices: jk priority: time-sensitive tag: tempest-uv-alert - id: tempest_rain_alert alias: Tempest - Rain Alert initial_state: true triggers: - trigger: numeric_state entity_id: sensor.tempest_rain_amount above: 1 - trigger: numeric_state entity_id: sensor.tempest_rain_amount above: 3 - trigger: numeric_state entity_id: sensor.tempest_rain_rate above: 2 actions: - action: script.voice_announcement data: speech_message: "{% set rain_amount = state_attr('sensor.tempest_rain_amount')\ \ %} {% set rain_rate = state_attr('sensor.tempest_rain_rate') %}\n{% if rain_amount\ \ > 3 or rain_rate > 3 %}\n \"Warning! Rain is accumulating quickly, please\ \ make sure to check the basement for any leaks.\"\n{% else %}\n \"Attention!\ \ There's quite a bit of rain so make sure to keep an eye on the basement.\"\ \n{% endif %}" sound: police-whistle media_players: auto priority: "{% set rain_amount = state_attr('sensor.tempest_rain_amount') %}\ \ {% set rain_rate = state_attr('sensor.tempest_rain_rate') %}\n{% if rain_amount\ \ > 3 or rain_rate > 3 %}\n \"high\"\n{% else %}\n \"normal\"\n{% endif\ \ %}" - action: script.general_notification data: title: Rain Accumulation Alert! message: "{% set rain_amount = state_attr('sensor.tempest_rain_amount') %} {%\ \ set rain_rate = state_attr('sensor.tempest_rain_rate') %}\n{% if rain_amount\ \ > 3 or rain_rate > 3 %}\n \"Warning! Rain is accumulating quickly, please\ \ make sure to check the basement for any leaks.\"\n{% else %}\n \"Attention!\ \ There's quite a bit of rain so make sure to keep an eye on the basement.\"\ \n{% endif %}" devices: jk priority: time-sensitive tag: tempest-rain-alert - id: today_is_full_moon initial_state: true alias: Today is a full moon trigger: - platform: state entity_id: sensor.moon to: full_moon action: - service: automation.turn_on entity_id: automation.full_moon_notification - id: full_moon_notification initial_state: true alias: Full Moon Notification trigger: - platform: sun event: sunset offset: 00:10:00 - platform: state entity_id: input_boolean.house_occupied to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: sensor.moon state: full_moon - condition: state entity_id: sun.sun state: below_horizon action: - wait_template: '{{ is_state(''binary_sensor.playroom_motion_sensor_entry_motion_detection'', ''on'') }}' timeout: 01:00:00 - alias: Wait 3 seconds delay: 3 - service: script.general_notification data: message: Today's a full moon, go check it out! title: Full Moon Reminder devices: jk priority: passive tag: full-moon-reminder - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{{\n [\n \"It's a full moon today! Go take a look out the\ \ window.\",\n \"Guess what? It's a full moon today!\",\n \"Hey fam!\ \ Today's a full moon, don't forget to check it out.\",\n \"Hey Nino! Guess\ \ what? Today's a full moon!\"\n ] | random\n}}" - id: today_is_full_moon initial_state: 'on' alias: Today is a full moon trigger: - platform: sun event: sunset - platform: state entity_id: sensor.moon to: full_moon condition: - platform: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: sensor.moon state: full_moon - condition: state entity_id: sun.sun state: below_horizon action: - wait_template: '{{ is_state(''binary_sensor.kitchen_motion_sensor_main_motion_detection'', ''on'') }}' - alias: Wait 5 seconds delay: 5 - service: notify.mobile_app_jk_2 data: message: Today's a full moon, go check it out! title: Full Moon Reminder - service: script.voice_announcement data: media_players: auto sound: chime speech_message: "{{\n [\n \"It's a full moon today! Go take a look out the\ \ window.\",\n \"Guess what? It's a full moon today!\",\n \"Hey fam!\ \ Today's a full moon, don't forget to check it out.\",\n \"Hey Nino! Guess\ \ what? Today's a full moon!\"\n ] | random\n}}" - id: travel_arrival_announcement alias: Travel - Arrival Announcement mode: single trigger: - platform: state entity_id: - person.john_koht - person.cristina_falbo to: - Waldorf Astoria Hotel for: minutes: 1 action: - service: script.voice_announcement data: media_players: auto sound: musical-flute speech_message: "{% set person = \"\" %} {% set ent = trigger.entity_id %}\n\ {% if ent == \"person.john_koht\" %}\n {% set person = \"Baba\" %}\n{% else\ \ %}\n {% set person = \"Mama\" %}\n{% endif %}\n{% set store = trigger.to_state.state\ \ %}\n\"Just wanted to let you know that {{person}} safely arrived at {{store}}!\"\ \n" - id: office_shelf_lights_turn_off_deep_work_lighting alias: Office Shelf Lights - Turn Off Deep Work Lighting triggers: - trigger: state entity_id: input_select.john_focus_mode from: Deep Work conditions: - condition: state entity_id: input_select.office state: - Auto - DnD - condition: state entity_id: input_boolean.office_occupied state: 'on' actions: - action: light.turn_off entity_id: light.office_shelf_lights - id: turn_off_office_shelf_lights alias: Turn off office shelf lights initial_state: true trigger: - trigger: state entity_id: input_boolean.house_occupied to: 'off' - trigger: state entity_id: input_boolean.office_occupied to: 'off' conditions: - or: - condition: state entity_id: input_boolean.house_occupied state: 'off' - and: - condition: state entity_id: input_boolean.office_occupied state: 'off' - condition: state entity_id: input_boolean.entertainment_mode state: 'off' actions: - action: light.turn_off entity_id: light.office_shelf_lights - id: office_shelf_lights_turn_on_deep_work_lighting alias: Office Shelf Lights - Turn On Deep Work Lighting triggers: - trigger: state entity_id: input_select.john_focus_mode to: Deep Work conditions: - condition: state entity_id: input_select.office state: Auto - condition: state entity_id: input_boolean.office_occupied state: 'on' actions: - action: scene.turn_on entity_id: scene.office_shelves_tokyo - id: upstairs_dryer_complete alias: Upstairs Dryer Complete initial_state: true trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Clean condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Clean action: - service: script.voice_announcement data: media_players: auto sound: chirp priority: normal expires_in: 120 speech_message: The upstairs dryer finished and is ready to be emptied. - service: script.general_notification data: message: The upstairsdryer is finished and ready to be emptied. title: Upstairs Drying Machine devices: all priority: active tag: main-level-dryer - id: upstairs_dryer_complete alias: Upstairs dryer complete initial_state: 'on' trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Clean condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Clean action: - service: notify.ios_family data: message: The upstairs dryer is finished and ready to be emptied. title: Upstairs Drying Machine - id: upstairs_dryer_to_clean alias: Upstairs Dryer to Clean initial_state: true trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Finishing for: minutes: 5 - platform: numeric_state entity_id: sensor.upstairs_drying_machine_active_power below: 50 condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Clean - id: upstairs_dryer_to_clean alias: Upstairs dryer to clean initial_state: 'on' trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Finishing for: minutes: 8 condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Clean - id: upstairs_dryer_to_finished alias: Upstairs Dryer to Finishing initial_state: true trigger: - platform: numeric_state entity_id: sensor.upstairs_drying_machine_active_power below: 150 condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Finishing - id: upstairs_dryer_to_finished alias: 'Upstairs dryer to ' initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.drying_machine_electric_consumption_w below: 6 condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Finishing - id: upstairs_dryer_to_idle alias: Upstairs Dryer to Idle initial_state: true trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Clean for: minutes: 5 condition: - condition: or conditions: - condition: state entity_id: input_select.upstairs_dryer_status state: Clean - condition: state entity_id: input_select.upstairs_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Idle - id: upstairs_dryer_to_idle alias: Upstairs dryer to idle initial_state: 'on' trigger: - platform: state entity_id: input_select.upstairs_dryer_status to: Clean for: minutes: 20 condition: - condition: state entity_id: input_select.upstairs_dryer_status state: Clean action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Idle - id: upstairs_dryer_to_running alias: Upstairs Dryer to Running initial_state: true trigger: - platform: numeric_state entity_id: sensor.upstairs_drying_machine_active_power above: 10 condition: condition: or conditions: - condition: state entity_id: input_select.upstairs_dryer_status state: Idle - condition: state entity_id: input_select.upstairs_dryer_status state: Clean - condition: state entity_id: input_select.upstairs_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Running - id: upstairs_dryer_to_running alias: Upstairs dryer to running initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.drying_machine_electric_consumption_w above: 10 condition: condition: or conditions: - condition: state entity_id: input_select.upstairs_dryer_status state: Idle - condition: state entity_id: input_select.upstairs_dryer_status state: Clean - condition: state entity_id: input_select.upstairs_dryer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_dryer_status option: Running - id: upstairs_hallway_lights_manually_turned_off initial_state: true alias: Upstairs Hallway Lights - Manually Turned Off trigger: - platform: state entity_id: light.upstairs_hallway to: 'off' condition: - condition: state entity_id: input_boolean.upstairs_hallway_lights_auto state: 'on' - condition: template value_template: '{{ trigger.to_state.context.parent_id == none }}' action: - service: input_boolean.turn_off entity_id: input_boolean.upstairs_hallway_lights_auto - service: input_boolean.turn_off entity_id: input_boolean.upstairs_hallway_lighting_automations - service: script.general_notification data: title: Upstairs Hallway Lights message: The upstairs hallway lights have been turned off. The parent id is {{trigger.to_state.context.parent_id}} and the user_id is {{trigger.to_state.context.user_id}}. devices: jk priority: passive tag: upstairs-hallway-lighting-automation - id: upstairs_hallway_lights_motion_on initial_state: true alias: Upstairs Hallway Lights - Motion On triggers: - trigger: state entity_id: binary_sensor.upstairs_hallway_motion to: 'on' conditions: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_boolean.upstairs_hallway_lighting_automations state: 'on' - condition: numeric_state entity_id: sensor.upstairs_hallway_nightlight_illuminance below: 30 - condition: state entity_id: light.upstairs_hallway state: 'off' - condition: state entity_id: input_boolean.quiet_mode state: 'off' action: - if: - condition: or conditions: - condition: state entity_id: input_boolean.gianlucas_room_occupied state: 'on' - condition: state entity_id: input_boolean.ninos_bedroom_occupied state: 'on' - condition: template value_template: '{{ (as_timestamp(now()) - as_timestamp(states.input_boolean.quiet_mode.last_changed)) | int < 180 }}' then: - action: light.turn_on entity_id: light.upstairs_hallway data: brightness_pct: 10 transition: 0.5 else: - action: light.turn_on entity_id: light.upstairs_hallway - action: input_boolean.turn_on entity_id: input_boolean.upstairs_hallway_lights_auto - id: upstairs_hallway_lights_sleep_mode_off initial_state: true alias: Upstairs Hallway Lights Sleep Mode Off trigger: - platform: sun event: sunrise - platform: time at: 07:00:00 - platform: state entity_id: input_select.upstairs_hallway to: Auto condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: input_select.upstairs_hallway state: Auto - condition: sun after: sunrise action: - service: switch.turn_off entity_id: switch.adaptive_lighting_sleep_mode_upstairs_hallway - id: upstairs_hallway_lights_sleep_mode_on initial_state: true alias: Upstairs Hallway Lights Sleep Mode On trigger: - platform: state entity_id: input_select.upstairs_hallway to: Bedtime - platform: state entity_id: - input_boolean.gianlucas_room_occupied - input_boolean.ninos_bedroom_occupied to: 'on' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: sun after: sunset - condition: state entity_id: input_boolean.dark_outside state: 'on' action: - service: switch.turn_on entity_id: switch.adaptive_lighting_sleep_mode_upstairs_hallway - id: upstairs_hallway_lights_to_off initial_state: true alias: Upstairs Hallway Lights to Off trigger: - platform: state entity_id: input_select.upstairs_hallway to: 'Off' - platform: state entity_id: input_boolean.lighting_automations to: 'on' - platform: state entity_id: input_boolean.upstairs_hallway_occupied to: 'off' condition: - condition: state entity_id: input_boolean.lighting_automations state: 'on' - condition: state entity_id: light.upstairs_hallway state: 'on' action: - service: light.turn_off entity_id: light.upstairs_hallway - service: input_boolean.turn_off entity_id: input_boolean.upstairs_hallway_lights_auto - id: upstairs_hallway_mode_auto initial_state: true alias: Upstairs Hallway - Mode Auto trigger: - platform: state entity_id: input_select.house to: Auto condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.upstairs_hallway'',''Auto'') }}' - condition: state entity_id: input_boolean.bedtime state: 'off' action: - service: input_select.select_option data: entity_id: input_select.upstairs_hallway option: Auto - id: upstairs_hallway_mode_bedtime initial_state: true alias: Upstairs Hallway - Mode Bedtime trigger: - platform: state entity_id: input_select.house to: Bedtime - platform: state entity_id: input_boolean.bedtime to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: template value_template: '{{ not is_state(''input_select.upstairs_hallway'',''Bedtime'') }}' action: - service: input_select.select_option data: entity_id: input_select.upstairs_hallway option: Bedtime - id: upstairs_hallway_mode_off initial_state: true alias: Upstairs Hallway - Mode Off trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: homeassistant event: start - platform: event event_type: automation_reloaded condition: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: template value_template: '{{ not is_state(''input_select.upstairs_hallway'',''Off'') }}' action: - service: input_select.select_option data: entity_id: input_select.upstairs_hallway option: 'Off' - id: upstairs_hallway_not_occupied initial_state: true alias: Upstairs Hallway Not Occupied trigger: - platform: state entity_id: binary_sensor.upstairs_hallway_motion to: 'off' for: minutes: 10 condition: - condition: state entity_id: input_boolean.upstairs_hallway_occupied state: 'on' action: - service: input_boolean.turn_off entity_id: input_boolean.upstairs_hallway_occupied - alias: Wait 2 seconds delay: 2 - service: input_boolean.turn_on entity_id: input_boolean.upstairs_hallway_lighting_automations - id: upstairs_hallway_occupied initial_state: true alias: Upstairs Hallway Occupied trigger: - platform: state entity_id: binary_sensor.upstairs_hallway_motion to: 'on' - platform: state entity_id: light.upstairs_hallway to: 'on' condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_boolean.upstairs_hallway_occupied state: 'off' - condition: or conditions: - condition: state entity_id: binary_sensor.upstairs_hallway_motion state: 'on' - condition: state entity_id: light.upstairs_hallway state: 'on' action: - service: input_boolean.turn_on entity_id: input_boolean.upstairs_hallway_occupied - id: upstairs_washer_complete_alert alias: Upstairs washer complete alert initial_state: 'on' trigger: - platform: state entity_id: input_select.upstairs_washer_status to: Clean - platform: state entity_id: input_boolean.house_occupied to: 'on' for: minutes: 10 - platform: time at: 08:01:00 condition: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: state entity_id: input_select.upstairs_washer_status state: Clean - condition: template value_template: "{% if states.automation.upstairs_washer_complete_alert.attributes.last_triggered\ \ is not none %}\n {% if as_timestamp(now()) | int - as_timestamp(states.automation.upstairs_washer_complete_alert.attributes.last_triggered)\ \ | int > 3600 %} true {% else %} false\n {% endif %}\n{% else %} false {%\ \ endif %}\n" action: - service: script.voice_announcement data: media_players: auto sound: chirp priority: normal expires_in: 120 speech_message: The upstairs washer finished and is ready to be emptied. - service_template: "{% if (is_state(\"input_boolean.john_home\", \"on\")) and (is_state(\"\ input_boolean.cristina_home\", \"on\")) %}\n notify.ios_family\n{% elif is_state(\"\ input_boolean.john_home\", \"on\") %}\n notify.mobile_app_jk_2\n{% elif (is_state(\"\ input_boolean.cristina_home\", \"on\")) %}\n notify.mobile_app_cfalb2\n{% endif\ \ %}\n" data: message: The upstairs washer is finished and ready to be emptied. title: Upstairs Washing Machine - if: - alias: TV is ON condition: state entity_id: media_player.sony_bravia_tv state: 'on' then: - service: notify.family_room_sony_bravia_tv data: message: The upstairs washer is finished and ready to be emptied. title: Upstairs Laundry is complete! data: duration: 5 position: bottom-right fontsize: large transparency: 25% interrupt: false color: black - id: upstairs_washer_to_clean alias: Upstairs washer to clean initial_state: 'on' trigger: - platform: state entity_id: input_select.upstairs_washer_status to: Finishing for: minutes: 8 condition: - condition: state entity_id: input_select.upstairs_washer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_washer_status option: Clean - id: upstairs_washer_to_finished alias: Upstairs washer to finished initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.washing_machine_electric_consumption_w below: 3 condition: - condition: state entity_id: input_select.upstairs_washer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.upstairs_washer_status option: Finishing - id: upstairs_washer_to_idle alias: Upstairs washer to idle initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.upstairs_washer_door_sensor_status to: 'on' condition: - condition: or conditions: - condition: state entity_id: input_select.upstairs_washer_status state: Clean - condition: state entity_id: input_select.upstairs_washer_status state: Finishing - condition: state entity_id: input_select.upstairs_washer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.upstairs_washer_status option: Idle - id: upstairs_washer_to_running alias: Upstairs washer to running initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.washing_machine_electric_consumption_w above: 10 condition: condition: or conditions: - condition: state entity_id: input_select.upstairs_washer_status state: Idle - condition: state entity_id: input_select.upstairs_washer_status state: Clean - condition: state entity_id: input_select.upstairs_washer_status state: Finishing action: - service: input_select.select_option data: entity_id: input_select.upstairs_washer_status option: Running - alias: UPS Battery Power Activated trigger: - platform: state entity_id: sensor.apc_ups_status to: OB action: - action: script.general_notification data: title: Power Outage! message: 🚨 Power outage! UPS is now on battery. devices: jk priority: critical tag: ups-power-outage - alias: UPS Battery Power Deactivated trigger: - platform: state entity_id: sensor.apc_ups_status to: OL action: - action: script.general_notification data: title: UPS Power Restored! message: The UPS is now back on AC power. devices: jk priority: time-sensitive tag: ups-power-restored - id: vacation_mode_turn_off initial_state: false alias: Vacation Mode - Turn Off triggers: - trigger: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status to: Home - trigger: state entity_id: input_boolean.house_occupied to: 'on' conditions: - condition: state entity_id: input_boolean.house_occupied state: 'on' - condition: or conditions: - condition: state entity_id: input_select.cristina_status_dropdown state: Home - condition: state entity_id: input_select.john_status state: Home actions: - action: input_boolean.turn_off entity_id: input_boolean.vacation_mode - action: automation.turn_off entity_id: - automation.vacation_faux_home - automation.vacation_faux_home_off - automation.vacation_mode_turn_off - automation.bedtime_mode_vacation_on - automation.bedtime_mode_vacation_off - action: script.general_notification data: title: Vacation Mode Turned Off message: Vacation mode has been turned OFF devices: jk priority: time-sensitive tag: vacation-mode-activated - id: vacation_mode_turn_on initial_state: true alias: Vacation Mode - Turn On triggers: - trigger: state entity_id: - input_select.cristina_status_dropdown - input_select.john_status to: Extended Away conditions: - condition: state entity_id: input_boolean.house_occupied state: 'off' - condition: state entity_id: input_select.cristina_status_dropdown state: Extended Away - condition: state entity_id: input_select.john_status state: Extended Away actions: - action: input_boolean.turn_on entity_id: input_boolean.vacation_mode - action: automation.turn_on entity_id: - automation.vacation_faux_home - automation.vacation_faux_home_off - automation.vacation_mode_turn_off - automation.bedtime_mode_vacation_on - automation.bedtime_mode_vacation_off - action: script.general_notification data: title: Vacation Mode Turned On message: Vacation mode has been turned on! devices: jk priority: time-sensitive tag: vacation-mode-activated - id: vacuum_clean_kitchen_during_nap alias: Vacuum - Clean Kitchen During Nap mode: single trigger: - platform: state entity_id: input_boolean.gianlucas_room_occupied to: 'on' for: minutes: 10 condition: - condition: state entity_id: input_boolean.quiet_mode state: 'on' - condition: time after: '13:00:00' before: '15:00:00' - condition: state entity_id: input_boolean.entertainment_mode state: 'off' action: - action: vacuum.send_command target: entity_id: vacuum.roborock_s7 data: command: app_segment_clean params: - 24 - id: vacuum_clean_office_when_dog_is_at_daycare alias: Vacuum - Clean Office When Dog is at Daycare mode: single trigger: - platform: zone entity_id: person.john_koht zone: zone.north_shore_k9 event: enter condition: - condition: time after: 08:00:00 before: '10:00:00' action: - action: vacuum.send_command target: entity_id: vacuum.roborock_s7 data: command: app_segment_clean params: - 29 - id: weather_set_day_temperature alias: Weather - Set day Temperature initial_state: true trigger: - platform: state entity_id: weather.kpwk_daynight - platform: time at: 01:00:00 action: - service: input_number.set_value data: entity_id: input_number.weather_day_high value: "{{ \n (state_attr('weather.kpwk_daynight', 'forecast')\n | map(attribute=\"\ temperature\")\n | list)[0:2]\n | max\n}}\n" - service: input_number.set_value data: entity_id: input_number.weather_day_low value: "{{ \n (state_attr('weather.kpwk_daynight', 'forecast')\n | map(attribute=\"\ temperature\")\n | list)[0:2]\n | min\n}}\n" - id: window_left_open alias: Window Left Open mode: single initial_state: true trigger: - platform: state entity_id: input_boolean.house_occupied to: 'off' - platform: state entity_id: input_select.house to: Away condition: - condition: state entity_id: binary_sensor.windows state: 'on' action: - service: script.general_notification data: title: Windows Left Open. message: 'The house is empty, but some windows are still open: {{ expand(''binary_sensor.windows'')|selectattr(''state'', ''eq'', ''on'')|map(attribute=''name'')|list|join('', '') }}' devices: all priority: time-sensitive tag: window-open - id: zigbee_router_unavailable initial_state: true alias: Zigbee Router Unavailable trigger: - platform: state entity_id: - switch.smart_plug_1_switch - switch.smart_plug_2_switch - switch.smart_plug_3_switch - switch.smart_plug_4_switch - switch.smart_plug_5_switch - switch.smart_plug_6_switch - switch.smart_plug_7_switch - switch.smart_plug_8_switch - switch.smart_plug_9_switch - switch.smart_plug_10_switch - switch.smart_plug_11_switch - switch.smart_plug_12_switch - switch.smart_plug_13_switch - switch.smart_plug_14_switch - switch.smart_plug_15_switch - switch.smart_plug_16_switch - switch.smart_plug_17_switch - switch.smart_plug_18_switch - switch.gazebo_smart_plug_switch - switch.tradfri_smart_plug_1_switch - switch.tradfri_smart_plug_2_switch - switch.tradfri_smart_plug_3_switch - switch.tradfri_smart_plug_4_switch - switch.tradfri_smart_plug_5_switch to: unavailable for: minutes: 15 action: - service: script.general_notification data: title: Zigbee System Issue message: 'There is an issue with the following Zigbee routers: {{ trigger.to_state.attributes.friendly_name }}' devices: jk priority: time-sensitive tag: d