{"id":13362,"date":"2026-08-22T10:52:24","date_gmt":"2026-08-22T17:52:24","guid":{"rendered":"https:\/\/smarthomesolver.com\/reviews\/?p=13362"},"modified":"2026-08-22T11:35:36","modified_gmt":"2026-08-22T18:35:36","slug":"automating-my-new-house","status":"publish","type":"post","link":"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/","title":{"rendered":"Automating My New Smart Home!"},"content":{"rendered":"\n<p>If you just watched the video <a href=\"https:\/\/youtu.be\/1j4iadL6DzM\" target=\"_blank\" rel=\"noreferrer noopener\">at this link<\/a>, thanks so much for supporting the channel! <\/p>\n\n\n\n<p>Here is the code for every automation and script mentioned in the video. <\/p>\n\n\n\n<p class=\"has-text-align-center\"><em>Affiliate Disclosure: This page has affiliate links, which earn us commission at no cost to you.<\/em><\/p>\n\n\n\n<div id=\"toc_container\" class=\"toc_white no_bullets\"><p class=\"toc_title\">Table of Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Annie_wants_to_come_inside\">Annie wants to come inside<\/a><\/li><li><a href=\"#Less_annoying_announcements\">Less annoying announcements<\/a><\/li><li><a href=\"#Super_smart_alerts\">Super smart alerts<\/a><\/li><li><a href=\"#Faster_garage_notifications\">Faster garage notifications<\/a><\/li><li><a href=\"#Perfect_motion_lights\">Perfect motion lights<\/a><\/li><li><a href=\"#Basic_light_automations\">Basic light automations<\/a><\/li><li><a href=\"#Automatic_animal_feeders\">Automatic animal feeders<\/a><\/li><li><a href=\"#Annie_is_thirsty\">Annie is thirsty<\/a><\/li><li><a href=\"#Powerful_dinner_button\">Powerful dinner button<\/a><\/li><li><a href=\"#Defeating_kids_with_technology\">Defeating kids with technology<\/a><\/li><li><a href=\"#Auto_arming_cameras\">Auto arming cameras<\/a><\/li><li><a href=\"#Water_leak_fail_safe\">Water leak fail safe<\/a><\/li><li><a href=\"#Fan_fully_automated\">Fan fully automated<\/a><\/li><li><a href=\"#Improved_doorbell\">Improved doorbell<\/a><\/li><li><a href=\"#Keeping_it_clean\">Keeping it clean<\/a><\/li><li><a href=\"#mmWave_motion_lights\">mmWave motion lights<\/a><\/li><li><a href=\"#Projector_and_thermostat\">Projector and thermostat<\/a><\/li><li><a href=\"#Buttons_and_auto_lights\">Buttons and auto lights<\/a><\/li><li><a href=\"#Actionable_notification\">Actionable notification<\/a><\/li><li><a href=\"#Crashing_in_bed\">Crashing in bed<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Annie_wants_to_come_inside\">Annie wants to come inside<\/span><\/h2>\n\n\n\n<p>Our dog Annie is only 15 pounds, so I wasn&#8217;t sure if the <a href=\"https:\/\/asc.com\/products\/trampletek-blue?sca_ref=8601086.6f9ktniJkBAxXC5O&amp;utm_source=reed-kleinman&amp;utm_medium=uppromote&amp;utm_campaign=reed-kleinman\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">TrampleTek Blue pressure sensor mat<\/a> could detect her under the outside door mat. Turns out, it can! I had to adjust the calibration, but after a minute of dialing it in I haven&#8217;t touched it since. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Annie wants to come inside annoucement from pressure sensor\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.ttb_mat_2271a8_mat_sensor\n    to:\n      - \"on\"\n    for:\n      hours: 0\n      minutes: 0\n      seconds: 4\nconditions: &#91;]\nactions:\n  - action: script.speaker_announce_message\n    metadata: {}\n    data:\n      volume: 70\n      message: Annie wants to come inside\nmode: single<\/code><\/pre>\n\n\n\n<p>This code just calls a script and passes in two variables. One variable is the message &#8220;Annie wants to come inside&#8221; and the other is the volume level. I wanted to have different volume levels for different announcements, and it is nice to have that option! But many of the announcements are a similar volume so I wouldn&#8217;t say it&#8217;s necessary. <\/p>\n\n\n\n<p>Ok, let&#8217;s go over the announce script in the next automation.<\/p>\n\n\n\n<h2><span id=\"Less_annoying_announcements\">Less annoying announcements<\/span><\/h2>\n\n\n\n<p>There are a lot of reasons I might want to announce something on all the speakers. One of them is when either the front door or the door to the garage open, since we have a 3 year old esacpe artist. <\/p>\n\n\n\n<p>Instead of writing the actions to announce on the speakers in the automation, I put them in a script. That way if I ever need to swap out a smart speaker or add a new one, I just modify one script. That avoids updating dozens of automations every time I want to make a change!<\/p>\n\n\n\n<p>The script also saves the volume level on the smart speakers before changing them. I created an &#8220;input number helper&#8221; for each volume I want to save. Then after a short delay, I set the volume of the speaker back to that number. <\/p>\n\n\n\n<p>Here is the code for the script. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sequence:\n  - action: input_number.set_value\n    metadata: {}\n    target:\n      entity_id: input_number.main_room_volume\n    data:\n      value: &gt;-\n        {{\n        state_attr('media_player.home_assistant_voice_main_room_media_player',\n        'volume_level') }}\n  - action: input_number.set_value\n    metadata: {}\n    target:\n      entity_id: input_number.bedroom_volume\n    data:\n      value: &gt;-\n        {{ state_attr('media_player.home_assistant_voice_bedroom_media_player',\n        'volume_level') }}\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: 0.{{volume}}\n    target:\n      entity_id:\n        - media_player.home_assistant_voice_main_room_media_player\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: 0.4\n    target:\n      entity_id: media_player.home_assistant_voice_09911e_media_player\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: 0.8\n    target:\n      entity_id:\n        - media_player.thirdreality_voice_music_assistant_media_player\n  - action: tts.speak\n    metadata: {}\n    data:\n      cache: true\n      media_player_entity_id: media_player.home_assistant_voice_main_room_media_player\n      message: \"{{message}}\"\n    target:\n      entity_id: tts.piper\n    enabled: true\n  - choose:\n      - conditions:\n          - condition: time\n            after: \"07:00:00\"\n            before: \"23:00:00\"\n        sequence:\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_09911e_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n  - choose:\n      - conditions:\n          - condition: time\n            after: \"07:00:00\"\n            before: \"20:00:00\"\n        sequence:\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n  - delay:\n      hours: 0\n      minutes: 0\n      seconds: 5\n      milliseconds: 0\n    enabled: true\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: \"{{states('input_number.main_room_volume')}}\"\n    target:\n      entity_id:\n        - media_player.home_assistant_voice_main_room_media_player\n    enabled: true\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: \"{{states('input_number.bedroom_volume')}}\"\n    target:\n      entity_id: media_player.home_assistant_voice_09911e_media_player\n    enabled: true\nalias: Speaker Announce Message\ndescription: \"\"\nmode: single<\/code><\/pre>\n\n\n\n<p>As for the automation to announce when a door is opened, there is just one automation with three different triggers. It&#8217;s one trigger for each door. Those triggers have a &#8220;Trigger ID&#8221; so I can tell which door was opened and can choose the actions. <\/p>\n\n\n\n<p>The garage door is nearby the speaker and it&#8217;s not as much of a big deal if it is opened, so the volume is lower than if the front door is opened. There&#8217;s also a one minute timer that gets started when the garage door is opened so it&#8217;s not alerting me nonstop. If the timer is active, the garage door announcement doesn&#8217;t get called. <\/p>\n\n\n\n<p>This automations just calls that script above and passes in two variables. They are &#8220;volume&#8221; and &#8220;message&#8221;. You can name them whatever you want, but just make sure the script uses those variable names {{volume}} and {{message}}. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Alarm announce exterior door open\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_4\n    to:\n      - \"on\"\n    from:\n      - \"off\"\n    id: front_door_opened\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_5\n    to:\n      - \"on\"\n    from:\n      - \"off\"\n    id: garage_door_opened\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_6\n    to:\n      - \"on\"\n    from:\n      - \"off\"\n    id: back_door_opened\nconditions: &#91;]\nactions:\n  - choose:\n      - conditions:\n          - condition: trigger\n            id:\n              - front_door_opened\n        sequence:\n          - action: script.speaker_announce_message\n            metadata: {}\n            data:\n              volume: 80\n              message: Front door opened\n      - conditions:\n          - condition: trigger\n            id:\n              - garage_door_opened\n          - condition: not\n            conditions:\n              - condition: state\n                entity_id: timer.garage_door_announce_timer\n                state:\n                  - active\n            enabled: true\n        sequence:\n          - action: timer.start\n            metadata: {}\n            target:\n              entity_id: timer.garage_door_announce_timer\n            data: {}\n          - action: script.speaker_announce_message\n            metadata: {}\n            data:\n              volume: 60\n              message: Garage door opened\n      - conditions:\n          - condition: trigger\n            id:\n              - back_door_opened\n        sequence:\n          - action: script.speaker_announce_message\n            metadata: {}\n            data:\n              volume: 90\n              message: Back door opened\n            enabled: false\nmode: single<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2><span id=\"Super_smart_alerts\">Super smart alerts<\/span><\/h2>\n\n\n\n<p>This next automation builds on the last one, but this time announces on the speaker near me. I&#8217;m using ESPresence and it&#8217;s been solid for years! If you want more info, <a href=\"https:\/\/youtu.be\/s7kyqpq4Ev4?si=Y7708qAXGO8KTUxD\" target=\"_blank\" rel=\"noreferrer noopener\">watch this video<\/a>.<\/p>\n\n\n\n<p>Here is the automation that announces an exterior door has been left open. If it&#8217;s still left open two minutes after the announcement, then I get a phone notification in case I didn&#8217;t hear it. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Exterior door left open notification\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_6\n    to:\n      - \"on\"\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\n    id: back_open\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_5\n    to:\n      - \"on\"\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\n    id: garage_open\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_4\n    to:\n      - \"on\"\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\n    id: front_open\nconditions: &#91;]\nactions:\n  - alias: Announce it first to the nearest speaker\n    choose:\n      - conditions:\n          - condition: trigger\n            id:\n              - front_open\n        sequence:\n          - action: script.reed_room_speaker_announce_message\n            metadata: {}\n            data:\n              message: Reed the front door is open\n      - conditions:\n          - condition: trigger\n            id:\n              - garage_open\n        sequence:\n          - action: script.reed_room_speaker_announce_message\n            metadata: {}\n            data:\n              message: Reed the door to the garage is open\n      - conditions:\n          - condition: trigger\n            id:\n              - back_open\n        sequence:\n          - action: script.reed_room_speaker_announce_message\n            metadata: {}\n            data:\n              message: Reed the back door is open\n  - delay:\n      hours: 0\n      minutes: 2\n      seconds: 0\n      milliseconds: 0\n  - choose:\n      - conditions:\n          - condition: or\n            conditions:\n              - condition: state\n                entity_id: binary_sensor.alarm_panel_pro_zone_4\n                state:\n                  - \"on\"\n              - condition: state\n                entity_id: binary_sensor.alarm_panel_pro_zone_5\n                state:\n                  - \"on\"\n              - condition: state\n                entity_id: binary_sensor.alarm_panel_pro_zone_6\n                state:\n                  - \"on\"\n        sequence:\n          - choose:\n              - conditions:\n                  - condition: trigger\n                    id:\n                      - front_open\n                sequence:\n                  - data:\n                      title: Front door still open\n                      message: Close the door\n                    action: script.android_notification_basic\n              - conditions:\n                  - condition: trigger\n                    id:\n                      - garage_open\n                sequence:\n                  - data:\n                      title: Door to the garage is still open\n                      message: Close the door\n                    action: script.android_notification_basic\n              - conditions:\n                  - condition: trigger\n                    id:\n                      - back_open\n                sequence:\n                  - data:\n                      title: Back door still open\n                      message: Close the door\n                    action: script.android_notification_basic\n    alias: Notify my phone if I don't hear it\nmode: single<\/code><\/pre>\n\n\n\n<p>Then the script is similar to the other announce script, but this time it only announces on one speaker. There is a big &#8220;Choose action block&#8221; that selects the speaker based on my smart watch using ESPresence. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sequence:\n  - choose:\n      - conditions:\n          - condition: state\n            entity_id: sensor.reed_room\n            state:\n              - studio_esp\n        sequence:\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: 0.8\n            target:\n              entity_id:\n                - media_player.home_assistant_voice_09023f_media_player\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_09023f_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n      - conditions:\n          - condition: or\n            conditions:\n              - condition: state\n                entity_id: sensor.reed_room\n                state:\n                  - kitchen_esp\n              - condition: state\n                entity_id: sensor.reed_room\n                state:\n                  - living_room_esp\n        sequence:\n          - action: input_number.set_value\n            metadata: {}\n            target:\n              entity_id: input_number.main_room_volume\n            data:\n              value: &gt;-\n                {{\n                state_attr('media_player.home_assistant_voice_main_room_media_player',\n                'volume_level') }}\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: 0.8\n            target:\n              entity_id: media_player.home_assistant_voice_main_room_media_player\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_main_room_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - delay:\n              hours: 0\n              minutes: 0\n              seconds: 3\n              milliseconds: 0\n            enabled: true\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: \"{{states('input_number.main_room_volume')}}\"\n            target:\n              entity_id:\n                - media_player.home_assistant_voice_main_room_media_player\n            enabled: true\n      - conditions:\n          - condition: or\n            conditions:\n              - condition: state\n                entity_id: sensor.reed_room\n                state:\n                  - bedroom_esp\n              - condition: state\n                entity_id: sensor.reed_room\n                state:\n                  - closet_esp\n          - condition: time\n            after: \"07:00:00\"\n            before: \"23:00:00\"\n        sequence:\n          - action: input_number.set_value\n            metadata: {}\n            target:\n              entity_id: input_number.bedroom_volume\n            data:\n              value: &gt;-\n                {{\n                state_attr('media_player.home_assistant_voice_bedroom_media_player',\n                'volume_level') }}\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: \"0.4\"\n            target:\n              entity_id: media_player.home_assistant_voice_09911e_media_player\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_09911e_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - delay:\n              hours: 0\n              minutes: 0\n              seconds: 3\n              milliseconds: 0\n            enabled: true\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: \"{{states('input_number.bedroom_volume')}}\"\n            target:\n              entity_id: media_player.home_assistant_voice_09911e_media_player\n            enabled: true\n      - conditions:\n          - condition: state\n            entity_id: sensor.reed_room\n            state:\n              - kids_esp\n          - condition: time\n            after: \"07:00:00\"\n            before: \"20:00:00\"\n        sequence:\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: 0.8\n            target:\n              entity_id:\n                - media_player.thirdreality_voice_music_assistant_media_player\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_09911e_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n      - conditions:\n          - condition: state\n            entity_id: sensor.reed_room\n            state:\n              - office_esp\n          - condition: time\n            after: \"07:00:00\"\n            before: \"20:00:00\"\n        sequence:\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: 0.8\n            target:\n              entity_id:\n                - media_player.thirdreality_voice_music_assistant_media_player\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_09911e_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: \"{{message}}\"\n            target:\n              entity_id: tts.piper\n            enabled: true\nalias: Reed Room Speaker Announce Message\ndescription: \"\"\nmode: single<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2><span id=\"Faster_garage_notifications\">Faster garage notifications<\/span><\/h2>\n\n\n\n<p>Using the <a href=\"https:\/\/ratcloud.llc\/products\/ratgdo32-disco\" target=\"_blank\" rel=\"noreferrer noopener\">RATGDO Disco<\/a> to detect if the car is in the garage has been great! I already had an automation to alert me if the garage door was left open for 10 minutes. So I just added another trigger for the sensor on the Disco that detects the car that gets called if it doesn&#8217;t detect a car for 1 minute.<\/p>\n\n\n\n<p>There are two conditions. One to make sure the garage door is still open, and two if my &#8220;input switch&#8221; is turned off in case I&#8217;m washing the car or something. I just keep that switch on my garage dashboard so it&#8217;s easy to toggle on and off. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Van garage door left open notification\ndescription: \"\"\ntriggers:\n  - device_id: ratgdo_device_id_number\n    domain: cover\n    entity_id: ratgdo_entity_id_number\n    type: opened\n    trigger: device\n    for:\n      hours: 0\n      minutes: 10\n      seconds: 0\n  - type: turned_off\n    device_id: ratgdo_device_id_number\n    entity_id: ratgdo32disco_vehicle_detected\n    domain: binary_sensor\n    trigger: device\n    for:\n      hours: 0\n      minutes: 1\n      seconds: 0\nconditions:\n  - condition: device\n    device_id: 91d8f8e5f0b25d3419b88ff1e18181a8\n    domain: cover\n    entity_id: 814e310377abe36379dc0e812cc0a252\n    type: is_open\n  - condition: state\n    entity_id: input_boolean.garage_notification_override\n    state:\n      - \"off\"\nactions:\n  - data:\n      title: Van garage left open\n      message: Garage door left open\n    action: script.android_notification_basic\n  - data:\n      title: Van garage left open\n      message: Garage door left open\n    action: script.alys_phone_push_notification\nmode: single<\/code><\/pre>\n\n\n\n<p>For more information on the RATGDO Disco, <a href=\"https:\/\/youtu.be\/7cSXnbRzl2o?si=IeZkPnNKaHRyLEU7\" target=\"_blank\" rel=\"noreferrer noopener\">watch my other video<\/a>.<\/p>\n\n\n\n<h2><span id=\"Perfect_motion_lights\">Perfect motion lights<\/span><\/h2>\n\n\n\n<p>Motion lights can be very tricky because it seems simple, but <strong>never<\/strong> is. So being able to lock the lights on or off can be extremely helpful! I&#8217;m using a <a href=\"https:\/\/amzn.to\/4ggqnxG\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Zooz Z-Wave dimmer switch,<\/a> but this can be done with any smart dimmer, you just have to be creative.<\/p>\n\n\n\n<p>What&#8217;s important is that there&#8217;s an &#8220;input switch&#8221; or virtual switch that locks the lights from changing. Here is the automation to turn on the lights, but it doesn&#8217;t run if the input switch is on that is set in the condition.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Kids area motion lights\ndescription: \"\"\ntriggers:\n  - type: motion\n    device_id: everything_presence1_device_id_number\n    entity_id: pir_entity_id_number\n    domain: binary_sensor\n    trigger: device\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_1\n    to:\n      - \"on\"\n    from:\n      - \"off\"\nconditions:\n  - condition: state\n    entity_id: input_boolean.kids_area_lights_lock\n    state:\n      - \"off\"\nactions:\n  - choose:\n      - conditions:\n          - condition: time\n            after: \"07:00:00\"\n            before: \"19:00:00\"\n        sequence:\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id:\n                - light.zooz_small_hallway_lights\n                - light.front_foyer_main_lights\n            data:\n              brightness_pct: 100\n      - conditions:\n          - condition: time\n            after: \"19:00:00\"\n            before: \"20:00:00\"\n        sequence:\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id: light.zooz_small_hallway_lights\n            data:\n              brightness_pct: 20\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id: light.front_foyer_main_lights\n            data:\n              brightness_pct: 60\n      - conditions:\n          - condition: time\n            after: \"20:00:00\"\n            before: \"20:30:00\"\n        sequence:\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id: light.zooz_small_hallway_lights\n            data:\n              brightness_pct: 10\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id: light.front_foyer_main_lights\n            data:\n              brightness_pct: 30\n      - conditions:\n          - condition: time\n            after: \"20:30:00\"\n            before: \"07:00:00\"\n        sequence:\n          - action: light.turn_on\n            metadata: {}\n            target:\n              entity_id: light.front_foyer_main_lights\n            data:\n              brightness_pct: 15\n          - action: light.turn_off\n            metadata: {}\n            target:\n              entity_id: light.zooz_small_hallway_lights\n            data: {}\nmode: single<\/code><\/pre>\n\n\n\n<p>There is another automation if the on or off button is pressed on the Zooz dimmer. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Kids area light locked on or off button press\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - event.zooz_small_hallway_lights_scene_001\n    not_from: unavailable\n    not_to: unavailable\n    id: button_1\n  - trigger: state\n    entity_id:\n      - event.zooz_small_hallway_lights_scene_002\n    not_from: unavailable\n    not_to: unavailable\n    id: button_2\nconditions: &#91;]\nactions:\n  - action: media_player.volume_set\n    metadata: {}\n    data:\n      volume_level: 0.6\n    target:\n      entity_id:\n        - media_player.thirdreality_voice_music_assistant_media_player\n  - alias: Scene Button 1\n    choose:\n      - conditions:\n          - condition: state\n            entity_id: event.zooz_small_hallway_lights_scene_001\n            attribute: event_type\n            state:\n              - KeyPressed\n          - condition: trigger\n            id:\n              - button_1\n            enabled: true\n        sequence:\n          - action: input_boolean.turn_on\n            metadata: {}\n            target:\n              entity_id: input_boolean.kids_area_lights_lock\n            data: {}\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: Lights locked on for one hour\n            target:\n              entity_id: tts.piper\n            enabled: true\n    enabled: true\n  - alias: Scene Button 2\n    choose:\n      - conditions:\n          - condition: state\n            entity_id: event.zooz_small_hallway_lights_scene_002\n            attribute: event_type\n            state:\n              - KeyPressed\n          - condition: trigger\n            id:\n              - button_2\n            enabled: true\n        sequence:\n          - action: input_boolean.turn_off\n            metadata: {}\n            target:\n              entity_id: input_boolean.kids_area_lights_lock\n            data: {}\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: Lights locked off\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - action: light.turn_off\n            metadata: {}\n            target:\n              entity_id: light.front_foyer_main_lights\n            data: {}\n      - conditions:\n          - condition: state\n            entity_id: event.zooz_small_hallway_lights_scene_002\n            attribute: event_type\n            state:\n              - KeyPressed2x\n          - condition: trigger\n            id:\n              - button_2\n            enabled: true\n        sequence:\n          - action: input_boolean.turn_on\n            metadata: {}\n            target:\n              entity_id: input_boolean.kids_area_lights_lock\n            data: {}\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.thirdreality_voice_music_assistant_media_player\n              message: Lights locked on for one hour\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - action: light.turn_off\n            metadata: {}\n            target:\n              entity_id:\n                - light.front_foyer_main_lights\n                - light.zooz_small_hallway_lights\n            data: {}\n    enabled: true\nmode: parallel\nmax: 10<\/code><\/pre>\n\n\n\n<h2><span id=\"Basic_light_automations\">Basic light automations<\/span><\/h2>\n\n\n\n<p>Sometimes basic light automations also get the job done! One is turning on the lights to a very dim setting late at night in the main area of the house. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Motion lights late at night ultra dim\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_2\n    to:\n      - \"on\"\n    from:\n      - \"off\"\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_1\n    to:\n      - \"on\"\n    from:\n      - \"off\"\nconditions:\n  - condition: time\n    after: \"23:00:00\"\n    before: \"06:00:00\"\n  - condition: state\n    entity_id: light.kitchen_sink_pendants\n    state:\n      - \"off\"\nactions:\n  - action: scene.turn_on\n    metadata: {}\n    target:\n      entity_id: scene.kitchen_lights_ultra_dim\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<p>Of course I also turn them off when no motion is detected. If you are using multiple motion sensors or mmWave sensor, then make sure there&#8217;s a condition to check all of them before turning off the lights.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Main area lights off late at night if no motion\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_2\n    to:\n      - \"off\"\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\n  - trigger: state\n    entity_id:\n      - binary_sensor.alarm_panel_pro_zone_1\n    to:\n      - \"off\"\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\nconditions:\n  - condition: time\n    after: \"23:55:00\"\n    before: \"06:00:00\"\n  - condition: state\n    entity_id: light.kitchen_sink_pendants\n    state:\n      - \"on\"\n  - condition: and\n    conditions:\n      - condition: state\n        entity_id: binary_sensor.alarm_panel_pro_zone_1\n        state:\n          - \"off\"\n        for:\n          hours: 0\n          minutes: 1\n          seconds: 0\n      - condition: state\n        entity_id: binary_sensor.alarm_panel_pro_zone_2\n        state:\n          - \"off\"\n        for:\n          hours: 0\n          minutes: 1\n          seconds: 0\nactions:\n  - action: scene.turn_on\n    metadata: {}\n    target:\n      entity_id: scene.living_room_off_ha\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<p>Then for turning on the porch lights or the permanent holiday lights, I&#8217;m just using the sunset and turning them off at 10pm. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: \"Permanent house lights on \"\ndescription: \"\"\ntriggers:\n  - trigger: sun\n    event: sunset\n    offset: 0\nconditions: &#91;]\nactions:\n  - action: light.turn_on\n    metadata: {}\n    target:\n      entity_id: light.jellyfish_lights_house_lights\n    data:\n      effect: Custom\/White\n      brightness_pct: 100\nmode: single<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Permanent house lights off\ndescription: \"\"\ntriggers:\n  - trigger: time\n    at: \"22:00:00\"\nconditions: &#91;]\nactions:\n  - action: light.turn_off\n    metadata: {}\n    target:\n      entity_id: light.jellyfish_lights_house_lights\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Automatic_animal_feeders\">Automatic animal feeders<\/span><\/h2>\n\n\n\n<p>To automatically feed Annie, it&#8217;s pretty simple. Just have the automation press the button to let food out, and then it waits for 15 seconds and presses it again. I&#8217;m using the <a href=\"https:\/\/amzn.to\/4hSKDYZ\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Aqara pet feeder<\/a> and the serving size can be changed for the device. It uses Zigbee and I can configure all of that in Home Assistant. <\/p>\n\n\n\n<p>The automation skips the actions if we are on vacation so it&#8217;s not just overflowing with food, and it can be manually triggered by the kids. I made a button on the dashboard that if Annie is really hungry and they want to feed her a little bit early, they can press the button to run the automation. Once it runs it can&#8217;t run again for that meal so she doesn&#8217;t get overfed. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Feed Annie dog food every day\ndescription: \"\"\ntriggers:\n  - trigger: time\n    at: \"07:00:00\"\n    enabled: true\n  - trigger: time\n    at: \"16:45:00\"\nconditions:\n  - condition: state\n    entity_id: input_boolean.vacation_mode\n    state:\n      - \"off\"\n  - condition: template\n    value_template: &gt;-\n      {{ (as_timestamp((now() - timedelta( hours = 2 )))) &gt;\n      (state_attr('input_datetime.annie_last_fed', 'timestamp')) }}\nactions:\n  - data:\n      datetime: \"{{ now().strftime('%Y-%m-%d %H:%M:%S') }}\"\n    target:\n      entity_id:\n        - input_datetime.annie_last_fed\n    action: input_datetime.set_datetime\n  - action: timer.finish\n    metadata: {}\n    target:\n      entity_id: timer.manually_feed_annie_timer\n    data: {}\n  - action: script.speaker_announce_message\n    metadata: {}\n    data:\n      volume: 60\n      message: I am going to feed Annie\n  - action: button.press\n    metadata: {}\n    target:\n      entity_id: button.aqara_annie_pet_feeder_feed\n    data: {}\n    enabled: true\n  - delay:\n      hours: 0\n      minutes: 0\n      seconds: 15\n      milliseconds: 0\n    enabled: true\n  - action: button.press\n    metadata: {}\n    target:\n      entity_id: button.aqara_annie_pet_feeder_feed\n    data: {}\n    enabled: true\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Annie_is_thirsty\">Annie is thirsty<\/span><\/h2>\n\n\n\n<p>To know if Annie&#8217;s water bowl is dry, the logic is just the opposite of if there&#8217;s a water leak. If the <a href=\"https:\/\/www.amazon.com\/dp\/B07D39MSZS?ref=t_ac_spc_accepted_tile&amp;linkCode=tr1&amp;tag=dihoau-20&amp;linkId=B07D39MSZS_1787354162046\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">water leak sensor<\/a> is dry then it shows up on the dashboard so we can see it quickly. <\/p>\n\n\n\n<p>But at least once a day during dinnertime, it also checks to see if her bowl is dry. If so, it announces to the family she needs water. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Annie has an empty water bowl annoucement\ndescription: \"\"\ntriggers:\n  - trigger: time\n    at: \"17:15:00\"\nconditions:\n  - condition: state\n    entity_id: binary_sensor.aqara_water_leak_annie\n    state:\n      - \"off\"\nactions:\n  - action: script.speaker_announce_message\n    metadata: {}\n    data:\n      volume: 80\n      message: Hey family. Ruff ruff. Annie has an empty water bowl.\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Powerful_dinner_button\">Powerful dinner button<\/span><\/h2>\n\n\n\n<p>Just before 5pm a big button appears on the family dashboard that says &#8220;Dinner Time.&#8221; When pressed, it announces to the kids that dinner is ready and if my phone is not nearby, it also sends me a notification. <\/p>\n\n\n\n<p>Then it also turns off the Apple TV, plays classical music, and starts a 30 minute timer. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Dinner is ready annoucement\nsequence:\n  - action: input_boolean.turn_off\n    metadata: {}\n    data: {}\n    target:\n      entity_id: input_boolean.dinner_is_ready\n  - action: script.speaker_announce_message\n    metadata: {}\n    data:\n      volume: 90\n      message: Dinner is ready\n  - choose:\n      - conditions:\n          - condition: not\n            conditions:\n              - condition: state\n                entity_id: sensor.hvac_reed_area\n                state: hvac_kitchen\n        sequence:\n          - data:\n              title: Dinner is ready\n              message: go eat!\n            action: script.android_notification_basic\n      - conditions:\n          - condition: not\n            conditions:\n              - condition: state\n                entity_id: sensor.hvac_aly_area\n                state: hvac_kitchen\n        sequence:\n          - data:\n              title: Dinner is ready\n              message: go eat!\n            action: script.alys_phone_push_notification\n    alias: Notify Reed or Aly's phone\n  - action: script.mass_music_kitchen_dynamic\n    metadata: {}\n    data:\n      playlist_name: Reeds Classical\n      shuffle_mode: true\n      volume: 35\n  - action: remote.send_command\n    metadata: {}\n    target:\n      entity_id: remote.family_room_tv\n    data:\n      num_repeats: 1\n      delay_secs: 0.4\n      hold_secs: 0\n      command: suspend\n  - action: timer.start\n    metadata: {}\n    target:\n      entity_id: timer.dinner_timer\n    data:\n      duration:\n        hours: 0\n        minutes: 30\n        seconds: 0\ndescription: \"\"<\/code><\/pre>\n\n\n\n<h2><span id=\"Defeating_kids_with_technology\">Defeating kids with technology<\/span><\/h2>\n\n\n\n<p>If the kids or anyone tries to start using the TV during the dinner timer, it physically kills power to the TV. Nice!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Family room tv turns off at dinner time smart outlet\ndescription: \"\"\ntriggers:\n  - trigger: numeric_state\n    entity_id:\n      - sensor.third_reality_dual_plug_power\n    for:\n      hours: 0\n      minutes: 0\n      seconds: 3\n    above: 20\nconditions:\n  - condition: state\n    entity_id: input_boolean.tv_lights_lock\n    state:\n      - \"off\"\n  - condition: state\n    entity_id: input_boolean.babysitter_override\n    state:\n      - \"off\"\n  - condition: state\n    entity_id: timer.dinner_timer\n    state:\n      - active\nactions:\n  - action: switch.turn_off\n    metadata: {}\n    target:\n      entity_id: switch.third_reality_dual_plug_switch\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Auto_arming_cameras\">Auto arming cameras<\/span><\/h2>\n\n\n\n<p>The easiest way to know when to receive security camera notifications is when the alarm is active. I take a snapshot of the camera that detected someone, and then send myself a critical notification with that snapshot attached. <\/p>\n\n\n\n<p>Here&#8217;s the automation to take the snapshot if the camera detects a person when the alarm is armed. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Outdoor cameras detect someone while armed\ndescription: \"\"\ntriggers:\n  - entity_id:\n      - binary_sensor.g4_bullet_backyard_person_detected\n    to: \"on\"\n    trigger: state\n    id: g4bullet_detected\n    enabled: true\n  - trigger: state\n    entity_id:\n      - binary_sensor.elite_floodlight_camera_person_2\n    to: \"on\"\n    id: floodlight_detected\n    enabled: true\n  - trigger: state\n    entity_id:\n      - binary_sensor.duo_2_poe_person\n    to: \"on\"\n    enabled: true\n    id: duo2_detected\n  - trigger: event\n    event_type: driveway_line_crossed_event\n    id: driveway_camera\n    enabled: true\n  - trigger: state\n    entity_id:\n      - binary_sensor.reolink_lumus_pro_person\n    to:\n      - \"on\"\n    id: back_patio_camera\nconditions:\n  - condition: or\n    conditions:\n      - condition: state\n        entity_id: alarm_control_panel.alarmo\n        state:\n          - armed_home\n      - condition: state\n        entity_id: alarm_control_panel.alarmo\n        state:\n          - armed_away\n      - condition: state\n        entity_id: input_boolean.vacation_mode\n        state: \"on\"\nactions:\n  - choose:\n      - conditions:\n          - condition: trigger\n            id:\n              - g4bullet_detected\n        sequence:\n          - target:\n              entity_id:\n                - camera.g4_bullet_backyard_high\n            data:\n              filename: \/config\/www\/tmp\/camera_snap.jpg\n            action: camera.snapshot\n      - conditions:\n          - condition: trigger\n            id:\n              - floodlight_detected\n        sequence:\n          - target:\n              entity_id:\n                - camera.elite_floodlight_camera_fluent_2\n            data:\n              filename: \/config\/www\/tmp\/camera_snap.jpg\n            action: camera.snapshot\n      - conditions:\n          - condition: trigger\n            id:\n              - duo2_detected\n        sequence:\n          - target:\n              entity_id:\n                - camera.duo_2_poe_fluent\n            data:\n              filename: \/config\/www\/tmp\/camera_snap.jpg\n            action: camera.snapshot\n      - conditions:\n          - condition: trigger\n            id:\n              - driveway_camera\n        sequence:\n          - target:\n              entity_id:\n                - camera.g4_pro_driveway_high\n            data:\n              filename: \/config\/www\/tmp\/camera_snap.jpg\n            action: camera.snapshot\n      - conditions:\n          - condition: trigger\n            id:\n              - back_patio_camera\n        sequence:\n          - target:\n              entity_id: camera.reolink_lumus_pro_fluent\n            data:\n              filename: \/config\/www\/tmp\/camera_snap.jpg\n            action: camera.snapshot\n  - data:\n      title: Someone is spotted\n      message: Person detected on this camera\n    action: script.notification_critical_camera_image\nmode: single<\/code><\/pre>\n\n\n\n<p>Here is the script to send myself a critical notification with the image. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>action: notify.mobile_app_iphone_pro_15\ndata:\n  title: \" {{title}} \"\n  message: \" {{message}} \"\n  data:\n    push:\n      sound:\n        name: default\n        critical: 1\n        volume: 1\n    attachment:\n      content-type: jpeg\n      url: https:\/\/home_assistant_url\/local\/tmp\/camera_snap.jpg\nenabled: true<\/code><\/pre>\n\n\n\n<h2><span id=\"Water_leak_fail_safe\">Water leak fail safe<\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/www.hydrificwater.com\/SMARTHOME use code SMARTHOME for 10% discount\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Droplet<\/a> has been an easy way to detect if water is flowing in my house or not. They have notifications in the app to alert you if it thinks there is something to check out. This works okay, but I prefer to alert myself if I&#8217;m away and water is running. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Droplet detects water leaking while we are away\ndescription: \"\"\ntriggers:\n  - trigger: numeric_state\n    entity_id:\n      - sensor.droplet_flow_rate_2\n    for:\n      hours: 0\n      minutes: 1\n      seconds: 0\n    above: 1\nconditions:\n  - condition: state\n    entity_id: alarm_control_panel.alarmo\n    state:\n      - armed_away\nactions:\n  - action: script.android_notification_critical\n    data:\n      title: Possible Water leak!\n      message: Droplet says water is running\n    enabled: true\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Fan_fully_automated\">Fan fully automated<\/span><\/h2>\n\n\n\n<p>My family really missed the fan being automated, so this was one of the first automations I set up here. Mainly because it&#8217;s so hot here in Arizona!<\/p>\n\n\n\n<p>One automation turns on the fan when the HVAC system starts running. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Turn on Dreo Family Room Fan when HVAC is cooling\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - climate.kitchen_homekit_2\n    to: cooling\n    attribute: hvac_action\nconditions:\n  - condition: time\n    after: \"07:00:00\"\n    before: \"23:00:00\"\nactions:\n  - action: script.turn_on_dreo_family_room_fan\n    metadata: {}\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<p>Then another turns off the fan if the mmWave sensor doesn&#8217;t detect anyone, or if the HVAC system turns off and no one is in the room. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Turn off Family room Dreo fan if no one is around\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - climate.kitchen_homekit_2\n    to:\n      - idle\n    attribute: hvac_action\n  - trigger: state\n    entity_id:\n      - binary_sensor.apollo_r_pro_1_370ba8_ld2450_presence\n    to:\n      - \"off\"\n    for:\n      hours: 0\n      minutes: 5\n      seconds: 0\nconditions:\n  - condition: state\n    entity_id: binary_sensor.apollo_r_pro_1_370ba8_ld2450_presence\n    state: &#91;]\n    for:\n      hours: 0\n      minutes: 2\n      seconds: 0\nactions:\n  - action: script.turn_off_dreo_family_room_fan\n    metadata: {}\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Improved_doorbell\">Improved doorbell<\/span><\/h2>\n\n\n\n<p>Cutting down on doorbell notifications is a MUST! The best way to do that is to only be notified if the front door has been closed for 30 seconds or a minute. Also, only have the automation run the actions once every 30 seconds so it&#8217;s not a nonstop stream of notifications.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Front Doorbell Motion\ndescription: \"\"\ntriggers:\n  - entity_id:\n      - binary_sensor.g4_doorbell_2_person_detected\n    to: \"on\"\n    trigger: state\nconditions:\n  - condition: template\n    value_template: &gt;-\n      {# run once every 30 sec #}\n\n      {% if states.automation.front_doorbell_motion.attributes.last_triggered is\n      not none %}\n        {% if as_timestamp(now()) | int - as_timestamp(states.automation.front_doorbell_motion.attributes.last_triggered) \n        | int &gt; (1 * 30) %} true {% else %} false\n        {% endif %}\n      {% else %}\n        true\n      {% endif %}\n  - condition: state\n    entity_id: input_boolean.doorbell_notification_override\n    state: \"off\"\n  - condition: or\n    conditions:\n      - condition: state\n        entity_id: binary_sensor.alarm_panel_pro_zone_4\n        state:\n          - \"off\"\n        for:\n          hours: 0\n          minutes: 0\n          seconds: 30\n        enabled: true\n      - condition: state\n        entity_id: input_boolean.babysitter_override\n        state:\n          - \"on\"\n    enabled: true\nactions:\n  - target:\n      entity_id:\n        - camera.g4_doorbell_2_high\n    data:\n      filename: \/config\/www\/tmp\/doorbell_snap.jpg\n    action: camera.snapshot\n  - data:\n      title: Someone is at the front door\n      message: the doorbell detected a person\n    action: script.android_notification_doorbell_image\n  - data:\n      title: Someone is at the front door\n      message: the doorbell detected a person\n    action: script.aly_notification_doorbell_image\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Keeping_it_clean\">Keeping it clean<\/span><\/h2>\n\n\n\n<p>Usually our robot vacuum runs automatically when everyone leaves the house. Because I don&#8217;t see it clean, I forget to empty the dirty water tank, which gets gross fast!<\/p>\n\n\n\n<p>I set up the automation that if the robot starts drying the mop and I&#8217;m home, then I notify myself to empty the water tank. If I&#8217;m not home but I get home later, then I get the notification when I walk in the door so I don&#8217;t forget.  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Notify me to clean vacuum dirty mop tank when I get home\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.saros_20_dock_mop_drying\n    to:\n      - \"on\"\n  - trigger: state\n    entity_id:\n      - sensor.reed_current_location_phone\n    to:\n      - home\nconditions:\n  - condition: state\n    entity_id: input_boolean.robot_vac_ran_while_away\n    state: \"on\"\n  - condition: state\n    entity_id: sensor.reed_current_location_phone\n    state: home\n  - type: is_running\n    condition: device\n    device_id: dock_device_id_number\n    entity_id: dock_drying_entity_id_number\n    domain: binary_sensor\nactions:\n  - data:\n      title: Need to clean robot vacuum dock\n      message: do it now\n    action: script.android_notification_basic\n  - action: input_boolean.turn_off\n    metadata: {}\n    target:\n      entity_id: input_boolean.robot_vac_ran_while_away\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"mmWave_motion_lights\">mmWave motion lights<\/span><\/h2>\n\n\n\n<p>The automation for turning on the lights when we walk into the den is pretty simple. There is just two crucial conditions. <\/p>\n\n\n\n<p>One that checks to make sure the Denon receiver is <strong>not<\/strong> on. That way the lights don&#8217;t turn on in the middle of a movie if the kids are walking around. <\/p>\n\n\n\n<p>The other condition makes sure the lights are off for at least 10 seconds. That way the lights don&#8217;t turn back on after turning them off from the wall switch. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Den lights on\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.aqara_fp1e_mud_room\n    to:\n      - \"on\"\nconditions:\n  - condition: device\n    device_id: denon_device_id_number\n    domain: media_player\n    entity_id: media_player.denon_avr_x4700h\n    type: is_off\n  - condition: state\n    entity_id: light.govee_floor_lamp_3\n    state:\n      - \"off\"\n    for:\n      hours: 0\n      minutes: 0\n      seconds: 10\nactions:\n  - choose:\n      - conditions:\n          - condition: time\n            after: \"07:00:00\"\n            before: \"17:00:00\"\n        sequence:\n          - action: switch.turn_on\n            metadata: {}\n            target:\n              entity_id: switch.den_light_switch\n            data: {}\n            enabled: true\n  - action: script.turn_on\n    metadata: {}\n    target:\n      entity_id: script.den_lights_on\n    data: {}\n    enabled: true\n  - action: scene.turn_on\n    metadata: {}\n    data: {}\n    target:\n      entity_id: scene.den_neutral_white\n    enabled: true\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Projector_and_thermostat\">Projector and thermostat<\/span><\/h2>\n\n\n\n<p>When we watch a movie in the den, we set the thermostat to &#8220;Home.&#8221; This comfort setting in <a href=\"https:\/\/amzn.to\/45GRugM\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Ecobee<\/a> uses the sensor in the den to average out the temperature, so it never gets too hot in there. It gets triggered when the Denon receiver turns on. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Den theater room on turn on AC\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - media_player.denon_avr_x4700h\n    to:\n      - \"on\"\nactions:\n  - device_id: thermostat_device_id_number\n    domain: select\n    entity_id: thermostat_entity_id_number\n    type: select_option\n    option: home\n    enabled: true\nmode: single\n<\/code><\/pre>\n\n\n\n<h2><span id=\"Buttons_and_auto_lights\">Buttons and auto lights<\/span><\/h2>\n\n\n\n<p>The <a href=\"https:\/\/www.amazon.com\/dp\/B0GTYFJZLC?ref=t_ac_view_request_product_image&amp;campaignId=amzn1.campaign.ORI31FVELFW2&amp;linkCode=tr1&amp;tag=dihoau-20&amp;linkId=amzn1.campaign.ORI31FVELFW2_1787354365367\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Sofabaton X2<\/a> integrates extremely well with Home Assistant. It can send MQTT requests when a button on the remote is pressed to trigger the automation. <\/p>\n\n\n\n<p>Here is an example of a button press that turns off all of the lights.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Sofabaton MQTT kitchen lights off\ndescription: \"\"\ntriggers:\n  - trigger: mqtt\n    options:\n      topic: FC12345679\/up\n      payload: \"{\\\"device_id\\\":5,\\\"key_id\\\":1}\"\nconditions: &#91;]\nactions:\n  - action: scene.turn_on\n    metadata: {}\n    data: {}\n    target:\n      entity_id:\n        - scene.living_room_off_ha\n  - action: switch.turn_off\n    metadata: {}\n    target:\n      entity_id: switch.den_light_switch\n    data: {}\n  - action: script.turn_on\n    metadata: {}\n    target:\n      entity_id: script.den_lights_off\n    data: {}\nmode: single<\/code><\/pre>\n\n\n\n<p>They give you the MQTT topic in the Sofabaton app when making the button presses, so it&#8217;s not as difficult as it looks. <\/p>\n\n\n\n<h2><span id=\"Actionable_notification\">Actionable notification<\/span><\/h2>\n\n\n\n<p>If our robot vacuum hasn&#8217;t run in 3 days and I&#8217;m home, I get an actionable notification at 9pm. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Robot vacuum notification prompt\ndescription: \"\"\ntriggers:\n  - at: \"21:00:00\"\n    trigger: time\nconditions:\n  - condition: template\n    value_template: &gt;-\n      {{ (as_timestamp((now() - timedelta( days = 3 )))) &gt;\n      (state_attr('input_datetime.robot_vacuum_running_input', 'timestamp')) }}\n  - condition: state\n    entity_id: sensor.reed_current_location_phone\n    state: home\nactions:\n  - data:\n      title: Robot vac has not run lately\n      message: Hold down on this notification to see button to start\n      replyevent: robotvacstartaction\n      buttontitle: Start Vacuum\n    action: script.alys_phone_push_notification_actionable\n  - data:\n      title: Robot vac has not run lately\n      message: Hold down on this notification to see button to start\n      replyevent: robotvacstartaction\n      buttontitle: Start Vacuum\n    action: script.actionable_notification_android\nmode: single<\/code><\/pre>\n\n\n\n<p>If I click on the notification action button, it sends an event &#8220;robotvacstartaction&#8221; that can trigger another notification. This one sets the robot to quiet mode, only vacuum not mop, and to only go in certain rooms.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Robot vacuum clean action from event\ndescription: \"\"\ntriggers:\n  - event_type: mobile_app_notification_action\n    event_data:\n      action: robotvacstartaction\n    trigger: event\nconditions: &#91;]\nactions:\n  - action: vacuum.set_fan_speed\n    metadata: {}\n    target:\n      entity_id: vacuum.saros_20\n    data:\n      fan_speed: quiet\n  - action: vacuum.clean_area\n    metadata: {}\n    target:\n      entity_id: vacuum.saros_20\n    data:\n      cleaning_area_id:\n        - kitchen\n        - living_room\n        - dining_room\n  - action: select.select_option\n    metadata: {}\n    target:\n      entity_id: select.saros_20_mop_intensity\n    data:\n      option: \"off\"\n  - action: vacuum.start\n    metadata: {}\n    data: {}\n    target:\n      device_id: vacuum_device_id_number\nmode: single<\/code><\/pre>\n\n\n\n<h2><span id=\"Crashing_in_bed\">Crashing in bed<\/span><\/h2>\n\n\n\n<p>Laying down in bed late at night closes up everything in the house. It announces on the speaker nearby that it ran if the lights are on in the bedroom. If the lights are off, then it just flashes my bed lamp on and off to let me know that it ran so I don&#8217;t wake up my wife.<\/p>\n\n\n\n<p>I&#8217;m using the <a href=\"https:\/\/asc.com\/products\/slumbertek?sca_ref=8601086.6f9ktniJkBAxXC5O&amp;utm_source=reed-kleinman&amp;utm_medium=uppromote&amp;utm_campaign=reed-kleinman\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">SlumberTek<\/a> bed sensor for this.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias: Lay down in bed and close everything up at night\ndescription: \"\"\ntriggers:\n  - trigger: state\n    entity_id:\n      - binary_sensor.slumbertek_v2_bed_sensor\n    to:\n      - \"on\"\n    for:\n      hours: 0\n      minutes: 0\n      seconds: 15\nconditions:\n  - condition: time\n    before: \"23:55:00\"\n    after: \"23:00:00\"\n  - condition: template\n    value_template: &gt;\n      {% if states.automation.locked_up_night_recap.last_triggered is not none\n      %}\n                {% if as_timestamp(now()) | int - as_timestamp(states.automation.locked_up_night_recap.attributes.last_triggered) | int &gt; 21600 %} true {% else %} false\n                {% endif %}\n              {% else %}\n              false\n              {% endif %}\n  - condition: state\n    entity_id: input_boolean.babysitter_override\n    state: \"off\"\nactions:\n  - device_id: alarm_device_id_number\n    domain: alarm_control_panel\n    entity_id: alarm_entity_id_number\n    type: arm_home\n  - action: automation.trigger\n    metadata: {}\n    data:\n      skip_condition: true\n    target:\n      entity_id: automation.good_night\n  - choose:\n      - conditions:\n          - condition: state\n            entity_id: light.bed_light_group\n            state:\n              - \"on\"\n        sequence:\n          - action: input_number.set_value\n            metadata: {}\n            target:\n              entity_id: input_number.bedroom_volume\n            data:\n              value: &gt;-\n                {{\n                state_attr('media_player.home_assistant_voice_bedroom_media_player',\n                'volume_level') }}\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: 0.2\n            target:\n              entity_id:\n                - media_player.home_assistant_voice_bedroom_media_player\n            enabled: true\n          - action: tts.speak\n            metadata: {}\n            data:\n              cache: true\n              media_player_entity_id: media_player.home_assistant_voice_bedroom_media_player\n              message: The alarm has been armed and everything turned off in the house.\n            target:\n              entity_id: tts.piper\n            enabled: true\n          - delay:\n              hours: 0\n              minutes: 0\n              seconds: 3\n              milliseconds: 0\n            enabled: true\n          - action: media_player.volume_set\n            metadata: {}\n            data:\n              volume_level: \"{{states('input_number.bedroom_volume')}}\"\n            target:\n              entity_id: media_player.home_assistant_voice_09911e_media_player\n            enabled: true\n    default:\n      - action: light.turn_on\n        metadata: {}\n        target:\n          entity_id: light.hue_bed_right\n        data: {}\n      - delay:\n          hours: 0\n          minutes: 0\n          seconds: 1\n          milliseconds: 0\n      - action: light.turn_off\n        metadata: {}\n        target:\n          entity_id: light.hue_bed_right\n        data: {}\nmode: single<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>Thank you for checking out my automations! If you want to show your support, please consider <a href=\"https:\/\/www.youtube.com\/c\/SmartHomeSolver?sub_confirmation=1\" target=\"_blank\" rel=\"noreferrer noopener\">subscribing on YouTube<\/a> so you don&#8217;t miss future content.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you just watched the video at this link, thanks so much for supporting the channel! Here is the code for every automation and script mentioned in the video. Affiliate Disclosure: This page has affiliate links, which earn us commission <a href=\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\"><\/p>\n<div class=\"read-more\">\n<p>Read more &#8250;<\/p>\n<\/div>\n<p><!-- end of .read-more --><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automating My New Smart Home! | Smart Home Solver<\/title>\n<link rel=\"canonical\" href=\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automating My New Smart Home! | Smart Home Solver\" \/>\n<meta property=\"og:description\" content=\"If you just watched the video at this link, thanks so much for supporting the channel! Here is the code for every automation and script mentioned in the video. Affiliate Disclosure: This page has affiliate links, which earn us commission Read more &#8250;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\" \/>\n<meta property=\"og:site_name\" content=\"Smart Home Solver\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-22T17:52:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-22T18:35:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"21 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/#website\",\"url\":\"https:\/\/smarthomesolver.com\/reviews\/\",\"name\":\"Smart Home Solver\",\"description\":\"Smart Home Solver\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/smarthomesolver.com\/reviews\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/#webpage\",\"url\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\",\"name\":\"Automating My New Smart Home! | Smart Home Solver\",\"isPartOf\":{\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/#website\"},\"datePublished\":\"2026-08-22T17:52:24+00:00\",\"dateModified\":\"2026-08-22T18:35:36+00:00\",\"author\":{\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/#\/schema\/person\/d7a94f002e37d00d768cdbc8bf0afaa3\"},\"breadcrumb\":{\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/\",\"url\":\"https:\/\/smarthomesolver.com\/reviews\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\",\"url\":\"https:\/\/smarthomesolver.com\/reviews\/automating-my-new-house\/\",\"name\":\"Automating My New Smart Home!\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/#\/schema\/person\/d7a94f002e37d00d768cdbc8bf0afaa3\",\"name\":\"Reed Kleinman\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/smarthomesolver.com\/reviews\/#personlogo\",\"inLanguage\":\"en\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f0b2a85b039ba9da5470ee40dc5ab57a?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f0b2a85b039ba9da5470ee40dc5ab57a?s=96&r=g\",\"caption\":\"Reed Kleinman\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/posts\/13362"}],"collection":[{"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/comments?post=13362"}],"version-history":[{"count":44,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/posts\/13362\/revisions"}],"predecessor-version":[{"id":13419,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/posts\/13362\/revisions\/13419"}],"wp:attachment":[{"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/media?parent=13362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/categories?post=13362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smarthomesolver.com\/reviews\/wp-json\/wp\/v2\/tags?post=13362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}