[ { "id": "a4fe52e0-99f0-449d-9bc7-50378d9d6df8", "result": { "structured": "TRIGGER: When sun [sun.sun] elevation is below -3.0 OR when household group [group.household] changes state to home. CONDITIONS: The current time is before evening ambiance end [input_datetime.evening_ambiance_end] AND sun [sun.sun] elevation is below -3.0 AND household group [group.household] is home. ACTIONS: Run evening ambiance script [script.evening_ambiance] AND turn on backyard string light [light.backyard_string], front porch light [light.front_porch], side porch sconce [light.side_porch_sconce], and shed outdoor light [light.shed_outdoor].", "natural_language": { "trigger": "The automation can be triggered in two ways: when the sun's elevation falls below -3 degrees, indicating it is well below the horizon, or when the household group changes its state to 'home'.", "conditions": "For the automation to run, all of the following must be true: the current time must be before the time set in the evening ambiance end input, the sun's elevation must be below -3 degrees, and the household group must be in the 'home' state.", "action": "The automation runs the evening ambiance script and turns on a set of outdoor lights, including the backyard string light, the front porch light, the side porch sconce, and the shed outdoor light, all in parallel." }, "human_like": "Turns on the evening ambiance and outdoor lights when it's night time and someone is home.", "complexity": "medium" } }, { "id": "2c48ecbc-7b65-4938-af37-dcda12952465", "result": { "structured": "TRIGGER: When chris person [person.chris] OR karine person [person.karine] OR guests group [group.guests] changes state to home. CONDITIONS: sun [sun.sun] elevation is below -3.0. ACTIONS: Turn on front porch light [light.front_porch] AND side porch sconce [light.side_porch_sconce].", "natural_language": { "trigger": "When either Chris, Karine, or any guest arrives home, as indicated by their person or group state changing to 'home'.", "conditions": "The sun must be below the horizon, specifically with an elevation lower than -3.0 degrees, indicating it is dark outside.", "action": "Turns on the front porch light and the side porch sconce to illuminate the entryways." }, "human_like": "Turns on the porch lights when someone arrives home after dark.", "complexity": "low" } }, { "id": "a109af89-0910-45b2-9a0e-11d3ae43ec7c", "result": { "structured": "TRIGGER: When outdoor lights [light.outdoor_lights] turn on AND remain on for 5 minutes OR When the time reaches the value set in evening ambiance end [input_datetime.evening_ambiance_end] OR When guest mode [binary_sensor.guest_mode] turns off. CONDITIONS: guest mode [binary_sensor.guest_mode] is off AND outdoor lights [light.outdoor_lights] is on AND remains on for 5 minutes AND the current time is after the value set in evening ambiance end [input_datetime.evening_ambiance_end] AND before 15:00:00. ACTIONS: Turn off outdoor lights [light.outdoor_lights].", "natural_language": { "trigger": "The automation can start when the outdoor lights [light.outdoor_lights] have been on for five minutes, when the scheduled time for 'evening ambiance end' [input_datetime.evening_ambiance_end] arrives, or when the guest mode [binary_sensor.guest_mode] is deactivated.", "conditions": "For the action to run, the guest mode [binary_sensor.guest_mode] must be off, the outdoor lights [light.outdoor_lights] must be on and have been on for five minutes, and the current time must be after the scheduled 'evening ambiance end' [input_datetime.evening_ambiance_end] but before 3:00 PM.", "action": "Turns off the outdoor lights [light.outdoor_lights]." }, "human_like": "Automatically turns off the outdoor lights after the evening ambiance period ends, but only if guest mode is not active.", "complexity": "medium" } }, { "id": "36afcfe6-d475-447c-b089-d33aec62a774", "result": { "structured": "TRIGGER: When Home Assistant starts OR When audio broadcast todo [todo.audio_broadcast] changes state OR When household group [group.household] is home for 120 seconds OR When the time matches input_datetime.broadcast_weekday_start [input_datetime.broadcast_weekday_start] OR input_datetime.broadcast_weekend_start [input_datetime.broadcast_weekend_start]. CONDITIONS: (audio broadcast todo [todo.audio_broadcast] has a numeric value above 0) AND (household group [group.household] is home AND remains so for 120 seconds) AND ((time is after broadcast weekday start [input_datetime.broadcast_weekday_start] AND before broadcast weekday end [input_datetime.broadcast_weekday_end] AND weekday is Monday, Tuesday, Wednesday, or Thursday) OR (time is after broadcast weekday start [input_datetime.broadcast_weekday_start] AND before broadcast weekend end [input_datetime.broadcast_weekend_end] AND weekday is Friday) OR (time is after broadcast weekend start [input_datetime.broadcast_weekend_start] AND before broadcast weekend end [input_datetime.broadcast_weekend_end] AND weekday is Saturday) OR (time is after broadcast weekend start [input_datetime.broadcast_weekend_start] AND before broadcast weekday end [input_datetime.broadcast_weekday_end] AND weekday is Sunday)). ACTIONS: Get items with status 'needs_action' from audio broadcast todo [todo.audio_broadcast] and store in variable 'broadcast_items'. Set variable 'broadcast_item' to the first item in the list. Run broadcast notification script [script.broadcast_notification] with the message from the item's description or summary. Wait until broadcast notification script [script.broadcast_notification] is off. Run manage broadcast queue script [script.manage_broadcast_queue] with action 'pop' and tag from the item's summary.", "natural_language": { "trigger": "The automation can be triggered in several ways: when Home Assistant first starts, whenever the audio broadcast todo [todo.audio_broadcast] list changes, when the household group [group.household] has been at home for two minutes, or at specific scheduled times defined by the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekend start [input_datetime.broadcast_weekend_start].", "conditions": "For the automation to proceed, several conditions must be met. First, the audio broadcast todo [todo.audio_broadcast] must have at least one pending item (its numeric state is above zero). Second, the household group [group.household] must be home and have been in that state for at least two minutes. Finally, the current time must fall within a permitted broadcast window. This window depends on the day of the week: on weekdays (Monday to Thursday), it's between the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekday end [input_datetime.broadcast_weekday_end]; on Friday, it's between the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekend end [input_datetime.broadcast_weekend_end]; on Saturday, it's between the broadcast weekend start [input_datetime.broadcast_weekend_start] and broadcast weekend end [input_datetime.broadcast_weekend_end]; and on Sunday, it's between the broadcast weekend start [input_datetime.broadcast_weekend_start] and broadcast weekday end [input_datetime.broadcast_weekday_end].", "action": "The automation fetches the list of pending items from the audio broadcast todo [todo.audio_broadcast]. It takes the first item from this list and uses its description (or summary if no description exists) as a message. It then triggers the broadcast notification script [script.broadcast_notification] to announce this message. After waiting for that script to finish, it calls the manage broadcast queue script [script.manage_broadcast_queue] to remove the processed item from the queue." }, "human_like": "This automation announces pending audio notifications from a to-do list, but only when someone is home and during allowed time windows based on the day of the week.", "complexity": "high" } }, { "id": "e50d2e13-9c88-4b02-89af-e863a7d763d5", "result": { "structured": "TRIGGER: When chris remote entity select [input_select.chris_remote_entity] changes state. CONDITIONS: None. ACTIONS: Wait for 300 seconds (5 minutes), then set chris remote entity select [input_select.chris_remote_entity] to the option 'light.bedside_chris'.", "natural_language": { "trigger": "Whenever the selected option in the chris remote entity select [input_select.chris_remote_entity] changes.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "After a delay of 5 minutes, the automation resets the chris remote entity select [input_select.chris_remote_entity] back to the default option, which is 'light.bedside_chris'." }, "human_like": "Resets the selection for Chris's remote control back to his bedside light after five minutes.", "complexity": "low" } }, { "id": "ff872bdf-a0af-4e30-9aa3-449d7ff4367b", "result": { "structured": "TRIGGER: When chris remote color select [input_select.chris_remote_color] changes state. CONDITIONS: None. ACTIONS: Turn on the light entity whose ID is the current state of chris remote entity select [input_select.chris_remote_entity] and set its color to the new state value of chris remote color select [input_select.chris_remote_color].", "natural_language": { "trigger": "Whenever the selected value in the chris remote color select [input_select.chris_remote_color] changes.", "conditions": "There are no conditions that must be met.", "action": "Turns on the light that is currently selected in the chris remote entity select [input_select.chris_remote_entity] and sets its color to the newly selected color from the chris remote color select [input_select.chris_remote_color]." }, "human_like": "Applies the selected color from Chris' remote to the currently selected light.", "complexity": "low" } }, { "id": "abf7b09f-0e7b-4b0c-b6ef-85631f25c63e", "result": { "structured": "TRIGGER: When a ZHA event from device with IEEE address 00:0d:6f:ff:fe:61:69:25 occurs. CONDITIONS: None. ACTIONS: Execute actions defined by the blueprint 'zha/bedside_remote.yaml', which will map remote button presses to actions based on the selected entity from chris remote entity select [input_select.chris_remote_entity] and the selected color from chris remote color select [input_select.chris_remote_color].", "natural_language": { "trigger": "When a button is pressed on Chris' ZHA remote control device (identified by its IEEE address 00:0d:6f:ff:fe:61:69:25).", "conditions": "There are no specific conditions; the automation runs whenever the remote button is pressed.", "action": "Uses a predefined blueprint to map the specific button press to an action. The action performed depends on the current selections in the 'chris remote entity select' [input_select.chris_remote_entity] and 'chris remote color select' [input_select.chris_remote_color] dropdowns." }, "human_like": "Maps the buttons on Chris' bedside remote to control different lights and scenes based on pre-selected options.", "complexity": "medium" } }, { "id": "1ff64444-5414-49d5-b314-b0a3a82075c5", "result": { "structured": "TRIGGER: When default theme select [input_select.default_theme] changes state OR use alarm theme [binary_sensor.use_alarm_theme] changes state OR winter credit peak event [binary_sensor.winter_credit_peak_event] changes state. CONDITIONS: None. ACTIONS: Set the frontend theme based on a template. The template logic: If use dark theme [binary_sensor.use_dark_theme] is on, set mode to 'dark', otherwise 'light'. If use alarm theme [binary_sensor.use_alarm_theme] is on, set theme to 'ios-{mode}-mode-red'. Else, if winter credit peak event [binary_sensor.winter_credit_peak_event] is on, set theme to 'ios-{mode}-mode-light-blue'. Otherwise, set theme to the current state of default theme select [input_select.default_theme], defaulting to 'default'.", "natural_language": { "trigger": "The automation triggers whenever the default theme select [input_select.default_theme], the use alarm theme [binary_sensor.use_alarm_theme], or the winter credit peak event [binary_sensor.winter_credit_peak_event] changes its state.", "conditions": "There are no conditions that must be met for the action to run.", "action": "It updates the frontend theme. The theme is chosen based on the current states of several sensors. First, it determines if the dark mode is active by checking use dark theme [binary_sensor.use_dark_theme]. If the alarm theme is active (use alarm theme [binary_sensor.use_alarm_theme]), it applies a red-themed variant. If not, but a winter credit peak event is active (winter credit peak event [binary_sensor.winter_credit_peak_event]), it applies a light blue-themed variant. If neither special condition is true, it uses the theme selected in default theme select [input_select.default_theme], falling back to a default theme if needed." }, "human_like": "Dynamically changes the Home Assistant interface theme based on alarm status, energy events, and user preferences.", "complexity": "medium" } }, { "id": "a87a26c7-b1d4-4080-842b-4ee8a6e5b6f5", "result": { "structured": "TRIGGER: When any of the following entities change state: use dark theme [binary_sensor.use_dark_theme], automatic night theme [input_boolean.automatic_night_theme], day theme select [input_select.day_theme], or night theme select [input_select.night_theme] OR When Home Assistant starts. CONDITIONS: automatic night theme [input_boolean.automatic_night_theme] is on. ACTIONS: Set the option of default theme select [input_select.default_theme] to the value of night theme select [input_select.night_theme] if use dark theme [binary_sensor.use_dark_theme] is on, otherwise set it to the value of day theme select [input_select.day_theme]; if the resulting value is unavailable, use 'default'.", "natural_language": { "trigger": "The automation triggers either when Home Assistant starts, or when there is a change in the state of any of the following: the use dark theme sensor [binary_sensor.use_dark_theme], the automatic night theme toggle [input_boolean.automatic_night_theme], the day theme selector [input_select.day_theme], or the night theme selector [input_select.night_theme].", "conditions": "The automation only proceeds if the automatic night theme toggle [input_boolean.automatic_night_theme] is switched on.", "action": "It updates the default theme selector [input_select.default_theme] based on the current theme mode. If the use dark theme sensor [binary_sensor.use_dark_theme] indicates dark mode is active, it selects the option from the night theme selector [input_select.night_theme]. Otherwise, it selects the option from the day theme selector [input_select.day_theme]. If the selected value is unavailable, it falls back to 'default'." }, "human_like": "Automatically updates the system's default theme based on the time of day (day or night) when the automatic theme switching feature is enabled.", "complexity": "medium" } }, { "id": "54655af9-ddc7-491d-9200-41aaaddbb21a", "result": { "structured": "TRIGGER: When household group [group.household] changes from home to not_home AND remains not_home for 30 minutes. CONDITIONS: guest mode [binary_sensor.guest_mode] is off. ACTIONS: Execute everything off script [script.everything_off] AND lock kitchen door lock [lock.kitchen_door].", "natural_language": { "trigger": "When all members of the household group [group.household] leave home and remain away for at least 30 minutes.", "conditions": "If guest mode [binary_sensor.guest_mode] is not active.", "action": "Runs the 'everything off' script [script.everything_off] and locks the kitchen door lock [lock.kitchen_door]." }, "human_like": "Turns everything off and locks the kitchen door when everyone has left the house for 30 minutes and guest mode is not on.", "complexity": "low" } }, { "id": "77087f1e-f617-4fa6-8520-22793f3c1bfb", "result": { "structured": "TRIGGER: When use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] changes to off. CONDITIONS: None. ACTIONS: Call service ground floor heat pump use internal temperature [esphome.ground_floor_heat_pump_use_internal_temperature].", "natural_language": { "trigger": "When the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is turned off.", "conditions": "There are no conditions that must be met.", "action": "Switch the heat pump to use its internal temperature probe by calling the service ground floor heat pump use internal temperature [esphome.ground_floor_heat_pump_use_internal_temperature]." }, "human_like": "Switches the heat pump to use its internal temperature sensor when the virtual probe setting is turned off.", "complexity": "low" } }, { "id": "4c8cf214-db8a-4d0e-b039-f502dc5e21ed", "result": { "structured": "TRIGGER: When Home Assistant starts OR When use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] turns on OR When heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] remains in any state other than 'unavailable' for 5 seconds. CONDITIONS: use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is on AND heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] is NOT unavailable. ACTIONS: Call service ground floor heat pump set remote temperature [esphome.ground_floor_heat_pump_set_remote_temperature] with the temperature value from heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] rounded to the nearest whole number.", "natural_language": { "trigger": "The automation triggers in three situations: when Home Assistant first starts up, when the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is switched on, or when the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] remains in a valid state (not 'unavailable') for at least five seconds.", "conditions": "The automation only proceeds if the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is currently turned on, and the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] is not reporting as 'unavailable'.", "action": "It sends a command to the ground floor heat pump set remote temperature [esphome.ground_floor_heat_pump_set_remote_temperature] service, providing the current temperature reading from the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] as a rounded whole number." }, "human_like": "This automation synchronizes the heat pump's external temperature probe with the thermostat reading whenever the virtual probe feature is enabled.", "complexity": "medium" } }, { "id": "6ea34d47-1181-4c94-9ab6-43fe4c0b42cc", "result": { "structured": "TRIGGER: When latest home assistant version [sensor.latest_home_assistant_version] changes to any state that is NOT 'unknown' AND NOT 'unavailable'. CONDITIONS: The new state of latest home assistant version [sensor.latest_home_assistant_version] is a higher version number than the current state of current home assistant version [sensor.current_home_assistant_version]. ACTIONS: Execute python script notify [python_script.notify] with a persistent notification to the admin target, tagged 'hass_version', containing a title 'Home Assistant Update', a message 'Home Assistant {{ trigger.to_state.state }} is available.', and a URL to the corresponding GitHub release.", "natural_language": { "trigger": "Whenever the latest home assistant version [sensor.latest_home_assistant_version] sensor updates to a valid state, excluding 'unknown' or 'unavailable'.", "conditions": "The newly reported version for the latest home assistant version [sensor.latest_home_assistant_version] must be greater than the version currently reported by the current home assistant version [sensor.current_home_assistant_version] sensor.", "action": "Sends a persistent notification to the admin user via the python script notify [python_script.notify] script. The notification is tagged for version updates, includes a title and message announcing the new version's availability, and provides a direct link to its GitHub release page." }, "human_like": "Sends a notification when a newer version of Home Assistant is detected as available.", "complexity": "medium" } }, { "id": "0c595e90-4186-4152-b80e-41a491749dde", "result": { "structured": "TRIGGER: When a persistent_notification.create service call occurs with notification_id 'http-login'. CONDITIONS: None. ACTIONS: Execute python script notify [python_script.notify] with push_target 'admin', title set to the notification title from the trigger, and message set to the notification message from the trigger.", "natural_language": { "trigger": "When the Home Assistant system attempts to create a persistent notification with the specific ID 'http-login'.", "conditions": "There are no additional conditions that must be met.", "action": "It runs the python script notify [python_script.notify] to send a push notification to the 'admin' target, using the title and message from the original notification." }, "human_like": "Sends an admin push notification whenever a failed login attempt is detected by the system.", "complexity": "low" } }, { "id": "673d5462-19e1-4a63-ad41-75c0690dcaa2", "result": { "structured": "TRIGGER: When Home Assistant starts OR When Home Assistant shuts down. CONDITIONS: None. ACTIONS: Send a notification to admin with message 'Home-Assistant has {{ action }}.'", "natural_language": { "trigger": "When Home Assistant starts up or when Home Assistant shuts down.", "conditions": "There are no conditions.", "action": "Sends a notification to the admin user with a message stating whether Home Assistant has started up or shut down." }, "human_like": "Sends a notification when Home Assistant starts or shuts down.", "complexity": "low" } }, { "id": "c7929657-8241-478e-9a89-d2562c720120", "result": { "structured": "TRIGGER: When jinja2 custom templates updated event [event.jinja2_custom_templates_updated] changes state. CONDITIONS: None. ACTIONS: Execute the service homeassistant.reload_custom_templates.", "natural_language": { "trigger": "When the jinja2 custom templates updated event [event.jinja2_custom_templates_updated] is triggered.", "conditions": "There are no conditions that need to be met.", "action": "Reloads all custom Jinja2 templates in Home Assistant." }, "human_like": "Automatically reloads custom Jinja2 templates whenever they are updated.", "complexity": "low" } }, { "id": "2c7d9807-9f19-4b55-b944-17005a27e6c0", "result": { "structured": "TRIGGER: When presence armed [binary_sensor.presence_armed] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with the message 'Intrusion alarm armed.' AND execute the script initialize alarm states script [script.initialize_alarm_states].", "natural_language": { "trigger": "When the presence armed [binary_sensor.presence_armed] sensor changes from off to on.", "conditions": "There are no conditions for this automation.", "action": "Sends a notification to the intrusion log notify [notify.intrusion_log] stating 'Intrusion alarm armed.' and then runs the initialize alarm states script [script.initialize_alarm_states]." }, "human_like": "Arms the home intrusion alarm system, logs the event, and initializes the alarm's internal states.", "complexity": "low" } }, { "id": "249f90de-0afe-4735-9b17-a59f035ec4f3", "result": { "structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes from on to off. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a message containing the current state of presence armed id text [input_text.presence_armed_id] followed by the text 'Intrusion cleared.'.", "natural_language": { "trigger": "When the intrusion activity [binary_sensor.intrusion_activity] sensor changes from an active (on) to an inactive (off) state.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "Sends a notification to the intrusion log notify [notify.intrusion_log] service. The notification message includes the current value of the presence armed id text [input_text.presence_armed_id] field, followed by the text 'Intrusion cleared.'." }, "human_like": "Logs a message to the intrusion log whenever an intrusion alert is cleared.", "complexity": "low" } }, { "id": "64ef04c6-d94c-4d70-a116-d50ab1b295a5", "result": { "structured": "TRIGGER: When presence armed [binary_sensor.presence_armed] changes from on to off. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a message containing the current state of presence armed id text [input_text.presence_armed_id].", "natural_language": { "trigger": "When the presence armed [binary_sensor.presence_armed] sensor changes from being armed (on) to disarmed (off).", "conditions": "There are no conditions that must be met for the action to run.", "action": "Sends a notification to the intrusion log notify [notify.intrusion_log] service. The message includes the current text value stored in presence armed id text [input_text.presence_armed_id] to indicate which alarm was disarmed." }, "human_like": "Logs a message to the intrusion log whenever the presence alarm is disarmed.", "complexity": "low" } }, { "id": "1bbacc2c-2ce3-428a-bfdd-6d9480be23b8", "result": { "structured": "TRIGGER: When current door sensor [sensor.current_door] OR current motion sensor [sensor.current_motion] OR current window sensor [sensor.current_window] changes state. OR When any of the 58 listed light, fan, or switch button press events occur (e.g., hallway spots dimmer on pressed [event.hallway_spots_dimmer_on_pressed], kitchen track light dimmer off pressed [event.kitchen_track_light_dimmer_off_pressed], etc.). CONDITIONS: presence armed [binary_sensor.presence_armed] is on AND the template condition '{{ entity_id != '''' }}' evaluates to true (ensuring the entity_id variable is not empty). ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a formatted message containing the presence armed id text [input_text.presence_armed_id] and the triggering entity's device name and ID. AND Add an item to the intrusion record todo [todo.intrusion_record] list containing the triggering entity_id.", "natural_language": { "trigger": "This automation triggers in two ways. First, when any of the three activity sensors (current door sensor [sensor.current_door], current motion sensor [sensor.current_motion], or current window sensor [sensor.current_window]) changes its state. Second, when any of 58 specific button press events for lights, fans, or switches throughout the house is detected, such as a hallway dimmer being turned on or a bathroom fan switch being pressed.", "conditions": "For the automation to proceed, the security system must be armed, meaning the presence armed [binary_sensor.presence_armed] sensor must be in the 'on' state. Additionally, the automation checks that the internal variable 'entity_id' (which captures the source of the trigger) is not empty.", "action": "When triggered and conditions are met, the automation performs two actions. It sends an alert notification to the intrusion log notify [notify.intrusion_log] service, formatting a message that includes a system ID from presence armed id text [input_text.presence_armed_id] and details about the triggering device. It also logs the event by adding the entity ID of the triggering source as a new item in the intrusion record todo [todo.intrusion_record] list." }, "human_like": "Logs potential intrusion activity by sending an alert and creating a record whenever sensors detect movement, doors/windows opening, or lights/fans being operated while the security system is armed.", "complexity": "medium" } }, { "id": "6943625e-997b-4650-b608-acb10bf3ca57", "result": { "structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes state. CONDITIONS: silence intrusion alarm [input_boolean.silence_intrusion_alarm] is off. ACTIONS: Execute the 'alarm/start_alarm.yaml' blueprint with inputs: name='Intrusion', group=binary_sensor.intrusion_activity, tag={{ states('input_text.presence_armed_id') }}, actions list containing 'silence_{{ states('input_text.presence_armed_id') }}' titled 'Silence' and 'reset_{{ states('input_text.presence_armed_id') }}' titled 'Reset'.", "natural_language": { "trigger": "When the intrusion activity sensor [binary_sensor.intrusion_activity] detects a change in state.", "conditions": "The automation only runs if the silence intrusion alarm switch [input_boolean.silence_intrusion_alarm] is turned off.", "action": "It starts an alarm procedure using a predefined blueprint. The alarm is named 'Intrusion', monitors the group of sensors defined by intrusion activity [binary_sensor.intrusion_activity], and uses the current value of the presence armed id text [input_text.presence_armed_id] as a tag. The alarm provides two actions: one to silence it and one to reset it, with their specific names also derived from the presence armed id text." }, "human_like": "Starts an intrusion alarm when suspicious activity is detected, unless the alarm has been manually silenced.", "complexity": "medium" } }, { "id": "8e77137f-af56-48bd-b82c-7e5bb0ab4ff8", "result": { "structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes state. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is off. ACTIONS: Clear alarm notifications for the alarm group 'Intrusion' using the tag value from presence armed id text [input_text.presence_armed_id].", "natural_language": { "trigger": "Whenever the state of the intrusion activity [binary_sensor.intrusion_activity] sensor changes.", "conditions": "The intrusion activity [binary_sensor.intrusion_activity] must be off, indicating no active intrusion.", "action": "Clears all active alarm notifications associated with the 'Intrusion' alarm group, using a unique tag derived from the current value of the presence armed id text [input_text.presence_armed_id] input." }, "human_like": "Clears the intrusion alarm notifications when the system detects that the intrusion is no longer active.", "complexity": "low" } }, { "id": "65383759-a03c-4c81-9965-7154e83626fd", "result": { "structured": "TRIGGER: When an HTML5 notification is clicked OR a mobile app notification action occurs. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is on AND the notification action equals 'silence_' concatenated with the current value of presence armed id text [input_text.presence_armed_id]. ACTIONS: Turn on silence intrusion alarm [input_boolean.silence_intrusion_alarm] AND send a notification to intrusion log notify [notify.intrusion_log] with the message: (current value of presence armed id text [input_text.presence_armed_id]) Intrusion alarm silenced.", "natural_language": { "trigger": "When a user clicks on an HTML5 notification or performs a mobile app notification action.", "conditions": "The intrusion activity [binary_sensor.intrusion_activity] sensor must be active (on), and the notification action that triggered the automation must exactly match the text 'silence_' followed by the current value stored in the presence armed id text [input_text.presence_armed_id] field.", "action": "It turns on the silence intrusion alarm [input_boolean.silence_intrusion_alarm] input boolean and sends a log message to the intrusion log notify [notify.intrusion_log] service, which includes the current armed ID value." }, "human_like": "Silences the intrusion alarm audio when a specific notification action is clicked while an intrusion is active, and logs the event.", "complexity": "medium" } }, { "id": "f1d67201-6a81-4214-a528-8a5afff919c0", "result": { "structured": "TRIGGER: When an HTML5 notification is clicked OR a mobile app notification action occurs. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is on AND the trigger event's action data equals the string 'reset_' concatenated with the current value of presence armed id text [input_text.presence_armed_id]. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with the message: (current value of presence armed id text [input_text.presence_armed_id]) Intrusion alarm cleared manually. AND run the initialize alarm states script [script.initialize_alarm_states].", "natural_language": { "trigger": "When a user clicks on an HTML5 notification or performs a specific action from a mobile app notification.", "conditions": "The intrusion activity [binary_sensor.intrusion_activity] must be in the 'on' state, and the action taken in the notification must match a specific pattern: the word 'reset_' followed by the current value stored in the presence armed id text [input_text.presence_armed_id] field.", "action": "Sends a log message to the intrusion log notify [notify.intrusion_log] service, stating that the intrusion alarm has been manually cleared, and then runs the initialize alarm states script [script.initialize_alarm_states] to reset the alarm system." }, "human_like": "Clears the intrusion alarm and resets the system when a specific notification action is confirmed.", "complexity": "medium" } }, { "id": "686ea290-b4ee-4220-ad02-e233771483b7", "result": { "structured": "TRIGGER: When karine remote entity select [input_select.karine_remote_entity] changes state. CONDITIONS: None. ACTIONS: Wait 300 seconds (5 minutes) AND then set karine remote entity select [input_select.karine_remote_entity] to the option 'light.bedside_karine'.", "natural_language": { "trigger": "Whenever the karine remote entity select [input_select.karine_remote_entity] changes its selected value.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "After a delay of 5 minutes, the automation resets the karine remote entity select [input_select.karine_remote_entity] back to the default option, which is 'light.bedside_karine'." }, "human_like": "Resets Karine's remote control selection back to her bedside light after five minutes.", "complexity": "low" } }, { "id": "3ff136d3-b8cb-4016-bf56-c9b0a4b65e09", "result": { "structured": "TRIGGER: When karine remote color select [input_select.karine_remote_color] changes state. CONDITIONS: None. ACTIONS: Turn on the light entity whose ID is the current state of karine remote entity select [input_select.karine_remote_entity] and set its color to the new state value of karine remote color select [input_select.karine_remote_color].", "natural_language": { "trigger": "Whenever the value of the karine remote color select [input_select.karine_remote_color] changes.", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the specific light that is currently selected in the karine remote entity select [input_select.karine_remote_entity] and sets its color to the newly selected value from the karine remote color select [input_select.karine_remote_color]." }, "human_like": "Applies the selected color to the chosen light whenever the color selection is changed.", "complexity": "low" } }, { "id": "b214c9a3-937d-4391-9915-98185b7cb152", "result": { "structured": "TRIGGER: When a ZHA remote button event occurs from device with IEEE address 14:b4:57:ff:fe:7c:23:0e. CONDITIONS: None. ACTIONS: Execute actions defined by the blueprint 'zha/bedside_remote.yaml', which uses the selected entity from karine remote entity select [input_select.karine_remote_entity] and the selected color from karine remote color select [input_select.karine_remote_color] to map button presses to device/light control.", "natural_language": { "trigger": "When Karine's ZHA remote (device IEEE 14:b4:57:ff:fe:7c:23:0e) sends a button press event.", "conditions": "There are no additional conditions; the automation runs whenever the remote button is pressed.", "action": "Uses the predefined blueprint 'zha/bedside_remote.yaml' to map the button press to an action. The specific action depends on the current selections in the karine remote entity select [input_select.karine_remote_entity] (which chooses the target device) and the karine remote color select [input_select.karine_remote_color] (which may choose a color or effect)." }, "human_like": "Maps the buttons on Karine's bedside remote to control lights or other devices based on user selections.", "complexity": "medium" } }, { "id": "automation.notify_jammed_lock", "result": { "structured": "TRIGGER: When kitchen door lock jammed [binary_sensor.kitchen_door_lock_jammed] changes state to on OR off. CONDITIONS: None. ACTIONS: If the new state is on, then send a high-priority, persistent audio notification to the household with the title 'The kitchen door lock is jammed.' using python script notify [python_script.notify]. If the new state is off, then dismiss the persistent notification with the same tag using python script notify [python_script.notify].", "natural_language": { "trigger": "Whenever the kitchen door lock jammed [binary_sensor.kitchen_door_lock_jammed] sensor changes its state, either to 'on' (jammed) or 'off' (not jammed).", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "If the sensor reports that the lock is jammed (state 'on'), the system sends a high-priority, persistent audio notification to all household members, alerting them that the kitchen door lock is jammed. If the sensor reports that the lock is no longer jammed (state 'off'), the system dismisses the previously sent persistent notification." }, "human_like": "Sends and clears a household alert when the kitchen door lock becomes jammed or unjammed.", "complexity": "low" } }, { "id": "f614d09a-6589-4e21-9f86-205edea10917", "result": { "structured": "TRIGGER: When master bed occupied chris [binary_sensor.master_bed_occupied_chris] OR master bed occupied karine [binary_sensor.master_bed_occupied_karine] changes to on. CONDITIONS: (master bed occupied both [binary_sensor.master_bed_occupied_both] is off) AND (karine person [person.karine] OR chris person [person.chris] is home). ACTIONS: If conditions are met, run bedtime script [script.bedtime]; otherwise, lock kitchen door lock [lock.kitchen_door] AND run everything off script [script.everything_off].", "natural_language": { "trigger": "When either the master bed occupied chris [binary_sensor.master_bed_occupied_chris] or the master bed occupied karine [binary_sensor.master_bed_occupied_karine] sensor detects that the bed is occupied (turns on).", "conditions": "If the master bed occupied both [binary_sensor.master_bed_occupied_both] sensor is off, indicating the bed is not already marked as occupied by both, and at least one of the people, karine person [person.karine] or chris person [person.chris], is at home.", "action": "If the conditions are satisfied, the bedtime script [script.bedtime] is executed. If not, the kitchen door lock [lock.kitchen_door] is locked and the everything off script [script.everything_off] is run." }, "human_like": "When someone gets into bed, it either starts the bedtime routine if the bed isn't already marked as occupied by both and someone is home, or otherwise locks the kitchen door and turns everything off.", "complexity": "medium" } }, { "id": "650fdbf6-2f22-4bd0-b430-c8a1c29d3217", "result": { "structured": "TRIGGER: When master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] is pressed twice OR When master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] is pressed twice OR When master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] is pressed three times OR When master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] is pressed three times. CONDITIONS: None. ACTIONS: If trigger is master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] pressed twice, turn on bedside chris light [light.bedside_chris]. If trigger is master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] pressed twice, turn off bedside chris light [light.bedside_chris]. If trigger is master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] pressed three times, turn on master bedroom lights [light.master_bedroom_lights]. If trigger is master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] pressed three times, turn off master bedroom lights [light.master_bedroom_lights].", "natural_language": { "trigger": "When the 'on' button on the master bedroom spots dimmer is pressed twice, when the 'off' button on the master bedroom spots dimmer is pressed twice, when the 'on' button is pressed three times, or when the 'off' button is pressed three times.", "conditions": "There are no additional conditions that must be met.", "action": "Depending on which button press sequence is detected: a double-press of the 'on' button turns on the bedside chris light [light.bedside_chris]; a double-press of the 'off' button turns it off. A triple-press of the 'on' button turns on all the master bedroom lights [light.master_bedroom_lights]; a triple-press of the 'off' button turns them off." }, "human_like": "Controls specific lights in the master bedroom using double and triple presses of the dimmer switch's on and off buttons.", "complexity": "medium" } }, { "id": "7d71c23b-929c-4553-a150-2f990fc7ff87", "result": { "structured": "TRIGGER: When master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] is pressed OR When master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] is pressed. CONDITIONS: None. ACTIONS: If the trigger is master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] pressed twice, turn on bedside karine light [light.bedside_karine]. If the trigger is master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] pressed twice, turn off bedside karine light [light.bedside_karine]. If the trigger is master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] pressed three times, turn on master bedroom lights [light.master_bedroom_lights]. If the trigger is master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] pressed three times, turn off master bedroom lights [light.master_bedroom_lights].", "natural_language": { "trigger": "When the 'on' button on the master bedroom sconces dimmer [event.master_bedroom_sconces_dimmer_on_pressed] is pressed, or when the 'off' button on the master bedroom sconces dimmer [event.master_bedroom_sconces_dimmer_off_pressed] is pressed.", "conditions": "There are no conditions that must be met for the automation to run.", "action": "Depending on the specific button press pattern, different lights are controlled. A double press of the 'on' button turns on the bedside karine light [light.bedside_karine]. A double press of the 'off' button turns off the bedside karine light [light.bedside_karine]. A triple press of the 'on' button turns on all the master bedroom lights [light.master_bedroom_lights]. A triple press of the 'off' button turns off all the master bedroom lights [light.master_bedroom_lights]." }, "human_like": "Controls specific lights in the master bedroom using double and triple presses of the sconce dimmer's on and off buttons.", "complexity": "medium" } }, { "id": "0a607c5b-9dc1-4e86-b46c-f5dd6ebcc542", "result": { "structured": "TRIGGER: When master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] is pressed twice quickly OR When master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] is pressed twice quickly. CONDITIONS: None. ACTIONS: If triggered by master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] double-press, turn on master bedroom sconces [light.master_bedroom_sconces] AND master bedroom spots [light.master_bedroom_spots]. If triggered by master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] double-press, turn off master bedroom lights [light.master_bedroom_lights].", "natural_language": { "trigger": "When the master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] is double-pressed, or when the master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] is double-pressed.", "conditions": "There are no additional conditions; the automation runs immediately upon the trigger.", "action": "If the double-press is on the 'on' paddle, it turns on the master bedroom sconces [light.master_bedroom_sconces] and the master bedroom spots [light.master_bedroom_spots]. If the double-press is on the 'off' paddle, it turns off the master bedroom lights [light.master_bedroom_lights]." }, "human_like": "Uses double-presses on the closet light switch to control specific lighting scenes in the master bedroom, turning on sconces and spots or turning off all lights.", "complexity": "medium" } }, { "id": "a8b031db-937a-4b34-bd64-a30f51900ed0", "result": { "structured": "TRIGGER: When the temperature attribute of any of the following climate entities changes and remains stable for 5 seconds: heat pump climate [climate.heat_pump], basement hallway thermostat [climate.basement_hallway_thermostat], dining room thermostat [climate.dining_room_thermostat], guest bedroom thermostat [climate.guest_bedroom_thermostat], living room thermostat [climate.living_room_thermostat], lounge thermostat [climate.lounge_thermostat], master bedroom thermostat [climate.master_bedroom_thermostat], office thermostat [climate.office_thermostat], studio thermostat [climate.studio_thermostat]. CONDITIONS: The trigger condition is a template that evaluates to true if either the climate entity's preset_mode attribute is not 'none' OR the calculated target_setpoint (based on the related input_select and input_number entities) does not equal the current temperature setpoint (trigger.to_state.attributes.temperature). ACTIONS: Set the corresponding input_select entity (derived from the trigger entity name) to the 'Manual' option.", "natural_language": { "trigger": "When the temperature setting of any of the listed climate thermostats changes and stays at the new value for 5 seconds.", "conditions": "If the thermostat is currently using a preset mode (i.e., its preset_mode is not 'none'), or if the calculated target temperature (based on the selected auto mode and its corresponding setpoint) differs from the thermostat's current temperature setpoint.", "action": "Switch the corresponding room's mode selector to 'Manual' to indicate manual control is active." }, "human_like": "Automatically switches a thermostat's control mode to 'Manual' when its temperature setting differs from the calculated target or when a preset is active, ensuring the system reflects manual overrides.", "complexity": "medium" } }, { "id": "0954c8e4-8429-4777-a8ba-4a1c99853ea2", "result": { "structured": "TRIGGER: When any of the following state changes occur: heat pump mode select [input_select.heat_pump_mode] OR basement hallway thermostat mode select [input_select.basement_hallway_thermostat_mode] OR dining room thermostat mode select [input_select.dining_room_thermostat_mode] OR guest bedroom thermostat mode select [input_select.guest_bedroom_thermostat_mode] OR living room thermostat mode select [input_select.living_room_thermostat_mode] OR lounge thermostat mode select [input_select.lounge_thermostat_mode] OR master bedroom thermostat mode select [input_select.master_bedroom_thermostat_mode] OR office thermostat mode select [input_select.office_thermostat_mode] OR studio thermostat mode select [input_select.studio_thermostat_mode] changes to 'Auto'. OR When any of the following state changes occur: heat pump auto mode select [input_select.heat_pump_auto_mode] OR basement hallway thermostat auto mode select [input_select.basement_hallway_thermostat_auto_mode] OR dining room thermostat auto mode select [input_select.dining_room_thermostat_auto_mode] OR guest bedroom thermostat auto mode select [input_select.guest_bedroom_thermostat_auto_mode] OR living room thermostat auto mode select [input_select.living_room_thermostat_auto_mode] OR lounge thermostat auto mode select [input_select.lounge_thermostat_auto_mode] OR master bedroom thermostat auto mode select [input_select.master_bedroom_thermostat_auto_mode] OR office thermostat auto mode select [input_select.office_thermostat_auto_mode] OR studio thermostat auto mode select [input_select.studio_thermostat_auto_mode] changes to 'null'. OR When any of the following state changes occur: heat pump comfort setpoint [input_number.heat_pump_comfort_setpoint] OR basement hallway thermostat comfort setpoint [input_number.basement_hallway_thermostat_comfort_setpoint] OR dining room thermostat comfort setpoint [input_number.dining_room_thermostat_comfort_setpoint] OR guest bedroom thermostat comfort setpoint [input_number.guest_bedroom_thermostat_comfort_setpoint] OR living room thermostat comfort setpoint [input_number.living_room_thermostat_comfort_setpoint] OR lounge thermostat comfort setpoint [input_number.lounge_thermostat_comfort_setpoint] OR master bedroom thermostat comfort setpoint [input_number.master_bedroom_thermostat_comfort_setpoint] OR office thermostat comfort setpoint [input_number.office_thermostat_comfort_setpoint] OR studio thermostat comfort setpoint [input_number.studio_thermostat_comfort_setpoint] changes to 'null' AND remains for 5 seconds. OR When any of the following state changes occur: heat pump eco setpoint [input_number.heat_pump_eco_setpoint] OR basement hallway thermostat eco setpoint [input_number.basement_hallway_thermostat_eco_setpoint] OR dining room thermostat eco setpoint [input_number.dining_room_thermostat_eco_setpoint] OR guest bedroom thermostat eco setpoint [input_number.guest_bedroom_thermostat_eco_setpoint] OR living room thermostat eco setpoint [input_number.living_room_thermostat_eco_setpoint] OR lounge thermostat eco setpoint [input_number.lounge_thermostat_eco_setpoint] OR master bedroom thermostat eco setpoint [input_number.master_bedroom_thermostat_eco_setpoint] OR office thermostat eco setpoint [input_number.office_thermostat_eco_setpoint] OR studio thermostat eco setpoint [input_number.studio_thermostat_eco_setpoint] changes to 'null' AND remains for 5 seconds. CONDITIONS: (The mode for the specific zone derived from the triggering entity is 'Auto') AND (The target temperature setpoint for that zone, based on its current auto mode, is different from its current climate temperature). ACTIONS: Set the temperature for the corresponding climate entity (derived from the triggering entity's name) to the calculated target setpoint.", "natural_language": { "trigger": "This automation triggers when any of several related input selects or input numbers change state. Specifically, it runs if a thermostat mode select for any zone (like the heat pump, basement hallway, dining room, etc.) is set to 'Auto'. It also triggers if the corresponding auto mode select for any zone changes to 'null'. Additionally, it triggers if a comfort setpoint number for any zone changes to 'null' and stays that way for 5 seconds, or if an eco setpoint number for any zone changes to 'null' and stays that way for 5 seconds.", "conditions": "For the automation to proceed, the system checks conditions based on the specific zone that triggered it. It first determines the zone's name from the triggering entity. It then checks that the zone's overall mode is set to 'Auto'. Finally, it calculates the target temperature based on the zone's selected auto mode (like 'Comfort' or 'Eco') and compares it to the zone's current climate temperature. The action only runs if these two temperatures are different.", "action": "The automation updates the temperature setpoint for the climate entity corresponding to the triggered zone. It sets the temperature to the newly calculated target value." }, "human_like": "This automation automatically updates the temperature for any climate zone when its mode or setpoint settings are changed, ensuring the actual thermostat matches the desired comfort or eco setting.", "complexity": "high" } }, { "id": "330d72c1-954a-4d1e-a3e1-47412d134dc5", "result": { "structured": "TRIGGER: When any climate entity (referenced by *id001) changes state to any value that is NOT 'Auto'. CONDITIONS: None. ACTIONS: Start the timer entity whose ID is derived by replacing '_mode' with '_manual_mode_reset' in the triggering entity's object_id, with a duration equal to the current value of climate manual mode timer [input_datetime.climate_manual_mode_timer].", "natural_language": { "trigger": "When the mode of any climate entity changes to any setting other than 'Auto'.", "conditions": "There are no conditions for this automation.", "action": "Starts a timer. The specific timer to start is determined by taking the name of the climate entity that triggered the automation, replacing the text '_mode' with '_manual_mode_reset' in its internal identifier. This timer is set to run for the duration currently stored in the climate manual mode timer [input_datetime.climate_manual_mode_timer]." }, "human_like": "Starts a countdown to automatically revert a climate system back to 'Auto' mode after it has been manually overridden.", "complexity": "medium" } }, { "id": "5c387ec4-b18b-4ec6-9174-8d844e7e88e9", "result": { "structured": "TRIGGER: When any of the following timers changes from active to idle: heat pump manual mode reset timer [timer.heat_pump_manual_mode_reset], basement hallway thermostat manual mode reset timer [timer.basement_hallway_thermostat_manual_mode_reset], dining room thermostat manual mode reset timer [timer.dining_room_thermostat_manual_mode_reset], guest bedroom thermostat manual mode reset timer [timer.guest_bedroom_thermostat_manual_mode_reset], living room thermostat manual mode reset timer [timer.living_room_thermostat_manual_mode_reset], lounge thermostat manual mode reset timer [timer.lounge_thermostat_manual_mode_reset], master bedroom thermostat manual mode reset timer [timer.master_bedroom_thermostat_manual_mode_reset], office thermostat manual mode reset timer [timer.office_thermostat_manual_mode_reset], studio thermostat manual mode reset timer [timer.studio_thermostat_manual_mode_reset]. CONDITIONS: climate scheduling enabled [input_boolean.climate_scheduling_enabled] is on. ACTIONS: Set the corresponding input_select entity (derived from the triggering timer's object_id by replacing '_manual_mode_reset' with '_mode') to the option 'Auto'.", "natural_language": { "trigger": "When any of the listed manual mode reset timers finishes its countdown, transitioning from an active state to an idle state.", "conditions": "The climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch must be turned on.", "action": "For the specific timer that triggered, the automation calculates the corresponding climate mode selector by removing the '_manual_mode_reset' suffix from the timer's name and adding '_mode', then sets that selector to the 'Auto' option." }, "human_like": "Automatically returns a thermostat's mode to 'Auto' when its manual override timer expires, provided climate scheduling is enabled.", "complexity": "medium" } }, { "id": "2e58b9fa-1838-4c38-8b4a-d38b43c76105", "result": { "structured": "TRIGGER: When Home Assistant starts OR When climate scheduling enabled [input_boolean.climate_scheduling_enabled] changes from off to on. CONDITIONS: None. ACTIONS: For each item in the list referenced by *id002, if the state of the current item is 'idle', then set the corresponding input select entity (derived from the current item's object_id by replacing '_manual_mode_reset' with '_mode') to the 'Auto' option.", "natural_language": { "trigger": "The automation runs either when Home Assistant first starts up, or when the climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch is turned on.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "For each climate-related timer or entity in a predefined list, if it is currently in an 'idle' state, the automation changes its associated climate mode selector to 'Auto'. This effectively resets any manual climate mode back to the automatic, managed setting." }, "human_like": "Resets all climate zones back to automatic mode when scheduling is enabled or at system startup, provided their manual timers have expired.", "complexity": "medium" } }, { "id": "88b9562c-a5bf-4be6-bd7b-d3dfe109a816", "result": { "structured": "TRIGGER: When any of the following battery sensors reports a value below 0 after applying a template: basement bathroom multisensor battery [sensor.basement_bathroom_multisensor_battery], basement smoke co detector battery [sensor.basement_smoke_co_detector_battery], chris bedside remote battery [sensor.chris_bedside_remote_battery], drake battery [sensor.drake_battery], guest bedroom window sensor battery [sensor.guest_bedroom_window_sensor_battery], karine bedside remote battery [sensor.karine_bedside_remote_battery], kitchen door lock battery [sensor.kitchen_door_lock_battery], kitchen door sensor battery [sensor.kitchen_door_sensor_battery], kitchen sink leak sensor battery [sensor.kitchen_sink_leak_sensor_battery], living room door sensor battery [sensor.living_room_door_sensor_battery], living room remote battery [sensor.living_room_remote_battery], living room smoke co detector battery [sensor.living_room_smoke_co_detector_battery], laundry motion sensor battery [sensor.laundry_motion_sensor_battery], lounge airthings battery [sensor.lounge_airthings_battery], lounge window sensor battery [sensor.lounge_window_sensor_battery], main bathroom multisensor battery [sensor.main_bathroom_multisensor_battery], maitre doyle battery [sensor.maitre_doyle_battery], snicket battery [sensor.snicket_battery], spidy battery [sensor.spidy_battery], studio window sensor battery [sensor.studio_window_sensor_battery], ups battery status [sensor.ups_battery_status], viny battery [sensor.viny_battery], water heater leak sensor battery [sensor.water_heater_leak_sensor_battery], workshop motion sensor battery [sensor.workshop_motion_sensor_battery]. The template value is 100 if the sensor state is 'unknown' or 'unavailable', otherwise it is the integer state minus the entity's battery_warning_level attribute (default 25) minus 1. CONDITIONS: None. ACTIONS: Call python script notify [python_script.notify] with persistent notification, push target 'household', a tag based on the triggering entity, a title to replace the triggering entity's name, and a message suggesting a search for the battery type on Amazon if defined.", "natural_language": { "trigger": "When any of the listed battery sensors, such as the basement bathroom multisensor battery [sensor.basement_bathroom_multisensor_battery], basement smoke co detector battery [sensor.basement_smoke_co_detector_battery], and others, reports a value that falls below zero after a calculation. The calculation treats 'unknown' or 'unavailable' states as 100, otherwise it subtracts a device-specific warning level (default 25) and 1 from the reported battery level.", "conditions": "There are no additional conditions; the automation runs whenever the trigger condition is met.", "action": "Sends a persistent notification to the 'household' push target, tagged uniquely for the specific device. The notification includes a title prompting replacement of the low-battery device and, if the device has a defined battery type, a message suggesting a search for that battery type on Amazon with a direct link." }, "human_like": "Sends a notification to the household when any monitored device's battery level falls below its warning threshold, helping to ensure timely battery replacements.", "complexity": "medium" } }, { "id": "994eba31-84de-4769-8958-f24b5346111a", "result": { "structured": "TRIGGER: When the problem attribute changes for drake plant [plant.drake] OR spidy plant [plant.spidy] OR viny plant [plant.viny]. CONDITIONS: None. ACTIONS: If the filtered list of issues is empty, send a persistent notification to the household via python script notify [python_script.notify] with audio enabled only if broadcast plant problems [input_boolean.broadcast_plant_problems] is on, using a tag to allow dismissal. Otherwise, send a persistent notification to the household via python script notify [python_script.notify] with audio enabled only if broadcast plant problems [input_boolean.broadcast_plant_problems] is on, including a title and a message listing the filtered issues (renamed: 'moisture low' to 'thirsty', 'moisture high' to 'drowning', 'temperature low' to 'cold', 'temperature high' to 'hot', 'conductivity low' to 'hungry', excluding 'unavailable', 'unknown', 'none', battery/brightness issues, and 'conductivity high').", "natural_language": { "trigger": "Whenever the 'problem' attribute changes for any of the monitored plants: drake plant [plant.drake], spidy plant [plant.spidy], or viny plant [plant.viny].", "conditions": "There are no additional conditions that must be met for the automation to proceed.", "action": "The automation processes the list of problems reported by the plant. It filters out generic or irrelevant issues like 'unavailable', 'unknown', 'none', battery or brightness warnings, and 'conductivity high'. It also renames certain problems to more user-friendly terms (e.g., 'moisture low' becomes 'thirsty'). If no relevant issues remain after filtering, it sends a silent, persistent notification to the household that can be dismissed, with audio playback only if the 'broadcast plant problems' [input_boolean.broadcast_plant_problems] switch is on. If there are relevant issues, it sends a similar notification but includes a title asking to check the plant and a message listing the issues in a natural sentence format." }, "human_like": "Sends a smart notification about plant health issues, filtering out false alarms and translating sensor readings into plain English like 'thirsty' or 'cold'.", "complexity": "medium" } }, { "id": "91bb52da-440a-4082-a6f3-4e58253a51c8", "result": { "structured": "TRIGGER: When any of the following persons changes state to home: guest cava person [person.guest_cava] OR guest gipa person [person.guest_gipa] OR Guest Laboro [person.guest_laboro] OR Guest Stfr [person.guest_stfr] OR Guest Syvi [person.guest_syvi]. CONDITIONS: (Notify Individual Guest Arrivals [input_boolean.notify_individual_guest_arrivals] is on) OR (the count attribute of sensor.guests_home equals '1'). ACTIONS: Execute python script notify [python_script.notify] with persistent notification to household, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} is here', and message '{{ state_attr('sensor.guests_home', 'count') }} guests are home.'.", "natural_language": { "trigger": "When any of the tracked guest persons (guest cava person [person.guest_cava], guest gipa person [person.guest_gipa], Guest Laboro [person.guest_laboro], Guest Stfr [person.guest_stfr], or Guest Syvi [person.guest_syvi]) arrives home.", "conditions": "If the option to notify individual guest arrivals is turned on via Notify Individual Guest Arrivals [input_boolean.notify_individual_guest_arrivals], or if the sensor tracking guests at home reports that exactly one guest is currently home.", "action": "Sends a persistent notification to the household with a tag specific to the arriving guest, a title announcing their arrival, and a message stating the current total number of guests at home." }, "human_like": "Notifies the household when a guest arrives home, either when individual notifications are enabled or when it's the first guest to arrive.", "complexity": "medium" } }, { "id": "33ae901e-24b8-4576-b876-4d2a87a7bd3b", "result": { "structured": "TRIGGER: When chris person [person.chris] OR karine person [person.karine] changes state to home. CONDITIONS: Notify Household Changes [input_boolean.notify_household_changes] is on. ACTIONS: Execute python script notify [python_script.notify] with data: push_target admin, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} arrived home.', message 'Household is {{ states_translated('group.household') }}.'.", "natural_language": { "trigger": "When either chris person [person.chris] or karine person [person.karine] arrives home.", "conditions": "The notification feature must be enabled, meaning the Notify Household Changes [input_boolean.notify_household_changes] input boolean is turned on.", "action": "Sends a notification to the admin push target using the python script notify [python_script.notify]. The notification includes a dynamic tag, a title stating which person arrived home, and a message showing the current household composition." }, "human_like": "Sends a notification when Chris or Karine arrives home, but only if the household change notifications are enabled.", "complexity": "low" } }, { "id": "b3882bea-08d5-4c54-a076-092754457354", "result": { "structured": "TRIGGER: When any person entity in the group referenced by *id003 changes state from home. CONDITIONS: Notify Household Changes [input_boolean.notify_household_changes] is on. ACTIONS: Execute python script notify [python_script.notify] with data: push_target admin, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} left home.', message 'Household is {{ states_translated('group.household') }}.'.", "natural_language": { "trigger": "When a person tracked by the system changes their state from being at home.", "conditions": "The automation only runs if the 'Notify Household Changes' [input_boolean.notify_household_changes] switch is turned on.", "action": "Sends a notification to the admin via a Python script. The notification includes a custom tag, a title stating which person left home, and a message listing the current household status." }, "human_like": "Sends a notification when a household member leaves home, but only if notification alerts are enabled.", "complexity": "low" } }, { "id": "fd33012e-1f9a-4205-8c29-3639015bd2ad", "result": { "structured": "TRIGGER: When Scheduled Climate Preset [sensor.scheduled_climate_preset] changes state to null OR when climate scheduling enabled [input_boolean.climate_scheduling_enabled] turns on. CONDITIONS: climate scheduling enabled [input_boolean.climate_scheduling_enabled] is on AND sensor.scheduled_climate_preset has a valid value. ACTIONS: Execute script.apply_scheduled_climate_preset.", "natural_language": { "trigger": "When the Scheduled Climate Preset [sensor.scheduled_climate_preset] changes to a null state, or when the climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch is turned on.", "conditions": "The climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch must be on, and the Scheduled Climate Preset [sensor.scheduled_climate_preset] sensor must have a valid, non-null value.", "action": "Runs the script named apply_scheduled_climate_preset to apply the scheduled climate settings." }, "human_like": "Applies a scheduled climate preset when scheduling is enabled and a valid preset is available.", "complexity": "medium" } }, { "id": "a179c0b0-9c03-4be6-9437-c2bd6c58e9b7", "result": { "structured": "TRIGGER: When a new device is detected on the network (event: device_tracker_new_device). CONDITIONS: None. ACTIONS: Execute the python script notify [python_script.notify] with parameters: push_target 'admin', persistent 'true', title 'New device detected on network', and message containing the event data.", "natural_language": { "trigger": "Whenever a new device is discovered on the home network, triggering a 'device_tracker_new_device' event.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "Sends a persistent notification to the admin user with the title 'New device detected on network' and a message containing the full data from the triggering event." }, "human_like": "Sends an admin notification whenever a new device connects to the home network.", "complexity": "low" } }, { "id": "778a17bc-898a-43ca-a457-b42c5c32b193", "result": { "structured": "TRIGGER: When Network Media [switch.network_media] changes to any state (on or off) AND remains in that new state for 45 seconds. CONDITIONS: Notify Server Outages [input_boolean.notify_server_outages] is on. ACTIONS: Run python script notify [python_script.notify] with data: push_target=admin, tag=server_{{ trigger.to_state.object_id }}, title='{{ trigger.to_state.name }} server is {{ state }}line', url=/admin-infrastructure/network, push_data.entity_id={{ trigger.entity_id }}, push_actions: action=power_{{ state_action }}_server, title=Power {{ state_action }}, icon=/local/icons/power-plug-{{ state_action }}.png. (Variables: state = 'on' if trigger state is 'on' else 'off'; state_action = opposite of state).", "natural_language": { "trigger": "When the Network Media [switch.network_media] server changes its state to either on or off and remains in that new state for 45 seconds.", "conditions": "The automation only runs if the Notify Server Outages [input_boolean.notify_server_outages] switch is turned on.", "action": "Sends a notification to the admin user via a Python script. The notification includes a title indicating whether the server is online or offline, a link to the network admin page, and a quick action button to toggle the server's power state. The notification is tagged for easy management." }, "human_like": "Sends an admin notification with a power toggle option when a server's state changes and remains stable for 45 seconds, provided outage notifications are enabled.", "complexity": "medium" } }, { "id": "ed45f4fc-3c90-456d-b499-516f568adf4e", "result": { "structured": "TRIGGER: When an html5_notification.clicked OR mobile_app_notification_action event occurs AND the event data includes an action property with the value 'power_on_server'. CONDITIONS: None. ACTIONS: Turn on the switch entity specified by the entity_id property within the data object of the triggering event.", "natural_language": { "trigger": "When a user clicks on an HTML5 notification or taps a mobile app notification action button, and that click or tap is specifically for the 'power_on_server' action.", "conditions": "There are no additional conditions that need to be met for this automation to run.", "action": "Turns on the specific switch whose entity ID is provided in the data of the notification event that triggered the automation." }, "human_like": "Turns on a server when you click the 'power_on_server' button in a notification.", "complexity": "low" } }, { "id": "c4358eec-8328-4049-ba29-25438eb44fa6", "result": { "structured": "TRIGGER: When an HTML5 notification is clicked with action 'power_off_server' OR when a mobile app notification action is performed with action 'power_off_server'. CONDITIONS: None. ACTIONS: Turn off the switch entity specified by the entity_id contained in the notification event data.", "natural_language": { "trigger": "When a user clicks on an HTML5 notification or taps a mobile app notification action, specifically the one labeled 'power_off_server'.", "conditions": "There are no additional conditions that need to be met.", "action": "Turns off the specific switch whose entity_id was provided in the data of the notification that was clicked." }, "human_like": "Turns off a server when the user confirms the action by clicking a specific notification.", "complexity": "low" } }, { "id": "5cdf949f-e2e8-48b2-88c1-59f2c2f4fad2", "result": { "structured": "TRIGGER: When UPS Online Status [binary_sensor.ups_online_status] changes to off and remains off for 30 seconds. ACTIONS: 1. Send a persistent notification with a dynamic message and actions. The message includes: a status update on Managed Auxiliary Servers [switch.managed_auxialiary_servers] and, if Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on, a countdown of shutdown_minutes (2) minutes. The notification includes interactive actions 'Shutdown now' and 'Cancel' based on the states of Managed Auxiliary Servers [switch.managed_auxialiary_servers] and Power Outage Manage Devices [input_boolean.power_outage_manage_devices]. 2. CONDITION: Check if Managed Auxiliary Servers [switch.managed_auxialiary_servers] is on. If true, proceed. 3. WAIT for one of the following triggers: UPS Online Status [binary_sensor.ups_online_status] changes to on, OR a notification action 'power_outage_shutdown' is clicked, OR a notification action 'power_outage_cancel' is clicked. The wait times out after a duration defined by a template: if Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on, the timeout is shutdown_minutes (2) minutes; otherwise, it is 240 minutes. Continue execution after timeout. 4. CONDITION: Evaluate a template condition. The condition is true if UPS Online Status [binary_sensor.ups_online_status] is off AND ((the wait timed out AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on) OR (the wait did not time out AND the triggered action was not 'power_outage_cancel')). 5. If the condition is true, execute: Turn off Network Media [switch.network_media]. 6. Send a final persistent notification stating auxiliary servers have been shutdown.", "natural_language": { "trigger": "The automation starts when the UPS Online Status [binary_sensor.ups_online_status] indicates a power outage by turning off and staying off for 30 seconds.", "conditions": "After the trigger, the automation checks if the Managed Auxiliary Servers [switch.managed_auxialiary_servers] are currently turned on. If they are, it proceeds to wait for one of three events: the UPS status returning to online, a user clicking the 'Shutdown now' button in the notification, or a user clicking the 'Cancel' button in the notification. This wait period lasts for 2 minutes if automatic device management is enabled via Power Outage Manage Devices [input_boolean.power_outage_manage_devices], otherwise it waits for 4 hours. After the wait, a final condition is evaluated. The shutdown proceeds only if the UPS is still offline and either the wait timed out while automatic management was enabled, or a user explicitly triggered the 'Shutdown now' action (and not 'Cancel').", "action": "Initially, a detailed notification is sent to the household with the power outage status and interactive options. If the final conditions are met, the automation turns off the Network Media [switch.network_media] switch and sends a follow-up notification confirming the shutdown." }, "human_like": "Manages auxiliary servers during a power outage by sending alerts and, based on user interaction or a timer, safely shutting down network equipment.", "complexity": "high" } }, { "id": "37c346a4-c34f-40bf-9ad9-d34407afc29c", "result": { "structured": "TRIGGER: When UPS Online Status [binary_sensor.ups_online_status] changes to 'on' AND remains for 60 seconds OR when Home Assistant starts. CONDITIONS: UPS Online Status [binary_sensor.ups_online_status] is 'on' AND remains for 60 seconds. ACTIONS: 1. Execute python script notify [python_script.notify] with a custom message. 2. Check if Managed Auxiliary Servers [switch.managed_auxialiary_servers] is 'off' AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is 'on'. 3. Wait for either UPS Online Status [binary_sensor.ups_online_status] to change to 'off' OR for a notification action 'power_restored_cancel' to be clicked, with a timeout of {{ power_on_minutes }} minutes. 4. If the wait times out AND UPS Online Status [binary_sensor.ups_online_status] is 'on' AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is 'on', then turn on Network Media [switch.network_media].", "natural_language": { "trigger": "The automation triggers when the UPS Online Status [binary_sensor.ups_online_status] reports that power is restored (turns on) and stays on for 60 seconds, or when Home Assistant itself starts up.", "conditions": "It requires that the UPS Online Status [binary_sensor.ups_online_status] is confirmed to be on and stable for 60 seconds.", "action": "First, it sends a detailed notification via the python script notify [python_script.notify], informing the household that power has been restored and providing status about auxiliary servers. Then, if the Managed Auxiliary Servers [switch.managed_auxialiary_servers] are off and the Power Outage Manage Devices [input_boolean.power_outage_manage_devices] setting is enabled, it waits for a user cancellation or for the UPS to go offline again. If neither happens within a configurable time (default 2 minutes), and power is still on and device management is enabled, it automatically turns on the Network Media [switch.network_media] switch." }, "human_like": "Notifies the household when power is restored after an outage and can automatically power on network media devices after a delay, unless cancelled.", "complexity": "high" } }, { "id": "dc44848a-cdb1-4b0b-bd76-711a2f81e4b2", "result": { "structured": "TRIGGER: When Chris Pixel 6 Last Notification [sensor.chris_pixel_6_last_notification] changes state to a null value. CONDITIONS: (Winter Credit Enabled [binary_sensor.winter_credit_enabled] is on) AND (The notification's package attribute equals 'com.hydroquebec.mf_android') AND (The notification's text attribute contains the phrase 'Winter Credit Option:') AND (The notification's text attribute does NOT contain the phrase 'Reminder.'). ACTIONS: Parse the notification text to find date and time patterns. If no patterns are found or the parsing count does not match the expected number of events, create a persistent notification with an error message. Otherwise, for each parsed event, create a calendar entry in Climate Exceptions [calendar.climate_exceptions] with a preset summary, the original text as a description, and calculated start and end times. Specifically, for each peak event period, create three consecutive calendar events: a 'Boost' preset for 90 minutes before the event, a 'Winter Credit: Peak Event' preset for the event duration, and another 'Boost' preset for 90 minutes after the event.", "natural_language": { "trigger": "When a new notification is received on the Chris Pixel 6 Last Notification [sensor.chris_pixel_6_last_notification] sensor.", "conditions": "The Winter Credit Enabled [binary_sensor.winter_credit_enabled] must be turned on. The notification must be from the Hydro-Québec app (package 'com.hydroquebec.mf_android'). The notification text must contain the phrase 'Winter Credit Option:' and must not contain the word 'Reminder.'.", "action": "The automation extracts date and time information from the notification text. If it fails to parse the information correctly, it creates an error notification for debugging. If successful, it creates a series of events in the Climate Exceptions [calendar.climate_exceptions] calendar. For each peak electricity period mentioned, it schedules a 'Winter Credit: Peak Event' for the duration of the peak, and surrounds it with 'Boost' periods 90 minutes before and after the event." }, "human_like": "Automatically schedules heating adjustments in the calendar when a Hydro-Québec winter credit peak event notification is received, adding boost periods before and after the event.", "complexity": "high" } }, { "id": "automation.detect_dead_zwave_nodes", "result": { "structured": "TRIGGER: When any of the 52 listed node status sensors changes from 'alive' to 'dead' AND remains 'dead' for 60 seconds, OR when any of the same 52 sensors changes from 'dead' to 'alive'. CONDITIONS: None. ACTIONS: Execute the python script notify [python_script.notify] with a persistent notification sent to the admin push target. The notification includes a title formatted as '☠️ [Device Name] is dead', where the device name is derived from the triggering entity's name. The notification is tagged with the triggering entity's ID and includes a dismiss flag set to 'false' for a dead state transition and 'true' for an alive state transition.", "natural_language": { "trigger": "The automation triggers in two scenarios. First, if any one of the 52 Z-Wave node status sensors, such as Backyard Outlet Node Status [sensor.backyard_outlet_node_status] or Basement Bathroom Fan Switch Node Status [sensor.basement_bathroom_fan_switch_node_status], changes its state from 'alive' to 'dead' and stays in the 'dead' state for a full minute. Second, if any of those same sensors changes its state from 'dead' back to 'alive'.", "conditions": "There are no conditions that must be met for the action to run; the automation proceeds immediately upon a valid trigger.", "action": "Sends a persistent push notification to the system administrator. The notification's title indicates which device node has died (e.g., '☠️ Backyard Outlet is dead'), using a cleaned-up version of the sensor's name. If the node came back alive, the notification includes a flag allowing it to be dismissed." }, "human_like": "Monitors all Z-Wave devices in the home and sends an alert if any of them stop responding or come back online.", "complexity": "medium" } } ]