- alias: LR Aircon triggers: - trigger: template value_template: '{{ (now() - states.binary_sensor.lr_ac_flaps_contact.last_changed).seconds < 4 }}' id: flaps - trigger: state entity_id: input_select.lr_ac_mode id: mode actions: - choose: - conditions: - condition: trigger id: mode sequence: - action: '{% if is_state(''input_select.lr_ac_mode'', ''Powerful Heat'') %} script.lr_ac_powerful_heat {% elif is_state(''input_select.lr_ac_mode'', ''Normal Heat'') %} script.lr_ac_normal_heat {% elif is_state(''input_select.lr_ac_mode'', ''Silent Heat'') %} script.lr_ac_silent_heat {% elif is_state(''input_select.lr_ac_mode'', ''Manual Heat'') %} script.lr_heat_man {% elif is_state(''input_select.lr_ac_mode'', ''Powerful Cool'') %} script.lr_ac_powerful_cool {% elif is_state(''input_select.lr_ac_mode'', ''Normal Cool'') %} script.lr_ac_normal_cool {% elif is_state(''input_select.lr_ac_mode'', ''Silent Cool'') %} script.lr_ac_silent_cool {% elif is_state(''input_select.lr_ac_mode'', ''Manual Cool'') %} script.lr_cool_man {% elif is_state(''input_select.lr_ac_mode'', ''Normal Humidifier'') %} script.lr_ac_normal_humidifier {% elif is_state(''input_select.lr_ac_mode'', ''Ai Auto'') %} script.lr_ac_ai {% elif is_state(''input_select.lr_ac_mode'', ''Man Auto'') %} script.lr_man_auto {% elif is_state(''input_select.lr_ac_mode'', ''Fan'') %} script.lr_ac_fan {% elif is_state(''input_select.lr_ac_mode'', ''Off'') %} script.lr_ac_off {% endif %} ' - conditions: - condition: trigger id: flaps sequence: - condition: template value_template: '{{ not states(''binary_sensor.lr_ac_flaps_contact'').lower() in [''unknown'',''unavailable'',''none''] }}' - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: "{% if (now() - states.input_select.lr_ac_mode.last_changed).seconds\ \ < 10 %}\n {{ states('input_select.lr_ac_mode') }}\n{% elif is_state('binary_sensor.lr_ac_flaps_contact',\ \ 'off') %} Off\n{% elif is_state('binary_sensor.lr_ac_flaps_contact',\ \ 'on') %} Man Auto\n{% else %}\n{% endif %}\n" default: [] - alias: LR Aircon AM Schedule triggers: - trigger: state entity_id: - binary_sensor.lr_ac_am_automation_time_active - binary_sensor.lr_ac_heat_required - binary_sensor.lr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.hallway_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.lr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.hallway_door state: 'off' - condition: state entity_id: binary_sensor.lr_radar_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.lr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.lr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.lr_ac_am_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: "{% if is_state('binary_sensor.lr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.lr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off'\n{% endif %}\n" - alias: LR Aircon PM Schedule triggers: - trigger: state entity_id: - binary_sensor.lr_ac_pm_automation_time_active - binary_sensor.lr_ac_heat_required - binary_sensor.lr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.hallway_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.lr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.hallway_door state: 'off' - condition: state entity_id: binary_sensor.lr_radar_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.lr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.lr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.lr_ac_pm_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: "{% if is_state('binary_sensor.lr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.lr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off'\n{% endif %}\n" - alias: LR Aircon AM Off initial_state: true triggers: - trigger: state entity_id: - binary_sensor.lr_ac_am_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.lr_aircon_am_schedule state: 'on' - condition: template value_template: '{{ states("input_select.lr_ac_mode") != "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.living_airfreshener_presence'', ''off'') }}' actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: 'Off' - alias: LR Aircon PM Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.lr_ac_pm_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.lr_aircon_pm_schedule state: 'on' - condition: template value_template: '{{ states("input_select.lr_ac_mode") != "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.living_airfreshener_presence'', ''off'') }}' actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: 'Off' - alias: LR Room Aircon Cool Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.lr_ac_temp_set_cool conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.lr_ac_mode.state }}' actions: - action: '{% if states(''input_number.lr_ac_temp_set_cool'')| int != 0 %} script.lr_cool_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Manual Cool - alias: LR Room Aircon Heat Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.lr_ac_temp_set_heat conditions: - condition: template value_template: '{{ ''Heat'' in states.input_select.lr_ac_mode.state }}' actions: - action: '{% if states(''input_number.lr_ac_temp_set_heat'')| int != 0 %} script.lr_heat_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Manual Heat - alias: LR Room Aircon Humidity Set initial_state: true triggers: - trigger: state entity_id: input_number.lr_humidity_set conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.lr_ac_mode.state }}' actions: - action: '{% if states(''input_number.lr_humidity_set'')| int != 0 %} script.lr_humidity_set {% endif %} ' - alias: LR Powerful Cool On initial_state: true triggers: - trigger: state entity_id: input_select.lr_ac_mode to: Normal Cool for: minutes: 30 - trigger: state entity_id: binary_sensor.lr_ac_cool_required to: 'on' for: minutes: 5 conditions: - condition: state entity_id: binary_sensor.lr_ac_cool_required state: 'on' - condition: state entity_id: input_select.lr_ac_mode state: Normal Cool actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Powerful Cool - alias: LR Powerful Cool Off initial_state: true triggers: - trigger: state entity_id: input_select.lr_ac_mode to: Powerful Cool for: minutes: 30 - trigger: state entity_id: binary_sensor.lr_ac_cool_required to: 'off' for: minutes: 5 conditions: - condition: state entity_id: input_select.lr_ac_mode state: Powerful Cool actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Normal Cool - alias: LR Powerful Heat Off initial_state: true triggers: - trigger: state entity_id: input_select.lr_ac_mode to: Powerful Heat for: 00:30:00 - trigger: state entity_id: binary_sensor.lr_ac_heat_required to: 'off' for: 00:05:00 conditions: - condition: state entity_id: input_select.lr_ac_mode state: Powerful Heat actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Normal Heat - alias: LR Powerful Heat On initial_state: true triggers: - trigger: state entity_id: input_select.lr_ac_mode to: Normal Heat for: 00:30:00 - trigger: state entity_id: binary_sensor.lr_ac_heat_required to: 'on' for: 00:05:00 conditions: - condition: state entity_id: binary_sensor.lr_ac_heat_required state: 'on' - condition: state entity_id: input_select.lr_ac_mode state: Normal Heat actions: - action: input_select.select_option data: entity_id: input_select.lr_ac_mode option: Powerful Heat - alias: LR Heating Seasonal Adjustment AM initial_state: true triggers: - trigger: time at: 04:00:00 actions: - action: input_number.set_value data: entity_id: input_number.lr_heater_heat_temp_set value: "{% if is_state('sensor.season', 'summer') %}\n 18\n{% elif is_state('sensor.season',\ \ 'autumn') %}\n 19\n{% elif is_state('sensor.season', 'winter') %}\n 17\n\ {% elif is_state('sensor.season', 'spring') %}\n 17\n{% endif %}\n" - condition: template value_template: '{{ states(''sensor.entrance_temperature'')|float(0) > 22 }}' - action: input_number.set_value data: entity_id: input_number.lr_heater_heat_temp_set value: 16 - alias: LR Heating Seasonal Adjustment PM initial_state: true triggers: - trigger: time at: '13:00:00' actions: - action: input_number.set_value data: entity_id: input_number.lr_heater_heat_temp_set value: "{% if is_state('sensor.season', 'summer') %}\n 18\n{% elif is_state('sensor.season',\ \ 'autumn') %}\n 19\n{% elif is_state('sensor.season', 'winter') %}\n 18\n\ {% elif is_state('sensor.season', 'spring') %}\n 17\n{% endif %}\n" - alias: SB Humidifier initial_state: true triggers: - trigger: state entity_id: input_select.sb_humidifier_mode actions: - action: '{% if is_state(''input_select.sb_humidifier_mode'', ''Low'') %} script.humidifier_low {% elif is_state(''input_select.sb_humidifier_mode'', ''Med'') %} script.humidifier_med {% elif is_state(''input_select.sb_humidifier_mode'', ''High'') %} script.humidifier_high {% elif is_state(''input_select.sb_humidifier_mode'', ''Auto'') %} script.humidifier_auto {% elif is_state(''input_select.sb_humidifier_mode'', ''Off'') %} script.humidifier_off {% endif %} ' - alias: SB Humidifier Intensity initial_state: true triggers: - trigger: state entity_id: input_number.lrh_humidity_intensity_set conditions: - condition: template value_template: '{{ is_state(''input_boolean.sb_humidifier'', ''on'') }}' actions: - action: script.lrh_humidity_intensity_set - alias: SB Humidifier AM Schedule triggers: - trigger: state entity_id: binary_sensor.lrh_humidifier_am_automation_time_active to: 'on' for: 10 condition: - condition: template value_template: '{{ is_state(''input_boolean.lrh_humidifier_automation_enable'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.sb_humidifier_mode'', ''Off'') }}' - condition: numeric_state entity_id: sensor.lr_radar_humidity above: input_number.lrh_humidity_low_set below: input_number.lrh_humidity_high_set - condition: template value_template: '{{ is_state(''sensor.sb_humidifier_lack_water'', ''False'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sb_humidifier_mode option: High - alias: SB Humidifier PM Schedule triggers: - trigger: state entity_id: binary_sensor.lrh_humidifier_pm_automation_time_active to: 'on' for: 10 conditions: - condition: template value_template: '{{ is_state(''input_boolean.lrh_humidifier_automation_enable'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.sb_humidifier_mode'', ''Off'') }}' - condition: numeric_state entity_id: sensor.sb_humidifier_humidity above: input_number.lrh_humidity_low_set below: input_number.lrh_humidity_high_set - condition: template value_template: '{{ is_state(''sensor.sb_humidifier_lack_water'', ''False'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sb_humidifier_mode option: High - alias: SB Humidifier AM Off triggers: - trigger: state entity_id: binary_sensor.lrh_humidifier_am_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.sb_humidifier_am_schedule state: 'on' - condition: template value_template: '{{ states("input_select.sb_humidifier_mode") != "Off" }}' actions: - action: input_select.select_option data: entity_id: input_select.sb_humidifier_mode option: 'Off' - alias: SB Humidifier PM Off triggers: - trigger: state entity_id: binary_sensor.lrh_humidifier_pm_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.sb_humidifier_pm_schedule state: 'on' - condition: template value_template: '{{ states("input_select.sb_humidifier_mode") != "Off" }}' actions: - action: input_select.select_option data: entity_id: input_select.sb_humidifier_mode option: 'Off' - alias: Masterroom Occupancy description: Defines occupancy state for room mode: single triggers: - trigger: time_pattern id: time seconds: '10' - trigger: state entity_id: binary_sensor.mr_human_sensor_moving_target id: motion to: 'on' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: time after: 06:00:00 before: '22:01:00' actions: - action: python_script.room_occupancy data: roomname: masterroom timeout: 2 entities_toggle: - binary_sensor.mr_human_sensor_moving_target entities_keep: - binary_sensor.mr_presence - input_boolean.masterroom_mcl - alias: Masterroom Light description: toggle light depending on timer state mode: single triggers: - trigger: state entity_id: timer.masterroom_timer id: 'on' from: idle to: active - trigger: state entity_id: timer.masterroom_timer id: 'off' from: active to: idle - trigger: state entity_id: light.master id: 'off' from: 'on' to: 'off' - trigger: state entity_id: binary_sensor.mr_occupancy_lights id: 'off' from: 'on' to: 'off' for: 45 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''binary_sensor.desktop_status'', ''off'') }}' - condition: time after: 06:00:00 before: '22:01:00' actions: - choose: - conditions: - condition: trigger id: 'on' sequence: - action: script.tradfri_transition data: entity_id: light.m_1 color_temp: 370 transition: 2 brightness: 255 entity_id: light.m_1 - conditions: - condition: trigger id: 'off' - condition: template value_template: '{{ not is_state(''input_boolean.masterroom_mcl'', ''on'') }}' sequence: - action: light.turn_off target: entity_id: light.master - action: timer.finish target: entity_id: timer.masterroom_timer default: [] - alias: Masterroom Auto-on mode: single triggers: - trigger: state entity_id: binary_sensor.masterroom_occupied conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''binary_sensor.desktop_status'', ''off'') }}' - condition: time after: 06:00:00 before: '22:01:00' actions: - choose: - conditions: - condition: state entity_id: binary_sensor.masterroom_occupied state: 'on' sequence: - action: script.tradfri_transition data: entity_id: light.m_1 color_temp: 370 transition: 2 brightness: 255 default: - action: light.turn_off target: entity_id: light.master - alias: MR light turned off triggers: - trigger: state entity_id: light.master from: 'on' to: 'off' actions: - action: timer.start entity_id: timer.mr_mcl - alias: MR light turned on triggers: - trigger: state entity_id: light.master from: 'off' to: 'on' conditions: - condition: template value_template: '{{ is_state(''timer.mr_mcl'', ''active'') }}' actions: - action: input_boolean.toggle entity_id: input_boolean.masterroom_mcl - alias: MR MCL Announce State triggers: - trigger: state entity_id: input_boolean.masterroom_mcl conditions: - condition: template value_template: '{{ is_state(''input_boolean.audible_notifications'', ''on'') }}' actions: - action: script.speech_engine data: who: ai_2 message: include ../tpl/speech/control_status.yaml voice: '{{ states(''input_select.jarvis_voice'') }}' - alias: MR MCL Re-Enable triggers: - trigger: state entity_id: input_boolean.masterroom_mcl to: 'on' for: 01:00:00 actions: - action: input_boolean.turn_off entity_id: input_boolean.masterroom_mcl - alias: MR Aircon initial_state: true triggers: - trigger: state entity_id: input_select.mr_ac_mode actions: - action: '{% if is_state(''input_select.mr_ac_mode'', ''Powerful Heat'') %} script.mr_ac_powerful_heat {% elif is_state(''input_select.mr_ac_mode'', ''Normal Heat'') %} script.mr_ac_normal_heat {% elif is_state(''input_select.mr_ac_mode'', ''Silent Heat'') %} script.mr_ac_silent_heat {% elif is_state(''input_select.mr_ac_mode'', ''Manual Heat'') %} script.mr_heat_man {% elif is_state(''input_select.mr_ac_mode'', ''Powerful Cool'') %} script.mr_ac_powerful_cool {% elif is_state(''input_select.mr_ac_mode'', ''Normal Cool'') %} script.mr_ac_normal_cool {% elif is_state(''input_select.mr_ac_mode'', ''Silent Cool'') %} script.mr_ac_silent_cool {% elif is_state(''input_select.mr_ac_mode'', ''Manual Cool'') %} script.mr_cool_man {% elif is_state(''input_select.mr_ac_mode'', ''Normal Humidifier'') %} script.mr_ac_normal_humidifier {% elif is_state(''input_select.mr_ac_mode'', ''Ai Auto'') %} script.mr_ac_ai {% elif is_state(''input_select.mr_ac_mode'', ''Man Auto'') %} script.mr_man_auto {% elif is_state(''input_select.lr_ac_mode'', ''Fan'') %} script.mr_ac_fan {% elif is_state(''input_select.mr_ac_mode'', ''Off'') %} script.mr_ac_off {% endif %} ' - alias: MR Aircon AM Schedule triggers: - trigger: state entity_id: - binary_sensor.mr_ac_am_automation_time_active - binary_sensor.mr_ac_heat_required - binary_sensor.mr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.master_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.mr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.master_door state: 'off' - condition: state entity_id: binary_sensor.mr_dht_sensor_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.mr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.mr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.mr_ac_am_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: "{% if is_state('binary_sensor.mr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.mr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off'\n{% endif %}\n" - alias: MR Aircon PM Schedule triggers: - trigger: state entity_id: - binary_sensor.mr_ac_pm_automation_time_active - binary_sensor.mr_ac_heat_required - binary_sensor.mr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.master_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.mr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.master_door state: 'off' - condition: state entity_id: binary_sensor.mr_dht_sensor_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.mr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.mr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.mr_ac_pm_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: "{% if is_state('binary_sensor.mr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.mr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off'\n{% endif %}\n" - alias: MR Aircon AM Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.mr_ac_am_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.mr_aircon_am_schedule state: 'on' - condition: template value_template: '{{ states("input_select.mr_ac_mode") = "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: 'Off' - alias: MR Aircon PM Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.mr_ac_pm_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.mr_aircon_pm_schedule state: 'on' - condition: template value_template: '{{ states("input_select.mr_ac_mode") = "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: 'Off' - alias: MR Aircon Cool Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.mr_ac_temp_set_cool conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.mr_ac_mode.state }}' actions: - action: '{% if states(''input_number.mr_ac_temp_set_cool'')| int = 0 %} script.mr_cool_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: Manual Cool - alias: MR Aircon Heat Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.mr_ac_temp_set_heat conditions: - condition: template value_template: '{{ ''Heat'' in states.input_select.mr_ac_mode.state }}' actions: - action: '{% if states(''input_number.mr_ac_temp_set_heat'')| int = 0 %} script.mr_heat_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.mr_ac_mode option: Manual Heat - alias: MR Room Aircon Humidity Set initial_state: true triggers: - trigger: state entity_id: input_number.mr_humidity_set conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.mr_ac_mode.state }}' actions: - action: '{% if states(''input_number.mr_humidity_set'')| int = 0 %} script.mr_humidity_set {% endif %} ' - alias: Shionroom Occupancy description: Defines occupancy state for room mode: single triggers: - trigger: time_pattern id: time seconds: '10' - trigger: state entity_id: binary_sensor.sr_moving_target id: motion to: 'on' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' actions: - action: python_script.room_occupancy data: roomname: shionroom timeout: 2 entities_toggle: - binary_sensor.sr_moving_target entities_keep: - binary_sensor.sr_presence - binary_sensor.sr_has_target - group.bed_sensors - input_boolean.shionroom_mcl - binary_sensor.sr_study_occupancy - alias: Shionroom Light description: toggle light depending on timer state mode: single triggers: - trigger: state entity_id: timer.shionroom_timer id: 'on' from: idle to: active - trigger: state entity_id: timer.shionroom_timer id: 'off' from: active to: idle - trigger: state entity_id: light.shion id: 'off' from: 'on' to: 'off' - trigger: state entity_id: binary_sensor.sr_occupancy_lights id: 'off' from: 'on' to: 'off' for: 45 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.motion_sr_auto_on'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: 'on' sequence: - action: script.tradfri_transition data: entity_id: light.shion color_temp: 143 transition: 2 brightness: '{% if states.sensor.aio_human_sensor_illuminance.state | float(0) < 0.15 %} 160 {% else %} 255 {% endif %}' - conditions: - condition: trigger id: 'off' - condition: template value_template: '{{ not is_state(''input_boolean.shionroom_mcl'', ''on'') }}' sequence: - action: light.turn_off target: entity_id: light.shion - action: timer.finish target: entity_id: timer.shionroom_timer default: [] - alias: Shionroom Auto-on mode: single triggers: - trigger: state entity_id: binary_sensor.shionroom_occupied conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.motion_sr_auto_on'', ''on'') }}' actions: - choose: - conditions: - condition: state entity_id: binary_sensor.shionroom_occupied state: 'on' sequence: - action: script.tradfri_transition data: entity_id: light.shion color_temp: 143 transition: 2 brightness: '{% if states.sensor.aio_human_sensor_illuminance.state | float(0) < 0.15 %} 160 {% else %} 255 {% endif %}' default: - action: light.turn_off target: entity_id: light.shion - alias: SR light turned off triggers: - trigger: state entity_id: light.shion from: 'on' to: 'off' actions: - action: timer.start entity_id: timer.sr_mcl - alias: SR light turned on triggers: - trigger: state entity_id: light.shion from: 'off' to: 'on' conditions: - condition: template value_template: '{{ is_state(''timer.sr_mcl'', ''active'') }}' actions: - action: input_boolean.toggle entity_id: input_boolean.shionroom_mcl - alias: SR MCL Announce State triggers: - trigger: state entity_id: input_boolean.shionroom_mcl conditions: - condition: template value_template: '{{ is_state(''input_boolean.audible_notifications'', ''on'') }}' actions: - action: script.speech_engine_echo data: who: ai_3 voice: '{{ states(''input_select.jarvis_voice'') }}' message: '{% set mode = ''自動'' if trigger.to_state.state == ''off'' else ''マニュアル'' %} シオンルームライトが {{ mode }} モードになりました。 ' - alias: SR MCL Re-Enable triggers: - trigger: state entity_id: input_boolean.shionroom_mcl to: 'on' for: 01:00:00 actions: - action: input_boolean.turn_off entity_id: input_boolean.shionroom_mcl - alias: Squirt Shion Airfreshener triggers: - trigger: state entity_id: binary_sensor.shion_airfreshener_moving_target from: 'off' to: 'on' conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.motion_sr_auto_on'', ''on'') }}' - condition: template value_template: '{{ state_attr(''binary_sensor.shionroom_occupied'',''squirt'') == true }}' actions: - action: switch.toggle entity_id: switch.shion_airfreshener - alias: SR Aircon initial_state: true triggers: - trigger: template value_template: '{{ (now() - states.binary_sensor.sr_ac_flaps_contact.last_changed).seconds < 3 }}' id: flaps - trigger: state entity_id: input_select.sr_ac_mode id: mode actions: - choose: - conditions: - condition: trigger id: mode sequence: - action: '{% if is_state(''input_select.sr_ac_mode'', ''Powerful Heat'') %} script.sr_ac_powerful_heat {% elif is_state(''input_select.sr_ac_mode'', ''Normal Heat'') %} script.sr_ac_normal_heat {% elif is_state(''input_select.sr_ac_mode'', ''Silent Heat'') %} script.sr_ac_silent_heat {% elif is_state(''input_select.sr_ac_mode'', ''Manual Heat'') %} script.sr_heat_man {% elif is_state(''input_select.sr_ac_mode'', ''Powerful Cool'') %} script.sr_ac_powerful_cool {% elif is_state(''input_select.sr_ac_mode'', ''Normal Cool'') %} script.sr_ac_normal_cool {% elif is_state(''input_select.sr_ac_mode'', ''Silent Cool'') %} script.sr_ac_silent_cool {% elif is_state(''input_select.sr_ac_mode'', ''Manual Cool'') %} script.sr_cool_man {% elif is_state(''input_select.sr_ac_mode'', ''Normal Humidifier'') %} script.sr_ac_normal_humidifier {% elif is_state(''input_select.sr_ac_mode'', ''Ai Auto'') %} script.sr_ac_ai {% elif is_state(''input_select.sr_ac_mode'', ''Man Auto'') %} script.sr_man_auto {% elif is_state(''input_select.sr_ac_mode'', ''Fan'') %} script.sr_ac_fan {% elif is_state(''input_select.sr_ac_mode'', ''Off'') %} script.sr_ac_off {% endif %} ' - conditions: - condition: trigger id: flaps sequence: - condition: template value_template: '{{ not states(''binary_sensor.sr_ac_flaps_contact'').lower() in [''unknown'',''unavailable'',''none''] }}' - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: "{% if (now() - states.input_select.sr_ac_mode.last_changed).seconds\ \ < 10 %}\n {{ states('input_select.sr_ac_mode') }}\n{% elif is_state('binary_sensor.sr_ac_flaps_contact',\ \ 'on') %} Man Auto\n{% elif is_state('binary_sensor.sr_ac_flaps_contact',\ \ 'off') %} Off\n{% else %}\n{% endif %}\n" default: [] - alias: SR Aircon AM Schedule triggers: - trigger: state entity_id: - binary_sensor.sr_ac_am_automation_time_active - binary_sensor.sr_ac_heat_required - binary_sensor.sr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.shion_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.sr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.shion_door state: 'off' - condition: state entity_id: binary_sensor.sr_sensor_dht_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.sr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.sr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.sr_ac_am_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: "{% if is_state('binary_sensor.sr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.sr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off','Off'\n{% endif %}\n" - alias: SR Aircon PM Schedule triggers: - trigger: state entity_id: - binary_sensor.sr_ac_pm_automation_time_active - binary_sensor.sr_ac_heat_required - binary_sensor.sr_ac_cool_required to: 'on' for: 10 - trigger: state entity_id: binary_sensor.shion_door to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.sr_ac_mode state: 'Off' - condition: state entity_id: binary_sensor.shion_door state: 'off' - condition: state entity_id: binary_sensor.sr_sensor_dht_status state: 'on' - condition: or conditions: - condition: state entity_id: binary_sensor.sr_ac_heat_required state: 'on' - condition: state entity_id: binary_sensor.sr_ac_cool_required state: 'on' - condition: state entity_id: binary_sensor.sr_ac_pm_automation_time_active state: 'on' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: "{% if is_state('binary_sensor.sr_ac_heat_required', 'on') %}\n Normal\ \ Heat\n{% elif is_state('binary_sensor.sr_ac_cool_required', 'on') %}\n \ \ Normal Cool\n{% else %}\n 'Off'\n{% endif %}\n" - alias: SR Aircon AM Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.sr_ac_am_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.sr_aircon_am_schedule state: 'on' - condition: template value_template: '{{ states("input_select.sr_ac_mode") != "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: 'Off' - alias: SR Aircon PM Off initial_state: true triggers: - trigger: state entity_id: binary_sensor.sr_ac_pm_automation_time_active to: 'off' conditions: - condition: state entity_id: automation.sr_aircon_pm_schedule state: 'on' - condition: template value_template: '{{ states("input_select.sr_ac_mode") != "Off" }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: 'Off' - alias: SR Aircon Cool Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.sr_ac_temp_set_cool conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.sr_ac_mode.state }}' actions: - action: '{% if states(''input_number.sr_ac_temp_set_cool'')| int != 0 %} script.sr_cool_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: Manual Cool - alias: SR Aircon Heat Temperature Adjust initial_state: true triggers: - trigger: state entity_id: input_number.sr_ac_temp_set_heat conditions: - condition: template value_template: '{{ ''Heat'' in states.input_select.sr_ac_mode.state }}' actions: - action: '{% if states(''input_number.sr_ac_temp_set_heat'')| int != 0 %} script.sr_heat_man {% endif %} ' - action: input_select.select_option data: entity_id: input_select.sr_ac_mode option: Manual Heat - alias: SR Room Aircon Humidity Set initial_state: true triggers: - trigger: state entity_id: input_number.sr_humidity_set conditions: - condition: template value_template: '{{ ''Cool'' in states.input_select.sr_ac_mode.state }}' actions: - action: '{% if states(''input_number.sr_humidity_set'')| int != 0 %} script.sr_humidity_set {% endif %} ' - alias: Item Select to speak triggers: - trigger: state entity_id: input_select.speak_list variables: opt: '{% set sp = states(''input_select.speak_list'') %} {% set no = sp.find("(c")+2 %} {{ sp[no:no+2]|int(0) }} ' conditions: - condition: template value_template: '{{states.input_select.speak_list.state = "do not use" }}' actions: - action: script.speech_engine data: who: '{{ states(''sensor.last_alexa'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: include ../tpl/speech/alexa_cmds.yaml - action: input_select.select_option data: entity_id: input_select.speak_list option: do not use - delay: 2 - action: light.turn_on data: entity_id: light.alexa_virtual brightness_pct: '{{opt}}' - alias: Dummy light to item select triggers: - trigger: state entity_id: light.alexa_virtual from: 'off' to: 'on' actions: - action: input_select.select_option data: entity_id: input_select.speak_list option: "{% set slist = state_attr('input_select.speak_list','options') %} {%\ \ set opt = state_attr('light.alexa_virtual','brightness') %} {% set opt =\ \ (opt | float(0) / 255 * 100+0.5)|int %} {% if opt|int > slist|length %}\n\ \ {% set opt = 0 %}\n{% endif %} {{slist[opt]}} \n" - action: light.turn_off entity_id: light.alexa_virtual - alias: Bedtime Start Announcements triggers: - trigger: time at: input_datetime.shion_nightly_report conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: timer.start entity_id: timer.looper - alias: Bedtime Stop Announcements triggers: - trigger: state entity_id: binary_sensor.middle for: 30 from: 'off' to: 'on' conditions: - condition: time after: '21:00:00' before: '22:30:00' actions: - action: timer.finish entity_id: timer.looper - alias: Looper timer started triggers: - trigger: event event_type: timer.started event_data: entity_id: timer.looper actions: - action: "{% if now().hour > 21 %}\n timer.cancel\n{% else %}\n script.turn_on\n\ {% endif %}\n" data: entity_id: "{% if now().hour > 21 %}\n timer.looper\n{% else %}\n script.bedtime_notify\n\ {% endif %}\n" - alias: Looper timer finished triggers: - trigger: event event_type: timer.finished event_data: entity_id: timer.looper conditions: - condition: state entity_id: binary_sensor.middle state: 'off' actions: - action: timer.start entity_id: timer.looper - alias: Turn On Audible Notifications initial_state: true triggers: - trigger: template value_template: '{{ states(''sensor.time'') == (state_attr(''input_datetime.audible_notification_on'', ''timestamp'') | int | timestamp_custom(''%H:%M'', False)) }}' actions: - action: input_boolean.turn_on entity_id: input_boolean.audible_notifications - alias: Turn Off Audible Notifications initial_state: true triggers: - trigger: template value_template: '{{ states(''sensor.time'') == (state_attr(''input_datetime.audible_notification_off'', ''timestamp'') | int | timestamp_custom(''%H:%M'', False)) }}' conditions: - condition: state entity_id: input_boolean.audible_notifications state: 'on' actions: - action: input_boolean.turn_off entity_id: input_boolean.audible_notifications - alias: Shion Event Starting Soon triggers: - trigger: calendar event: start offset: -0:45:0 entity_id: calendar.shion_events actions: - action: script.status_annc data: who: ai_1 call_interuption: 1 call_shion_events: 1 - alias: Appointment Reminder Today triggers: - trigger: calendar event: start offset: '-1:00:00' entity_id: calendar.appointments actions: - action: script.status_annc data: who: ai_1 call_interuption: 1 call_appointments: 1 - alias: Appointment Reminder Tomorrow triggers: - trigger: state entity_id: sensor.appointmenttomorrow conditions: - condition: template value_template: '{{ not is_state(''sensor.appointmenttomorrow'', [''unknown'',''none'',''unavailable'']) }}' actions: - action: script.email_notify data: who: duc title: 'Appointment Tomorrow: {{ states(''sensor.appointmenttomorrow'') }}' message: There is {{ states('sensor.appointmenttomorrow') }} appointment tomorrow at {{ state_attr('sensor.appointmenttomorrow', 'start_time') }}. - action: script.text_notify data: who: duc title: Appointment Tomorrow message: There is {{ states('sensor.appointmenttomorrow') }} appointment tomorrow at {{ state_attr('sensor.appointmenttomorrow', 'start_time') }}. - alias: announce who is arriving triggers: - trigger: state entity_id: - device_tracker.id - device_tracker.ie to: home actions: - choose: - conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Away'') or is_state(''input_select.home_mode'', ''Vacation'') }}' sequence: - action: input_select.select_option entity_id: input_select.home_mode data: option: Returning - action: script.standby - action: input_boolean.turn_off data: entity_id: "{% if trigger.to_state.attributes.friendly_name == 'iE' %}\n\ \ input_boolean.eri_travel_monitor\n{% elif trigger.to_state.attributes.friendly_name\ \ == 'id' %}\n input_boolean.duc_travel_monitor\n{% else %}\n{% endif\ \ %}\n" default: - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: "{% set alias = {\"iE\":\"mommy\", \"id\":\"daddy\", \"Shion\":\"\ she-on\"} %} {% set p = trigger.to_state.attributes.friendly_name %} {%\ \ set person = alias.get(p) %}\n {{ person }}, will be home in about 5\ \ minutes.\n" - action: light.turn_on data: entity_id: light.g_1 brightness: 200 - action: input_boolean.turn_off data: entity_id: "{% if trigger.to_state.attributes.friendly_name == 'iE' %}\n \ \ input_boolean.eri_travel_monitor\n{% elif trigger.to_state.attributes.friendly_name\ \ == 'id' %}\n input_boolean.duc_travel_monitor\n{% else %}\n{% endif\ \ %}\n" - alias: Momentary Switch Trigger triggers: - trigger: state entity_id: - input_boolean.toggle_guest_presence - binary_sensor.duc_presence to: 'on' actions: - action: switch.turn_on data: entity_id: "{% if is_state('input_boolean.toggle_guest_presence', 'on') %}\n\ \ switch.momentary_activate_guest\n{% elif is_state('binary_sensor.duc_presence',\ \ 'on') %}\n switch.momentary_activate_tv\n{% endif %}\n" - delay: 2 - condition: template value_template: '{{ is_state(''input_boolean.toggle_guest_presence'', ''off'') }}' - action: homeassistant.turn_off data: entity_id: input_boolean.toggle_guest_presence - alias: welcome family announcement triggers: - trigger: state entity_id: - binary_sensor.duc_presence - binary_sensor.eri_presence - binary_sensor.shion_presence to: 'on' actions: - wait_template: '{{ is_state(''group.motion_genkan_occupancy'', ''on'') }}' continue_on_timeout: false timeout: 20 - action: script.speech_engine data: who: ai_2 message: include ../tpl/speech/family_greetings.yaml voice: '{{ states(''input_select.jarvis_voice'') }}' - condition: template value_template: '{{ not is_state(''switch.momentary_activate_guest'', ''on'') }}' - condition: template value_template: '{{ states.sensor.lr_radar_illuminance.state | float(0) > 0.39 }}' - action: script.turn_on_lr_lights - alias: welcome guest announcement triggers: - trigger: state entity_id: - binary_sensor.sachiko_presence - binary_sensor.tomokun_presence to: 'on' actions: - delay: 1 - wait_template: '{{ is_state(''binary_sensor.genkan_moving_target'', ''on'') }}' continue_on_timeout: false timeout: 10 - action: script.speech_engine data: who: ai_2 message: include ../tpl/speech/guest_greetings.yaml voice: '{{ states(''input_select.jarvis_voice'') }}' - alias: Washer Operation triggers: - trigger: state entity_id: sensor.gosund_washer_state actions: - action: input_select.select_option data: entity_id: input_select.gosund_washer_state option: '{% set s = states(''input_select.gosund_washer_state'') %} {% set fr = trigger.from_state.state %} {% set to = trigger.to_state.state %} {% if fr == ''stop'' and to == ''fill'' %} wash fill {% elif fr == ''fill'' and to == ''run'' %} wash {% elif fr in [''fill'', ''stop''] and to == ''run'' %} wash {% elif fr in [''run'', ''fill''] and to == ''pulse'' %} dryer {% elif fr == ''run'' and to == ''pulse'' and s == ''wash'' %} wash spin {% elif fr == ''pulse'' and to == ''run'' and s == ''wash spin'' %} wash drain {% elif fr == ''pulse'' and to == ''run'' and s == ''unknown'' %} cool down {% elif fr == ''run'' and to == ''fill'' %} rinse fill {% elif fr in [''fill'', ''run''] and to == ''wait'' %} rinse wait {% elif fr == ''wait'' and to == ''run'' %} rinse {% elif fr == ''run'' and to == ''pulse'' and s == ''rinse'' %} rinse spin {% elif fr == ''pulse'' and to == ''run'' and s == ''rinse spin'' %} rinse drain {% elif fr in [''run'', ''fill'', ''wait'', ''unknown''] and to == ''stop'' %} stop {% else %} -- {% endif %} ' - alias: Washer Running initial_state: true triggers: - trigger: state entity_id: sensor.gosund_washer_state from: wait to: fill - trigger: state entity_id: sensor.gosund_washer_state from: - fill - rinse to: pulse conditions: - condition: numeric_state entity_id: sensor.gosund_washer_power above: 10 - condition: or conditions: - condition: state entity_id: sensor.washer_status_m state: idle - condition: state entity_id: sensor.washer_status_m state: complete actions: - action: script.washer_running - action: script.washer_monitor - alias: Washer Complete initial_state: true triggers: - trigger: numeric_state entity_id: sensor.gosund_washer_power below: 7 for: 36 id: done - trigger: template value_template: '{{ states(''sensor.gosund_washer_power'')| int(0) == 5 }}' for: 18 id: filter conditions: [] actions: - choose: - conditions: - condition: trigger id: done sequence: - condition: template value_template: '{{ states(''sensor.gosund_washer_power'')| int(0) == 0 }}' - condition: template value_template: '{{ is_state(''sensor.washer_status_m'', ''running'') }}' - action: script.washer_complete - conditions: - condition: trigger id: filter sequence: - condition: template value_template: '{{ is_state(''sensor.washer_status_m'', ''running'') and is_state(''timer.washer_monitor'', ''idle'') }}' - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: It appears the washing machine check filter warning lamp is on. - action: script.washer_complete - conditions: - condition: trigger id: err sequence: - condition: template value_template: '{{ is_state(''sensor.washer_status_m'', ''running'') and is_state(''timer.washer_monitor'', ''active'') }}' - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' message: It seems the washing machine ended with an error. Please verify. voice: '{{ states(''input_select.jarvis_voice'') }}' default: [] - alias: Washer Notification initial_state: true triggers: - trigger: state entity_id: sensor.washer_status_m from: running to: complete actions: - action: input_boolean.turn_on entity_id: input_boolean.washer_finished - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: Just a quick heads up, It appears the washing machine has completed its cycle. - action: script.turn_on entity_id: script.washer_finished_notification_audible - alias: Washer Emptied initial_state: true triggers: - trigger: state entity_id: binary_sensor.washer_door from: 'off' to: 'on' actions: - action: input_boolean.turn_off entity_id: input_boolean.washer_finished - action: script.washer_emptied - action: script.washer_monitor - alias: Dish Cabinet Alert mode: restart triggers: - trigger: template value_template: '{{ is_state(''binary_sensor.dish_cabinet_contact'', ''on'') }}' for: 120 actions: - choose: - conditions: - condition: template value_template: '{{ is_state(''binary_sensor.dish_cabinet_contact'', ''on'') }}' sequence: - action: script.status_annc data: who: '{{ states(''sensor.room_audio'') }}' call_interuption: 1 call_secure_dish: 1 default: [] - alias: Morning Briefings initial_state: true variables: msg: "Today is {{ now().strftime( '%B %d, %Y') }}\n \nToday's Weather\nThe current\ \ temperature is {{ states('sensor.wbio_current_temperature') }}° ( {{states('sensor.oa_feels_like')}}°\ \ feel like) with a forecast of {{ states('sensor.nws_overnight_forecast') }}.\ \ Today's low is {{ states('sensor.wbio_overnight_low') }}° with a high of {{\ \ states('sensor.wbio_daytime_temperature') }}°. The predicted precipitation\ \ today is{% if state_attr('sensor.my_weather_forecast_daily', 'forecast')[0].precipitation\ \ == 0 %} 0mm. {% else %} {{ states.sensor.my_weather_forecast_daily.attributes.forecast[0].precipitation\ \ }}mm at a chance of {{ states('sensor.wbio_current_rain_forecast') }}%. {%\ \ endif %}\n \nHolidays & Birthdays\n{% if is_state('sensor.holiday', 'none')\ \ %}No Holidays or Birthdays Today {% else %}Today is {{ states('sensor.holiday')\ \ }}.{% endif %} {% if is_state('sensor.holidaytomorrow', 'none') %} {% else\ \ %}Tomorrow is {{ states('sensor.holidaytomorrow') }}.{% endif %}\n{% if is_state('sensor.holidayinaweek',\ \ 'none') %} {% else %} {{ states('sensor.holidayinaweek') }} is in one week.{%\ \ endif %}\n\nA Picture of Us!" triggers: - trigger: time at: input_datetime.morning_report actions: - action: script.email_notify_image data: who: duc title: Morning Briefing message: '{{ msg }}' path: - /config/www/img/private/{{ range(1, 25) | random }}.jpg - action: script.text_notify data: who: duc title: Weather message: "Currently {{ states('sensor.aio_human_sensor_entrance_temperature',\ \ rounded=true) }}°, feels like {{states('sensor.oa_feels_like')}}°. Today\ \ {{ (state_attr('sensor.my_weather_forecast_daily', 'forecast')\n | map(attribute=\"\ temperature\")\n | list)[0:1]\n | max }}°\n/{{ state_attr('sensor.my_weather_forecast_daily',\ \ 'forecast')[0].templow }}° {{ states('weather.my_weather') }} humidity {{\ \ state_attr('weather.my_weather', 'humidity') }}% with {% if state_attr('sensor.my_weather_forecast_daily',\ \ 'forecast')[0].precipitation_probability != 0 %}\n preciptation of {{\ \ state_attr('sensor.my_weather_forecast_daily', 'forecast')[0].precipitation\ \ }}\n{%else%}\n no precipitation\n{%endif%}." - action: script.email_notify_image data: who: eri title: Morning Briefing message: '{{ msg }}' path: - /config/www/img/private/{{ range(1, 25) | random }}.jpg - alias: Morning Wakeup Report triggers: - trigger: state entity_id: binary_sensor.bt_proxy_computer_moving_target to: 'on' conditions: - condition: time after: 05:00:00 before: 06:00:00 - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''sensor.eri_bermuda_area'', ''Living'') }}' - condition: state entity_id: input_boolean.morning_wakeup_report state: 'off' actions: - action: script.morning_wakeup_report - action: input_boolean.turn_on entity_id: input_boolean.morning_wakeup_report - alias: Morning Report triggers: - trigger: state entity_id: binary_sensor.bt_proxy_computer_moving_target to: 'on' conditions: - condition: time after: input_datetime.morning_report before: 08:30:00 - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''sensor.eri_bermuda_area'', ''Living'') }}' - condition: state entity_id: input_boolean.good_morning_report state: 'off' actions: - action: script.morning_briefing - action: script.battery_notification - action: input_boolean.turn_on entity_id: input_boolean.good_morning_report - alias: Daily Report triggers: - trigger: state entity_id: binary_sensor.bt_proxy_computer_moving_target to: 'on' conditions: - condition: time after: input_datetime.daily_report before: '15:00:00' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: state entity_id: input_boolean.daily_report state: 'off' actions: - action: script.daily_briefing - action: input_boolean.turn_on entity_id: input_boolean.daily_report - alias: Enable Cameras at Sunset initial_state: true triggers: - trigger: sun event: sunset offset: -00:03:00 conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: script.sundown_briefing - alias: Nightly Briefing triggers: - trigger: time at: input_datetime.nightly_briefing conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: script.nightly_briefing - alias: Event Briefing triggers: - trigger: time at: input_datetime.event_briefing conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: script.event_briefing - alias: Security MDF Camera Snapshot mode: queued max_exceeded: silent triggers: - trigger: state entity_id: binary_sensor.gk_airfreshener_moving_target from: 'off' to: 'on' conditions: - condition: state entity_id: input_boolean.security_cameras state: 'on' actions: - delay: 2 - action: camera.snapshot data: entity_id: camera.security_mdf filename: /config/www/img/security/mdf/{{ now().strftime("%Y%m%d_%H%M%S") }}security_mdf_camera.jpg - action: shell_command.clean_security_images - alias: Security Balcony Camera Snapshot mode: queued max_exceeded: silent triggers: - trigger: state entity_id: binary_sensor.security_balcony_occupancy from: 'off' to: 'on' conditions: - condition: state entity_id: input_boolean.security_cameras state: 'on' actions: - action: camera.snapshot data: entity_id: camera.security_balcony filename: /config/www/img/security/balcony/security_balcony_camera_last.jpg - delay: 1 - action: camera.snapshot data: entity_id: camera.security_balcony filename: /config/www/img/security/balcony/{{ now().strftime("%Y%m%d_%H%M%S") }}security_balcony_camera.jpg - action: shell_command.clean_balcony_images - alias: Automate Christmas Lights triggers: - trigger: numeric_state entity_id: sensor.lr_radar_illuminance above: 0.38 below: 0.51 - trigger: time at: '23:00:00' - trigger: numeric_state entity_id: sensor.lr_radar_illuminance below: 0.28 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: choose: - conditions: '{{ states(''sensor.lr_radar_illuminance'')| float(0) < 0.29 or now().hour == 23 and now().minute == 00 }}' sequence: - action: script.christmas_lights_off - conditions: '{{ states(''sensor.lr_radar_illuminance'')| float(0) > 0.38 }}' sequence: - action: script.christmas_lights_on - alias: turn on appletv netflix triggers: - trigger: state entity_id: input_boolean.appletv_netflix from: 'off' to: 'on' actions: - action: script.appletv_netflix - action: input_boolean.toggle entity_id: input_boolean.appletv_netflix - alias: turn on appletv plex triggers: - trigger: state entity_id: input_boolean.appletv_plex from: 'off' to: 'on' actions: - action: script.appletv_plex - action: input_boolean.toggle entity_id: input_boolean.appletv_plex - alias: Turn on desktop in morning triggers: - trigger: time at: 04:15:00 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: template value_template: '{{ is_state(''binary_sensor.duc_presence'', ''on'') }}' - condition: template value_template: '{{ not is_state(''binary_sensor.desktop_status'', ''on'') }}' actions: - action: switch.turn_on entity_id: switch.desktop - alias: Server Status triggers: - trigger: template value_template: '{{ not is_state(''sensor.server_status'', ''on'') }}' for: 600 id: offline actions: - choose: - conditions: - condition: trigger id: offline sequence: - condition: template value_template: '{{ not is_state(''sensor.server_status'', ''on'') }}' - action: script.email_notify data: who: duc title: Server Offline message: '{{ states(''sensor.server_status'') }} appears to be {{ states(''group.server_status'') }}line.' default: - action: script.email_notify data: who: duc title: Server Online message: Servers appear to be {{ states('group.server_status') }}line. - alias: disable device internet triggers: - trigger: template value_template: '{{ states(''sensor.time'') == states(''sensor.disable_internet'')[0:5] }}' actions: - action: switch.turn_on entity_id: switch.ipad - alias: AIO Controller Events id: aio_controller_events triggers: - trigger: state entity_id: event.aio_controller_action to: null conditions: - condition: template value_template: '{{trigger.from_state.state != ''unavailable''}}' actions: - choose: - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''brightness_up_click''}}' sequence: - action: script.turn_on target: entity_id: script.dining_lights_toggle - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''brightness_down_click''}}' sequence: - action: light.toggle target: entity_id: light.living - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''arrow_left_click''}}' sequence: - action: script.turn_on target: entity_id: script.cr_curtains_toggle - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''arrow_right_click''}}' sequence: - action: script.turn_on target: entity_id: script.lr_curtains_toggle - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''arrow_left_hold''}}' sequence: - action: script.turn_on target: entity_id: script.lr_ac_cool_toggle - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''arrow_right_hold''}}' sequence: - action: script.turn_on target: entity_id: script.lr_ac_heat_toggle - conditions: - condition: template value_template: '{{trigger.to_state.attributes.event_type == ''toggle''}}' sequence: - action: light.turn_off target: entity_id: - light.living - light.ceiling_fan_light - alias: turn on light flash triggers: - trigger: state entity_id: input_boolean.lights_flash from: 'off' to: 'on' actions: - action: script.light_loop - alias: turn off light flash triggers: - trigger: state entity_id: input_boolean.lights_flash from: 'on' to: 'off' actions: - action: homeassistant.turn_off entity_id: script.light_loop, script.light_flash - alias: Flight entry notification triggers: - trigger: event event_type: flightradar24_entry conditions: [] actions: - choose: - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''homeFT24'' and is_state(''person.duc'', ''home'') }}' - condition: template value_template: '{{ trigger.event.data.airline | lower | regex_search(''police|fire|safety|operation|university|shizuoka|kawasaki|tohohu|teikyo|okayama|hiratagakuen|asahi'') }}' sequence: - action: notify.amberthebot data: message: 🚁{{ trigger.event.data.airline }} is flying in your neighborhood. - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''homeFT24'' and is_state(''person.duc'', ''home'') }}' - condition: template value_template: '{{ trigger.event.data.airline | lower | regex_search(''private owner|honda|none|Private owner'') }}' - condition: template value_template: '{{ trigger.event.data.callsign | lower | regex_search(''blocked|none|n'') }}' sequence: - action: notify.amberthebot data: message: ‼️ No flight plan. The aircraft is either private or goverment operated. - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''jcbFT24'' and is_state(''person.duc'', ''jcb'') }}' - condition: template value_template: '{{ trigger.event.data.airline | lower | regex_search(''police|fire|safety|operation|university|shizuoka|kawasaki|tohohu|teikyo|okayama|hiratagakuen|asahi'') }}' sequence: - action: notify.amberthebot data: message: 🚁{{ trigger.event.data.airline }} is flying in your neighborhood. - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''jcbFT24'' and is_state(''person.duc'', ''jcb'') }}' - condition: template value_template: '{{ trigger.event.data.airline | lower | regex_search(''private owner|honda|none|Private owner'') }}' - condition: template value_template: '{{ trigger.event.data.callsign | lower | regex_search(''blocked|none|n'') }}' sequence: - action: notify.amberthebot data: message: ‼️ No flight plan. The aircraft is either private or goverment operated. - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''homeFT24'' and is_state(''person.duc'', ''home'') }}' sequence: - action: notify.amberthebot data: message: 📍The plane you hear now is from {{ trigger.event.data.airline }}\[{{ trigger.event.data.callsign }}] at {{ "{:,.0f}".format(trigger.event.data.altitude) }} ft. It comes from {{ trigger.event.data.airport_origin_city }} in {{ trigger.event.data.airport_origin_country_name }} and is on its way to {{ trigger.event.data.airport_destination_city }}. - conditions: - condition: template value_template: '{{ trigger.event.data.tracked_by_device == ''jcbFT24'' and is_state(''person.duc'', ''jcb'') }}' sequence: - action: notify.amberthebot data: message: 💼The plane you hear now is from {{ trigger.event.data.airline }}\[{{ trigger.event.data.callsign }}] at {{ "{:,.0f}".format(trigger.event.data.altitude) }} ft. It comes from {{ trigger.event.data.airport_origin_city }} in {{ trigger.event.data.airport_origin_country_name }} and is on its way to {{ trigger.event.data.airport_destination_city }}. default: [] - alias: Scheduled flight takes off triggers: - trigger: event event_type: flightradar24_tracked_took_off actions: - action: notify.amberthebot data: message: The plane you hear now is from {{ trigger.event.data.airline }}\[{{ trigger.event.data.callsign }}]. It took off from {{ trigger.event.data.airport_origin_city }} in {{ trigger.event.data.airport_origin_country_name }} and is on its way to {{ trigger.event.data.airport_destination_city }}. - alias: motion hallway auto-on mode: restart triggers: - trigger: state entity_id: binary_sensor.hallway_occupied to: 'on' conditions: - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - choose: - conditions: - condition: state entity_id: input_boolean.guest_mode state: 'on' sequence: - action: script.tradfri_transition data: entity_id: light.h_1 color_temp: 400 transition: 2 brightness: 200 entity_id: light.h_1 - conditions: - condition: template value_template: '{{ now().hour > 19 or now().hour < 7 or is_state(''binary_sensor.hallway_nightlight'', ''on'') }}' sequence: - action: script.tradfri_transition data: entity_id: light.h_1 color_temp: 400 transition: 2 brightness: 50 entity_id: light.h_1 default: - action: script.tradfri_transition data: entity_id: light.h_1 color_temp: 400 transition: 2 brightness: 200 entity_id: light.h_1 - alias: motion hallway auto-off triggers: - trigger: state entity_id: binary_sensor.hallway_occupied to: 'off' - trigger: template value_template: '{{ state_attr(''binary_sensor.hallway_occupied'', ''nightlight'') == true }}' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') or state_attr(''binary_sensor.hallway_occupied'', ''nightlight'') == true }}' actions: - action: light.turn_off entity_id: light.h_1 - alias: motion genkan area triggers: - trigger: state entity_id: binary_sensor.genkan_occupied to: 'on' - trigger: template value_template: '{{ is_state(''binary_sensor.genkan_occupied'', ''off'') }}' for: 10 id: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: 'off' sequence: - action: light.turn_off entity_id: light.g_1 default: - action: script.tradfri_transition entity_id: light.g_1 data: entity_id: light.g_1 color_temp: 400 transition: 2 brightness: 200 - alias: Genkan Airfreshener auto-on triggers: - trigger: state entity_id: binary_sensor.genkan_moving_target from: 'off' to: 'on' conditions: - condition: template value_template: "{%- set trig = (now() - states.switch.gk_airfreshener.last_changed).seconds\ \ -%}\n {{ trig >= 3600 }}" actions: - action: switch.turn_on entity_id: switch.gk_airfreshener - alias: Skills Ask - Turn on LR Aircon triggers: - trigger: state entity_id: binary_sensor.duc_presence to: 'on' for: 00:00:30 - trigger: numeric_state entity_id: sensor.lr_radar_temperature above: input_number.lr_ac_cool_temp_set for: 00:00:20 conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''input_select.lr_ac_mode'', ''Off'') }}' - condition: template value_template: '{{ states(''sensor.lr_radar_temperature'') | float(default=24) > states(''input_number.lr_ac_cool_temp_set'') | float(default=25) }}' actions: - action: script.activate_alexa_actionable_notification data: text: The current livingroom temperature is {{ states("sensor.lr_radar_temperature") }} degree celsius. Would you like me to turn on the livingroom AC? event_id: ask_to_turn_on_lr_aircon who: media_player.ai_1 - alias: Skills Rsp - Turn on LR Aircon triggers: - trigger: event event_type: alexa_actionable_notification event_data: event_id: ask_to_turn_on_lr_aircon event_response_type: ResponseYes actions: - action: switch.turn_on entity_id: switch.ac_lr_unit - alias: BPM Record Log Duc triggers: - trigger: state entity_id: sensor.duc_withings_systolic_blood_pressure, sensor.duc_withings_diastolic_blood_pressure actions: - action: script.text_notify data: who: amber title: 'BP Readings:' message: '{% set t = as_timestamp(states.sensor.duc_withings_systolic_blood_pressure.last_changed) | timestamp_custom(''%-I:%M %p'') %} Your last BP reading was {{ states(''sensor.duc_withings_systolic_blood_pressure'') }}/{{ states(''sensor.duc_withings_diastolic_blood_pressure'') }} taking at {{ t }}. ' - action: notify.send_message target: entity_id: notify.bpm_log_duc data: message: '{{ states(''sensor.date'') }},{{ states(''sensor.time'') }},{{ states(''sensor.duc_withings_heart_pulse'') }},{{ states(''sensor.duc_withings_systolic_blood_pressure'') }},/,{{ states(''sensor.duc_withings_diastolic_blood_pressure'') }}' - alias: Weight Record Log Duc triggers: - trigger: state entity_id: sensor.duc_withings_weight, sensor.duc_withings_fat_ratio actions: - action: script.text_notify data: who: amber title: 'Today\`s Weight:' message: '{% set t = as_timestamp(states.sensor.duc_withings_weight.last_changed) | timestamp_custom(''%-I:%M %p'') %} Your weight recorded at {{ t }} is {{ states(''sensor.duc_withings_weight'') }}. ' - action: notify.send_message target: entity_id: notify.weight_log_duc data: message: '{{ states(''sensor.date'') }},{{ states(''sensor.time'') }},{{ states(''sensor.duc_withings_bone_mass'') }},{{ states(''sensor.duc_withings_fat_free_mass'') }},{{ states(''sensor.duc_withings_fat_mass'')}},{{ states(''sensor.duc_withings_fat_ratio'')}},{{ states(''sensor.duc_withings_heart_pulse'')}},{{ states(''sensor.duc_withings_hydration'') }},{{ states(''sensor.duc_withings_muscle_mass'')}},{{ states(''sensor.duc_withings_visceral_fat_index'') }},{{ states(''sensor.duc_withings_weight'') }}' - alias: Backup Config Github triggers: - trigger: time at: '18:00:00' actions: - action: shell_command.update_github - alias: Sensor Low Battery initial_state: true triggers: - trigger: numeric_state entity_id: - sensor.motion_security_battery - sensor.aio_controller_battery - sensor.shion_room_battery - sensor.computer_room_battery - sensor.living_room_battery - sensor.meter_battery - sensor.jcom_tv_box_battery - sensor.floor_heat_battery - sensor.hallway_door_battery - sensor.genkan_door_battery - sensor.24hr_fan_battery - sensor.washer_door_battery - sensor.master_dimmer_battery - sensor.shion_dimmer_battery - sensor.lr_curtains_battery - sensor.cr_curtains_battery - sensor.shower_room_battery - sensor.motion_s1_battery - sensor.motion_c1_battery below: 46 actions: - action: notify.notify_events data: message: The battery for {{ trigger.to_state.attributes.friendly_name }} is below 46 percent. - alias: startup automations initial_state: true triggers: - trigger: homeassistant event: start actions: - action: frontend.set_theme data: name: midnight - delay: 25 - action: script.set_device_tracker_shion - delay: 15 - action: automation.trigger entity_id: automation.presence_restart_daily - delay: 270 - action: script.set_device_tracker_shion - action: script.update_critical_battery_group - alias: Refresh special event sensors initial_state: true triggers: - trigger: time at: 00:00:01 - trigger: homeassistant event: start actions: - action: python_script.special_events data: name: Duc type: birthday date: secret duc_bday - action: python_script.special_events data: name: Eri type: birthday date: secret eri_bday - action: python_script.special_events data: name: Shion type: birthday date: secret shion_bday - action: python_script.special_events data: name: Our wedding type: anniversary date: secret wed_anniversary - action: python_script.special_events data: name: Golden Week type: holiday date: 29/04/2023 - action: script.mailbox_reset - action: python_script.set_state data: entity_id: sensor.lora_mailbox state: received - alias: Renable Shion Devices initial_state: true triggers: - trigger: time at: 02:00:00 actions: - action: script.enable_devices - alias: Update Template Sensors initial_state: true triggers: - trigger: time_pattern minutes: /59 actions: - action: homeassistant.update_entity entity_id: - sensor.number_of_lines_of_code - sensor.sensor_count - sensor.automation_count - sensor.tracker_count - sensor.script_count - sensor.switch_count - sensor.binary_sensor_count - sensor.light_count - alias: New Home Assistant Version initial_state: true triggers: - trigger: state entity_id: sensor.hassio_version conditions: - condition: template value_template: '{{ states(''sensor.hassio_version'') = ''unavailable'' }}' - condition: template value_template: '{{ trigger.from_state.state = ''unavailable'' }}' actions: - action: notify.notify_events data: message: Home Assistant Version {{ states.sensor.hassio_version.state }} is available - alias: persistent_notification_clear_pwned mode: parallel triggers: - trigger: event event_type: call_service event_data: domain: persistent_notification service: create conditions: - condition: template value_template: '{{ ''supervisor_issue_pwned'' in trigger.event.data.service_data.notification_id }} ' actions: - action: persistent_notification.dismiss data: notification_id: '{{ trigger.event.data.service_data.notification_id }} ' - alias: persistent_notification_clear_ip mode: single triggers: - trigger: state entity_id: persistent_notification.http_login to: notifying conditions: - condition: template value_template: "{% if states.persistent_notification.http_login.state is defined\ \ %}\n {% set str= state_attr('persistent_notification.http_login', 'message')\ \ %}\n {% set ip=(str|regex_findall_index('[\\d.]+')) %}\n {{ ip in ['192.168.1.111']\ \ }}\n{% else %}\n false\n{% endif %}\n" actions: - action: persistent_notification.dismiss data: notification_id: http-login - alias: Restore Samba Backup sensor on startup triggers: - trigger: homeassistant event: start actions: - action: hassio.addon_stdin data: addon: 15d21743_samba_backup input: restore-sensor - alias: Kitchen Occupancy description: Defines occupancy state for room mode: single triggers: - trigger: time_pattern id: time seconds: '10' - trigger: state entity_id: group.motion_kitchen_occupancy id: motion to: 'on' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_boolean.kitchen_mcl'', ''off'') }}' actions: - action: python_script.room_occupancy data: roomname: kitchen timeout: '{{ 3 if is_state(''group.cooking_time'', ''on'') else 2 }}' entities_toggle: - group.motion_kitchen_occupancy entities_keep: - binary_sensor.kitchen_still_target - binary_sensor.cabinet_has_target - alias: Kitchen Light description: toggle light depending on timer state mode: single triggers: - trigger: state entity_id: timer.kitchen_timer id: pre from: idle to: active - trigger: state entity_id: light.cabinet id: 'on' from: 'off' to: 'on' for: 00:01:00 - trigger: state entity_id: sensor.kt_illuminance id: 'on' from: 'off' to: 'on' - trigger: state entity_id: timer.kitchen_timer id: 'off' from: active to: idle - trigger: state entity_id: light.cabinet id: 'off' from: 'on' to: 'off' - trigger: template value_template: "{%- set trig = (now() - states.group.motion_kitchen_occupancy.last_changed).seconds\ \ -%}\n {{ is_state('binary_sensor.kitchen_presence', 'off') and trig > 5 }}" id: 'off' for: 40 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: pre sequence: - action: light.turn_on data: entity_id: "{% if is_state('binary_sensor.lr_radar_status', 'off') %}\n\ \ light.k_1, light.k_3\n{% elif states.sensor.lr_radar_illuminance.state\ \ | float <= 0.09 %}\n light.k_1\n{% else %}\n light.k_1, light.k_3\n\ {% endif %}\n" - conditions: - condition: trigger id: 'on' sequence: - condition: template value_template: '{{ is_state(''light.cabinet'', ''on'') }}' - service_template: script.motion_kitchen_lights_illuminance_{{ 'offline' if is_state('binary_sensor.lr_radar_status', 'off') else 'online' }} - conditions: - condition: trigger id: 'off' sequence: - action: light.turn_off entity_id: light.cabinet, light.counter - action: timer.finish entity_id: timer.kitchen_timer default: [] - alias: Kitchen Auto-on mode: single triggers: - trigger: state entity_id: binary_sensor.kitchen_occupied id: pre from: 'off' to: 'on' - trigger: template value_template: '{{ state_attr(''binary_sensor.kitchen_occupied'', ''full_on'') == true }}' id: 'on' - trigger: state entity_id: sensor.kt_illuminance id: 'on' from: 'off' to: 'on' - trigger: state entity_id: light.cabinet id: 'off' from: 'on' to: 'off' - trigger: state entity_id: binary_sensor.kitchen_occupied id: 'off' from: 'on' to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: pre sequence: - action: light.turn_on data: entity_id: "{% if is_state('binary_sensor.lr_radar_status', 'off') %}\n\ \ light.k_1, light.k_3\n{% elif states.sensor.lr_radar_illuminance.state\ \ | float <= 0.09 %}\n light.k_1\n{% else %}\n light.k_1, light.k_3\n\ {% endif %}\n" - conditions: - condition: trigger id: 'on' sequence: - condition: template value_template: '{{ is_state(''light.cabinet'', ''on'') }}' - service_template: script.motion_kitchen_lights_illuminance_{{ 'offline' if is_state('binary_sensor.lr_radar_status', 'off') else 'online' }} - conditions: - condition: trigger id: 'off' sequence: - action: light.turn_off entity_id: light.cabinet, light.counter - action: timer.finish entity_id: timer.kitchen_timer default: [] - alias: Kitchen MCL Announce State triggers: - trigger: state entity_id: input_boolean.kitchen_mcl conditions: - condition: template value_template: '{{ is_state(''input_boolean.audible_notifications'', ''on'') }}' actions: - action: script.speech_engine data: who: ai_1 message: include ../tpl/speech/control_status.yaml voice: '{{ states(''input_select.jarvis_voice'') }}' - alias: Kitchen MCL Re-Enable triggers: - trigger: state entity_id: input_boolean.kitchen_mcl to: 'on' for: 01:00:00 actions: - action: input_boolean.turn_off entity_id: input_boolean.kitchen_mcl - alias: computer room lights auto-on triggers: - trigger: numeric_state entity_id: sensor.lr_radar_illuminance above: 0.31 below: 0.41 conditions: - condition: or conditions: - condition: state entity_id: sensor.eri_home_location state: not_home - condition: time after: 07:59 before: '20:00' - condition: template value_template: '{{ is_state(''binary_sensor.duc_presence'', ''on'') }}' - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - action: script.ashley_fadein data: entity_id: light.computer sec: 150 mode: restart - alias: livingroom lights auto-on triggers: - trigger: numeric_state entity_id: sensor.lr_radar_illuminance id: pre above: 0.31 below: 0.41 - trigger: state entity_id: sensor.period_of_the_day to: dusklight conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: time after: 07:59 before: '20:00' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' - condition: or conditions: - condition: template value_template: '{{ is_state(''sensor.date_weekday'', ''off'') or is_state(''binary_sensor.shion_presence'', ''on'') }}' - condition: template value_template: '{{ states(''sensor.holiday'')| trim != ''none'' }}' actions: - choose: - conditions: - condition: trigger id: pre sequence: - action: script.ashley_fadein data: entity_id: light.living sec: 150 default: - action: light.turn_on data: brightness_pct: 100 target: entity_id: light.living mode: restart - alias: front area lights auto-off triggers: - trigger: template value_template: '{{ states(''sensor.lr_radar_illuminance'') | float(0) < 0.27 and states(''sensor.lr_radar_illuminance'') != ''unavailable'' and states(''sensor.time'') >= ''05:00'' }}' - trigger: template value_template: '{{ states(''sensor.lr_radar_illuminance'') | float(0) < 0.27 and states(''sensor.lr_radar_illuminance'') != ''unavailable'' }}' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.guest_mode'', ''on'') }}' actions: - choose: - conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ states(''sensor.time'') > ''05:00'' }}' sequence: - action: light.turn_off entity_id: light.computer, light.living - action: script.turn_off data: entity_id: script.ashley_fadein - conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{ states(''sensor.date_weekday'') == ''off'' }}' sequence: - action: light.turn_off entity_id: light.computer, light.living - action: script.turn_off data: entity_id: script.ashley_fadein default: - action: light.turn_off entity_id: light.computer - action: script.turn_off data: entity_id: script.ashley_fadein - alias: Notify about expiring inventory items trigger: - platform: numeric_state entity_id: sensor.items_expiring_soon above: 0 - platform: time at: 06:00:00 condition: - condition: numeric_state entity_id: sensor.items_expiring_soon above: 0 action: - service: notify.mobile_app_id data: title: 🗓️ Inventory Items Expiring Soon message: "{% set expiring = state_attr('sensor.items_expiring_soon', 'expiring_items')\ \ %} {% set expired = state_attr('sensor.items_expiring_soon', 'expired_items')\ \ %} {% if expired %}\n ⚠️ {{ expired | length }} expired items: {{ expired[:3]\ \ | map(attribute='name') | join(', ') }}\n{% endif %} {% if expiring %}\n\ \ \U0001F4C5 {{ expiring | length }} expiring soon: {{ expiring[:3] | map(attribute='name')\ \ | join(', ') }}\n{% endif %}\n" data: actions: - action: view_inventory title: View Inventory - alias: Clean Nozzle Filters triggers: - trigger: state entity_id: sensor.season conditions: - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - action: switch.toggle entity_id: group.clean_aircon_filter - action: script.toilet_nozzle_cleaning - alias: wakeup light bedroom triggers: - trigger: template value_template: '{{ states(''sensor.time'') == states(''sensor.wakeup_start_time_lights'') }}' conditions: - condition: state entity_id: input_boolean.wakeup state: 'on' - condition: template value_template: '{{ states(''sensor.holiday'')| trim == ''none'' }}' - condition: or conditions: - condition: state entity_id: input_boolean.wakeup_weekends state: 'on' - condition: template value_template: '{{ is_state(''sensor.date_weekday'', ''on'') }}' actions: - action: python_script.smooth_fader data: entity_id: '{{ states(''sensor.wakeup_map'') }}' duration: 00:{{ states('input_number.wakeup_duration')|int }}:00 brightness_start: '{{ states(''input_number.brightness_start'')|int }}' brightness_end: '{{ states(''input_number.brightness_end'')|int }}' brightness_curve: exp5 temperature_curve: exp5 - alias: Daily Entity Refresh triggers: - trigger: time at: '17:00:00' actions: - action: homeassistant.update_entity entity_id: sensor.school_tomorrow - alias: Good Night initial_state: true triggers: - trigger: time at: '22:15:00' actions: - action: script.turn_on entity_id: script.school_year_over - action: input_boolean.turn_off entity_id: input_boolean.school_today - action: input_boolean.turn_off entity_id: input_boolean.audible_notifications - action: input_boolean.turn_off entity_id: input_boolean.good_morning_report - action: input_boolean.turn_off entity_id: input_boolean.morning_wakeup_report - action: input_boolean.turn_off entity_id: input_boolean.daily_report - action: script.reset_earthquake_daily_count - action: input_boolean.turn_off entity_id: input_boolean.jcom_tv - action: script.text_notify_image data: who: amber image: "{{ [ \"/config/www/img/misc/off-01.jpg\",\n \"/config/www/img/misc/off-02.jpg\"\ ,\n \"/config/www/img/misc/off-03.jpg\",\n \"/config/www/img/misc/off-04.jpg\"\ ] | random }}" caption: '{{ [ "Good Night from Lions Mansion. ", "Time to shut down this party. Good Night from Lions Mansion. ", "I''m feeling tired. Think I''ll take a quick nap. Good Night!", "Things are getting quiet. Time to say Good Night.", "We have come to the end of our broadcast day. Oh, who am I kidding. I''''ll be up all night watching over Lions Mansion. " ] | random }}' - alias: Set Room Presence mode: restart triggers: - trigger: state entity_id: sensor.room_audio actions: - action: input_text.set_value data: entity_id: input_text.room_presence value: '{{ states(''sensor.room_audio'') }}' - action: mqtt.publish data: topic: house/alerts/presence/current_room payload: '{{ states(''sensor.room_audio'') }}' retain: true - alias: Eri Arrives at Costco Notification initial_state: true triggers: - trigger: zone event: enter zone: zone.costco_hq entity_id: person.eri actions: - action: input_boolean.turn_off entity_id: input_boolean.eri_travel_monitor - action: script.status_annc data: who: '{{ states(''sensor.room_audio'') }}' speech_message: Just a quick heads up. Eddie has arrived at work. - alias: Eri Leaves Costco Notification initial_state: true triggers: - trigger: zone event: leave zone: zone.costco_hq entity_id: person.eri actions: - action: script.text_notify data: who: duc title: '*Notification*' message: Eri has left work. - action: input_boolean.turn_on entity_id: input_boolean.eri_travel_monitor - action: script.status_annc data: who: '{{ states(''sensor.room_audio'') }}' call_interuption: 1 call_eri_location: 1 - alias: Duc Arrives at Jcb Notification initial_state: true triggers: - trigger: zone event: enter zone: zone.jcb entity_id: person.duc actions: - action: input_boolean.turn_off entity_id: input_boolean.duc_travel_monitor - action: script.status_annc data: who: '{{ states(''sensor.room_audio'') }}' speech_message: I do not mean to intrude, but, Duck has arrived at work. - alias: Duc Leaves Jcb Notification initial_state: true triggers: - trigger: zone event: leave zone: zone.jcb entity_id: person.duc actions: - action: script.text_notify data: who: duc title: '*Notification*' message: Duc has left work. - action: input_boolean.turn_on entity_id: input_boolean.duc_travel_monitor - action: script.status_annc data: who: '{{ states(''sensor.room_audio'') }}' call_interuption: 1 call_duc_location: 1 - alias: Shion Home Notification initial_state: true triggers: - trigger: state entity_id: person.shion to: home conditions: - condition: template value_template: '{{ is_state(''calendar.shion_school'', ''on'') }}' - condition: template value_template: '{{ is_state(''sensor.school_event'', ''Home School'') }}' actions: - action: script.text_notify data: who: duc title: '*Notification*' message: Shion is home from school. - alias: night light on triggers: - trigger: time at: '23:00:00' conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: light.turn_on entity_id: light.ntl_1 data: brightness: 40 - alias: night light off triggers: - trigger: state entity_id: sensor.period_of_the_day to: dawnlight conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''light.ntl_1'', ''off'') }}' actions: - action: script.returntonormal data: entity: light.ntl_1 - alias: set school pickup time triggers: - trigger: state entity_id: calendar.shion_school from: 'off' to: 'on' actions: - action: input_datetime.set_datetime entity_id: input_datetime.school_day_end_reminder data: time: "{% if state_attr('calendar.shion_school', 'description' ) == 'early-release'\ \ %}\n 12:45\n{% else %}\n 16:30\n{% endif %}\n" - alias: school time notification triggers: - trigger: time at: 07:19:00 conditions: - condition: template value_template: '{{ is_state(''binary_sensor.desktop_status'', ''on'') }}' - condition: template value_template: '{{ is_state(''input_boolean.school_today'', ''on'') }}' actions: - action: script.text_notify_image data: who: desktop title: School Time message: Time for Shion to go to school. image: http://homeassistant.local:8123/local/img/misc/school-bell.png - alias: Vehicles Arriving Notification triggers: - trigger: state entity_id: sensor.units_arriving to: 'on' conditions: - condition: template value_template: '{{ states(''sensor.units_arriving'') = ''unknown'' }}' actions: - action: script.text_notify data: who: discord_eta message: '{% set today = as_timestamp(now() + timedelta(days = 12))|timestamp_custom(''%-m/%d/%Y'', true ) %} **Today is {{ now().strftime( ''%B %d, %Y'') }}** List of Containers | Roro Arriving on {{ today }}. Please make arrangements to have BL docs send to customers. --- {{ state_attr(''sensor.units_arriving'', ''description'') }} ' - alias: Vehicle Delivery Notifications initial_state: true triggers: - trigger: state entity_id: - sensor.deliveryin2week conditions: - condition: template value_template: '{{ states(''sensor.deliveryin2week'') = ''unknown'' }}' - condition: template value_template: '{{ states(''sensor.deliveryin2week'')| trim = '''' }}' actions: - action: script.email_notify data: who: jcb title: 'Vehicle Delivery Notification: ETA {{ as_timestamp(now() + timedelta(days = 11))|timestamp_custom(''%-m/%d/%Y'', true ) }}' message: '{% set today = as_timestamp(now() + timedelta(days = 12))|timestamp_custom(''%-m/%d/%Y'', true ) %} Today is {{ now().strftime( ''%B %d, %Y'') }}

List of Containers / Roro Arriving on {{ today }}.
{% if is_state(''sensor.deliveryin2week'', '''') %} There are no vehicles. {% else %} The following units are arriving in about 10 days. Please make arrangements to have BL send to customers.

{{ states(''sensor.deliveryin2week'') }} {% endif %}

' - alias: Holiday Notification initial_state: true triggers: - trigger: state entity_id: sensor.holiday conditions: - condition: template value_template: '{{ states(''sensor.holiday'') = ''unknown'' }}' - condition: template value_template: '{{ states(''sensor.holiday'')| trim = ''none'' }}' actions: - action: script.text_notify data: who: duc title: '{{ states(''sensor.holiday'') }}' message: Today is {{ states('sensor.holiday') }}. - alias: Payday Notification initial_state: true triggers: - trigger: state entity_id: binary_sensor.payday to: 'on' conditions: [] actions: - action: script.text_notify data: who: viber title: Payday message: "{{ [\n \"You've got paid.\",\n \"Fund's in the bank.\",\n \"A deposit\ \ has been issued.\",\n \"It's payday.\"\n ] | random }}" - alias: Backup HA Notifications triggers: - trigger: state entity_id: sensor.samba_backup conditions: - condition: not conditions: - condition: state entity_id: sensor.samba_backup state: IDLE actions: - action: script.text_notify data: who: duc title: '*Information*' message: Samba backup {{ states('sensor.samba_backup')| lower }}. - action: logbook.log data: name: Samba Backup message: '{{ states(''sensor.samba_backup'')| lower }}' - alias: VJ SSL Certificate Expiry Notification initial_state: true triggers: - trigger: numeric_state entity_id: sensor.vj_ssl_cert_expiry below: 3 actions: - action: script.email_notify data: who: duc title: 'Certificate Expiring in {{ states(''sensor.vj_ssl_cert_expiry'') }} Days: {{ states.sensor.vj_cert_sslmate.attributes.dns_names[0] }}' message: '{% set str = states.sensor.vj_cert_sslmate.attributes.issuer.name %} {% set issuer = (str|regex_findall_index(''[a-zA-Z]{8}'')).replace('''','''') %} Today is {{ now().strftime( ''%B %d, %Y'') }}

This is to notify you that your certificate with the common name {{ states.sensor.vj_cert_sslmate.attributes.dns_names[0] }} will expire in {{ states.sensor.vj_ssl_cert_expiry.state }} days.
To renew your certificate, please visit {{ issuer }}.

' - alias: HA SSL Certificate Expiry Notification initial_state: true variables: cn: '{% set str=states(''sensor.ha_ssl_cert_cn'') %} {% set cn=(str|regex_findall_index(''[a-zA-Z]{2,}?\.[a-zA-Z]{1,}'',1)) %} {{ cn }}' triggers: - trigger: numeric_state entity_id: sensor.ha_ssl_cert_expiry below: 3 actions: - action: script.email_notify data: who: duc title: 'Certificate Expiring in {{ states(''sensor.ha_ssl_cert_expiry'') }} Days: {{cn}}' message: Today is {{ now().strftime( '%B %d, %Y') }}

This is to notify you that your certificate with the common name {{cn}} will expire in {{ states('sensor.ha_ssl_cert_expiry') }} days.

- alias: Mqtt SSL Certificate Expiry Notification initial_state: true variables: cn: '{% set str=states(''sensor.mqtt_ssl_cert_cn'') %} {% set cn=(str|regex_findall_index(''[a-zA-Z]{2,}'',7)) %} {{ cn }}' triggers: - trigger: numeric_state entity_id: sensor.mqtt_ssl_cert_expiry below: 3 actions: - action: script.email_notify data: who: duc title: 'Certificate Expiring in {{ states(''sensor.mqtt_ssl_cert_expiry'') }} Days: {{ cn }}' message: Today is {{ now().strftime( '%B %d, %Y') }}

This is to notify you that your certificate with the common name {{cn}} will expire in {{ states('sensor.mqtt_ssl_cert_expiry') }} days.

- alias: Earthquake Alert initial_state: true triggers: - trigger: state entity_id: - sensor.earthquake_alert conditions: - condition: template value_template: '{{ states(''sensor.earthquake_alert'') = ''unknown'' }}' - condition: template value_template: '{{ states(''sensor.earthquake_alert'')| trim = '''' }}' actions: - action: notify.send_message target: entity_id: notify.earthquake_log data: message: '{{ state_attr(''sensor.earthquake_alert'', ''at'') }},{{ state_attr(''sensor.earthquake_alert'', ''en_anm'') }},{{ state_attr(''sensor.earthquake_alert'', ''mag'') }},{{ state_attr(''sensor.earthquake_alert'', ''maxi'') }}' - condition: template value_template: '{{ state_attr(''sensor.earthquake_alert'', ''mag'')| float(0) >= 4 }}' - action: script.update_earthquake_daily_count - action: script.text_notify data: who: duc title: "{% set d=state_attr('sensor.earthquake_alert', 'at') %} {% set date=(d|regex_findall_index('[0-9]{4}-[0-9]{2}-[0-9]{2}',0)).replace('','')\ \ %} {% set time=(d|regex_findall_index('[0-9]{2}:[0-9]{2}',0)).replace('','')\ \ %}\n Earthquake at {{ time }}" message: 'Location: {{ state_attr(''sensor.earthquake_alert'', ''en_anm'') }} M{{ state_attr(''sensor.earthquake_alert'', ''mag'') }}' - alias: Earthquake Status Notification triggers: - trigger: state entity_id: sensor.seismoM5p_state from: LISTENING to: EARTHQUAKE - trigger: state entity_id: sensor.seismoM5p_state from: unavailable to: LISTENING id: status - trigger: state entity_id: sensor.seismoM5p_state from: CALIBRATION to: LISTENING id: status - trigger: state entity_id: sensor.seismoM5p_state to: unavailable id: status - trigger: numeric_state entity_id: sensor.seismom5p_pga below: 0.1 for: 60 id: offline actions: choose: - conditions: - condition: trigger id: status sequence: - action: script.text_notify data: who: duc message: SeismoM5P is {{ states('sensor.seismoM5p_state')| lower() }}... - conditions: - condition: trigger id: offline sequence: - action: script.text_notify data: who: duc message: Seismom sensors are offline default: - action: script.text_notify data: who: duc message: 'Earthquake Happening at Home ' - alias: Home Air Quality Warnings variables: warn_msg: The {{ trigger.to_state.attributes.friendly_name }} in the house is at {{ trigger.to_state.state }}{{ trigger.to_state.attributes.unit_of_measurement }}. Take precautionary action. triggers: - trigger: numeric_state entity_id: sensor.ikea_pm25 above: 999 for: 61 - trigger: numeric_state entity_id: sensor.carbon_monoxide above: 59 for: 61 - trigger: numeric_state entity_id: sensor.carbon_dioxide above: 2000 for: 61 actions: - action: script.text_notify data: who: amber title: Air Quality Warning message: '{{ warn_msg }}' - action: script.text_notify data: who: desktop title: Air Quality Warning message: '{{ warn_msg }}' - action: logbook.log data: name: '{{ trigger.to_state.attributes.friendly_name }} Warning' message: '{{ warn_msg }}' - alias: Central Night Cooling Notification triggers: - trigger: state entity_id: - binary_sensor.central_night_cooling to: 'on' conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' actions: - action: script.text_notify data: who: duc title: Night Cooling possible message: Open Windows to cool down the rooms mode: single - alias: Washing Machine Water Detection Notification triggers: - trigger: state entity_id: - binary_sensor.washer_water_leak to: 'on' actions: - action: script.text_notify data: who: duc title: Water Leak Detected message: Water Detected around the washing machine area. - action: script.text_notify data: who: viber title: Water Leak Detected message: Water Detected around the washing machine area. - action: script.email_notify data: who: duc title: Water Leak Detected message: Today is {{ now().strftime( '%B %d, %Y') }}

There may have been a water leak around the washing machine area. Action is require as soon as possible.

mode: single - alias: Security Report initial_state: true triggers: - trigger: time at: '21:01:00' actions: - action: script.speech_engine data: who: '{{ states(''sensor.room_presence'') }}' message: include ../tpl/speech/security_report.yaml voice: '{{ states(''input_select.jarvis_voice'') }}' - alias: Notify Chore Task Due variables: entities: group.chore_tasks triggers: - trigger: time at: '16:57:00' actions: - repeat: count: '{{ expand(entities) | list | count }}' sequence: - variables: entity_id: '{% set tasks = expand(entities) | map(attribute=''entity_id'') | list %} {{ tasks[repeat.index - 1] }} ' task_id: '{{ entity_id.split(''.'')[1] }}' last_done_days: '{{ ((as_timestamp(now()) - (as_timestamp(states(entity_id))) | float) / 60 / 60 / 24) | int }}' cycle_days: '{{ state_attr(entity_id, ''cycle_days'') | int }}' warn_before_days: '{{ state_attr(entity_id, ''warning_before'') | int }}' - condition: template value_template: '{{ last_done_days|int >= (cycle_days|int - warn_before_days|int) }}' - action: script.text_notify data: who: duc title: 🧹 {{ state_attr(entity_id, 'friendly_name') }} message: 'Chore last done {{ last_done_days }} days ago. ' - triggers: - trigger: state entity_id: media_player.razer_leviathan_player to: idle - trigger: state entity_id: input_boolean.continuous_play actions: - choose: - conditions: - condition: state entity_id: input_boolean.continuous_play state: 'on' sequence: - action: script.play_random_track default: - action: media_player.media_stop entity_id: media_player.razer_leviathan_player - alias: Toggle Balcony Light triggers: - entity_id: binary_sensor.lr_window_button trigger: state to: 'on' actions: - action: switch.toggle entity_id: switch.balcony_light - alias: Charge Balcony Camera triggers: - platform: numeric_state entity_id: sensor.balcony_battery_percentage below: 25 - platform: numeric_state entity_id: sensor.balcony_battery_percentage above: 95 conditions: [] actions: - choose: - conditions: - condition: numeric_state entity_id: sensor.balcony_battery_percentage below: 25 sequence: - action: switch.turn_on entity_id: switch.usb_relay_adapter1_relay - action: script.text_notify data: who: duc title: Balcony Cam Batt Low message: Balcony camera battery is currently charging. - conditions: - condition: numeric_state entity_id: sensor.balcony_battery_percentage above: 95 sequence: - action: switch.turn_off entity_id: switch.usb_relay_adapter1_relay - action: script.text_notify data: who: duc title: Balcony Cam Batt Charged message: Balcony camera battery has completed charging. default: [] - alias: Capture Image on Trigger, Send Mobile Notification with Actions, Snooze or Alarm via Actions trigger: - platform: state entity_id: - image.balcony_event_image id: sensor - platform: event event_type: mobile_app_notification_action id: snooze event_data: action: SNOOZE - platform: event event_type: mobile_app_notification_action id: alarm event_data: action: ALARM conditions: - condition: template value_template: '{{ as_timestamp(states.image.balcony_event_image.last_changed) == as_timestamp(states.image.balcony_event_image.last_updated) }}' - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Home'') }}' actions: - choose: - conditions: - condition: trigger id: sensor sequence: - delay: 3 - action: notify.mobile_app_id data: message: Motion detected - Balcony data: image: /api/image_proxy/image.balcony_event_image actions: - action: ALARM title: Alarm - action: SNOOZE title: Snooze - conditions: - condition: trigger id: snooze sequence: - action: eufy_security.snooze data: snooze_time: 10 snooze_chime: false snooze_motion: true snooze_homebase: false target: entity_id: camera.balcony - conditions: - condition: trigger id: alarm sequence: - action: eufy_security.trigger_camera_alarm_with_duration data: duration: 1 target: entity_id: camera.balcony mode: single - id: sentry_mode_enabled alias: Sentry Mode Enabled Annoucement initial_state: true triggers: - trigger: state entity_id: input_boolean.sentry_mode from: 'off' to: 'on' actions: - choose: - conditions: - condition: state entity_id: binary_sensor.genkan_door_contact state: 'on' sequence: - action: input_boolean.turn_off entity_id: input_boolean.sentry_mode - action: input_boolean.turn_on entity_id: input_boolean.lockdown_issue - action: script.text_notify data: who: duc message: '{{ [ "I was unable to activate genkan door protocol due to an open door.", "You may want to check the external doors. I was unable to secure them all.", "My systems check has failed. Please check the external doors.", "Someone has left the front door open." ] | random }} ' - action: script.sentry_mode_status data: modus: pending default: - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: '{{ [ "Lions door protocol has been activated.", "Lions Home has been secured ", "Sentry Mode is active. ", "I am now monitoring the doors and will let you know if anyone attempts to access.", "Lions Home Shields are up." ] | random }} ' - action: script.text_notify data: who: duc title: Security Armed message: Security System has been armed. - action: input_boolean.turn_on entity_id: input_boolean.security_cameras - action: script.turn_on entity_id: script.reset_front_door_motion_count - action: script.sentry_mode_status data: modus: '{% set night = (now() - state_attr(''automation.nightly_lockdown'', ''last_triggered'')).seconds %} {% if is_state(''input_boolean.vacation_mode'', ''on'') %} armed_vacation {%elif night <= 2 %} armed_night {% else %} armed_away {% endif %} ' - id: nightly_lockdown alias: Nightly Lockdown triggers: - trigger: time at: '23:00:00' conditions: - condition: state entity_id: person.duc state: home - condition: state entity_id: person.eri state: home - condition: template value_template: '{{ is_state(''input_boolean.guest_mode'', ''off'') }}' - condition: state entity_id: input_boolean.sentry_mode state: 'off' actions: - action: input_boolean.turn_on entity_id: input_boolean.sentry_mode - id: motion_detected_front_door alias: Motion Detected Front Door triggers: - trigger: state entity_id: binary_sensor.genkan_door_contact from: 'off' to: 'on' conditions: - condition: state entity_id: input_boolean.sentry_mode state: 'on' actions: - delay: 2 - choose: - conditions: - condition: template value_template: '{{ is_state(''binary_sensor.genkan_moving_target'', ''on'') }}' sequence: - action: mqtt.publish data: topic: house/alerts/front_door_motion/away_count payload: '{{ states(''sensor.front_door_motion_away_count'') | int(0) + 1 }}' retain: true - action: script.status_annc data: who: '{{ states(''sensor.room_presence'') }}' call_interuption: 1 call_snark_door_motion: 1 speech_message: '{% set alias = {"Genkan Moving Target":"front door"} %} {% set l = trigger.to_state.attributes.friendly_name %} {% set location = alias.get(l) %} {{ [ "I have detected someone at the ", "Someone appears to be at the ", "There is a person at the ", "My sensors are picking up presence at the ", "We appear to have a visitor at the ", "My sensors have detected a meat popsicle at the " ] | random }} {{ location }}. ' - action: script.sentry_mode_status data: modus: triggered - delay: minutes: 2 initial_state: true - id: security_breach alias: Security Breach initial_state: true triggers: - trigger: state entity_id: - binary_sensor.genkan_door_contact - binary_sensor.computerroom_window - binary_sensor.livingroom_window to: 'on' conditions: - condition: state entity_id: input_boolean.sentry_mode state: 'on' actions: - action: script.alexa_alert data: message: My security protocols are being overidden, The {{ trigger.to_state.attributes.friendly_name }} has been opened. - action: script.text_alert data: who: duc title: Security Alert message: '{{ trigger.to_state.attributes.friendly_name }} has been opened.' - action: input_boolean.turn_on entity_id: input_boolean.security_issue - action: script.sentry_mode_status data: modus: triggered - id: sentry_mode_disabled alias: Sentry Mode Disabled Annoucement initial_state: true triggers: - trigger: state entity_id: input_boolean.sentry_mode from: 'on' to: 'off' actions: - choose: - conditions: condition: or conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Returning'') }}' - condition: template value_template: '{{ is_state(''input_boolean.guest_mode'', ''on'') }}' sequence: - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: '{{ [ "Lions door protocol has been deactivated.", "I am no longer monitoring the access points. ", "Sentry Mode has been disabled. ", "Lions Home Shields are down." ] | random }} ' - action: script.text_notify data: who: duc title: Welcome Home message: Security System has been disarmed. - action: input_boolean.turn_off entity_id: input_boolean.security_alarm - action: script.sentry_mode_status data: modus: disarmed default: - action: input_boolean.turn_off entity_id: input_boolean.sentry_mode - action: script.text_notify data: who: duc title: Potential Security Issue message: Security System has been disarmed, but I could not validate presence. - action: script.sentry_mode_status data: modus: pending - id: morning_standby alias: Morning Standby initial_state: true triggers: - trigger: time at: 04:10:00 condition: condition: or conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ is_state(''input_boolean.guest_mode'', ''on'') }}' actions: - action: script.standby - id: enable_vacation_mode alias: Enable Vacation Mode initial_state: true triggers: - trigger: numeric_state entity_id: sensor.duc_ett_home above: 180 - trigger: numeric_state entity_id: sensor.eri_ett_home above: 180 conditions: - condition: numeric_state entity_id: sensor.duc_ett_home above: 180 - condition: numeric_state entity_id: sensor.eri_ett_home above: 180 actions: - action: input_boolean.turn_on entity_id: input_boolean.vacation_mode - id: guest_mode_feedback alias: Guest Mode Audio Feedback triggers: - trigger: state entity_id: - input_boolean.guest_mode from: 'off' to: 'on' actions: - action: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' voice: '{{ states(''input_select.jarvis_voice'') }}' message: '{{ [ "Guest Mode has been enabled.", "I have switched to the system to guest mode.", "I have enabled guest mode. ", "Guest Mode is on." ] | random }} ' - id: security_response_on alias: Security Response On initial_state: true triggers: - trigger: state entity_id: input_boolean.security_issue from: 'off' to: 'on' for: 00:02:00 actions: - action: script.turn_on entity_id: script.security_response - action: script.alarm_light_flash - alias: Weather - Set Daily Maximum Forecasted Temperature trigger: - platform: time at: '14:00:00' condition: [] action: - service: input_number.set_value data: value: '{{ state_attr(''sensor.my_weather_forecast_daily'', ''weather_forecast_max_temp_today'') }}' target: entity_id: input_number.weather_forecast_max_temp_today mode: single - alias: Forecast Low Near Freezing triggers: - trigger: numeric_state entity_id: sensor.wbio_overnight_low below: 1.6 - trigger: numeric_state entity_id: sensor.wbio_current_temperature below: 1.6 conditions: - condition: state entity_id: input_boolean.freeze_warning state: 'off' actions: - action: input_boolean.turn_on entity_id: input_boolean.freeze_warning - alias: Forecast Low Above Freezing triggers: - trigger: numeric_state entity_id: sensor.wbio_overnight_low above: 0.5 conditions: - condition: state entity_id: input_boolean.freeze_warning state: 'on' - condition: numeric_state entity_id: sensor.wbio_overnight_low above: 1.6 actions: - action: input_boolean.turn_off entity_id: input_boolean.freeze_warning - alias: Rain Detected Home triggers: - trigger: state entity_id: sensor.rainfall_today from: '0.0' actions: - action: script.text_notify data: who: duc message: It's currently raining at home. - action: script.status_annc data: who: ai_4 voice: '{{ states(''input_select.jarvis_voice'') }}' call_interuption: 1 speech_message: Rain has been detected at home. - alias: Status light update (bulbs) triggers: - trigger: state entity_id: sensor.light_status condition: [] actions: - action: light.turn_off target: entity_id: light.{{ states('sensor.light_status') }} - alias: Presence Duc On triggers: - trigger: numeric_state entity_id: sensor.id_presence above: 10 - trigger: template value_template: '{{ states(''sensor.duc_bermuda_area'').lower() in [''computer'', ''shionroom'', ''kitchen'', ''masterroom'', ''living'', ''genkan''] }}' actions: - action: input_boolean.turn_on data: entity_id: input_boolean.duc_presence - alias: Presence Duc Off mode: restart triggers: - trigger: numeric_state entity_id: sensor.id_presence below: 10 - trigger: state entity_id: sensor.duc_bermuda_area to: unknown conditions: - condition: template value_template: '{{ states(''sensor.id_presence'')| float(0) == 0.0 }}' - condition: template value_template: '{{ is_state(''sensor.duc_bermuda_area'', ''unknown'') }}' actions: - action: input_boolean.turn_off data: entity_id: input_boolean.duc_presence - alias: Presence Eri On triggers: - trigger: numeric_state entity_id: sensor.ie_presence above: 10 - trigger: template value_template: '{{ states(''sensor.eri_bermuda_area'').lower() in [''computer'', ''shionroom'', ''kitchen'', ''masterroom'', ''living'', ''genkan''] }}' actions: - action: input_boolean.turn_on data: entity_id: input_boolean.eri_presence - alias: Presence Eri Off mode: restart triggers: - trigger: numeric_state entity_id: sensor.ie_presence below: 10 - trigger: state entity_id: sensor.eri_bermuda_area to: unknown conditions: - condition: template value_template: '{{ states(''sensor.ie_presence'')| float(0) == 0.0 }}' - condition: template value_template: '{{ is_state(''sensor.eri_bermuda_area'', ''unknown'') }}' actions: - action: input_boolean.turn_off data: entity_id: input_boolean.eri_presence - alias: Presence Shion On triggers: - trigger: numeric_state entity_id: sensor.tms_presence above: 10 - trigger: template value_template: '{{ states(''sensor.shion_tms_bermuda_area'').lower() in [''computer'', ''shionroom'', ''kitchen'', ''masterroom'', ''living'', ''genkan''] }}' actions: - action: input_boolean.turn_on data: entity_id: input_boolean.shion_presence - alias: Presence Shion Off triggers: - trigger: numeric_state entity_id: sensor.tms_presence below: 10 - trigger: state entity_id: sensor.shion_tms_bermuda_area to: unknown conditions: - condition: template value_template: '{{ is_state(''sensor.shion_tms_bermuda_area'', ''unknown'') }}' actions: - action: input_boolean.turn_off data: entity_id: input_boolean.shion_presence - alias: Presence Sachiko On triggers: - trigger: numeric_state entity_id: sensor.sachiko_presence above: 10 actions: - action: input_boolean.turn_on data: entity_id: input_boolean.sachiko_presence, input_boolean.toggle_guest_presence - alias: Presence Sachiko Off triggers: - trigger: numeric_state entity_id: sensor.sachiko_presence below: 10 actions: - action: input_boolean.turn_off data: entity_id: input_boolean.sachiko_presence - alias: Presence Tomokun On triggers: - trigger: numeric_state entity_id: sensor.tomokun_presence above: 10 actions: - action: input_boolean.turn_on data: entity_id: input_boolean.tomokun_presence, input_boolean.toggle_guest_presence - alias: Presence Tomokun Off triggers: - trigger: numeric_state entity_id: sensor.tomokun_presence below: 10 actions: - action: input_boolean.turn_off data: entity_id: input_boolean.tomokun_presence - alias: Enable Guest Mode triggers: - trigger: state entity_id: group.guest_presence to: 'on' actions: - action: homeassistant.turn_on entity_id: input_boolean.guest_mode - action: notify.mobile_app_id data: message: Guest Mode is turned {{ states('input_boolean.guest_mode') }}. title: '*Guest Mode Status*' - alias: Disable Guest Mode triggers: - trigger: state entity_id: group.guest_presence to: 'off' actions: - action: homeassistant.turn_off entity_id: input_boolean.guest_mode - action: notify.mobile_app_id data: message: Guest Mode is turned {{ states('input_boolean.guest_mode') }}. title: '*Guest Mode Status*' - alias: Monentary Presence Monitor Trigger mode: restart triggers: - trigger: state entity_id: binary_sensor.genkan_moving_target to: 'on' actions: - delay: 4 - action: switch.turn_on data: entity_id: switch.momentary_presence_monitor - alias: Presence Scan Arrival triggers: - trigger: state entity_id: binary_sensor.aio_human_sensor_entrance_moving_target to: 'on' conditions: - condition: template value_template: '{{ is_state(''switch.momentary_presence_monitor'', ''off'') }}' actions: - action: mqtt.publish data: topic: monitor/scan/arrive - alias: Presence Scan Departure triggers: - trigger: state entity_id: binary_sensor.genkan_door_contact to: 'on' conditions: - condition: template value_template: '{{ is_state(''switch.momentary_presence_monitor'', ''on'') }}' actions: - delay: 00:01:25 - action: script.monitor_depart - alias: Presence Restart Daily initial_state: 'on' triggers: - trigger: time at: 04:01:00 actions: - action: mqtt.publish data: topic: monitor/scan/restart payload: '' - alias: Home Mode - Arriving triggers: - trigger: state entity_id: sensor.n_people_home conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: template value_template: '{{ trigger.to_state.state|int(0) > trigger.from_state.state|int(0) }} ' actions: - action: input_select.select_option entity_id: input_select.home_mode data: option: Home - action: script.standby - action: select.select_option target: entity_id: select.balcony_guard_mode data: option: Home - alias: Home Mode - Leaving triggers: - trigger: numeric_state entity_id: sensor.n_people_home below: 1 for: 10 conditions: - condition: template value_template: '{{ not is_state(''input_boolean.vacation_mode'', ''on'') }}' - condition: state entity_id: input_select.home_mode state: Home actions: - action: input_select.select_option entity_id: input_select.home_mode data: option: Away - action: script.appliances_off - action: script.text_notify data: who: duc message: There are {{ states('sensor.n_people_home') }} people at home now. title: '*Home Status*' - action: input_boolean.turn_on entity_id: input_boolean.sentry_mode - action: select.select_option target: entity_id: select.balcony_guard_mode data: option: Away - alias: Home Mode - Vacation triggers: - trigger: state entity_id: input_boolean.vacation_mode actions: choose: - conditions: '{{ states.input_boolean.vacation_mode.state == ''on'' }} ' sequence: - action: input_select.select_option entity_id: input_select.home_mode data: option: Vacation - action: input_boolean.turn_on entity_id: input_boolean.sentry_mode - conditions: "{{ states.input_boolean.vacation_mode.state == 'off' and\n states.sensor.n_people_home.state\ \ | int(0) < 1 }}\n" sequence: - action: input_select.select_option entity_id: input_select.home_mode data: option: Away - conditions: "{{ states.input_boolean.vacation_mode.state == 'off' and\n states.sensor.n_people_home.state\ \ | int(0) >= 1 }}\n" sequence: - action: input_select.select_option entity_id: input_select.home_mode data: option: Home - action: script.standby - alias: Set tms Tile Location triggers: - trigger: state entity_id: input_boolean.shion_presence actions: - service_template: script.set_device_tracker_shion - alias: Set Location Waze triggers: - trigger: numeric_state entity_id: sensor.duc_to_work_waze, sensor.eri_to_work_waze below: 3 actions: choose: - conditions: '{{ trigger.to_state.attributes.friendly_name == ''duc to work waze'' }}' sequence: - action: device_tracker.see data: dev_id: duc location_name: Duc Work - conditions: '{{ trigger.to_state.attributes.friendly_name == ''eri to work waze'' }}' sequence: - action: device_tracker.see data: dev_id: eri location_name: Eri Work - id: family_has_arrived alias: Family Has arrived triggers: - trigger: zone entity_id: person.duc zone: zone.home event: enter id: duc - trigger: zone entity_id: person.eri zone: zone.home event: enter id: eri conditions: [] actions: - choose: - conditions: - condition: trigger id: duc sequence: - action: input_boolean.turn_off data: {} entity_id: input_boolean.duc_travel_monitor - conditions: - condition: trigger id: eri sequence: - action: input_boolean.turn_off data: {} entity_id: input_boolean.eri_travel_monitor default: [] - alias: QLM Climate Change triggers: - trigger: state entity_id: - input_select.lr_ac_mode - input_select.mr_ac_mode - input_select.sr_ac_mode actions: - action: climate.set_hvac_mode target: entity_id: climate.{{ trigger.entity_id.split('.')[1] }} data: hvac_mode: "{% set hvac_modes = {\n 'Off': 'off',\n 'Fan': 'fan_only',\n \ \ 'Ai Auto': 'auto',\n 'Man Auto': 'auto',\n 'Powerful Cool': 'cool',\n\ \ 'Normal Cool': 'cool',\n 'Silent Cool': 'cool',\n 'Manual Cool': 'cool',\n\ \ 'Powerful Heat': 'heat',\n 'Normal Heat': 'heat',\n 'Silent Heat': 'heat',\n\ \ 'Manual Heat': 'heat',\n 'Normal Humidifier': 'fan_only'\n} %} {{ hvac_modes[states(trigger.entity_id)]\ \ }}\n" - alias: School today initial_state: true triggers: - trigger: time at: 05:00:00 conditions: - condition: and conditions: - condition: template value_template: "{%- if as_timestamp(strptime(state_attr('calendar.shion_school',\ \ 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom(\"%Y-%m-%d\") ==\ \ now().strftime(\"%Y-%m-%d\") %}\n true\n{%- endif -%}\n" - condition: template value_template: '{{ states(''sensor.holiday'') == ''none'' }}' actions: - choose: - conditions: - condition: template value_template: '{{ ''home school'' in states(''sensor.school_event'') }} ' sequence: - action: input_boolean.turn_on entity_id: input_boolen.school_early_release - action: input_datetime.set_datetime target: entity_id: input_datetime.school_day_end data: time: '15:15:00' default: - action: input_datetime.set_datetime target: entity_id: input_datetime.school_day_end data: time: '18:15:00' - action: input_boolean.turn_on entity_id: input_boolean.school_today - action: script.turn_on entity_id: script.school_in_session - alias: Shion Night Briefing triggers: - trigger: time at: input_datetime.shion_school_bedtime id: school_night - trigger: time at: input_datetime.shion_bedtime_holiday id: no_school conditions: - condition: state entity_id: input_boolean.shion_awake state: 'on' actions: - choose: - conditions: - condition: state entity_id: sensor.school_tomorrow state: 'on' - condition: trigger id: school_night sequence: - action: script.turn_on target: entity_id: script.shion_nightly_briefing - conditions: - condition: state entity_id: sensor.school_tomorrow state: 'off' - condition: trigger id: no_school sequence: - action: script.turn_on target: entity_id: script.shion_nightly_briefing default: [] - alias: set shion nightly bedtime time triggers: - trigger: time at: '18:30:00' actions: - action: input_datetime.set_datetime entity_id: input_datetime.shion_nightly_report data: time: "{% if is_state('sensor.school_tomorrow', 'on') or is_state('sensor.school_event',\ \ 'school off') %}\n 21:00\n{% else %}\n 21:30\n{% endif %}\n" - alias: Randomize Vacation Lights triggers: - trigger: state entity_id: input_boolean.randomize_vacation_lights conditions: - condition: state entity_id: input_boolean.vacation_mode state: 'on' actions: - service_template: "{% if is_state('input_boolean.randomize_vacation_lights', 'on'\ \ )%} script.turn_on {% else %}\n script.turn_off\n{% endif %}\n" data: entity_id: script.randomize_vacation_lights - alias: Run Vacation Lights triggers: - trigger: sun event: sunset id: sundown - trigger: sun event: sunrise id: sunup - trigger: state entity_id: input_boolean.vacation_mode id: cancel from: 'on' to: 'off' actions: - choose: - conditions: - condition: trigger id: sundown - condition: state entity_id: input_boolean.vacation_mode state: 'on' sequence: - action: input_boolean.turn_on entity_id: input_boolean.randomize_vacation_lights - conditions: - condition: or conditions: - condition: trigger id: sunup - condition: trigger id: cancel sequence: - action: input_boolean.turn_off entity_id: input_boolean.randomize_vacation_lights - alias: Daily Energy Use Message triggers: - trigger: time at: '23:59:50' actions: - action: notify.notify_events data: title: '*Information*' message: Today's energy use was {{ states('sensor.total_energy') }} kWh. - action: input_number.set_value data: entity_id: input_number.cumulative_energy_cost value: '{{ states(''input_number.cumulative_energy_cost'')|float(0) + states(''sensor.total_cost_today'')|float(0) }}' - action: notify.send_message target: entity_id: notify.energy_log data: message: '{{ states(''sensor.date'') }},{{ states(''sensor.energy_t31_light_and_power_day'') }},{{ states(''sensor.energy_t31_light_and_power_night'') }},{{ states(''sensor.energy_t31_light_and_power_total'') }},{{ states(''sensor.energy_t41_heating_day'') }},{{ states(''sensor.energy_t41_heating_night'') }},{{ states(''sensor.energy_t41_heating_total'') }},{{ states(''sensor.total_energy_day'') }},{{ states(''sensor.total_energy_night'') }},{{ states(''sensor.total_energy'') }},{{ state_attr(''sensor.power_stats'',''age_coverage_ratio'') }},{{ state_attr(''sensor.power_stats'',''buffer_usage_ratio'') }},{{ states(''sensor.power_stats'') }},{{ states(''sensor.total_cost_today'') }}' - alias: Monthly Fridge Energy Use Message triggers: - trigger: time at: '23:59:55' conditions: - condition: template value_template: '{{ now().day == 1 }}' actions: - action: notify.send_message target: entity_id: notify.fridge_log data: message: '{{ states(''sensor.date'') }},{{ states(''sensor.energy_fridge_power_monthly'') }}' - alias: Set Dark Theme At Sunset initial_state: true triggers: - trigger: sun event: sunset actions: - action: input_select.select_option data: entity_id: input_select.select_theme option: midnight - action: select.select_option target: entity_id: - select.energy_t31_light_and_power - select.energy_t41_heating data: option: night - alias: Set Light Theme At Sunrise initial_state: true triggers: - trigger: sun event: sunrise actions: - action: input_select.select_option data: entity_id: input_select.select_theme option: default_ha - action: select.select_option target: entity_id: - select.energy_t31_light_and_power - select.energy_t41_heating data: option: day - alias: Slack - PC is on triggers: - trigger: state entity_id: binary_sensor.duc_presence to: 'off' for: 60 conditions: - condition: template value_template: '{{ is_state(''binary_sensor.desktop_status'', ''on'') }}' actions: - action: script.notify_slack data: channel: secret slack_channel_id message: The PC was left {{ states('binary_sensor.desktop_status') }} and there are {{ states('sensor.n_people_home') }} person at home. attachments: - title: Turn off the PC? callback_id: turn_off_pc_callback color: '#03a9f4' attachment_type: default actions: - text: Turn off value: Turn off name: script.desktop_wol_off type: button - text: Leave it value: Leave it name: dismiss type: button - alias: 24hr fan toggle on-off triggers: - trigger: time at: 04:00:00 - trigger: time at: '23:00:00' conditions: - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - action: switch.turn_{{ 'on' if is_state('sensor.time', '04:00') else 'off' }} data: entity_id: switch.24hr_fan - alias: 24hr fan toggle speed triggers: - trigger: time at: 04:05:00 - trigger: state entity_id: sensor.period_of_the_day to: dusklight conditions: - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - delay: 90 - action: script.holdpress_bot data: bot: 24hr_fan press: 0 - alias: Open Front Curtains at Sunrise triggers: - trigger: state entity_id: sensor.period_of_the_day to: - dawnlight - daylight conditions: - condition: template value_template: '{{ is_state(''input_select.home_mode'', ''Home'') }}' - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' - condition: template value_template: '{{ states(''sensor.time'') > ''05:00'' }}' - condition: template value_template: '{{ not states(''sensor.eri_bermuda_area'').lower() in [''kitchen'', ''living''] }}' actions: - action: cover.set_cover_position data: position: '{% if is_state("sensor.period_of_the_day", "dawnlight") %} 50 {% else %} 100 {% endif %}' entity_id: - cover.fr_curtains - alias: Close Front Curtains at Sunset triggers: - trigger: state entity_id: sensor.period_of_the_day to: - dusklight - nightlight conditions: - condition: template value_template: '{{ states(''sensor.fr_curtains'') = ''closed'' }}' - condition: template value_template: '{{ not is_state(''input_select.home_mode'', ''Vacation'') }}' actions: - action: cover.set_cover_position data: position: '{% if is_state("sensor.period_of_the_day", "dusklight") %} 50 {% else %} 0 {% endif %}' entity_id: - cover.fr_curtains - alias: Close Computer Room Curtains triggers: - trigger: state entity_id: binary_sensor.cr_window_button to: 'on' conditions: - condition: template value_template: '{{ is_state(''cover.cr_curtain_lt_curtain'', ''open'') }}' actions: - action: script.cr_curtains_toggle - alias: Telegram - Notification Door Unlocked triggers: - trigger: state entity_id: lock.lock_pro_8d0a to: unlocked for: 120 id: msg - trigger: event event_type: telegram_callback event_data: data: /lock_door id: lockdoor conditions: - condition: template value_template: '{{ is_state(''lock.lock_pro_8d0a'', ''unlocked'') }}' actions: - choose: - conditions: - condition: trigger id: msg sequence: - action: notify.amberthebot data: message: The {{ trigger.to_state.attributes.friendly_name }} door has been left {{ states('lock.lock_pro_8d0a') }}. data: inline_keyboard: - Lock Door:/lock_door, Leave it:/donothing - conditions: - condition: trigger id: lockdoor sequence: - action: telegram_bot.answer_callback_query data: callback_query_id: '{{ trigger.event.data.id }}' message: OK, locking genkan door now... - action: telegram_bot.edit_replymarkup data: message_id: '{{ trigger.event.data.message.message_id }}' chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: [] - action: lock.lock entity_id: lock.lock_pro_8d0a default: [] - alias: Pre Auto Unlock Door triggers: - trigger: state entity_id: device_tracker.id, device_tracker.ie to: home conditions: [] actions: - choose: - conditions: - condition: template value_template: '{{ is_state(''device_tracker.id'', ''home'') }}' sequence: - action: input_boolean.turn_on entity_id: input_boolean.duc_unlock_door - conditions: - condition: template value_template: '{{ is_state(''device_tracker.ie'', ''home'') }}' sequence: - action: input_boolean.turn_on entity_id: input_boolean.eri_unlock_door - alias: Telegram - Notification Auto Unlock Door Enabled triggers: - trigger: state entity_id: device_tracker.id, device_tracker.ie to: home id: msg - trigger: event event_type: telegram_callback event_data: data: /disable_autolock id: disable conditions: - condition: template value_template: '{{ is_state(''input_boolean.duc_unlock_door'', ''on'') or is_state(''input_boolean.eri_unlock_door'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: msg sequence: - action: notify.amberthebot data: message: Auto doorlock has been initialized by {{ trigger.to_state.attributes.friendly_name }}. data: inline_keyboard: - Disable Auto Lock:/disable_autolock, Leave it:/donothing - conditions: - condition: trigger id: disable sequence: - action: telegram_bot.answer_callback_query data: callback_query_id: '{{ trigger.event.data.id }}' message: OK, disabling auto doorlock now... - action: telegram_bot.edit_replymarkup data: message_id: '{{ trigger.event.data.message.message_id }}' chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: [] - action: input_boolean.turn_off data: entity_id: input_boolean.{{ 'duc' if is_state('input_boolean.duc_unlock_door', 'on') else 'eri' }}_unlock_door default: [] - alias: Auto Unlock Door triggers: - trigger: state entity_id: binary_sensor.aio_human_sensor_entrance_moving_target, binary_sensor.aio_human_sensor_entrance_presence from: 'off' to: 'on' conditions: [] actions: - choose: - conditions: - condition: template value_template: '{{ is_state(''input_boolean.duc_unlock_door'', ''on'') and is_state(''device_tracker.id'', ''home'') }}' - condition: template value_template: "{%- set trig = (now() - states.device_tracker.duc_bermuda_bermuda_tracker.last_changed).seconds\ \ -%}\n {{ is_state('device_tracker.duc_bermuda_bermuda_tracker', 'home')\ \ and trig <= 60 }}" - condition: template value_template: '{{ is_state(''lock.lock_pro_8d0a'', ''locked'') }}' sequence: - action: lock.unlock entity_id: lock.lock_pro_8d0a - action: input_boolean.turn_off entity_id: input_boolean.duc_unlock_door - conditions: - condition: template value_template: '{{ is_state(''input_boolean.eri_unlock_door'', ''on'') and is_state(''device_tracker.ie'', ''home'') }}' - condition: template value_template: "{%- set trig = (now() - states.device_tracker.eri_bermuda_bermuda_tracker.last_changed).seconds\ \ -%}\n {{ is_state('device_tracker.eri_bermuda_bermuda_tracker', 'home')\ \ and trig <= 60 }}" - condition: template value_template: '{{ is_state(''lock.lock_pro_8d0a'', ''locked'') }}' sequence: - action: lock.unlock entity_id: lock.lock_pro_8d0a - action: input_boolean.turn_off entity_id: input_boolean.eri_unlock_door - alias: Telegram - Notification PC is on triggers: - trigger: state entity_id: binary_sensor.duc_presence to: 'off' for: 60 id: msg - trigger: event event_type: telegram_callback event_data: data: /turn_off_pc id: shutdown conditions: - condition: template value_template: '{{ is_state(''binary_sensor.desktop_status'', ''on'') }}' actions: - choose: - conditions: - condition: trigger id: msg sequence: - action: notify.amberthebot data: message: The PC was left {{ states('binary_sensor.desktop_status') }} and there are {{ states('sensor.n_people_home') }} person at home. data: inline_keyboard: - Turn off pc:/turn_off_pc, Leave it:/donothing - conditions: - condition: trigger id: shutdown sequence: - action: telegram_bot.answer_callback_query data: callback_query_id: '{{ trigger.event.data.id }}' message: OK, turning off pc now - action: telegram_bot.edit_replymarkup data: message_id: '{{ trigger.event.data.message.message_id }}' chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: [] - action: script.desktop_wol_off default: [] - alias: Telegram - You got mail triggers: - trigger: state entity_id: sensor.lora_mailbox id: mail to: '0xA2B2' for: 3 - trigger: state entity_id: sensor.lora_mailbox id: bat to: 0xLBAT for: 3 conditions: - condition: [] actions: - choose: - conditions: - condition: trigger id: mail sequence: - action: notify.amberthebot data: message: You've got mail! data: inline_keyboard: - Received:/received, Mute:/donothing - conditions: - condition: trigger id: bat sequence: - action: script.text_notify data: who: amber title: Mailbox message: Mailbox battery is low! - action: python_script.set_state data: entity_id: sensor.lora_mailbox state: received - alias: Telegram - You got mail received triggers: - trigger: event event_type: telegram_callback event_data: data: /received actions: - action: telegram_bot.answer_callback_query data: callback_query_id: '{{ trigger.event.data.id }}' message: OK, turning off notification - action: telegram_bot.edit_replymarkup data: message_id: '{{ trigger.event.data.message.message_id }}' chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: [] - action: python_script.set_state data: entity_id: sensor.lora_mailbox state: received - action: script.mailbox_reset - alias: Telegram - Do Nothing triggers: - trigger: event event_type: telegram_callback event_data: data: /donothing actions: - action: telegram_bot.answer_callback_query data: callback_query_id: '{{ trigger.event.data.id }}' message: OK, no action taken - action: telegram_bot.edit_replymarkup data: message_id: '{{ trigger.event.data.message.message_id }}' chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: [] - alias: Control Devices initial_state: 'on' triggers: - trigger: event event_type: telegram_text conditions: - condition: template value_template: "{%- set text = trigger.event.data.text|lower -%} {%- set text\ \ = text.split(' ') -%} {%- if (text[0] == 'turn' or text[0] == 'switch') and\ \ (text[1] == 'on' or text[1] == 'off') -%}\n true\n{%- endif -%}" actions: - action: telegram_bot.send_message data: message: '{%- set device = trigger.event.data.text|lower|replace(''turn on '','''')|replace(''turn off '','''')|replace(''switch on '','''')|replace(''switch off '','''') -%} {%- for entity in states.group.controllable_devices.attributes.entity_id if states[entity.split(''.'')[0]][entity.split(''.'')[1]].name|lower == device -%} OK, {{ trigger.event.data.text|lower|replace(''turn'',''turning'')|replace(''switch'',''switching'') }}. {%- else -%} I''m sorry. I cannot find the device named {{device}} in the house. {%- endfor -%}' title: '' target: '{{ trigger.event.data.chat_id }}' - condition: template value_template: '{%- set device = trigger.event.data.text|lower|replace(''turn on '','''')|replace(''turn off '','''')|replace(''switch on '','''')|replace(''switch off '','''') -%} {%- for entity in states.group.controllable_devices.attributes.entity_id if states[entity.split(''.'')[0]][entity.split(''.'')[1]].name|lower == device -%} true {%- else -%} false {%- endfor -%}' - action: '{%- set text = trigger.event.data.text|lower -%} {%- set text = text.split('' '') -%} {%- set onoff = text[1] -%} homeassistant.turn_{{onoff}}' data: entity_id: '{%- set device = trigger.event.data.text|lower|replace(''turn on '','''')|replace(''turn off '','''')|replace(''switch on '','''')|replace(''switch off '','''') -%} {%- for entity in states.group.controllable_devices.attributes.entity_id if states[entity.split(''.'')[0]][entity.split(''.'')[1]].name|lower == device -%} {{ entity }} {%- endfor -%}' - alias: turn off light after timeout triggers: - trigger: state entity_id: light.g_1 to: 'on' for: minutes: 15 actions: - action: light.turn_off data: entity_id: '{{ trigger.entity_id }}' - alias: closet storage room auto-off triggers: - trigger: state entity_id: - binary_sensor.master_clo_door_contact - binary_sensor.storage_door_contact to: 'off' for: 30 actions: - action: light.turn_off target: entity_id: light.{{ trigger.to_state.name }} - alias: Lights out Before leaving triggers: - entity_id: binary_sensor.genkan_doorlock_button trigger: state to: 'on' actions: - action: script.lights_out - alias: Duc Presence Alone triggers: - trigger: state entity_id: binary_sensor.duc_presence_alone conditions: [] actions: - choose: - conditions: - condition: state entity_id: binary_sensor.duc_presence_alone state: 'off' sequence: - action: input_boolean.turn_on entity_id: input_boolean.disable_motion_lights default: - action: input_boolean.turn_off entity_id: input_boolean.disable_motion_lights - id: unavailable_entities_notification alias: Unavailable Entities Notification description: Create persistent notification if unavailable entities, dismiss if none. mode: restart triggers: - trigger: state entity_id: sensor.unavailable_entities attribute: entity_id to: null conditions: - condition: template alias: Sensor state is a valid numerical value value_template: "{{ is_number(trigger.from_state.state)\n and is_number(trigger.to_state.state)\ \ }}\n" actions: - if: - condition: numeric_state entity_id: sensor.unavailable_entities below: 1 then: - action: persistent_notification.dismiss data: notification_id: unavailable_entities else: - action: persistent_notification.create data: notification_id: unavailable_entities title: Unavailable Entities message: '{{ state_attr(''sensor.unavailable_entities'',''entity_id'')|join('' '') }}' - alias: motion washroom auto-on mode: parallel triggers: - trigger: template value_template: '{{ state_attr(''binary_sensor.wash_occupied'', ''initiated'') == true }}' - trigger: state entity_id: binary_sensor.washer_door_button to: 'on' id: shower actions: - choose: - conditions: - condition: trigger id: shower sequence: - action: light.toggle entity_id: light.shower default: - action: light.turn_on entity_id: light.laundry, light.sink, light.vanity - alias: motion washroom auto-off mode: parallel triggers: - trigger: state entity_id: binary_sensor.wash_occupied to: 'off' conditions: - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' actions: - service_template: light.turn_{{ 'on' if is_state('light.shower', 'on') else 'off' }} entity_id: light.laundry - delay: 10 - service_template: light.turn_{{ 'on' if is_state('light.shower', 'on') else 'off' }} entity_id: light.sink, light.vanity - alias: Replace Toilet Airfreshener Notification triggers: - trigger: numeric_state entity_id: sensor.wc_airfreshener_can below: 10 actions: - action: script.email_notify data: title: Replace WC Airfreshener who: duc message: Today is {{ now().strftime( '%B %d, %Y') }}

The wc air freshener bottle needs to be replaced. It has about {{ states('sensor.wc_airfreshener_can') }}% left.

- alias: motion wc room triggers: - trigger: state entity_id: binary_sensor.wc_occupied, binary_sensor.wc_door_contact to: 'on' - trigger: state entity_id: binary_sensor.wc_occupied to: 'off' id: 'off' - trigger: state entity_id: input_boolean.engage_toilet_airfreshener to: 'on' for: 00:03:00 id: air - trigger: template value_template: '{{ is_state(''light.wc'', [''unavailable'',''off'']) }}' id: reset - trigger: numeric_state entity_id: sensor.wc_airfreshener_volume_percent above: 0.8 below: 20 for: 15 id: air conditions: [] actions: - choose: - conditions: - condition: trigger id: 'off' sequence: - action: homeassistant.turn_off entity_id: input_boolean.engage_toilet_airfreshener - condition: template value_template: '{{ not is_state(''input_boolean.disable_motion_lights'', ''on'') }}' - condition: template value_template: '{{not is_state(''input_boolean.guest_mode'', ''on'') }}' - action: light.turn_off entity_id: light.wc - conditions: - condition: trigger id: air sequence: - condition: template value_template: '{{ is_state(''light.wc'', ''on'') }}' - action: switch.turn_on entity_id: switch.wc_airfreshener - conditions: - condition: trigger id: reset sequence: - action: homeassistant.turn_off entity_id: input_boolean.engage_toilet_airfreshener default: - action: light.turn_on entity_id: light.wc_1 - action: homeassistant.turn_on entity_id: input_boolean.engage_toilet_airfreshener - alias: Enable Toilet Seat Heater Upon Arrival triggers: - trigger: state entity_id: input_select.home_mode conditions: - condition: template value_template: '{{ not is_state(''sensor.season'', ''summer'') }}' actions: choose: - conditions: '{{ trigger.to_state.state == ''Away'' or trigger.to_state.state == ''Vacation'' }}' sequence: - action: script.toilet_seat_off_heat - conditions: "{{ trigger.to_state.state == 'Home' and\n states('sensor.aio_human_sensor_entrance_temperature')|\ \ int(0) > 21 }}\n" sequence: - action: script.toilet_seat_off_heat - conditions: "{{ trigger.to_state.state == 'Home' and\n states('sensor.aio_human_sensor_entrance_temperature')|\ \ int(0) <= 10}}\n" sequence: - action: script.toilet_seat_high_heat - conditions: "{{ trigger.to_state.state == 'Home' and\n states('sensor.aio_human_sensor_entrance_temperature')|\ \ int(0) <= 14 }}\n" sequence: - action: script.toilet_seat_med_heat - conditions: "{{ trigger.to_state.state == 'Home' and\n states('sensor.aio_human_sensor_entrance_temperature')|\ \ int(0) <= 20 }}\n" sequence: - action: script.toilet_seat_low_heat - conditions: "{{ trigger.to_state.state == 'Returning' and\n states('sensor.aio_human_sensor_entrance_temperature')|\ \ int(0) <= 20 }}\n" sequence: - action: script.toilet_seat_low_heat - alias: Adjust Toilet Seat Heater Temperature triggers: - trigger: state entity_id: sensor.aio_human_sensor_entrance_temperature conditions: - condition: template value_template: '{{ not is_state(''sensor.season'', ''summer'') }}' - condition: template value_template: '{{ not is_state(''binary_sensor.aio_human_sensor_online'', ''off'') }}' - condition: template value_template: '{%- set last_toilet_heat_off_seconds = (now() - as_local(states.script.toilet_seat_off_heat.last_updated )).seconds -%} {%- if last_toilet_heat_off_seconds >= 600 %} true {% else %} false {% endif %} ' actions: choose: - conditions: "{{ states('sensor.aio_human_sensor_entrance_temperature')| int(0)\ \ > 21 and\n is_state('input_select.home_mode', 'Home') }}\n" sequence: - action: script.toilet_seat_off_heat - conditions: "{{ states('sensor.aio_human_sensor_entrance_temperature')| int(0)\ \ <= 10 and\n is_state('input_select.home_mode', 'Home') }}\n" sequence: - action: script.toilet_seat_high_heat - conditions: "{{ states('sensor.aio_human_sensor_entrance_temperature')| int(0)\ \ <= 16 and\n is_state('input_select.home_mode', 'Home') }}\n" sequence: - action: script.toilet_seat_med_heat - conditions: "{{ states('sensor.aio_human_sensor_entrance_temperature')| int(0)\ \ <= 20 and\n is_state('input_select.home_mode', 'Home') }}\n" sequence: - action: script.toilet_seat_low_heat - alias: Hibernate Toilet Seat Heater triggers: - trigger: state entity_id: sensor.season to: summer actions: - delay: 1 - action: script.toilet_seat_off_heat - id: enable_zigbee_join alias: Enable Zigbee joining triggers: - trigger: state entity_id: input_boolean.zigbee_permit_join to: 'on' actions: - action: mqtt.publish data: topic: zigbee2mqtt/bridge/config/permit_join payload: 'true' - action: timer.start data: entity_id: timer.zigbee_permit_join - id: disable_zigbee_join alias: Disable Zigbee joining triggers: - trigger: state entity_id: input_boolean.zigbee_permit_join to: 'off' actions: - action: mqtt.publish data: payload: 'false' topic: zigbee2mqtt/bridge/config/permit_join - action: timer.cancel data: entity_id: timer.zigbee_permit_join - id: disable_zigbee_join_timer alias: Disable Zigbee joining by timer triggers: - trigger: event event_type: timer.finished event_data: entity_id: timer.zigbee_permit_join actions: - action: mqtt.publish data: topic: zigbee2mqtt/bridge/config/permit_join payload: 'false' - action: input_boolean.turn_off data: entity_id: input_boolean.zigbee_permit_join