- id: alert_laundry_dryer_finished alias: Alert (Laundry) - Dryer Finished mode: single triggers: - platform: state entity_id: sensor.dryer_job_state to: finished actions: - action: notify.notify data: title: Dryer message: Cycle complete - id: alert_laundry_washer_finished alias: Alert (Laundry) - Washer Finished mode: single triggers: - platform: state entity_id: sensor.washer_job_state to: finish actions: - action: notify.notify data: title: Washer message: Cycle complete - id: alert_garage_door_closing_failed alias: Alert (Garage) - Closing Failed mode: single triggers: - trigger: state entity_id: cover.garage_door from: closing to: opening conditions: - '{{ trigger.from_state and trigger.to_state and trigger.from_state.attributes.current_position < 5 }}' - '{{ is_state("binary_sensor.garage_door_obstruction", "off") }}' - '{{ is_state("input_boolean.garage_door_closing_failed_alert", "on") }}' actions: - action: notify.notify data: title: Garage Door message: Failed to close - action: notify.alexa_media data: data: type: announce message: Garage Door failed to close target: - media_player.garage_echo - media_player.kitchen_echo - media_player.living_room_echo title: Garage Door - id: alert_garage_door_left_open alias: Alert (Garage) - Door Left Open mode: single triggers: - trigger: state entity_id: cover.garage_door to: open for: minutes: '{{ states("input_number.garage_door_open_alert_time") }}' - trigger: state entity_id: - binary_sensor.garage_door_motion - binary_sensor.garage_door_obstruction to: 'off' for: minutes: '{{ states("input_number.garage_door_open_alert_time") }}' conditions: - condition: state entity_id: cover.garage_door state: open for: minutes: '{{ states("input_number.garage_door_open_alert_time") }}' - condition: state entity_id: - binary_sensor.garage_door_motion - binary_sensor.garage_door_obstruction state: 'off' for: minutes: '{{ states("input_number.garage_door_open_alert_time") }}' actions: - action: notify.notify data: title: Garage Door message: Left open - id: basement_guest_staying_over_changed alias: Basement - Guest Staying Over Changed mode: single triggers: - trigger: state entity_id: input_boolean.basement_guest_staying_over actions: - if: - '{{ is_state("input_boolean.basement_guest_staying_over", "on") }}' then: - parallel: - action: script.basement_bathroom_disable_motion else: - parallel: - action: script.basement_bathroom_enable_motion - id: basement_shades_open alias: Basement Shades - Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_trigger: none second_trigger: time second_time_helper: input_datetime.basement_shades_open second_conditions: - '{{ is_state("input_boolean.basement_guest_staying_over", "on") }}' - '{{ is_state("input_boolean.basement_shades_open", "on") }}' - '{{ state_attr("cover.basement_shades", "current_position") < float(states("input_number.basement_shades_open_percent")) }}' second_actions: - action: cover.set_cover_position data: position: '{{ states("input_number.basement_shades_open_percent") }}' target: entity_id: cover.basement_shades third_trigger: time third_time_helper: sensor.shades_open_time third_conditions: - '{{ is_state("input_boolean.basement_guest_staying_over", "off") }}' third_actions: - action: cover.open_cover target: entity_id: cover.basement_shades - id: theatre_remote_on_off alias: Theatre Remote - On & Off use_blueprint: path: samuelkadolph/remote_automation.yaml input: remote: remote.theatre on_actions: - parallel: [] off_actions: - parallel: - if: - '{{ is_state("input_boolean.basement_guest_staying_over", "off") }}' then: - action: fan.turn_off target: entity_id: fan.theatre_dyson activity_changed_actions: - parallel: - if: - '{{ is_state("input_boolean.basement_guest_staying_over", "off") }}' - '{{ is_state("input_boolean.theatre_projector_disables_bathroom_occupancy", "on") }}' then: - action: zwave_js.set_config_parameter data: parameter: 3 value: '{{ state_attr("remote.theatre", "current_activity") is search("w/P$") and 2 or 3 }}' target: entity_id: switch.basement_bathroom_lights - if: - '{{ is_state("input_boolean.theatre_projector_closes_shades", "on") }}' then: - if: - '{{ state_attr("remote.theatre", "current_activity") is search("w/P$") }}' then: - if: - '{{ state_attr("sun.sun", "elevation") > float(states("input_number.theatre_projector_closes_shades_sun_elevation")) }}' then: - action: cover.close_cover target: entity_id: cover.basement_shades else: - if: - '{{ is_state("input_boolean.basement_guest_staying_over", "off") }}' then: - action: cover.open_cover target: entity_id: cover.basement_shades - id: family_room_shades_close_open alias: Family Room Shades - Close & Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_trigger: elevation_below first_elevation_helper: input_number.shades_close_sun_elevation first_conditions: - '{{ int(states("zone.home")) > 0 }}' first_actions: - action: script.family_room_close_shades second_trigger: time second_time_helper: sensor.shades_open_time second_actions: - action: cover.open_cover target: entity_id: cover.family_room_shades - id: family_room_shades_close_w_arrival alias: Family Room Shades - Close w/ Arrival mode: single triggers: - trigger: state entity_id: zone.home from: '0' conditions: - '{{ trigger.from_state and trigger.to_state and (int(trigger.from_state.state) < int(trigger.to_state.state)) }}' - '{{ state_attr("sun.sun", "elevation") < float(states("input_number.shades_close_sun_elevation")) }}' actions: - action: script.family_room_close_shades - id: garage_off_22_00 alias: Garage - Off @ 22:00 mode: single triggers: - trigger: time at: '22:00:00' actions: - action: script.garage_turn_off - id: garage_door_garage_lights_switch_triple alias: Garage Door - Garage Lights Switch (Triple) use_blueprint: path: samuelkadolph/zooz_zen7677_covers.yaml input: switch: 4e1a97e407a9f5d6ee3717abbfafc4b8 paddle_taps: KeyPressed3x paddle_hold: false state_variable: input_number.garage_door_control_state covers: cover.garage_door - id: garage_door_lights_garage_door_opened alias: Garage Door Lights - Garage Door Opened mode: single max_exceeded: silent triggers: - platform: state entity_id: binary_sensor.garage_door to: 'on' actions: - if: - '{{ is_state("light.garage_door_lights", "off") }}' then: - action: light.turn_on target: entity_id: light.garage_door_lights - repeat: until: - condition: state entity_id: - binary_sensor.garage_door state: 'off' for: seconds: 30 - condition: state entity_id: - binary_sensor.garage_door_motion - binary_sensor.garage_door_obstruction state: 'off' for: seconds: 120 sequence: - delay: seconds: 5 - action: light.turn_off target: entity_id: light.garage_door_lights - id: bookshelf_lights_nook_switch_triple alias: Bookshelf Lights - Nook Switch (Triple) use_blueprint: path: samuelkadolph/zooz_zen7677_lights.yaml input: switch: dd3384ec26ab7f0a6b263cbaa2819949 double_tap: true paddle_hold: true subjects: light.bookshelf_lights - id: bookshelf_lights_on_off alias: Bookshelf Lights - On & Off use_blueprint: path: samuelkadolph/automaton.yaml input: first_elevation_helper: input_number.outside_lights_on_sun_elevation first_conditions: - '{{ int(states("zone.home")) > 0 }}' first_actions: - action: light.turn_on target: entity_id: light.bookshelf_lights second_time_helper: input_datetime.bookshelf_lights_off_time second_actions: - action: light.turn_off target: entity_id: light.bookshelf_lights - id: bookshelf_lights_on_w_arrival alias: Bookshelf Lights - On w/ Arrival mode: single triggers: - trigger: state entity_id: zone.home from: '0' conditions: - condition: time before: input_datetime.bookshelf_lights_off_time after: '12:00:00' - '{{ trigger.from_state and trigger.to_state and (int(trigger.from_state.state) < int(trigger.to_state.state)) }}' - '{{ state_attr("sun.sun", "elevation") < float(states("input_number.outside_lights_on_sun_elevation")) }}' actions: - action: light.turn_on target: entity_id: light.bookshelf_lights - id: nook_shade_close_open alias: Nook Shade - Close & Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_elevation_helper: input_number.shades_close_sun_elevation first_actions: - action: script.nook_close_shade second_time_helper: sensor.shades_open_time second_actions: - action: cover.open_cover target: entity_id: cover.nook_shade - id: nook_shade_nook_switch_single alias: Nook Shade - Nook Switch (Single) use_blueprint: path: samuelkadolph/zooz_zen7677_covers.yaml input: switch: dd3384ec26ab7f0a6b263cbaa2819949 paddle_taps: KeyPressed3x state_variable: input_number.nook_shade_control_state covers: cover.nook_shade - id: ktichen_fountain_on_04_00 alias: Kitchen Fountain - On @ 04:00 mode: single triggers: - trigger: time at: 04:00:00 actions: - action: switch.turn_on target: entity_id: switch.kitchen_fountain - id: kitchen_shades_counter_lights_switch_triple alias: Kitchen Shades - Counter Lights Switch (Triple) use_blueprint: path: samuelkadolph/homeseer_wx300_covers.yaml input: switch: 3712c852fbe82c0af857879df3fa1ce0 paddle_taps: KeyPressed3x paddle_hold: false state_variable: input_number.kitchen_shades_control_state covers: cover.kitchen_shades - id: toaster_oven_off_04_00 alias: Toaster Oven - Off @ 04:00 mode: single triggers: - trigger: time at: 04:00:00 actions: - action: switch.turn_off target: entity_id: switch.toaster_oven - id: laundry_room_fountain_on_04_00 alias: Laundry Room Fountain - On @ 04:00 mode: single triggers: - trigger: time at: 04:00:00 actions: - action: switch.turn_on target: entity_id: switch.laundry_room_fountain - id: laundry_room_lights_motion alias: Laundry Room Lights - Motion use_blueprint: path: homeassistant/motion_light.yaml input: motion_entity: binary_sensor.laundry_room_sensor_motion_detection light_target: entity_id: light.laundry_room_lights no_motion_wait: 0 - id: laundry_roomy_shade_lights_switch_triple alias: Laundry Room Shade - Lights Switch (Triple) use_blueprint: path: samuelkadolph/homeseer_wx300_covers.yaml input: switch: aae6adcd021b82caa28dd808ef3ecf20 paddle_taps: KeyPressed3x paddle_hold: false state_variable: input_number.laundry_room_shade_control_state covers: cover.laundry_room_shade - id: laundry_room_shade_open alias: Laundry Room Shade - Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_trigger: none second_time_helper: sensor.shades_open_time second_actions: - action: cover.open_cover target: entity_id: cover.laundry_room_shade - id: master_bedroom_air_night_day alias: Master Bedroom Air - Night & Day use_blueprint: path: samuelkadolph/automaton.yaml input: first_trigger: time first_time_helper: sensor.master_bedroom_air_night_time first_actions: - action: script.master_bedroom_air_night second_trigger: time second_time_helper: input_datetime.master_bedroom_air_day second_actions: - action: script.master_bedroom_air_day - id: master_bedroom_air_night_w_sam_arrival alias: Master Bedroom Air - Night w/ Sam Arrival mode: single triggers: - trigger: state entity_id: person.samuel_kadolph to: home conditions: - condition: time after: sensor.master_bedroom_air_night_time before: input_datetime.master_bedroom_air_day actions: - action: script.master_bedroom_air_night - id: master_bedroom_shades_close_open alias: Master Bedroom Shades - Close & Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_trigger: elevation_below first_elevation_helper: input_number.shades_close_sun_elevation first_conditions: - '{{ state_attr("cover.master_bedroom_shades", "current_position") > float(states("sensor.shades_close_percent")) }}' first_actions: - action: cover.set_cover_position data: position: '{{ states("sensor.shades_close_percent") }}' target: entity_id: cover.master_bedroom_shades second_trigger: time second_time_helper: input_datetime.master_bedroom_shades_first_open second_conditions: - '{{ is_state("input_boolean.master_bedroom_shades_first_open", "on") }}' - '{{ is_state("person.sasha_keller", "home") }}' - '{{ now().weekday() < 5 }}' - '{{ state_attr("cover.master_bedroom_shades", "current_position") < float(states("input_number.master_bedroom_shades_first_open_percent")) }}' second_actions: - action: cover.set_cover_position data: position: '{{ states("input_number.master_bedroom_shades_first_open_percent") }}' target: entity_id: cover.master_bedroom_shades third_trigger: time third_time_helper: input_datetime.master_bedroom_shades_second_open third_conditions: - '{{ is_state("input_boolean.master_bedroom_shades_second_open", "on") }}' - '{{ state_attr("cover.master_bedroom_shades", "current_position") < float(states("input_number.master_bedroom_shades_second_open_percent")) }}' third_actions: - action: cover.set_cover_position data: position: '{{ states("input_number.master_bedroom_shades_second_open_percent") }}' target: entity_id: cover.master_bedroom_shades - id: office_on_w_motion alias: Office On w/ Motion mode: single triggers: - trigger: state entity_id: - binary_sensor.office_sensor_motion_detection - binary_sensor.office_fan_occupancy to: 'on' conditions: - condition: time after: 07:00:00 before: '22:00:00' - '{{ is_state("media_player.office_receiver_main_zone", "off") }}' - '{{ is_state("person.samuel_kadolph", "home") }}' actions: - action: script.office_turn_on - id: office_shade_a_shade_switch_double alias: Office Shade A - Shade Switch (Double) use_blueprint: path: samuelkadolph/zooz_zen7677_covers.yaml input: switch: 377491888ebce3477efd3943614694b6 paddle_taps: KeyPressed2x paddle_hold: false state_variable: input_number.office_shade_a_control_state covers: cover.office_shade_a - id: office_shade_b_shade_switch_triple alias: Office Shade B - Shade Switch (Triple) use_blueprint: path: samuelkadolph/zooz_zen7677_covers.yaml input: switch: 377491888ebce3477efd3943614694b6 paddle_taps: KeyPressed3x paddle_hold: false state_variable: input_number.office_shade_b_control_state covers: cover.office_shade_b - id: office_shades_close_open alias: Office Shades - Close & Open use_blueprint: path: samuelkadolph/automaton.yaml input: first_elevation_helper: input_number.shades_close_sun_elevation first_conditions: - condition: state entity_id: - binary_sensor.office_fan_occupancy - binary_sensor.office_sensor_motion_detection match: any state: 'on' first_actions: - action: script.office_lockdown second_time_helper: sensor.shades_open_time second_actions: - action: cover.open_cover target: entity_id: cover.office_shades - id: office_shades_shade_switch_single alias: Office Shades - Shade Switch (Single) use_blueprint: path: samuelkadolph/zooz_zen7677_covers.yaml input: switch: 377491888ebce3477efd3943614694b6 state_variable: input_number.office_shades_control_state covers: cover.office_shades - id: outside_lights_on_off alias: Outside Lights - On & Off use_blueprint: path: samuelkadolph/automaton.yaml input: first_elevation_helper: input_number.outside_lights_on_sun_elevation first_conditions: - '{{ is_state("input_boolean.seasonal_lights", "off") }}' first_actions: - action: light.turn_on target: entity_id: light.soffit_lights second_time_helper: sensor.outside_lights_off_time second_actions: - action: light.turn_off target: entity_id: light.outside_lights - id: outside_lights_on_w_arrival alias: Outside Lights - On w/ Arrival mode: single triggers: - trigger: state entity_id: zone.home conditions: - '{{ is_state("input_boolean.outside_lights_on_with_arrival", "on") }}' - '{{ trigger.from_state and trigger.to_state and (int(trigger.from_state.state) < int(trigger.to_state.state)) }}' - '{{ state_attr("sun.sun", "elevation") < float(states("input_number.outside_lights_on_sun_elevation")) }}' actions: - parallel: - if: - '{{ is_state("light.porch_lights", "off") }}' then: - action: light.turn_on target: entity_id: light.porch_lights - delay: minutes: '{{ states("input_number.outside_lights_arrival_on_time") }}' - action: light.turn_off target: entity_id: light.porch_lights - if: - '{{ is_state("light.side_door_lights", "off") }}' then: - action: light.turn_on target: entity_id: light.side_door_lights - delay: minutes: '{{ states("input_number.outside_lights_arrival_on_time") }}' - action: light.turn_off target: entity_id: light.side_door_lights - if: - '{{ is_state("light.soffit_lights", "off") }}' then: - action: light.turn_on target: entity_id: light.soffit_lights - delay: minutes: '{{ states("input_number.outside_lights_arrival_on_time") }}' - action: light.turn_off target: entity_id: light.soffit_lights - id: dead_zwave_nodes_ping alias: Dead ZWave Nodes Ping mode: restart triggers: - trigger: state entity_id: sensor.dead_zwave_nodes for: minutes: 5 actions: - repeat: while: - '{{ int(states("sensor.dead_zwave_nodes")) > 0 }}' sequence: - delay: minutes: 15 - repeat: for_each: '{{ state_attr("sensor.dead_zwave_nodes", "nodes") }}' sequence: - delay: seconds: 30 - action: system_log.write data: level: info message: Z-Wave node '{{ device_attr(device_id("sensor." + repeat.item), "name") }}' is dead, sending a ping - action: button.press target: entity_id: button.{{ repeat.item | replace("_node_status", "_ping") }}