[ { "id": "AUT-Notify_Home_Connect_Entity_Finish_Testing", "result": { "structured": "TRIGGER: When a Home Connect event [home_connect_alt_event] occurs. CONDITIONS: The event key is NOT in the list: 'Dishcare.Dishwasher.Event.RinseAidNearlyEmpty', 'BSH.Common.Event.ProgramFinished', 'BSH.Common.Status.OperationState'. ACTIONS: Send a notification to manolo notification [notify.manolo] with a title 'An event was triggered from home connect' and a message containing the event and its data.", "natural_language": { "trigger": "Whenever any Home Connect event is received.", "conditions": "The specific event type must not be one of the following: 'Dishcare.Dishwasher.Event.RinseAidNearlyEmpty', 'BSH.Common.Event.ProgramFinished', or 'BSH.Common.Status.OperationState'.", "action": "Sends a notification titled 'An event was triggered from home connect' to manolo notification [notify.manolo]. The message includes the full event object and its data for debugging purposes." }, "human_like": "Sends a notification for most Home Connect appliance events, excluding a few common ones, to help with testing and debugging.", "complexity": "medium" } }, { "id": "AUT-Notify_Home_Connect_Entity_Finished", "result": { "structured": "TRIGGER: When home connect dishwasher [device_id: secret momahome_dishwasher_device_id] finishes a program. CONDITIONS: None. ACTIONS: Execute script Notify in home or all [script.notify_in_home_or_all] with data title 'Dishwasher finished' and message 'Ey, dishwasher just finished.'.", "natural_language": { "trigger": "When the home connect dishwasher finishes running a program.", "conditions": "There are no conditions that must be met.", "action": "Sends a notification with the title 'Dishwasher finished' and the message 'Ey, dishwasher just finished.' by running the Notify in home or all [script.notify_in_home_or_all] script." }, "human_like": "Sends a notification when the dishwasher finishes its cycle.", "complexity": "low" } }, { "id": "AUT-Notify_Dishwasher_Rinse_Aid_Level", "result": { "structured": "TRIGGER: When a Home Connect event with key 'Dishcare.Dishwasher.Event.RinseAidNearlyEmpty' is received. CONDITIONS: None. ACTIONS: Execute Notify in home or all [script.notify_in_home_or_all] with a title 'Dishwasher Rinse Aid Status' and a message that depends on the event value: if the value is 'BSH.Common.EnumType.EventPresentState.Present', the message is 'Warning: Dishwasher rinse aid is nearly empty. Please refill soon.'; if the value is 'BSH.Common.EnumType.EventPresentState.Off', the message is 'Rinse aid level is now OK.'; otherwise, the message is 'Rinse aid status changed to: [event value]'.", "natural_language": { "trigger": "When the dishwasher sends a Home Connect event indicating a change in the rinse aid level, specifically the 'RinseAidNearlyEmpty' event.", "conditions": "There are no additional conditions that must be met for this automation to run.", "action": "Sends a notification using the Notify in home or all [script.notify_in_home_or_all] script. The notification title is 'Dishwasher Rinse Aid Status', and the message content changes based on the event's value: if it indicates the rinse aid is nearly empty, it warns the user to refill soon; if it indicates the level is okay, it confirms the status is OK; otherwise, it reports the new status value." }, "human_like": "Sends a notification when the dishwasher's rinse aid level changes, alerting you if it's nearly empty or back to normal.", "complexity": "low" } }, { "id": "AUT-Update presence of man-005 devices", "result": { "structured": "TRIGGER: When any entity changes state (state_changed event). CONDITIONS: The changed entity's entity_id matches the pattern 'binary_sensor.man_005'. ACTIONS: Extract the triggered entity_id. Then, call the device_tracker.see service with parameters: dev_id = triggered_entity_id with 'binary_sensor.' prefix removed, host_name = device name attribute of the triggered entity's device combined with the entity_id, location_name = 'home' if new state is 'on', 'not_home' if new state is 'off', otherwise 'unknown', source_type = bluetooth_le.", "natural_language": { "trigger": "Whenever any entity in the system changes its state.", "conditions": "The entity that changed must have an entity_id matching the pattern 'binary_sensor.man_005'.", "action": "The automation records the changed entity's ID, then updates a device tracker. It sets the device's tracked location to 'home' if the sensor turned on, 'not_home' if it turned off, or 'unknown' for any other state. The update uses Bluetooth LE as the source type and constructs a host name from the device's name and the entity ID." }, "human_like": "Updates the presence status of man-005 Bluetooth devices based on their sensor state changes, marking them as home or away.", "complexity": "medium" } }, { "id": "AUT-New Release", "result": { "structured": "TRIGGER: When docker hub update available [binary_sensor.docker_hub_update_available] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification to manolo notification [notify.manolo] with title '*New Home Assistant Release*' and message containing a link to the release for version docker hub version [sensor.docker_hub].", "natural_language": { "trigger": "When the docker hub update available [binary_sensor.docker_hub_update_available] sensor changes from off to on, indicating a new update is ready.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification to manolo notification [notify.manolo] with the title '*New Home Assistant Release*' and a message containing a clickable link to the release notes for the new version, which is docker hub version [sensor.docker_hub]." }, "human_like": "Sends a notification when a new Home Assistant release becomes available.", "complexity": "low" } }, { "id": "AUT-Backup Home Assistant", "result": { "structured": "TRIGGER: When the time is 05:00:00 OR When Home Assistant shutdown event occurs. CONDITIONS: None. ACTIONS: Call the backup.create service.", "natural_language": { "trigger": "The automation runs either at 5:00 AM every day, or when the Home Assistant system begins a shutdown.", "conditions": "There are no additional conditions that must be met.", "action": "It creates a new Home Assistant backup." }, "human_like": "Creates a backup of Home Assistant every morning at 5 AM and also right before the system shuts down.", "complexity": "low" } }, { "id": "AUT-Clean old backups Home Assistant", "result": { "structured": "TRIGGER: At 05:10:00 daily. CONDITIONS: None. ACTIONS: Execute shell_command.delete_old_ha_backups.", "natural_language": { "trigger": "Every day at 5:10 AM.", "conditions": "There are no conditions that need to be met.", "action": "Runs the shell command named 'delete_old_ha_backups'." }, "human_like": "Automatically deletes old Home Assistant backups every morning at 5:10 AM.", "complexity": "low" } }, { "id": "automation_nightstand_buttons", "result": { "structured": "TRIGGER: When monica nightstand button [device_id: d207bfdca66e300274e57e4d3ff883f6] sends a short press on button_1 OR a double press on button_1 OR a long press on button_1 OR a short press on button_2 OR a double press on button_2 OR a long press on button_2 OR when manolo nightstand button [device_id: 66e6c2331edc3c62560fab9b8285ad85] sends a short press on button_1 OR a double press on button_1 OR a long press on button_1 OR a short press on button_2 OR a double press on button_2 OR a long press on button_2. CONDITIONS: None. ACTIONS: Apply a scene to a target light entity. The target is determined by a template: If the scene alias is 'singleOff', apply only to the light associated with the triggering button (monica nightstand light [light.monica_nightstand_light] OR manolo nightstand light [light.manolo_nightstand_light]). If the scene alias is 'allOff' OR 'maxIllumination', apply to bedroom nightstand lights [light.bedroom_nightstand_lights]. If the scene alias is 'beforeSleep' OR 'readOnBed', apply to the light associated with the triggering button, unless the other nightstand light is already on, in which case apply to bedroom nightstand lights [light.bedroom_nightstand_lights]. The scene data (state, brightness, color_temp) is defined per trigger.", "natural_language": { "trigger": "The automation is triggered by any button press on either the monica nightstand button or the manolo nightstand button. This includes short, double, and long presses on both button 1 and button 2.", "conditions": "There are no explicit conditions that must be met before the action runs.", "action": "The automation applies a specific lighting scene based on which button was pressed and which device triggered it. For a 'singleOff' scene, it turns off only the nightstand light on the side of the button that was pressed. For 'allOff' or 'maxIllumination' scenes, it controls all bedroom nightstand lights together. For other scenes like 'beforeSleep' or 'readOnBed', it typically controls the light on the side of the button pressed, but if the light on the other side is already on, it will apply the scene to both lights to keep them in sync." }, "human_like": "Controls the bedroom nightstand lights using physical buttons, allowing different scenes (like reading light, sleep light, or turning off) to be activated with single, double, or long presses, and intelligently deciding whether to control one light or both.", "complexity": "high" } }, { "id": "AUT-ManoloWorkMode", "result": { "structured": "TRIGGER: When manolo work mode button [device_id: fc590f181eaddcfcfc6d6984c7ec76c5] sends a 'turn_on' short press command. CONDITIONS: None. ACTIONS: Turn on man 001 switch [switch.man_001].", "natural_language": { "trigger": "When the manolo work mode button [device_id: fc590f181eaddcfcfc6d6984c7ec76c5] is short-pressed on the 'turn_on' button.", "conditions": "There are no conditions for this automation.", "action": "Turns on the man 001 switch [switch.man_001]." }, "human_like": "Turns on the 'man 001' switch when the work mode button is pressed.", "complexity": "low" } }, { "id": "AUT-ManoloNotWorkingMode", "result": { "structured": "TRIGGER: When manolo work mode button [device_id: fc590f181eaddcfcfc6d6984c7ec76c5] sends a 'turn_on' double press remote button event. CONDITIONS: None. ACTIONS: Turn off man 001 switch [switch.man_001].", "natural_language": { "trigger": "When the manolo work mode button [device_id: fc590f181eaddcfcfc6d6984c7ec76c5] is double-pressed to the 'turn_on' position.", "conditions": "There are no conditions for this automation.", "action": "Turns off the man 001 switch [switch.man_001]." }, "human_like": "Turns off the 'man 001' switch when the work mode button is double-pressed.", "complexity": "low" } }, { "id": "ptr_mark_person_as_just_arrived", "result": { "structured": "TRIGGER: When monica person [person.monica] changes state from not_home to home OR when manolo person [person.manolo] changes state from not_home to home. CONDITIONS: None. ACTIONS: If the triggering entity is manolo person [person.manolo], set manolo status dropdown [input_select.manolo_status_dropdown] to 'Just Arrived'. Otherwise, set monica status dropdown [input_select.monica_status_dropdown] to 'Just Arrived'.", "natural_language": { "trigger": "When either Monica [person.monica] or Manolo [person.manolo] arrives home, changing their state from 'not_home' to 'home'.", "conditions": "There are no additional conditions that must be met.", "action": "Depending on who arrived, the corresponding status dropdown is updated. If Manolo arrived, his status dropdown [input_select.manolo_status_dropdown] is set to 'Just Arrived'. If Monica arrived, her status dropdown [input_select.monica_status_dropdown] is set to 'Just Arrived'." }, "human_like": "Updates a person's status to 'Just Arrived' when they come home.", "complexity": "low" } }, { "id": "ptr_mark_person_as_home", "result": { "structured": "TRIGGER: When manolo status dropdown [input_select.manolo_status_dropdown] OR monica status dropdown [input_select.monica_status_dropdown] changes to 'Just Arrived' AND remains for 10 minutes OR When manolo status dropdown [input_select.manolo_status_dropdown] OR monica status dropdown [input_select.monica_status_dropdown] changes from 'Just Left' to 'Just Arrived'. CONDITIONS: None. ACTIONS: Set the triggering dropdown (manolo status dropdown [input_select.manolo_status_dropdown] OR monica status dropdown [input_select.monica_status_dropdown]) to 'Home'.", "natural_language": { "trigger": "The automation triggers in two ways. First, if either the manolo status dropdown [input_select.manolo_status_dropdown] or the monica status dropdown [input_select.monica_status_dropdown] changes its state to 'Just Arrived' and stays in that state for 10 minutes. Second, if either dropdown changes its state directly from 'Just Left' to 'Just Arrived'.", "conditions": "There are no additional conditions for this automation.", "action": "The automation sets the specific dropdown that triggered the automation (either manolo status dropdown [input_select.manolo_status_dropdown] or monica status dropdown [input_select.monica_status_dropdown]) to the 'Home' option." }, "human_like": "Updates a person's status to 'Home' after they have arrived, either after a 10-minute delay or immediately if they have just returned.", "complexity": "medium" } }, { "id": "ptr_mark_person_as_just_left", "result": { "structured": "TRIGGER: When manolo person [person.manolo] changes state from home to not_home. CONDITIONS: None. ACTIONS: Set the option of an input_select to 'Just Left'. The target entity is manolo status dropdown [input_select.manolo_status_dropdown] if the triggering entity is person.manolo, otherwise it is monica status dropdown [input_select.monica_status_dropdown].", "natural_language": { "trigger": "When the person entity for manolo [person.manolo] changes its state from 'home' to 'not_home'.", "conditions": "There are no conditions for this automation.", "action": "Sets a status dropdown to 'Just Left'. It selects the manolo status dropdown [input_select.manolo_status_dropdown] if the state change was for manolo, otherwise it selects the monica status dropdown [input_select.monica_status_dropdown]." }, "human_like": "Updates a person's status to 'Just Left' in a dropdown menu when they are marked as away from home.", "complexity": "low" } }, { "id": "ptr_mark_person_as_away", "result": { "structured": "TRIGGER: When the entity referenced by *id006 remains in state 'Just Left' for 10 minutes. CONDITIONS: None. ACTIONS: Set the status dropdown for the corresponding person to 'Away'. Specifically, if the triggering entity is manolo status dropdown [input_select.manolo_status_dropdown], then set manolo status dropdown [input_select.manolo_status_dropdown] to 'Away'. Otherwise, set monica status dropdown [input_select.monica_status_dropdown] to 'Away'.", "natural_language": { "trigger": "When the entity referenced by *id006 stays in the 'Just Left' state for a continuous period of 10 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "The automation updates the status dropdown for the relevant person to 'Away'. It determines which dropdown to update based on which entity triggered the automation. If the trigger came from manolo status dropdown [input_select.manolo_status_dropdown], then that dropdown is set to 'Away'. If the trigger came from any other entity (implicitly monica status dropdown [input_select.monica_status_dropdown]), then that dropdown is set to 'Away'." }, "human_like": "Automatically marks a person as 'Away' in their status dropdown if their 'Just Left' state persists for 10 minutes.", "complexity": "medium" } }, { "id": "ptr_mark_person_as_extended_away", "result": { "structured": "TRIGGER: When *id006 [*id006] changes to state 'Away' AND remains in that state for 24 hours. CONDITIONS: None. ACTIONS: Set the option of the corresponding person's status dropdown to 'Extended Away'. The entity is determined by: if the triggering entity is manolo status dropdown [input_select.manolo_status_dropdown], then target manolo status dropdown [input_select.manolo_status_dropdown]; otherwise, target monica status dropdown [input_select.monica_status_dropdown].", "natural_language": { "trigger": "When the entity *id006 [*id006] changes its state to 'Away' and stays in that state for a continuous period of 24 hours.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the status dropdown for the relevant person to 'Extended Away'. It determines which person's dropdown to update based on which entity triggered the automation: if the trigger came from manolo status dropdown [input_select.manolo_status_dropdown], then that dropdown is updated; otherwise, monica status dropdown [input_select.monica_status_dropdown] is updated." }, "human_like": "Updates a person's status to 'Extended Away' if they have been marked as 'Away' for a full day.", "complexity": "low" } }, { "id": "ptr_update_home_occupancy", "result": { "structured": "TRIGGER: When any entity in group people status [group.people_status] changes state. CONDITIONS: None. ACTIONS: Update home occupancy status dropdown [input_select.home_occupancy_status_dropdown] to the most restrictive status among all trackers in group people status [group.people_status] (priority order: Home, Just Arrived, Just Left, Away, Extended Away). If the triggering entity's state matches the current dropdown selection, the dropdown remains unchanged.", "natural_language": { "trigger": "Whenever the state of any person tracker within the people status group [group.people_status] changes.", "conditions": "There are no conditions for this automation.", "action": "The automation updates the home occupancy status dropdown [input_select.home_occupancy_status_dropdown] to reflect the most restrictive status among all tracked people. The statuses are ranked from least to most restrictive: Home, Just Arrived, Just Left, Away, Extended Away. If the person whose status just changed already matches the current dropdown selection, the dropdown is left as is." }, "human_like": "Updates the overall home occupancy status based on the most restrictive status among all tracked people.", "complexity": "medium" } }, { "id": "AUT-New_Device_Found", "result": { "structured": "TRIGGER: When a device_tracker_new_device event occurs. CONDITIONS: None. ACTIONS: Execute script Notify in home or all [script.notify_in_home_or_all] with title 'ALERT: New device found !' and message 'New device called `{{ trigger.event.data.host_name }}` with MAC `{{ trigger.event.data.mac }}` found' AND send notification to manolo notification [notify.manolo] with the same title and message.", "natural_language": { "trigger": "When a new device is detected on the network, generating a device_tracker_new_device event.", "conditions": "There are no conditions that must be met.", "action": "Sends an alert notification using the script Notify in home or all [script.notify_in_home_or_all] and also sends a specific notification to manolo notification [notify.manolo]. Both notifications contain the title 'ALERT: New device found !' and a message detailing the new device's host name and MAC address." }, "human_like": "Sends an alert notification whenever a new device is discovered on the network.", "complexity": "low" } }, { "id": "AUT-Notify_Failed_Login_Attempt", "result": { "structured": "TRIGGER: When a persistent_notification is added (update_type: added). CONDITIONS: The notification title contains the text 'Login attempt'. ACTIONS: Send a notification via manolo notification [notify.manolo] with a title prefixed by '*' and suffixed by ' !*' and the original message.", "natural_language": { "trigger": "When a new persistent notification is added to the system.", "conditions": "If the title of that notification contains the phrase 'Login attempt'.", "action": "Send a notification to the 'manolo notification [notify.manolo]' service, using the original notification's message and a modified title that adds asterisks and an exclamation mark." }, "human_like": "Forwards security alerts about failed login attempts to a specific notification service.", "complexity": "low" } }, { "id": "AUT-Unban_IP", "result": { "structured": "TRIGGER: When a telegram_command event occurs with command /unban_ip OR When a telegram_callback event occurs with command /unban_ip. CONDITIONS: None. ACTIONS: Execute shell_command.unban_ip with ip_to_unban variable. IF the trigger was telegram_callback event, then answer the callback query with message 'Unbanned and restarting HomeAssistant'. THEN restart Home Assistant.", "natural_language": { "trigger": "When a Telegram command /unban_ip is received, or when a Telegram callback with the /unban_ip command is triggered.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it executes a shell command to unban the specified IP address. If the automation was triggered by a Telegram callback, it sends a confirmation message back to Telegram. Finally, it restarts the Home Assistant service." }, "human_like": "Unbans a specified IP address via a Telegram command and then restarts Home Assistant.", "complexity": "medium" } }, { "id": "AUT-Notify_Entrance_Door_Opened", "result": { "structured": "TRIGGER: When entrance door sensor [binary_sensor.entrance_door_sensor_opened] changes to on (opened). CONDITIONS: None. ACTIONS: Send a notification to manolo notification [notify.manolo] with title '[Debug] *Door Opened*' and message 'The entrance door has been opened.', with notifications disabled.", "natural_language": { "trigger": "When the entrance door sensor [binary_sensor.entrance_door_sensor_opened] reports the door has been opened.", "conditions": "There are no conditions that must be met.", "action": "Sends a silent debug notification to the user's device via manolo notification [notify.manolo], stating that the entrance door has been opened." }, "human_like": "Sends a silent debug notification when the entrance door is opened.", "complexity": "low" } }, { "id": "AUT-Notify_Entrance_Door_Opened_Extended_Away", "result": { "structured": "TRIGGER: When entrance door sensor [binary_sensor.entrance_door_sensor_opened] becomes open (on). CONDITIONS: home occupancy status [sensor.home_occupancy_status] is Extended Away OR Just Arrived. ACTIONS: Execute script Notify in home or all [script.notify_in_home_or_all] with data: title 'Alert: Door Opened', message 'The entrance door has been opened while the house is in Extended Away mode.'.", "natural_language": { "trigger": "When the entrance door sensor [binary_sensor.entrance_door_sensor_opened] detects that the door has been opened.", "conditions": "If the home occupancy status [sensor.home_occupancy_status] is set to either 'Extended Away' or 'Just Arrived'.", "action": "Sends a notification with the title 'Alert: Door Opened' and the message 'The entrance door has been opened while the house is in Extended Away mode.' by running the Notify in home or all [script.notify_in_home_or_all] script." }, "human_like": "Sends an alert when the entrance door is opened while the house is set to 'Extended Away' or 'Just Arrived' status.", "complexity": "low" } }, { "id": "AUT-Notify_Entrance_Door_Opened_Too_Much_Time", "result": { "structured": "TRIGGER: When entrance door sensor [binary_sensor.entrance_door_sensor_opened] becomes open (on) AND remains open for 3 minutes. CONDITIONS: None. ACTIONS: Execute script Notify in home or all [script.notify_in_home_or_all] with data: title 'Alert: Door Left Open', message 'The entrance door has been left open for more than 3 minutes.'.", "natural_language": { "trigger": "When the entrance door sensor [binary_sensor.entrance_door_sensor_opened] detects the door is open and stays open for three minutes.", "conditions": "There are no additional conditions for this automation.", "action": "Sends a notification with the title 'Alert: Door Left Open' and the message 'The entrance door has been left open for more than 3 minutes.' by running the Notify in home or all [script.notify_in_home_or_all] script." }, "human_like": "Sends an alert if the entrance door is left open for more than three minutes.", "complexity": "low" } }, { "id": "AUT-Notify_Centinel_Mode_On_Extended_Away", "result": { "structured": "TRIGGER: When home occupancy status [sensor.home_occupancy_status] changes to Extended Away. CONDITIONS: None. ACTIONS: Turn on centinel mode [input_boolean.centinel_mode] AND run script Notify in home or all [script.notify_in_home_or_all] with data: title 'Centinel Mode', message 'Centinel Mode has been enabled automatically due to Extended Away status.', and an inline keyboard option 'Disable Centinel Mode'.", "natural_language": { "trigger": "When the home occupancy status [sensor.home_occupancy_status] changes to 'Extended Away'.", "conditions": "There are no conditions for this automation.", "action": "It turns on the centinel mode [input_boolean.centinel_mode] and sends a notification via the Notify in home or all [script.notify_in_home_or_all] script. The notification has the title 'Centinel Mode' and a message stating it was enabled automatically due to the Extended Away status, and includes a button to disable Centinel Mode." }, "human_like": "Automatically enables Centinel Mode and sends a notification when the home is set to 'Extended Away'.", "complexity": "low" } }, { "id": "AUT-Disable_Centinel_Mode", "result": { "structured": "TRIGGER: When a telegram_command event with command /disable_centinel_mode is received OR When a telegram_callback event with command /disable_centinel_mode is received. CONDITIONS: None. ACTIONS: Turn off centinel mode [input_boolean.centinel_mode] AND Execute Notify in home or all [script.notify_in_home_or_all] with title 'Centinel Mode' and message 'Centinel Mode has been disabled.' AND If the trigger event type is 'telegram_callback', then answer the callback query with message 'Done!'.", "natural_language": { "trigger": "When a Telegram command or callback with the specific command '/disable_centinel_mode' is received.", "conditions": "There are no conditions that need to be met for this automation to proceed.", "action": "It turns off the centinel mode [input_boolean.centinel_mode], sends a notification via the Notify in home or all [script.notify_in_home_or_all] script with the title 'Centinel Mode' and the message 'Centinel Mode has been disabled.', and if the trigger was a Telegram callback, it also sends a confirmation message back to the user." }, "human_like": "Disables Centinel Mode and sends a confirmation notification when a specific Telegram command is received.", "complexity": "medium" } }, { "id": "AUT-Centinel_Mode_Door_Camera_Recording", "result": { "structured": "TRIGGER: When entrance door sensor [binary_sensor.entrance_door_sensor_opened] opens (state changes to on). CONDITIONS: centinel mode [input_boolean.centinel_mode] is on. ACTIONS: (1) In parallel: (a) Send an alert notification via Notify in home or all [script.notify_in_home_or_all] with title 'Alert: Door Opened - Starting Video Recording' and a message including the trigger time. (b) Sequentially: record a 4-second video from entrance camera [camera.entrance_camera] with 4 seconds of lookback, then send a notification that the first recording is complete. (2) Sequentially: record a 5-second video from entrance camera [camera.entrance_camera] (no lookback), then send a notification that the second recording is complete. (3) Sequentially: record a 25-second video from entrance camera [camera.entrance_camera] with 20 seconds of lookback, then send a notification that the final recording is complete. (4) Execute the shell command to delete old camera recordings.", "natural_language": { "trigger": "When the entrance door sensor [binary_sensor.entrance_door_sensor_opened] detects that the door has been opened.", "conditions": "The centinel mode [input_boolean.centinel_mode] must be switched on.", "action": "First, an alert notification is sent via the Notify in home or all [script.notify_in_home_or_all] script, announcing that the door opened and video recording is starting. Simultaneously, a sequence of three video recordings is initiated from the entrance camera [camera.entrance_camera]. The first recording captures 4 seconds of video with 4 seconds of lookback, followed by a notification of its completion. The second recording captures 5 seconds of video, followed by another notification. The third recording captures 25 seconds of video with 20 seconds of lookback, followed by a final notification. Finally, a shell command is run to delete old camera recordings." }, "human_like": "When Centinel Mode is active and the entrance door opens, this automation records a series of security videos and sends notifications about each recording.", "complexity": "medium" } }, { "id": "AUT-Centinel_Mode_Light_Control_Sunset", "result": { "structured": "TRIGGER: At sunset. CONDITIONS: centinel mode [input_boolean.centinel_mode] is on. ACTIONS: Wait a random delay between 0 and 30 minutes, then turn on centinel mode lights [group.centinel_mode_lights] with a random brightness between 180 and 255.", "natural_language": { "trigger": "When the sun sets.", "conditions": "If the centinel mode [input_boolean.centinel_mode] is switched on.", "action": "After waiting for a random amount of time between 0 and 30 minutes, turn on the group of centinel mode lights [group.centinel_mode_lights] with a randomly selected brightness level between 180 and 255." }, "human_like": "Turns on security lights at a random time after sunset, but only when the centinel mode is active.", "complexity": "medium" } }, { "id": "AUT-Centinel_Mode_Light_Control_Night_Off", "result": { "structured": "TRIGGER: At 23:00:00. CONDITIONS: centinel mode [input_boolean.centinel_mode] is on. ACTIONS: Wait a random delay between 0 and 59 minutes, then turn off centinel mode lights [group.centinel_mode_lights].", "natural_language": { "trigger": "The automation triggers every day at 11:00 PM.", "conditions": "It only runs if the centinel mode [input_boolean.centinel_mode] is currently switched on.", "action": "After waiting for a random amount of time between 0 and 59 minutes, it turns off all lights in the centinel mode lights [group.centinel_mode_lights] group." }, "human_like": "Turns off the sentinel mode lights at 11 PM, after a random delay, if sentinel mode is active.", "complexity": "medium" } }, { "id": "AUT-No energy in house", "result": { "structured": "TRIGGER: When the template condition evaluates to true, which occurs when the string 'ONBATT' is present in the state of ups status [sensor.ups_status]. CONDITIONS: None. ACTIONS: Send a PowerOff command to the sony bravia tv remote [remote.sony_bravia_tv]. Then, execute the script Notify in home or all [script.notify_in_home_or_all] with a title and a detailed message containing the current states of ups status [sensor.ups_status], ups battery [sensor.ups_battery], ups load [sensor.ups_load], and ups time left [sensor.ups_time_left]. Finally, send a notification to manolo notification [notify.manolo] with a title and a message containing debug information from ups status flag [sensor.ups_status_flag], ups transfer from battery [sensor.ups_transfer_from_battery], ups time on battery [sensor.ups_time_on_battery], and ups total time on battery [sensor.ups_total_time_on_battery].", "natural_language": { "trigger": "The automation triggers when the ups status [sensor.ups_status] contains the text 'ONBATT', indicating the UPS is running on battery power.", "conditions": "There are no additional conditions that must be met for the actions to run.", "action": "First, it turns off the Sony Bravia TV by sending a PowerOff command via its remote [remote.sony_bravia_tv]. Next, it sends a general alert using the script Notify in home or all [script.notify_in_home_or_all], providing details about the UPS status, battery level, current load, and estimated remaining battery time. Finally, it sends a separate debug notification to manolo notification [notify.manolo] with technical data from several UPS sensors for troubleshooting." }, "human_like": "Automatically powers off the TV and sends alerts when a power outage is detected, helping to conserve UPS battery and notify the household.", "complexity": "medium" } }, { "id": "AUT-Energy back in house", "result": { "structured": "TRIGGER: When the template evaluates to true, which occurs when the string 'ONLINE' is present in the state of ups status [sensor.ups_status]. CONDITIONS: None. ACTIONS: Execute script Notify in home or all [script.notify_in_home_or_all] with a title and message containing the current states of ups status [sensor.ups_status] and ups battery [sensor.ups_battery]. Then, send a notification via manolo notification [notify.manolo] with a debug message containing the current states of ups status [sensor.ups_status], ups status flag [sensor.ups_status_flag], ups transfer from battery [sensor.ups_transfer_from_battery], ups time on battery [sensor.ups_time_on_battery], and ups total time on battery [sensor.ups_total_time_on_battery].", "natural_language": { "trigger": "When the ups status [sensor.ups_status] changes to a state that contains the word 'ONLINE'.", "conditions": "There are no additional conditions that must be met.", "action": "First, it runs a script called Notify in home or all [script.notify_in_home_or_all] to send a notification with the title 'Energy back in home !' and a message reporting the current ups status and battery percentage. Then, it sends a detailed debug notification to manolo notification [notify.manolo] with the current values of several UPS-related sensors for troubleshooting." }, "human_like": "Sends notifications when the UPS reports it is back online, indicating that mains power has been restored.", "complexity": "low" } }, { "id": "AUT-Turn off man-003", "result": { "structured": "TRIGGER: When man 003 energy current [sensor.man_003_energy_current] remains below 0.3 for 10 minutes. CONDITIONS: man 003 auto poweroff [input_boolean.man_003_auto_poweroff] is on AND (man 003 left switch [switch.man_003_left] is on OR man 003 right switch [switch.man_003_right] is on). ACTIONS: Turn off man 003 left switch [switch.man_003_left] AND turn off man 003 right switch [switch.man_003_right] AND turn off man 003 auto poweroff [input_boolean.man_003_auto_poweroff] AND execute script Notify in home or all [script.notify_in_home_or_all] with a notification message.", "natural_language": { "trigger": "When the man 003 energy current [sensor.man_003_energy_current] sensor reports a power consumption below 0.3 for a continuous period of 10 minutes.", "conditions": "If the man 003 auto poweroff [input_boolean.man_003_auto_poweroff] is enabled (set to 'on'), and at least one of the two kitchen power plug switches, either man 003 left switch [switch.man_003_left] or man 003 right switch [switch.man_003_right], is currently turned on.", "action": "Turns off both the left and right power plug switches, disables the auto poweroff feature by turning off its control switch, and sends a notification to users at home or all users, explaining the action and providing quick controls to turn the plugs back on." }, "human_like": "Automatically turns off the kitchen power plugs when they have been consuming very little power for 10 minutes, indicating they are likely idle, and sends a notification about it.", "complexity": "medium" } }, { "id": "AUT-Telegram turn on device", "result": { "structured": "TRIGGER: When a telegram_command event occurs with command /turn_on OR When a telegram_callback event occurs with command /turn_on. ACTIONS: Turn on the switch device specified in the event data. If the trigger event is a telegram_callback, then also send an answer to the callback query with the message 'Done!'.", "natural_language": { "trigger": "When a Telegram command '/turn_on' is received, or when a Telegram callback with the same command is triggered.", "conditions": "There are no explicit conditions for the main action. A condition is used internally to decide whether to send a callback answer.", "action": "The automation turns on a switch device. The specific device to turn on is extracted from the event data. If the trigger was a callback, it also sends a confirmation message back to Telegram saying 'Done!'." }, "human_like": "Turns on a device via a Telegram command or button press, and sends a confirmation if triggered by a button.", "complexity": "medium" } }, { "id": "AUT-Notify Vacuum Error", "result": { "structured": "TRIGGER: When vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] enters the error state OR When home occupancy status [sensor.home_occupancy_status] becomes Home and remains for 2 minutes. CONDITIONS: vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] is in the error state. ACTIONS: Wait 21 seconds, then execute script Take camera snapshot and send telegram [script.take_camera_snapshot_and_send_telegram] with parameters: camera_entity = roborocks5 map camera [camera.roborocks5_map], notify_to = Notify in home or all [script.notify_in_home_or_all], and a message containing error details from valetudo roborocks5 error [sensor.valetudo_roborocks5_error] attributes (severity, subsystem, message) and state.", "natural_language": { "trigger": "The automation triggers either when the vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] reports an error, or when the home occupancy status [sensor.home_occupancy_status] indicates someone is home and remains in that state for at least two minutes.", "conditions": "The automation only proceeds if the vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] is currently in an error state.", "action": "After a 21-second delay, it takes a snapshot from the roborocks5 map camera [camera.roborocks5_map] and sends a detailed Telegram notification via the Notify in home or all [script.notify_in_home_or_all] script. The message includes the error's severity, subsystem, message, and state from the valetudo roborocks5 error [sensor.valetudo_roborocks5_error] sensor." }, "human_like": "Sends a notification with a map snapshot when the vacuum cleaner encounters an error, but only if someone is likely home to receive it.", "complexity": "medium" } }, { "id": "AUT-Vacuum", "result": { "structured": "TRIGGER: At 12:32:00 OR At 11:28:00 OR When home occupancy status [sensor.home_occupancy_status] changes to Away AND remains for 5 minutes. CONDITIONS: ((workday sensor [binary_sensor.workday_sensor] is on AND time is after 10:00:00 AND before 22:30:00) OR (workday sensor [binary_sensor.workday_sensor] is off AND time is after 11:30:00 AND before 22:30:00)) AND (vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] state is docked) AND (home occupancy status [sensor.home_occupancy_status] state is not Extended Away) AND ((Time elapsed since vacuum last full clean [input_datetime.vacuum_last_full_clean] is greater than 23 hours) OR (Time elapsed since vacuum last full clean [input_datetime.vacuum_last_full_clean] is greater than 13 hours AND home occupancy status [sensor.home_occupancy_status] is Extended Away OR Away)). ACTIONS: Start timer vacuum start in [timer.vacuum_start_in] for 5 minutes AND Execute script Notify in home or all [script.notify_in_home_or_all] with a notification message and inline keyboard options.", "natural_language": { "trigger": "The automation triggers at 12:32 PM, at 11:28 AM, or when the home occupancy status [sensor.home_occupancy_status] changes to 'Away' and stays that way for at least five minutes.", "conditions": "Several conditions must be met. First, based on the workday sensor [binary_sensor.workday_sensor], the time must be within a specific window: if it's a workday, the time must be between 10:00 AM and 10:30 PM; if it's not a workday, the time must be between 11:30 AM and 10:30 PM. Second, the vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] must be docked. Third, the home occupancy status [sensor.home_occupancy_status] must not be 'Extended Away'. Finally, the time since the last full clean [input_datetime.vacuum_last_full_clean] must be more than 23 hours, or if it's more than 13 hours, the home must be in an 'Away' or 'Extended Away' state.", "action": "The automation starts a five-minute timer on vacuum start in [timer.vacuum_start_in] and sends a notification via the Notify in home or all [script.notify_in_home_or_all] script, providing a message and options to stop or start the vacuum immediately." }, "human_like": "Schedules the vacuum to start with a notification, considering workdays, home occupancy, and the time since the last cleaning to avoid disturbances.", "complexity": "high" } }, { "id": "AUT-Vacuum start", "result": { "structured": "TRIGGER: When timer.vacuum_start_in [timer.vacuum_start_in] finishes OR When a Telegram command event with command /vacuum_start occurs OR When a Telegram callback event with command /vacuum_start occurs. CONDITIONS: None. ACTIONS: Set fan speed of vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] to Standard AND Start vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5].", "natural_language": { "trigger": "The automation is triggered in one of three ways: when the vacuum start in timer [timer.vacuum_start_in] finishes, when a Telegram command with the text '/vacuum_start' is received, or when a Telegram callback with the command '/vacuum_start' is received.", "conditions": "There are no conditions that must be met for the action to run.", "action": "The vacuum cleaner, vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5], is set to its 'Standard' fan speed and then started." }, "human_like": "Starts the robot vacuum on a standard cleaning cycle, either after a timer ends or when commanded via Telegram.", "complexity": "low" } }, { "id": "AUT-Vacuum update statistics", "result": { "structured": "TRIGGER: When vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] changes to state 'returning'. ACTIONS: Wait 10 seconds. Then, IF (vacuum xiaomi historic cleaning time [input_number.vacuum_xiaomi_historic_cleaning_time] integer value is NOT equal to valetudo roborocks5 total statistics time [sensor.valetudo_roborocks5_total_statistics_time] integer value), THEN set vacuum xiaomi historic cleaning time [input_number.vacuum_xiaomi_historic_cleaning_time] value to valetudo roborocks5 total statistics time [sensor.valetudo_roborocks5_total_statistics_time] value. Next, set vacuum xiaomi dust clean left [input_number.vacuum_xiaomi_dust_clean_left] value to the maximum of (its current integer value minus (valetudo roborocks5 current statistics area [sensor.valetudo_roborocks5_current_statistics_area] integer value divided by 10000)) and 0. Then, IF valetudo roborocks5 current statistics area [sensor.valetudo_roborocks5_current_statistics_area] is above 340000, THEN set vacuum last full clean [input_datetime.vacuum_last_full_clean] to the current date and time. Wait 21 seconds. Finally, execute script Take camera snapshot and send telegram [script.take_camera_snapshot_and_send_telegram] with parameters: camera_entity as roborocks5 map camera [camera.roborocks5_map], notify_to as Notify in home or all [script.notify_in_home_or_all], data.disable_notification as true, and a message stating the cleaned area in square meters.", "natural_language": { "trigger": "The automation starts when the robot vacuum, vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5], begins returning to its dock.", "conditions": "There are two conditional checks within the action sequence. The first condition checks if the stored historic cleaning time is different from the vacuum's total cleaning time. The second condition checks if the area cleaned in the current session is larger than 340,000 (presumably square centimeters).", "action": "After a 10-second delay, the automation updates the historic cleaning time if it has changed, then reduces a 'dust clean left' counter based on the cleaned area. If the cleaned area is large enough, it records the current time as the last full clean. After a further 21-second delay, it takes a snapshot of the vacuum's map and sends a Telegram notification with the cleaned area." }, "human_like": "Updates vacuum cleaning statistics and sends a notification when the robot vacuum finishes a cleaning job and returns to its dock.", "complexity": "medium" } }, { "id": "AUT-Notify Vacuum maintenance", "result": { "structured": "TRIGGER: When vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] changes to returning OR When vacuum xiaomi dust clean left [input_number.vacuum_xiaomi_dust_clean_left] changes state. CONDITIONS: (vacuum xiaomi dust clean left [input_number.vacuum_xiaomi_dust_clean_left] value is less than 2). ACTIONS: Execute Notify in home or all [script.notify_in_home_or_all] with a notification title 'Vacuum need maintenance' and a message containing the remaining hours for main brush, side brush, filter, and sensor cleaning, and the remaining square meters for dust bin emptying, plus an inline keyboard button labeled 'Vacuum already cleaned'.", "natural_language": { "trigger": "When the vacuum cleaner finishes its cleaning cycle and starts returning to its dock, or when the estimated remaining cleaning area before dust bin maintenance changes.", "conditions": "Only if the estimated remaining area that can be cleaned before the dust bin needs emptying is less than 2 square meters.", "action": "Sends a notification to users at home or to all users, titled 'Vacuum need maintenance'. The message details the remaining lifespan in hours for the main brush, side brush, filter, and sensor cleaning, as well as the remaining area in square meters before the dust bin needs emptying. It also provides a button to acknowledge the maintenance has been done." }, "human_like": "Sends a maintenance reminder notification when the vacuum returns to its dock and the dust bin is nearly full, showing the status of all wear parts.", "complexity": "medium" } }, { "id": "AUT-Telegram reset Vacuum meters", "result": { "structured": "TRIGGER: When a Telegram command event with command '/vacuum_cleaned' is received OR when a Telegram callback event with command '/vacuum_cleaned' is received. CONDITIONS: None. ACTIONS: Set vacuum xiaomi dust clean left [input_number.vacuum_xiaomi_dust_clean_left] to its maximum value. IF the triggering event type is 'telegram_callback', THEN also answer the callback query with the message 'Done!'.", "natural_language": { "trigger": "When a Telegram command or callback is received containing the specific command '/vacuum_cleaned'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation resets the vacuum xiaomi dust clean left [input_number.vacuum_xiaomi_dust_clean_left] counter to its maximum value. If the trigger was a Telegram callback, it also sends a 'Done!' message back to the user who initiated the callback." }, "human_like": "Resets the vacuum's dust cleaning counter via a Telegram command or button press.", "complexity": "medium" } }, { "id": "AUT-Telegram stop Vacuum", "result": { "structured": "TRIGGER: When a Telegram command event with command '/vacuum_stop' is received OR When a Telegram callback event with command '/vacuum_stop' is received. CONDITIONS: None. ACTIONS: Cancel the vacuum start in timer [timer.vacuum_start_in], stop the vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5], wait for 30 seconds, then send the vacuum valetudo roborocks5 [vacuum.valetudo_roborocks5] to its charging base.", "natural_language": { "trigger": "When a Telegram command or callback with the specific command '/vacuum_stop' is received.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Cancels any pending 'vacuum start in' timer, immediately stops the vacuum cleaner, waits for 30 seconds, and then commands the vacuum to return to its charging base." }, "human_like": "Stops the robot vacuum and sends it back to its dock when a specific 'stop' command is received via Telegram.", "complexity": "low" } }, { "id": "AUT-Notify Washing machine finished", "result": { "structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes to Clean OR when home occupancy status [sensor.home_occupancy_status] changes to Home and remains for 2 minutes. CONDITIONS: washing machine status [sensor.washing_machine_status] is Clean. ACTIONS: Run script Notify in home or all [script.notify_in_home_or_all] with title 'Washing Machine finished' and message 'Hey, the washing machine has finished and is ready to be emptied', providing an inline keyboard option 'Already empty'.", "natural_language": { "trigger": "When the washing machine status [sensor.washing_machine_status] reports that the washing cycle is finished (state changes to 'Clean'), or when the home occupancy status [sensor.home_occupancy_status] changes to 'Home' and stays that way for at least two minutes.", "conditions": "The washing machine status [sensor.washing_machine_status] must be in the 'Clean' state.", "action": "Sends a notification using the Notify in home or all [script.notify_in_home_or_all] script. The notification has the title 'Washing Machine finished' and the message 'Hey, the washing machine has finished and is ready to be emptied', and includes an option to mark the machine as already empty." }, "human_like": "Sends a notification when the washing machine finishes its cycle, but only if the machine is reported as clean, and also triggers if someone has been home for two minutes.", "complexity": "medium" } }, { "id": "AUT-Washing machine should power on", "result": { "structured": "TRIGGER: When the washing machine power on timer [timer.washing_machine_power_on_in] finishes. CONDITIONS: None. ACTIONS: Cancel the washing machine power on timer [timer.washing_machine_power_on_in], set the washing machine status select [input_select.washing_machine_status] to 'Off', and turn on the man 002 switch [switch.man_002].", "natural_language": { "trigger": "When the washing machine power on timer [timer.washing_machine_power_on_in] completes its countdown.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Cancels the washing machine power on timer [timer.washing_machine_power_on_in], changes the washing machine status select [input_select.washing_machine_status] to 'Off', and turns on the man 002 switch [switch.man_002]." }, "human_like": "Powers on the washing machine and updates its status when a scheduled timer finishes.", "complexity": "low" } }, { "id": "AUT-Washing machine Running", "result": { "structured": "TRIGGER: When man 002 current [sensor.man_002_current_a] is above 1. CONDITIONS: (washing machine status [sensor.washing_machine_status] is Off OR Finishing OR Clean OR Scheduled). ACTIONS: Set washing machine status select [input_select.washing_machine_status] to Washing.", "natural_language": { "trigger": "When the current draw of the man 002 current [sensor.man_002_current_a] exceeds 1.", "conditions": "If the washing machine status [sensor.washing_machine_status] is currently reported as Off, Finishing, Clean, or Scheduled.", "action": "Changes the washing machine status select [input_select.washing_machine_status] to the option 'Washing'." }, "human_like": "Detects when the washing machine starts drawing power and updates its status to 'Washing', but only if it was previously in a non-active state.", "complexity": "low" } }, { "id": "AUT-Washing machine Clean", "result": { "structured": "TRIGGER: When man 002 current [sensor.man_002_current_a] remains below 0.001 for 8 minutes. CONDITIONS: washing machine status select [input_select.washing_machine_status] is Washing OR washing machine status select [input_select.washing_machine_status] is Finishing. ACTIONS: Set washing machine status select [input_select.washing_machine_status] to Clean.", "natural_language": { "trigger": "When the man 002 current [sensor.man_002_current_a] stays below 0.001 for a continuous period of 8 minutes.", "conditions": "If the washing machine status select [input_select.washing_machine_status] is currently set to either 'Washing' or 'Finishing'.", "action": "Changes the washing machine status to 'Clean' by updating the washing machine status select [input_select.washing_machine_status]." }, "human_like": "Updates the washing machine status to 'Clean' when the machine's current draw has been very low for 8 minutes, indicating the cycle is complete.", "complexity": "medium" } }, { "id": "AUT-Washing machine Emptying", "result": { "structured": "TRIGGER: When man 002 current [sensor.man_002_current_a] is above 0.001. CONDITIONS: washing machine status select [input_select.washing_machine_status] is Clean. ACTIONS: Set washing machine status select [input_select.washing_machine_status] to Emptying.", "natural_language": { "trigger": "When the washing machine's current draw, measured by man 002 current [sensor.man_002_current_a], rises above 0.001.", "conditions": "If the washing machine status select [input_select.washing_machine_status] is currently set to 'Clean'.", "action": "Changes the washing machine status to 'Emptying' by updating the washing machine status select [input_select.washing_machine_status]." }, "human_like": "Updates the washing machine status to 'Emptying' when it starts drawing power and its previous status was 'Clean'.", "complexity": "low" } }, { "id": "AUT-Washing machine Off", "result": { "structured": "TRIGGER: When man 002 current [sensor.man_002_current_a] remains below 0.001 for 15 minutes. CONDITIONS: washing machine status select [input_select.washing_machine_status] is in state 'Emptying'. ACTIONS: Set washing machine status select [input_select.washing_machine_status] to 'Off'.", "natural_language": { "trigger": "When the man 002 current [sensor.man_002_current_a] sensor reports a current draw below 0.001 for a continuous period of 15 minutes.", "conditions": "If the washing machine status select [input_select.washing_machine_status] is currently set to 'Emptying'.", "action": "Changes the washing machine status to 'Off' by updating the washing machine status select [input_select.washing_machine_status]." }, "human_like": "Turns off the washing machine status after it has been idle and draining for 15 minutes.", "complexity": "low" } }, { "id": "AUT-Washing machine Force Off", "result": { "structured": "TRIGGER: When a Telegram command event with command '/washing_machine_already_empty' is received OR when a Telegram callback event with command '/washing_machine_already_empty' is received. CONDITIONS: None. ACTIONS: Set washing machine status select [input_select.washing_machine_status] to option 'Off'.", "natural_language": { "trigger": "When a specific command ('/washing_machine_already_empty') is sent via a Telegram message or callback.", "conditions": "There are no conditions that must be met.", "action": "Changes the status of the washing machine to 'Off' by setting the washing machine status select [input_select.washing_machine_status] to the 'Off' option." }, "human_like": "Turns off the washing machine status indicator when a specific Telegram command is received.", "complexity": "low" } }, { "id": "AUT-Mark windows preferred status as close", "result": { "structured": "TRIGGER: When the template condition 'environment 001 temperature rising [binary_sensor.environment_001_temperature_rising] is on AND dyson 01 temperature rising [binary_sensor.dyson_01_temperature_rising] is on' remains true for 1 hour and 30 minutes. CONDITIONS: None. ACTIONS: Set windows preferred status [input_select.windows_preferred_status] to 'Close'.", "natural_language": { "trigger": "When both the environment 001 temperature rising [binary_sensor.environment_001_temperature_rising] and the dyson 01 temperature rising [binary_sensor.dyson_01_temperature_rising] sensors indicate that the temperature is rising, and this combined state persists for one hour and thirty minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the windows preferred status [input_select.windows_preferred_status] to the 'Close' option." }, "human_like": "Closes the preferred window status if both temperature sensors report a rising temperature for an extended period.", "complexity": "medium" } }, { "id": "AUT-Mark windows preferred status as open", "result": { "structured": "TRIGGER: When the template condition (environment 001 temperature falling [binary_sensor.environment_001_temperature_falling] is on AND ble environment 001 temperature [sensor.ble_environment_001_temperature] is less than dyson 01 temperature [sensor.dyson_01_temperature]) remains true for 10 minutes. CONDITIONS: None. ACTIONS: Set windows preferred status [input_select.windows_preferred_status] to 'Open'.", "natural_language": { "trigger": "When the system detects that the environment 001 temperature falling [binary_sensor.environment_001_temperature_falling] is active and the ble environment 001 temperature [sensor.ble_environment_001_temperature] is lower than the dyson 01 temperature [sensor.dyson_01_temperature], and this combined condition persists for 10 minutes.", "conditions": "There are no additional conditions.", "action": "Changes the windows preferred status [input_select.windows_preferred_status] to 'Open'." }, "human_like": "Automatically sets the windows to 'Open' when an external temperature sensor is falling and is cooler than the indoor temperature for a sustained period.", "complexity": "medium" } } ]