[ { "id": "toggle_3d_printer_light", "result": { "structured": "TRIGGER: When 3D printer light [binary_sensor.3d_printer_lys] changes state from on to off OR from off to on. CONDITIONS: None. ACTIONS: Turn the 3D printer enclosure light [light.3d_printer_enclosure_light] on if the 3D printer light [binary_sensor.3d_printer_lys] is on, or turn it off if the 3D printer light [binary_sensor.3d_printer_lys] is off.", "natural_language": { "trigger": "Whenever the 3D printer light [binary_sensor.3d_printer_lys] changes its state, whether from on to off or from off to on.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the 3D printer enclosure light [light.3d_printer_enclosure_light] to match the state of the 3D printer light [binary_sensor.3d_printer_lys]. If the sensor is on, the light turns on; if the sensor is off, the light turns off." }, "human_like": "Syncs the 3D printer enclosure light to match the state of the 3D printer light sensor.", "complexity": "low" } }, { "id": "0a95a5cd-b3ea-4fa1-b392-93bc9cce5379", "result": { "structured": "TRIGGER: When 3D printer enclosure [binary_sensor.3d_printer_skab] changes to off. CONDITIONS: None. ACTIONS: Turn on Filament dehumidifier [switch.filament_affugter].", "natural_language": { "trigger": "When the 3D printer enclosure [binary_sensor.3d_printer_skab] door is closed (changes to 'off').", "conditions": "There are no additional conditions that must be met.", "action": "Turn on the Filament dehumidifier [switch.filament_affugter]." }, "human_like": "Turns on the filament dehumidifier when the 3D printer enclosure door is closed.", "complexity": "low" } }, { "id": "3d_printer_set_thermostat", "result": { "structured": "TRIGGER: When 3D printer build volume temperature [sensor.3d_printer_build_volume_temperature] OR 3D printer active [binary_sensor.3d_printer_aktiv] OR Octoprint current state [sensor.octoprint_current_state] changes state. CONDITIONS: None (conditions are evaluated within the choose action). ACTIONS: Choose based on conditions: (IF (3D printer active [binary_sensor.3d_printer_aktiv] is on AND Octoprint current state [sensor.octoprint_current_state] is 'Printing', 'Pausing', or 'Resuming') THEN apply a scene to set 3D printer climate [climate.3d_printer] to cool mode with temperature equal to 3D printer build volume temperature [sensor.3d_printer_build_volume_temperature] (default 25)) OR (IF (3D printer active [binary_sensor.3d_printer_aktiv] is on AND Octoprint current state [sensor.octoprint_current_state] is NOT 'Printing', 'Pausing', or 'Resuming') THEN apply a scene to set 3D printer climate [climate.3d_printer] to cool mode with temperature 20) OTHERWISE turn off 3D printer climate [climate.3d_printer].", "natural_language": { "trigger": "Whenever there is a change in the 3D printer build volume temperature [sensor.3d_printer_build_volume_temperature], the 3D printer active [binary_sensor.3d_printer_aktiv] status, or the Octoprint current state [sensor.octoprint_current_state].", "conditions": "The automation does not have global conditions. Instead, it selects an action based on the current state of the printer. It checks if the printer is active and what its current operational state is.", "action": "If the 3D printer is active and is currently printing, pausing, or resuming, it sets the 3D printer climate [climate.3d_printer] to cool mode, matching the temperature to the current build volume temperature (or a default of 25°C). If the printer is active but not in a printing-related state, it sets the climate to cool mode at 20°C. If the printer is not active, it turns off the climate control entirely." }, "human_like": "Automatically controls the 3D printer's climate based on its activity, cooling it to specific temperatures during printing or idle, and turning it off when inactive.", "complexity": "medium" } }, { "id": "3d_printer_ventilation_off", "result": { "structured": "TRIGGER: When 3D printer climate [climate.3d_printer] attribute hvac_action changes to 'off'. CONDITIONS: None. ACTIONS: Turn off 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] AND Turn off 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud].", "natural_language": { "trigger": "When the 3D printer climate [climate.3d_printer] stops its heating or cooling action, indicated by its hvac_action attribute changing to 'off'.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off both the 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] and the 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud]." }, "human_like": "Turns off the 3D printer enclosure fans when the printer itself is no longer heating or cooling.", "complexity": "low" } }, { "id": "3d_printer_ventilation_low", "result": { "structured": "TRIGGER: When 3D printer climate [climate.3d_printer] attribute hvac_action changes to idle. CONDITIONS: None. ACTIONS: Turn on 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] AND Turn on 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud] AND Set 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] percentage to 5 AND Set 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud] percentage to 25.", "natural_language": { "trigger": "When the 3D printer climate [climate.3d_printer] stops actively heating or cooling and its hvac_action attribute becomes idle.", "conditions": "There are no additional conditions that must be met.", "action": "Turns on both the 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] and the 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud]. It then sets the intake fan to a low speed of 5% and the exhaust fan to a speed of 25%." }, "human_like": "When the 3D printer is idle, it turns on the enclosure fans at low speeds for ventilation.", "complexity": "low" } }, { "id": "3d_printer_ventilation_high", "result": { "structured": "TRIGGER: When 3D printer climate [climate.3d_printer] attribute hvac_action changes to cooling. CONDITIONS: None. ACTIONS: Turn on 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] AND Turn on 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud] AND Set 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] to 100% AND Set 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud] to 100%.", "natural_language": { "trigger": "When the 3D printer climate [climate.3d_printer] starts cooling.", "conditions": "There are no conditions for this automation.", "action": "Turns on both the 3D printer enclosure intake fan [fan.3d_printer_enclosure_ind] and the 3D printer enclosure exhaust fan [fan.3d_printer_enclosure_ud], and sets both fans to their maximum speed of 100%." }, "human_like": "Turns the 3D printer enclosure fans to maximum speed when the printer starts cooling.", "complexity": "low" } }, { "id": "3d_print_status_notification", "result": { "structured": "TRIGGER: When Octoprint current state [sensor.octoprint_current_state] changes to Printing OR every 5 minutes (at minutes divisible by 5, seconds 0). CONDITIONS: Octoprint current state [sensor.octoprint_current_state] is Printing. ACTIONS: Send a notification to Mobile app darkphone notify [notify.mobile_app_darkphone] with title '3D Print Progress X% - Printing' (where X is the value from Octoprint print progress [sensor.octoprint_print_progress]), a message showing the time left formatted from Octoprint print time left [sensor.octoprint_print_time_left] as HH:MM:SS, and an image from 3D printer head camera [camera.3d_printer_head]. The notification uses tag '3d_print_status_notification', channel '3D Printer Status', low importance, and is persistent.", "natural_language": { "trigger": "The automation triggers either when the Octoprint current state [sensor.octoprint_current_state] changes to 'Printing', or every five minutes on the minute (e.g., at 0, 5, 10, etc.).", "conditions": "The automation only proceeds if the Octoprint current state [sensor.octoprint_current_state] is currently 'Printing'.", "action": "Sends a notification to the mobile phone via Mobile app darkphone notify [notify.mobile_app_darkphone]. The notification title includes the current print progress percentage from Octoprint print progress [sensor.octoprint_print_progress] and the printer state. The message shows the estimated time left, calculated from Octoprint print time left [sensor.octoprint_print_time_left] and formatted into hours, minutes, and seconds. It also includes a snapshot from the 3D printer head camera [camera.3d_printer_head]. The notification is set to be persistent and uses a specific channel and tag for identification." }, "human_like": "Sends periodic status updates to your phone while a 3D print is running, showing the progress, time remaining, and a live camera view.", "complexity": "medium" } }, { "id": "3d_print_stopped_notification", "result": { "structured": "TRIGGER: When Octoprint current state [sensor.octoprint_current_state] changes from 'Printing'. ACTIONS: 1. Clear any existing notification with tag '3d_print_status_notification' on channel '3D Printer Status' via Mobile app darkphone notify [notify.mobile_app_darkphone]. 2. Execute Translate script [script.translate] with the current state of Octoprint current state [sensor.octoprint_current_state] as the message, storing the result in variable 'output'. 3. Wait for 1 second. 4. Set variable 'message' to '3D Printer ' followed by the current state of 3D printer status [sensor.3d_printer_status]. 5. Send a high-importance notification via Mobile app darkphone notify [notify.mobile_app_darkphone] with the variable 'message' as the title, an empty message body, the tag '3d_print_alert_notification', channel '3D Printer Alerts', and an image from 3D printer camera [camera.3d_printer]. 6. Execute Voice broadcast script [script.voice_broadcast] with the variable 'message'.", "natural_language": { "trigger": "When the Octoprint current state [sensor.octoprint_current_state] is no longer 'Printing'.", "conditions": "There are no conditions specified for this automation.", "action": "First, it clears any previous 3D printer status notification on the mobile device. Then, it runs a translation script on the printer's new state. After a one-second delay, it creates a message combining '3D Printer' with the current 3D printer status [sensor.3d_printer_status]. This message is sent as a high-priority mobile alert with a live camera image from the 3D printer camera [camera.3d_printer] and is also broadcast via a voice announcement." }, "human_like": "Sends a mobile and voice alert with a camera snapshot when the 3D printer stops printing.", "complexity": "medium" } }, { "id": "3d_printer_active", "result": { "structured": "TRIGGER: When 3D printer active [binary_sensor.3d_printer_aktiv] turns on. CONDITIONS: None. ACTIONS: Turn on 3D printer swap cameras automation [automation.3d_printer_swap_cameras].", "natural_language": { "trigger": "When the 3D printer active [binary_sensor.3d_printer_aktiv] sensor detects the printer is active (turns on).", "conditions": "There are no conditions that must be met.", "action": "Enables the 3D printer swap cameras automation [automation.3d_printer_swap_cameras]." }, "human_like": "Starts the camera-swapping automation when the 3D printer becomes active.", "complexity": "low" } }, { "id": "3d_printer_auto_shutdown", "result": { "structured": "TRIGGER: When 3D printer active [binary_sensor.3d_printer_aktiv] remains off for 15 minutes. CONDITIONS: None. ACTIONS: Turn off 3D printer circuit breaker [switch.3d_printer_afbryder] AND turn off 3D printer swap cameras automation [automation.3d_printer_swap_cameras].", "natural_language": { "trigger": "When the 3D printer active [binary_sensor.3d_printer_aktiv] sensor indicates the printer is inactive (off) and remains in that state for 15 minutes.", "conditions": "There are no additional conditions for this automation.", "action": "Turns off the 3D printer circuit breaker [switch.3d_printer_afbryder] to cut power, and also disables the 3D printer swap cameras automation [automation.3d_printer_swap_cameras]." }, "human_like": "Automatically shuts down the 3D printer and its camera-swapping automation after the printer has been inactive for 15 minutes.", "complexity": "low" } }, { "id": "3d_printer_swap_cameras", "result": { "structured": "TRIGGER: Every 15 seconds (time pattern on seconds). CONDITIONS: None. ACTIONS: Toggle 3D printer swap cameras input boolean [input_boolean.3d_printer_swap_cameras].", "natural_language": { "trigger": "The automation runs every 15 seconds.", "conditions": "There are no conditions.", "action": "Toggles the state of the 3D printer swap cameras input boolean [input_boolean.3d_printer_swap_cameras]." }, "human_like": "Toggles a camera-swapping control every 15 seconds.", "complexity": "low" } }, { "id": "9a681933-f941-4df6-80cf-47b3f73a809c", "result": { "structured": "TRIGGER: When Person rook [person.rook] leaves home (state changes to not home). CONDITIONS: None. ACTIONS: Set Latest motion input select [input_select.latest_motion] to option 'Away'.", "natural_language": { "trigger": "When Person rook [person.rook] leaves home.", "conditions": "There are no additional conditions for this automation.", "action": "Updates the Latest motion input select [input_select.latest_motion] to show the option 'Away'." }, "human_like": "Updates a status indicator to 'Away' when a specific person leaves home.", "complexity": "low" } }, { "id": "77061068-2db4-417c-abdb-ac4393dc20bb", "result": { "structured": "TRIGGER: When the time pattern matches every 15 minutes (hours: any, minutes: divisible by 15, seconds: 0) OR When Airmee active [binary_sensor.airmee_active] turns on OR When Airmee url [sensor.airmee_url] changes state. CONDITIONS: Airmee within delivery window [binary_sensor.airmee_within_delivery_window] is off AND Airmee active [binary_sensor.airmee_active] is on. ACTIONS: Execute script Get airmee tracking script [script.get_airmee_tracking] with data: tracking_code extracted from the 'tracking_url' parameter of Airmee url [sensor.airmee_url] and phone_number_hash extracted from the 'phone_number_hash' parameter of Airmee url [sensor.airmee_url].", "natural_language": { "trigger": "The automation triggers every 15 minutes on the hour, when the Airmee active [binary_sensor.airmee_active] sensor turns on, or whenever the Airmee url [sensor.airmee_url] sensor's state changes.", "conditions": "The automation only proceeds if the Airmee within delivery window [binary_sensor.airmee_within_delivery_window] is off, indicating the delivery is not currently expected, and the Airmee active [binary_sensor.airmee_active] is on, indicating tracking is active.", "action": "It runs the Get airmee tracking script [script.get_airmee_tracking], passing the tracking code and phone number hash extracted from the parameters stored in the Airmee url [sensor.airmee_url] sensor." }, "human_like": "Checks for Airmee delivery tracking updates every 15 minutes or when tracking becomes active, but only if the delivery is not within its scheduled window.", "complexity": "medium" } }, { "id": "2f38d3c7-6973-480b-a33b-5299667c550c", "result": { "structured": "TRIGGER: Every minute when seconds equal 0. CONDITIONS: (Airmee within delivery window [binary_sensor.airmee_within_delivery_window] is on) AND (Airmee active [binary_sensor.airmee_active] is on) AND NOT ((Airmee tracking [sensor.airmee_tracking] is UNASSIGNED) OR (Airmee tracking [sensor.airmee_tracking] is DROPOFF_CONFIRMED)). ACTIONS: Execute script Get airmee tracking script [script.get_airmee_tracking] with data parameters tracking_code and phone_number_hash extracted from the attributes of Airmee url [sensor.airmee_url].", "natural_language": { "trigger": "The automation triggers every minute, precisely when the seconds of the clock are zero.", "conditions": "The automation runs only if the Airmee within delivery window [binary_sensor.airmee_within_delivery_window] is on, the Airmee active [binary_sensor.airmee_active] is on, and the Airmee tracking [sensor.airmee_tracking] status is neither UNASSIGNED nor DROPOFF_CONFIRMED.", "action": "It runs the Get airmee tracking script [script.get_airmee_tracking], passing it a tracking code and a phone number hash that are retrieved from the attributes of the Airmee url [sensor.airmee_url] sensor." }, "human_like": "Checks the status of an Airmee delivery every minute and fetches tracking details if the delivery is active, within its window, and hasn't been completed or cancelled.", "complexity": "medium" } }, { "id": "960d4a70-4b56-4bbf-a353-d71985e28ff5", "result": { "structured": "TRIGGER: When Airmee courier close [binary_sensor.airmee_courier_close] turns on. CONDITIONS: Delivery unlock front door automation [automation.delivery_unlock_front_door] is off. ACTIONS: In parallel, turn on Delivery unlock front door automation [automation.delivery_unlock_front_door] AND run Notify everywhere script [script.notify_everywhere] with the message 'Airmee bud nærmer sig. Automatisk gadedør-oplåsning slået til.'.", "natural_language": { "trigger": "When the Airmee courier close [binary_sensor.airmee_courier_close] sensor detects a courier is nearby and changes to 'on'.", "conditions": "Only if the Delivery unlock front door automation [automation.delivery_unlock_front_door] is currently turned off.", "action": "It simultaneously turns on the Delivery unlock front door automation [automation.delivery_unlock_front_door] and sends a notification everywhere with the message: 'Airmee bud nærmer sig. Automatisk gadedør-oplåsning slået til.' (Airmee courier is approaching. Automatic street door unlocking activated)." }, "human_like": "Activates automatic front door unlocking and sends a notification when an Airmee delivery courier is detected nearby.", "complexity": "low" } }, { "id": "84fd41b3-89c0-4b15-9461-a88f4e0a8f53", "result": { "structured": "TRIGGER: When Airmee active [binary_sensor.airmee_active] changes state. CONDITIONS: Airmee active [binary_sensor.airmee_active] is on. ACTIONS: If Airmee active [binary_sensor.airmee_active] is on, then turn on Airmee tracking slow automation [automation.airmee_tracking_slow] AND turn on Airmee courier close automation [automation.airmee_courier_close]. Otherwise, turn off Airmee tracking slow automation [automation.airmee_tracking_slow] AND turn off Airmee courier close automation [automation.airmee_courier_close].", "natural_language": { "trigger": "Whenever the state of the Airmee active [binary_sensor.airmee_active] sensor changes.", "conditions": "The automation only proceeds if the Airmee active [binary_sensor.airmee_active] sensor is currently in the 'on' state.", "action": "If the condition is met, the automation turns on two other automations: Airmee tracking slow automation [automation.airmee_tracking_slow] and Airmee courier close automation [automation.airmee_courier_close]. If the condition is not met (i.e., the trigger fired but the sensor is not 'on'), it turns those same two automations off." }, "human_like": "Controls the Airmee tracking automations, turning them on when a delivery is active and off when it's not.", "complexity": "medium" } }, { "id": "c9d66be2-eaa9-49c6-93f1-fe9bfd98fe91", "result": { "structured": "TRIGGER: When the time is 03:00:00. CONDITIONS: The current weekday is Sunday OR Wednesday. ACTIONS: Execute the Auto backup [auto_backup.backup] service with a backup name formatted as 'Automated Backup' followed by the current date (YYYY-MM-DD), configured to keep backups for 7 days and exclude the 'media' folder.", "natural_language": { "trigger": "The automation triggers every day at 3:00 AM.", "conditions": "It only runs if the current day is either a Sunday or a Wednesday.", "action": "It performs an automatic backup using the Auto backup [auto_backup.backup] service. The backup is named with today's date and is set to automatically delete backups older than 7 days, while skipping the 'media' folder." }, "human_like": "Performs a scheduled system backup every Sunday and Wednesday at 3 AM, keeping the last week's worth of backups.", "complexity": "low" } }, { "id": "bb2ef893-b9db-4718-80f5-d141f0491327", "result": { "structured": "TRIGGER: When the event auto_backup.backup_start occurs. CONDITIONS: None. ACTIONS: Create a persistent notification with title 'Backup Started.' and message 'Name: {{ trigger.event.data.name }}'.", "natural_language": { "trigger": "When an event named 'auto_backup.backup_start' is fired.", "conditions": "There are no conditions for this automation.", "action": "Creates a persistent notification with the title 'Backup Started.' and a message that includes the name of the backup from the event data." }, "human_like": "Shows a notification when a backup process begins.", "complexity": "low" } }, { "id": "74d23a64-03e5-435a-95e7-988f81dddc30", "result": { "structured": "TRIGGER: When the event auto_backup.backup_successful occurs. CONDITIONS: None. ACTIONS: Create a persistent notification with title 'Backup Complete. Syncing to Dropbox' and message containing the backup name and slug from the event data, then send the 'sync' command to the Hassio addon [719b45ef_dropback].", "natural_language": { "trigger": "When a successful backup event is reported by the Auto backup system.", "conditions": "There are no conditions that must be met.", "action": "Creates a notification to inform the user that the backup is complete and that syncing to Dropbox has started, then sends a command to the Dropbox sync addon to begin the sync process." }, "human_like": "Notifies the user when a backup finishes successfully and starts the process to sync it to Dropbox.", "complexity": "low" } }, { "id": "0aa22b1d-627e-4625-84d9-78c50e3140b3", "result": { "structured": "TRIGGER: When Dropback sync [sensor.dropback_sync] changes state to any value that is NOT unknown, NOT unavailable, and NOT an empty string. CONDITIONS: None. ACTIONS: Create a persistent notification with the title 'Backup Sync started.' and the message 'Name: [new state value of Dropback sync]'.", "natural_language": { "trigger": "Whenever the Dropback sync [sensor.dropback_sync] sensor changes to a new state, as long as that new state is not 'unknown', 'unavailable', or an empty string.", "conditions": "There are no additional conditions that must be met.", "action": "Creates a notification with the title 'Backup Sync started.' and a message that includes the new state of the sensor." }, "human_like": "Sends a notification when the backup sync process begins, showing the name of the sync job.", "complexity": "low" } }, { "id": "d768bde2-b457-49bd-87b4-ac89d96bfcbc", "result": { "structured": "TRIGGER: When Dropback sync [sensor.dropback_sync] changes state, provided the previous state was NOT unknown, NOT unavailable, and NOT empty (''). CONDITIONS: None. ACTIONS: Create a persistent notification with title 'Backup Synced.' and message 'Name: {{ trigger.from_state.state }}'.", "natural_language": { "trigger": "When the Dropback sync [sensor.dropback_sync] sensor updates to a new state, but only if its previous state was not 'unknown', not 'unavailable', and not an empty string.", "conditions": "There are no additional conditions for this automation.", "action": "Creates a persistent notification with the title 'Backup Synced.' and a message that includes the previous state of the sensor, formatted as 'Name: [previous state value]'." }, "human_like": "Sends a notification when a backup sync completes, showing the name of the previous sync state.", "complexity": "low" } }, { "id": "75195f2a-43fd-4fee-8a66-463e1d426600", "result": { "structured": "TRIGGER: When an event of type 'auto_backup.backup_failed' occurs. CONDITIONS: None. ACTIONS: Create a persistent notification with title 'Backup Failed.' and message containing the backup name and error from the event data.", "natural_language": { "trigger": "When a backup failure event is reported by the auto backup system.", "conditions": "There are no conditions for this automation.", "action": "Creates a persistent notification on the dashboard with the title 'Backup Failed.' and a message showing the name of the failed backup and the associated error." }, "human_like": "Sends a notification to the dashboard when an automated backup fails, showing the backup name and error details.", "complexity": "low" } }, { "id": "876cc78e-85b7-4f28-bbd8-abcd9563371c", "result": { "structured": "TRIGGER: When Dropback status [sensor.dropback_status] changes to Error. CONDITIONS: None. ACTIONS: Create a persistent notification with title 'Backup Sync error.' and message 'Dropback failed to sync backup.'.", "natural_language": { "trigger": "When the Dropback status [sensor.dropback_status] sensor reports an error state.", "conditions": "There are no additional conditions.", "action": "Creates a persistent notification with the title 'Backup Sync error.' and the message 'Dropback failed to sync backup.' to alert the user." }, "human_like": "Sends a notification when the backup sync service reports an error.", "complexity": "low" } }, { "id": "cd9e9d2a-a821-4adb-b29c-8cb577077ded", "result": { "structured": "TRIGGER: When Balcony active light profile [sensor.balcony_active_light_profile] changes state OR when the event refresh_light_profile occurs. CONDITIONS: None. ACTIONS: Set a variable 'profile' to the current state of Balcony active light profile [sensor.balcony_active_light_profile]. Then, based on the value of 'profile', apply a specific scene to Balcony light [light.altan] using a transition time defined by Scene transition time input number [input_number.scene_transition_time] (defaulting to 0.5 seconds). The scene applied is: If 'profile' is 'Bright', set light to on, brightness 255, color temperature 4000K. If 'profile' is 'Default', set light to on, brightness 255, color temperature 2857K. If 'profile' is 'Dimmed', set light to on, brightness 128, color temperature 2000K. If 'profile' is 'Ambient', set light to on, brightness 128, hue from Theme sensor [sensor.theme] primary_color_hue attribute. If 'profile' is 'Night', set light to on, brightness 2, RGB color red (255, 0, 0). If 'profile' is 'Off', turn the light off.", "natural_language": { "trigger": "The automation is triggered either when the Balcony active light profile [sensor.balcony_active_light_profile] changes its state, or when a custom event named 'refresh_light_profile' is received.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation first captures the current value of the Balcony active light profile [sensor.balcony_active_light_profile] into a variable. It then selects and applies a specific lighting scene to the Balcony light [light.altan] based on that profile value. The transition between light states uses a duration set by the Scene transition time input number [input_number.scene_transition_time], defaulting to half a second. The profiles are: 'Bright' (full brightness, cool white), 'Default' (full brightness, warm white), 'Dimmed' (half brightness, very warm white), 'Ambient' (half brightness, using the primary hue from the Theme sensor [sensor.theme]), 'Night' (very dim red light), and 'Off' (turns the light off)." }, "human_like": "Applies a specific lighting scene to the balcony light based on the selected active profile, such as bright, dimmed, or night light.", "complexity": "medium" } }, { "id": "e7500347-c170-40a2-a12b-9228a83bd56a", "result": { "structured": "TRIGGER: When Bathroom door [binary_sensor.badevarelse_dor] changes state to on OR off, provided the previous state was not unavailable AND not unknown. CONDITIONS: None. ACTIONS: Turn on Bathroom door activity input boolean [input_boolean.bathroom_door_activity].", "natural_language": { "trigger": "Whenever the Bathroom door [binary_sensor.badevarelse_dor] is opened or closed, but only if its previous state was a known, available state (not 'unavailable' or 'unknown').", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the Bathroom door activity input boolean [input_boolean.bathroom_door_activity]." }, "human_like": "Tracks bathroom door activity by turning on a flag whenever the door is opened or closed.", "complexity": "low" } }, { "id": "21421df7-95cf-4e18-823f-b1c9dc88d03a", "result": { "structured": "TRIGGER: When Bathroom door activity input boolean [input_boolean.bathroom_door_activity] changes to on OR off AND remains in that new state for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Bathroom door activity input boolean [input_boolean.bathroom_door_activity].", "natural_language": { "trigger": "When the Bathroom door activity input boolean [input_boolean.bathroom_door_activity] changes to either 'on' or 'off' and stays in that new state for 5 seconds.", "conditions": "There are no additional conditions.", "action": "Turns off the Bathroom door activity input boolean [input_boolean.bathroom_door_activity]." }, "human_like": "Automatically resets the bathroom door activity indicator a few seconds after it turns on or off.", "complexity": "low" } }, { "id": "4a9ce9a3-eb04-4bc8-8732-3ab0a988cb5e", "result": { "structured": "TRIGGER: When Bathroom active light profile [sensor.bathroom_active_light_profile] changes state OR when the refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Set variable 'profile' to the current state of Bathroom active light profile [sensor.bathroom_active_light_profile]. Then, based on the profile value: IF profile == 'Bright' THEN in parallel: run Difficult light script [script.difficult_light] on Bathroom cabinet light [light.badevaerelse_skab] with state on, brightness 255, hs_color [29, 15], and transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5s) AND apply a scene to Bathroom ceiling light [light.badevaerelse_loft] (on, brightness 255, color_temp_kelvin 4166, effect solid) and Bathroom lamp [light.badevaerelse_lampe] (on, brightness 255, color_temp_kelvin 4166) with the same transition time AND turn on Bathroom tablet light [light.bathroom_tablet] with brightness 255. IF profile == 'Default' THEN in parallel: run Difficult light script [script.difficult_light] on Bathroom cabinet light [light.badevaerelse_skab] with state on, brightness 255, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] AND apply a scene to Bathroom ceiling light [light.badevaerelse_loft] (on, brightness 255, color_temp_kelvin 4166, effect solid) and Bathroom lamp [light.badevaerelse_lampe] (on, brightness 255, color_temp_kelvin 4166) with the same transition time AND turn on Bathroom tablet light [light.bathroom_tablet] with brightness 255. IF profile == 'Dimmed' THEN in parallel: run Difficult light script [script.difficult_light] on Bathroom cabinet light [light.badevaerelse_skab] with state on, brightness 96, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] AND apply a scene to Bathroom ceiling light [light.badevaerelse_loft] (on, brightness 48, hs_color from Theme sensor [sensor.theme] attribute 'primary_color_12v', effect Solid) and Bathroom lamp [light.badevaerelse_lampe] (on, brightness 127, color_temp_kelvin 2700) with the same transition time AND turn on Bathroom tablet light [light.bathroom_tablet] with brightness 127. IF profile == 'Ambient' THEN in parallel: run Difficult light script [script.difficult_light] on Bathroom cabinet light [light.badevaerelse_skab] with state on, brightness 32, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] AND apply a scene to Bathroom ceiling light [light.badevaerelse_loft] (on, brightness 24, hs_color from Theme sensor [sensor.theme] attribute 'primary_color_12v', effect Lake) and Bathroom lamp [light.badevaerelse_lampe] (on, brightness 64, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue') with the same transition time AND turn on Bathroom tablet light [light.bathroom_tablet] with brightness 64. IF profile == 'Night' THEN in parallel: run Difficult light script [script.difficult_light] on Bathroom cabinet light [light.badevaerelse_skab] with state on, brightness 24, hs_color [0, 100], and transition time from Scene transition time input number [input_number.scene_transition_time] AND apply a scene to Bathroom ceiling light [light.badevaerelse_loft] (on, brightness 10, rgb_color [255, 0, 0], effect Solid) and Bathroom lamp [light.badevaerelse_lampe] (on, brightness 2, color_temp_kelvin 2202) with the same transition time AND turn on Bathroom tablet light [light.bathroom_tablet] with brightness 24. IF profile == 'Off' THEN: apply a scene turning off Bathroom ceiling light [light.badevaerelse_loft], Bathroom lamp [light.badevaerelse_lampe], and Bathroom cabinet light [light.badevaerelse_skab] with transition time from Scene transition time input number [input_number.scene_transition_time], wait for (transition time + 1 second), IF Bathroom selected light profile [sensor.bathroom_selected_light_profile] is 'Off' THEN turn off Bathroom ceiling light [light.badevaerelse_loft], wait 1 minute, IF Bathroom selected light profile [sensor.bathroom_selected_light_profile] is 'Off' THEN turn off Bathroom ceiling light [light.badevaerelse_loft] again, and turn off Bathroom tablet light [light.bathroom_tablet].", "natural_language": { "trigger": "The automation runs whenever the Bathroom active light profile [sensor.bathroom_active_light_profile] changes its value, or when a specific refresh_light_profile event is received.", "conditions": "There are no conditions that must be met before the actions run; the automation executes immediately upon trigger.", "action": "The automation first captures the current light profile value. It then selects one of six lighting scenes based on that profile: Bright, Default, Dimmed, Ambient, Night, or Off. For the Bright, Default, Dimmed, Ambient, and Night profiles, it simultaneously adjusts the Bathroom cabinet light [light.badevaerelse_skab] (using a special script), the Bathroom ceiling light [light.badevaerelse_loft], the Bathroom lamp [light.badevaerelse_lampe], and the Bathroom tablet light [light.bathroom_tablet] to specific brightness, color, and effect settings. The transition between states uses a configurable duration from the Scene transition time input number [input_number.scene_transition_time]. For the Ambient and Dimmed profiles, some colors are taken from a central Theme sensor [sensor.theme]. If the selected profile is 'Off', it turns off all the main bathroom lights, waits briefly, checks twice if the Bathroom selected light profile [sensor.bathroom_selected_light_profile] is still 'Off' (with a one-minute delay between checks), and finally turns off the Bathroom tablet light [light.bathroom_tablet]." }, "human_like": "Applies a coordinated lighting scene in the bathroom based on the selected active profile, ranging from bright task lighting to a night light, and handles turning everything off smoothly.", "complexity": "high" } }, { "id": "2d6e3e42-2e63-4466-94d9-5cc5e0167885", "result": { "structured": "TRIGGER: When Bathroom motion [binary_sensor.badevaerelse_motion] changes to on OR when Bathroom movement [binary_sensor.badevaerelse_bevaegelse] changes to on. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to 'Bathroom'.", "natural_language": { "trigger": "When motion is detected by either the Bathroom motion [binary_sensor.badevaerelse_motion] or the Bathroom movement [binary_sensor.badevaerelse_bevaegelse] sensor.", "conditions": "The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked, and the person Rook [person.rook] must be at home.", "action": "Updates the 'Latest motion input select' [input_select.latest_motion] to the option 'Bathroom'." }, "human_like": "Updates a tracker to show the bathroom was the last room with motion, but only when the vacuum is docked and Rook is home.", "complexity": "medium" } }, { "id": "21deeaa0-0cb8-44eb-95e5-ebc3ab3223bd", "result": { "structured": "TRIGGER: When Bedroom curtains auto open [binary_sensor.bedroom_curtains_auto_open] remains in its state for 2 minutes. CONDITIONS: None. ACTIONS: If Bedroom curtains auto open [binary_sensor.bedroom_curtains_auto_open] is on, open Bedroom curtain cover [cover.sovevaerelse_gardin]. If Bedroom curtains auto open [binary_sensor.bedroom_curtains_auto_open] is off, close Bedroom curtain cover [cover.sovevaerelse_gardin]. Otherwise, stop Bedroom curtain cover [cover.sovevaerelse_gardin].", "natural_language": { "trigger": "When the Bedroom curtains auto open [binary_sensor.bedroom_curtains_auto_open] sensor remains in the same state for two minutes.", "conditions": "There are no additional conditions.", "action": "The automation checks the state of the Bedroom curtains auto open [binary_sensor.bedroom_curtains_auto_open] sensor. If it is 'on', it opens the Bedroom curtain cover [cover.sovevaerelse_gardin]. If it is 'off', it closes the Bedroom curtain cover [cover.sovevaerelse_gardin]. If the state is anything else (like 'unknown'), it stops the Bedroom curtain cover [cover.sovevaerelse_gardin]." }, "human_like": "Automatically opens or closes the bedroom curtains based on the state of the auto-open sensor after a two-minute delay.", "complexity": "low" } }, { "id": "bedroom_balcony_door_open_reminder", "result": { "structured": "TRIGGER: When Bedroom activity state [sensor.bedroom_activity_state] changes to 'off' AND remains for 15 minutes. CONDITIONS: Bedroom balcony door [binary_sensor.sovevarelse_altandor] is open (on) AND Office balcony temperature [sensor.kontor_altan_temperatur] is below 18. ACTIONS: Run Notify everywhere script [script.notify_everywhere] with message 'Soveværelse altandør står åben!'.", "natural_language": { "trigger": "When the Bedroom activity state [sensor.bedroom_activity_state] indicates no activity and remains in that state for 15 minutes.", "conditions": "The Bedroom balcony door [binary_sensor.sovevarelse_altandor] must be open, and the Office balcony temperature [sensor.kontor_altan_temperatur] must be below 18 degrees.", "action": "Sends a notification everywhere with the message 'Soveværelse altandør står åben!' (Bedroom balcony door is open!)." }, "human_like": "Sends a reminder if the bedroom balcony door is left open while it's cold outside and no one is active in the bedroom.", "complexity": "low" } }, { "id": "2506073c-4190-4ed1-bcd8-55c4a2c9fe5e", "result": { "structured": "TRIGGER: When Bedroom door [binary_sensor.sovevarelse_dor] changes to open (on). CONDITIONS: None. ACTIONS: Turn on Bedroom door activity input boolean [input_boolean.bedroom_door_activity].", "natural_language": { "trigger": "When the Bedroom door [binary_sensor.sovevarelse_dor] opens.", "conditions": "There are no conditions for this automation.", "action": "Turns on the Bedroom door activity input boolean [input_boolean.bedroom_door_activity]." }, "human_like": "Turns on a flag to indicate activity when the bedroom door opens.", "complexity": "low" } }, { "id": "53b497b2-5f12-44b9-bfae-13f17845296f", "result": { "structured": "TRIGGER: When Bedroom door activity input boolean [input_boolean.bedroom_door_activity] turns on and remains on for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Bedroom door activity input boolean [input_boolean.bedroom_door_activity].", "natural_language": { "trigger": "When the Bedroom door activity input boolean [input_boolean.bedroom_door_activity] is turned on and stays on for five seconds.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Bedroom door activity input boolean [input_boolean.bedroom_door_activity]." }, "human_like": "Automatically resets the bedroom door activity indicator five seconds after it is turned on.", "complexity": "low" } }, { "id": "5ea088bc-b2bb-41c3-b342-f8d1422a88a4", "result": { "structured": "TRIGGER: When Bedroom active light profile [sensor.bedroom_active_light_profile] changes state OR when the event refresh_light_profile [refresh_light_profile] occurs. CONDITIONS: None. ACTIONS: Set variable 'profile' to the current state of Bedroom active light profile [sensor.bedroom_active_light_profile]. Then, based on the value of 'profile': IF profile equals 'Bright', THEN in parallel: 1) Run script Difficult light script [script.difficult_light] on Bedroom floor light [light.sovevaerelse_gulv] with state on, brightness 255, hs_color [29, 15], and transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). 2) Apply a scene with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds) to set the following lights: Bed reading lamp [light.seng_laeselampe] (on, brightness 255, color_temp_kelvin 2700), Bedroom ceiling light [light.sovevaerelse_loft] (on, brightness 255, color_temp_kelvin 4000, effect solid), Bed spots over [light.seng_spots_over] (on, brightness 255, effect None), Bed spots under [light.seng_spots_under] (on, brightness 255, effect None), Bedroom shelf spots [light.sovevaerelse_reol_spots] (on, brightness 255, effect None), Bed shelf up [light.seng_hylder_op] (on, brightness 255, hs_color [29, 15], effect Solid), Bed shelf down [light.seng_hylder_ned] (on, brightness 255, hs_color [29, 15], effect Solid), Pencil light [light.blyant] (on, brightness 255, hs_color [29, 15], effect Solid). 3) Turn on Bedroom tablet light [light.bedroom_tablet] with brightness 255. IF profile equals 'Default', THEN in parallel: 1) Run script Difficult light script [script.difficult_light] on Bedroom floor light [light.sovevaerelse_gulv] with state on, brightness 255, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). 2) Apply a scene with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds) to set the following lights: Bed reading lamp [light.seng_laeselampe] (on, brightness 200, color_temp_kelvin 2700), Bed spots over [light.seng_spots_over] (on, brightness 200, effect None), Bed spots under [light.seng_spots_under] (on, brightness 200, effect None), Bedroom shelf spots [light.sovevaerelse_reol_spots] (on, brightness 200, effect None), Bedroom ceiling light [light.sovevaerelse_loft] (on, brightness 200, color_temp_kelvin 4000, effect Solid), Bed shelf up [light.seng_hylder_op] (on, brightness 255, hs_color from Theme sensor [sensor.theme] attribute 'primary_color', effect Solid), Bed shelf down [light.seng_hylder_ned] (on, brightness 255, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid), Pencil light [light.blyant] (on, brightness 255, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid). 3) Turn on Bedroom tablet light [light.bedroom_tablet] with brightness 172. IF profile equals 'Dimmed', THEN in parallel: 1) Run script Difficult light script [script.difficult_light] on Bedroom floor light [light.sovevaerelse_gulv] with state on, brightness 96, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). 2) Apply a scene with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds) to set the following lights: Bed reading lamp [light.seng_laeselampe] (on, brightness 51, color_temp_kelvin 2173), Bed spots over [light.seng_spots_over] (on, brightness 12, effect None), Bed spots under [light.seng_spots_under] (on, brightness 24, effect None), Bedroom shelf spots [light.sovevaerelse_reol_spots] (on, brightness 64, effect None), Bedroom ceiling light [light.sovevaerelse_loft] (on, brightness 9, color_temp_kelvin 3100, effect Solid), Bed shelf up [light.seng_hylder_op] (on, brightness 4, hs_color from Theme sensor [sensor.theme] attribute 'primary_color', effect Solid), Bed shelf down [light.seng_hylder_ned] (on, brightness 4, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid), Pencil light [light.blyant] (on, brightness 64, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid). 3) Turn on Bedroom tablet light [light.bedroom_tablet] with brightness 64. IF profile equals 'Ambient', THEN in parallel: 1) Set Bedroom ceiling speed number [number.sovevaerelse_loft_speed] to 1. 2) Set Bedroom ceiling intensity number [number.sovevaerelse_loft_intensity] to 100. 3) Set Bedroom ceiling color palette select [select.sovevaerelse_loft_color_palette] to '* Colors 1&2'. 4) Run script Difficult light script [script.difficult_light] on Bedroom floor light [light.sovevaerelse_gulv] with state on, brightness 32, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color_hue', and transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). 5) Apply a scene with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds) to set the following lights and select: Bed spots over [light.seng_spots_over] (off), Bed spots under [light.seng_spots_under] (off), Bedroom ceiling light [light.sovevaerelse_loft] (on, brightness 6, hs_color from Theme sensor [sensor.theme] attribute 'primary_color_12v', effect Noise2D), Bedroom shelf spots [light.sovevaerelse_reol_spots] (on, brightness 32, effect None), Bedroom shelf preset select [select.seng_hylder_preset] (Ambient), Bed shelf up [light.seng_hylder_op] (on, brightness 2, hs_color from Theme sensor [sensor.theme] attribute 'primary_color', effect Solid Pattern), Bed shelf down [light.seng_hylder_ned] (on, brightness 2, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid Pattern), Bed reading lamp [light.seng_laeselampe] (on, brightness 2, hs_color from Theme sensor [sensor.theme] attribute 'primary_color_hue'), Pencil light [light.blyant] (on, brightness 24, hs_color from Theme sensor [sensor.theme] attribute 'secondary_color', effect Solid). 6) Turn on Bedroom tablet light [light.bedroom_tablet] with brightness 32. IF profile equals 'Night', THEN in parallel: 1) Set Bedroom ceiling speed number [number.sovevaerelse_loft_speed] to 1. 2) Set Bedroom ceiling intensity number [number.sovevaerelse_loft_intensity] to 100. 3) Set Bedroom ceiling color palette select [select.sovevaerelse_loft_color_palette] to '* Colors 1&2'. 4) Apply a scene with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds) to set the following lights and selects: Bedroom floor light [light.sovevaerelse_gulv] (off), Bed spots over [light.seng_spots_over] (off), Bed spots under [light.seng_spots_under] (off), Bedroom shelf spots [light.sovevaerelse_reol_spots] (on, brightness 8, effect None), Bed reading lamp [light.seng_laeselampe] (on, brightness 2, rgb_color [255, 0, 0]), Pencil light [light.blyant] (on, brightness 24, rgb_color [255, 0, 0], effect Solid), Bedroom shelf preset select [select.seng_hylder_preset] (Night), Bed shelf up [light.seng_hylder_op] (off), Bed shelf down [light.seng_hylder_ned] (on, brightness 2, rgb_color [255, 0, 0], effect Solid Pattern), Bedroom ceiling preset select [select.sovevaerelse_loft_preset] (Night), Bedroom ceiling light [light.sovevaerelse_loft] (on, brightness 5, rgb_color [255, 0, 0], effect Noise2D). 5) Turn on Bedroom tablet light [light.bedroom_tablet] with brightness 1. IF profile equals 'Off', THEN: 1) Turn off Bedroom lights group [light.sovevaerelse_lys] with transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). 2) Choose: IF Bedroom activity state [sensor.bedroom_activity_state] is 'on', THEN turn on Bedroom tablet light [light.bedroom_tablet] with brightness 1 AND turn on Bedroom tablet screensaver light [light.bedroom_tablet_screensaver]. ELSE (default), turn off Bedroom tablet light [light.bedroom_tablet].", "natural_language": { "trigger": "This automation is triggered whenever the Bedroom active light profile [sensor.bedroom_active_light_profile] changes its state, or when a specific event named refresh_light_profile [refresh_light_profile] is manually fired.", "conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon any of the triggers.", "action": "The automation first captures the current light profile from the Bedroom active light profile [sensor.bedroom_active_light_profile] sensor. It then selects and executes a different set of actions based on which profile is active. For the 'Bright' profile, it sets the bedroom floor light to a bright warm white, applies a scene to turn on and configure all other bedroom lights (ceiling, reading lamp, bed spots, shelf lights, and pencil light) to high brightness with specific colors, and sets the bedroom tablet light to full brightness. For the 'Default' profile, it does a similar setup but uses colors from the current theme sensor and sets slightly lower brightness for some lights. The 'Dimmed' profile reduces brightness levels significantly for a relaxed atmosphere. The 'Ambient' profile configures the ceiling light for a dynamic effect, sets shelf lights to a pattern mode, and dims most lights. The 'Night' profile turns most lights off or sets them to a very dim red color for night vision, and configures specific presets. Finally, for the 'Off' profile, it turns off the main bedroom light group and then decides the state of the tablet light: if bedroom activity is detected, it sets the tablet to a minimal brightness and turns on a screensaver; otherwise, it turns the tablet light off completely." }, "human_like": "This automation applies different lighting scenes in the bedroom based on the selected active profile, ranging from bright and functional to dimmed, ambient, night, and off modes, also adjusting the tablet display accordingly.", "complexity": "high" } }, { "id": "46491d6e-f434-4ae3-ba8d-c185127880ac", "result": { "structured": "TRIGGER: When Bedroom chromecast media player [media_player.sovevaerelse_chromecast] changes state to any value that is NOT off, unavailable, or unknown. CONDITIONS: None. ACTIONS: Turn on Bedroom TV switch [switch.sovevaerelse_tv].", "natural_language": { "trigger": "When the Bedroom chromecast media player [media_player.sovevaerelse_chromecast] changes to any state except off, unavailable, or unknown.", "conditions": "There are no additional conditions that must be met.", "action": "Turn on the Bedroom TV switch [switch.sovevaerelse_tv]." }, "human_like": "Turns on the bedroom TV whenever the Chromecast becomes active.", "complexity": "low" } }, { "id": "afbd2abd-bdb6-4df0-9b29-4317aad76b39", "result": { "structured": "TRIGGER: When Bedroom chromecast media player [media_player.sovevaerelse_chromecast] remains in state 'off' OR 'idle' for 2 minutes. CONDITIONS: None. ACTIONS: Turn off Bedroom TV switch [switch.sovevaerelse_tv].", "natural_language": { "trigger": "When the Bedroom chromecast media player [media_player.sovevaerelse_chromecast] has been either off or idle for at least two minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Bedroom TV switch [switch.sovevaerelse_tv]." }, "human_like": "Turns off the bedroom TV after the Chromecast has been idle or off for two minutes.", "complexity": "low" } }, { "id": "e809091c-9c44-4a35-b9fa-c169204c6369", "result": { "structured": "TRIGGER: When Bedroom room state sensor [sensor.bedroom_room_state] changes to 'off'. CONDITIONS: Bedroom video out [binary_sensor.sovevaerelse_video_out] is 'on'. ACTIONS: Mute the volume of Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal].", "natural_language": { "trigger": "When the Bedroom room state sensor [sensor.bedroom_room_state] changes to 'off'.", "conditions": "If the Bedroom video out [binary_sensor.sovevaerelse_video_out] is currently 'on'.", "action": "Mute the volume of the Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal]." }, "human_like": "Mutes the bedroom soundbar when the room state is off and the video output is active.", "complexity": "low" } }, { "id": "c1c6e2bc-d829-4b64-8496-6acc69cbaedf", "result": { "structured": "TRIGGER: When Bedroom room state sensor [sensor.bedroom_room_state] changes to active. CONDITIONS: Bedroom video out [binary_sensor.sovevaerelse_video_out] is on. ACTIONS: Unmute Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal].", "natural_language": { "trigger": "When the Bedroom room state sensor [sensor.bedroom_room_state] becomes active.", "conditions": "If the Bedroom video out [binary_sensor.sovevaerelse_video_out] is currently on.", "action": "Unmutes the Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal]." }, "human_like": "Unmutes the bedroom soundbar when the room is active and the video output is on.", "complexity": "low" } }, { "id": "641d990f-ecf5-4f08-a223-4bd0f604e190", "result": { "structured": "TRIGGER: When Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] changes to state 'up' AND remains in that state for 75 milliseconds. CONDITIONS: None. ACTIONS: In a loop, perform the following sequence: Choose an action based on the state of Bedroom media player [media_player.sovevaerelse]. If it is 'playing', then increase the volume of Bedroom media player [media_player.sovevaerelse]. Otherwise, increase the volume of Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal]. Then wait for 75 milliseconds. Repeat this loop UNTIL Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] changes to 'off' OR to 'down'.", "natural_language": { "trigger": "When the Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] is set to 'up' and stays in that state for 75 milliseconds.", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "The automation enters a loop. In each cycle of the loop, it checks if the Bedroom media player [media_player.sovevaerelse] is currently playing. If it is, the volume of the Bedroom media player is increased. If it is not playing, the volume of the Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal] is increased instead. After performing the volume increase, the automation waits for 75 milliseconds. This loop continues to repeat until the Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] is no longer set to 'up', meaning it has changed to either 'off' or 'down'." }, "human_like": "Repeatedly increases the volume of the bedroom's media player or soundbar while a remote control is held in the 'up' position, with a short delay between each volume step.", "complexity": "medium" } }, { "id": "522eda0a-ea1a-4868-8066-ace9a757d203", "result": { "structured": "TRIGGER: When Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] changes to state 'down' AND remains in that state for 75 milliseconds. CONDITIONS: None. ACTIONS: In a loop, perform the following sequence: 1. Choose: IF Bedroom media player [media_player.sovevaerelse] is playing, THEN call service media_player.volume_down on Bedroom media player [media_player.sovevaerelse]. OTHERWISE (default), call service media_player.volume_down on Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal]. 2. Wait for 75 milliseconds. Repeat this loop UNTIL Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] is 'off' OR Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] is 'up'.", "natural_language": { "trigger": "When the Bedroom soundbar volume remote state input select [input_select.sovevaerelse_soundbar_volume_remote_state] is set to 'down' and stays in that state for at least 75 milliseconds.", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "The automation repeatedly performs a volume down action. In each cycle, it checks if the Bedroom media player [media_player.sovevaerelse] is currently playing. If it is, it lowers the volume of that player. If not, it lowers the volume of the Bedroom soundbar media player [media_player.sovevaerelse_soundbar_songpal] instead. After each volume adjustment, it waits for 75 milliseconds. This loop continues until the remote state is changed to either 'off' or 'up'." }, "human_like": "Lowers the volume of the bedroom's media player or soundbar when the volume remote is held down, automatically switching the target device based on which one is playing.", "complexity": "medium" } }, { "id": "bf4a1137-12a0-4e56-8029-2355e1f64c84", "result": { "structured": "TRIGGER: When Bedroom motion [binary_sensor.sovevaerelse_motion] turns on OR Bedroom floor movement [binary_sensor.sovevarelse_gulv] turns on OR Bedroom Door Activity [binary_sensor.bedroom_door_activity] turns on. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to option 'Bedroom'.", "natural_language": { "trigger": "When motion is detected by the Bedroom motion sensor, or movement is detected on the Bedroom floor, or activity is detected on the Bedroom door.", "conditions": "The Roborock vacuum must be docked, and the person named rook must be at home.", "action": "Updates the 'Latest motion' selector to show 'Bedroom'." }, "human_like": "Updates a tracker to show the Bedroom as the last room with activity, but only when the vacuum is docked and a specific person is home.", "complexity": "medium" } }, { "id": "car_delayed_charging_on", "result": { "structured": "TRIGGER: When Car delayed charging input boolean [input_boolean.car_delayed_charging] changes from off to on OR when Car start charging at input datetime [input_datetime.car_start_charging_at] changes state. CONDITIONS: Car delayed charging input boolean [input_boolean.car_delayed_charging] is on. ACTIONS: Turn off Car start stop charging switch [switch.id_3_pro_start_stop_charging] AND run Notify darkphone script [script.notify_darkphone] with a message stating charging is stopped and will restart at the time specified in Car start charging at input datetime [input_datetime.car_start_charging_at].", "natural_language": { "trigger": "The automation triggers either when the Car delayed charging input boolean [input_boolean.car_delayed_charging] is turned on, or when the Car start charging at input datetime [input_datetime.car_start_charging_at] is updated.", "conditions": "The automation only proceeds if the Car delayed charging input boolean [input_boolean.car_delayed_charging] is currently in the 'on' state.", "action": "It stops the car charger by turning off the Car start stop charging switch [switch.id_3_pro_start_stop_charging] and simultaneously sends a notification to a phone via the Notify darkphone script [script.notify_darkphone], informing that charging has stopped and will resume at the time set in the Car start charging at input datetime [input_datetime.car_start_charging_at]." }, "human_like": "Stops the car charger and sends a notification when delayed charging is enabled, informing the user when charging will resume.", "complexity": "medium" } }, { "id": "car_start_delayed_charging", "result": { "structured": "TRIGGER: When the time reaches the value set in Car start charging at input datetime [input_datetime.car_start_charging_at]. CONDITIONS: Car delayed charging input boolean [input_boolean.car_delayed_charging] is on. ACTIONS: (Parallel) Turn off Car delayed charging input boolean [input_boolean.car_delayed_charging] AND Turn on Car start stop charging switch [switch.id_3_pro_start_stop_charging] AND Execute Notify darkphone script [script.notify_darkphone] with the message 'Forsinket opladningstidspunkt er nået. Genstarter opladning.'.", "natural_language": { "trigger": "At the specific time set in the Car start charging at input datetime [input_datetime.car_start_charging_at].", "conditions": "The Car delayed charging input boolean [input_boolean.car_delayed_charging] must be switched on.", "action": "It performs three actions simultaneously: it turns off the Car delayed charging input boolean [input_boolean.car_delayed_charging], turns on the Car start stop charging switch [switch.id_3_pro_start_stop_charging] to start charging, and sends a notification to a phone via the Notify darkphone script [script.notify_darkphone] stating that the delayed charging time has been reached and charging is restarting." }, "human_like": "Starts the car charging and sends a notification when a preset delayed start time is reached.", "complexity": "low" } }, { "id": "set_car_charging_started_time", "result": { "structured": "TRIGGER: When Car charging connector state [sensor.id_3_pro_charging_connector_state] changes from off to on. CONDITIONS: None. ACTIONS: Set Car charging started input text [input_text.car_charging_started] to the current Unix timestamp.", "natural_language": { "trigger": "When the Car charging connector state [sensor.id_3_pro_charging_connector_state] changes from 'off' to 'on'.", "conditions": "There are no conditions for this automation.", "action": "Sets the value of the Car charging started input text [input_text.car_charging_started] to the current Unix timestamp, effectively recording the moment charging began." }, "human_like": "Records the start time of the car charging session when the connector is plugged in.", "complexity": "low" } }, { "id": "set_car_charging_type", "result": { "structured": "TRIGGER: When Car charging type sensor [sensor.id_3_pro_charging_type] changes from 'invalid' to either 'ac' OR 'dc'. CONDITIONS: None. ACTIONS: Set the value of Car charging type input text [input_text.car_charging_type] to the new state of Car charging type sensor [sensor.id_3_pro_charging_type].", "natural_language": { "trigger": "When the Car charging type sensor [sensor.id_3_pro_charging_type] transitions from an 'invalid' state to either an 'ac' or 'dc' state.", "conditions": "There are no conditions that must be met for this automation to proceed.", "action": "Updates the Car charging type input text [input_text.car_charging_type] to reflect the new charging type reported by the sensor." }, "human_like": "Updates a text field with the car's current charging type (AC or DC) whenever the sensor reports a valid value.", "complexity": "low" } }, { "id": "clear_car_charging_started_time", "result": { "structured": "TRIGGER: When Car charging connector state [sensor.id_3_pro_charging_connector_state] changes to 'off'. CONDITIONS: None. ACTIONS: Set Car charging type input text [input_text.car_charging_type] to an empty string AND Set Car charging started input text [input_text.car_charging_started] to an empty string.", "natural_language": { "trigger": "When the Car charging connector state [sensor.id_3_pro_charging_connector_state] changes to 'off', indicating the car is no longer plugged in.", "conditions": "There are no conditions that must be met.", "action": "Clears the stored charging type by setting Car charging type input text [input_text.car_charging_type] to an empty string, and clears the stored charging start time by setting Car charging started input text [input_text.car_charging_started] to an empty string." }, "human_like": "Clears the car's charging start time and type when the charging connector is disconnected.", "complexity": "low" } }, { "id": "notify_car_charging", "result": { "structured": "TRIGGER: When Car remaining charging time [sensor.id_3_pro_remaining_charging_time] changes state from any value except 'unavailable'. CONDITIONS: The absolute difference between the previous and new integer values of Car remaining charging time [sensor.id_3_pro_remaining_charging_time] is greater than 5 minutes. ACTIONS: Wait 5 seconds, then execute the Notify darkphone script [script.notify_darkphone] with a message containing the current Car state of charge primary [sensor.id_3_pro_soc_primary] percentage, the Car charging target level number [number.id_3_pro_charging_target_level] percentage, and the estimated completion time from Car charging estimated date reached [sensor.id_3_pro_charging_estimated_date_reached].", "natural_language": { "trigger": "Whenever the Car remaining charging time [sensor.id_3_pro_remaining_charging_time] sensor updates its state, as long as it wasn't previously 'unavailable'.", "conditions": "The change in the estimated charging time must be significant, meaning the new value differs from the old value by more than 5 minutes in either direction.", "action": "After a brief 5-second delay, send a notification via the Notify darkphone script [script.notify_darkphone]. The message will report the car's current battery level, its target charging level, and the estimated time the charge will be complete." }, "human_like": "Sends a phone notification with charging details when the car's estimated time to finish charging changes significantly.", "complexity": "medium" } }, { "id": "notify_15_minutes_till_car_charged", "result": { "structured": "TRIGGER: When Car remaining charging time [sensor.id_3_pro_remaining_charging_time] falls below 16. CONDITIONS: Car charging state [sensor.id_3_pro_charging_state] is 'charging'. ACTIONS: Execute script Notify darkphone script [script.notify_darkphone] with a message containing the current state of charge and remaining charging time.", "natural_language": { "trigger": "When the sensor monitoring the remaining charging time for the car reports a value below 16 minutes.", "conditions": "The car must currently be in a 'charging' state.", "action": "Sends a notification to a specified device, reporting the current battery percentage, the target charging level, and the estimated time until charging is complete." }, "human_like": "Sends a notification when the car is almost fully charged, letting you know the current battery level and how much time is left.", "complexity": "low" } }, { "id": "notify_car_charged", "result": { "structured": "TRIGGER: When Car charging state [sensor.id_3_pro_charging_state] changes from charging to any other state. CONDITIONS: Car charging state [sensor.id_3_pro_charging_state] is NOT unavailable. ACTIONS: Execute Notify darkphone script [script.notify_darkphone] with a message containing the current state of charge from Car state of charge primary [sensor.id_3_pro_soc_primary].", "natural_language": { "trigger": "When the Car charging state [sensor.id_3_pro_charging_state] stops being 'charging' and transitions to a different state.", "conditions": "The Car charging state [sensor.id_3_pro_charging_state] must not be 'unavailable'.", "action": "Sends a notification via the Notify darkphone script [script.notify_darkphone] stating that charging is complete and reporting the current battery level from Car state of charge primary [sensor.id_3_pro_soc_primary]." }, "human_like": "Sends a notification when the car finishes charging, including the final battery percentage.", "complexity": "low" } }, { "id": "climatise_car_for_upcoming_drive", "result": { "structured": "TRIGGER: When Upcoming drive binary sensor [binary_sensor.upcoming_drive] turns on. CONDITIONS: None. ACTIONS: Turn on Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When the Upcoming drive binary sensor [binary_sensor.upcoming_drive] changes its state to on.", "conditions": "There are no conditions that must be met.", "action": "Turns on the Car climatisation switch [switch.id_3_pro_climatisation] to start the car's climate control." }, "human_like": "Starts the car's climate control system when an upcoming drive is detected.", "complexity": "low" } }, { "id": "car_keep_climatising", "result": { "structured": "TRIGGER: When Car keep climatising input boolean [input_boolean.car_keep_climatising] changes from off to on OR When Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] changes from off to on AND remains on for 5 minutes. CONDITIONS: Car keep climatising input boolean [input_boolean.car_keep_climatising] is on. ACTIONS: Turn on Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When the Car keep climatising input boolean [input_boolean.car_keep_climatising] is turned on, or when the Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] reports being on for at least five minutes.", "conditions": "The Car keep climatising input boolean [input_boolean.car_keep_climatising] must be in the on state.", "action": "Activates the car's climatisation by turning on the Car climatisation switch [switch.id_3_pro_climatisation]." }, "human_like": "Starts the car's climatisation system when requested manually or when the car's own climatisation sensor indicates it has been active for a while.", "complexity": "low" } }, { "id": "car_keep_klimatising_off", "result": { "structured": "TRIGGER: When Car keep climatising input boolean [input_boolean.car_keep_climatising] changes from on to off. CONDITIONS: None. ACTIONS: Turn off Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When the Car keep climatising input boolean [input_boolean.car_keep_climatising] is turned off.", "conditions": "There are no additional conditions.", "action": "Turns off the Car climatisation switch [switch.id_3_pro_climatisation]." }, "human_like": "Stops the car's climatisation system when the 'keep climatising' setting is turned off.", "complexity": "low" } }, { "id": "notify_car_climatising", "result": { "structured": "TRIGGER: When Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] turns on. CONDITIONS: Car remaining climatisation time [sensor.id_3_pro_remaining_climatisation_time] is above 6. ACTIONS: Execute Notify darkphone script [script.notify_darkphone] with a message containing the target temperature from Car climatisation temperature climate [climate.id_3_pro_start_stop_climatization] and the remaining time from Car remaining climatisation time [sensor.id_3_pro_remaining_climatisation_time], including an inline keyboard option to stop climatisation. Then, turn on Car climatisation off automation [automation.notify_car_climatisation_end].", "natural_language": { "trigger": "When the Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] indicates that the car's climate control has started.", "conditions": "The Car remaining climatisation time [sensor.id_3_pro_remaining_climatisation_time] must be greater than 6 minutes.", "action": "Sends a notification via the Notify darkphone script [script.notify_darkphone] stating the target temperature and the remaining climatisation time, and provides a button to stop the process. It also enables another automation called Car climatisation off automation [automation.notify_car_climatisation_end]." }, "human_like": "Sends a notification when the car's climate control starts, showing the target temperature and remaining time, and enables a follow-up automation.", "complexity": "low" } }, { "id": "notify_car_climatisation_end", "result": { "structured": "TRIGGER: When Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] changes to off. CONDITIONS: None. ACTIONS: Execute Notify darkphone script [script.notify_darkphone] with message 'Klimatisering afsluttet.' AND Turn off Car climatisation off automation [automation.notify_car_climatisation_end].", "natural_language": { "trigger": "When the Car climatisation binary sensor [binary_sensor.id_3_pro_klimatisering] turns off.", "conditions": "There are no conditions for this automation.", "action": "Sends a notification to a phone with the message 'Klimatisering afsluttet.' via the Notify darkphone script [script.notify_darkphone] and then disables this automation itself by turning off Car climatisation off automation [automation.notify_car_climatisation_end]." }, "human_like": "Sends a notification when the car's climatisation finishes and then disables itself.", "complexity": "low" } }, { "id": "295f96ad-137a-4096-9bed-f2c2762fbc8c", "result": { "structured": "TRIGGER: When Next scheduled leave in sensor [sensor.next_scheduled_leave_in] is below 30. CONDITIONS: Upcoming travel location [sensor.upcoming_travel_location] attribute 'mode' is driving AND Car at destination binary sensor [binary_sensor.car_at_destination] is off. ACTIONS: Execute Send entity destination to car script [script.send_entity_destination_to_car] with data entity_id set to sensor.upcoming_travel_location.", "natural_language": { "trigger": "When the Next scheduled leave in sensor [sensor.next_scheduled_leave_in] reports a value less than 30.", "conditions": "If the Upcoming travel location [sensor.upcoming_travel_location] has its 'mode' attribute set to driving, and the Car at destination binary sensor [binary_sensor.car_at_destination] indicates the car is not at the destination (is off).", "action": "Runs the Send entity destination to car script [script.send_entity_destination_to_car], providing the Upcoming travel location [sensor.upcoming_travel_location] as the destination to send." }, "human_like": "Sends the next travel destination to the car when a scheduled departure is imminent and the car is not already at that location.", "complexity": "low" } }, { "id": "5f90a704-bfc1-4f60-a525-6af990b697ed", "result": { "structured": "TRIGGER: When Upcoming drive binary sensor [binary_sensor.upcoming_drive] turns on. CONDITIONS: (Next scheduled leave in sensor [sensor.next_scheduled_leave_in] is above 60) AND (NOT (Device tracker car position [device_tracker.id_3_pro_position] is home)). ACTIONS: Run script Send home destination script [script.send_home_destination] with data entity_id set to Home zone [zone.home].", "natural_language": { "trigger": "When the Upcoming drive binary sensor [binary_sensor.upcoming_drive] indicates that a drive is upcoming by turning on.", "conditions": "If the Next scheduled leave in sensor [sensor.next_scheduled_leave_in] reports a value greater than 60, and the Device tracker car position [device_tracker.id_3_pro_position] is not currently at home.", "action": "Executes the Send home destination script [script.send_home_destination], sending the home location (Home zone [zone.home]) as a destination to the car." }, "human_like": "Sends the home destination to the car when a drive is scheduled soon, but only if the car is not already at home.", "complexity": "low" } }, { "id": "car_menu", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command '/bil' is received OR when a Telegram command event [telegram_command] with command '/bil' is received. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with a dynamic message. The message content depends on the state of Car charging state [sensor.id_3_pro_charging_state]. If it is 'charging', the message reports charging started, target level from Car charging target level number [number.id_3_pro_charging_target_level], and estimated completion time from Car charging estimated date reached [sensor.id_3_pro_charging_estimated_date_reached]. Otherwise, it reports charging finished and current state of charge from Car state of charge primary [sensor.id_3_pro_soc_primary]. The message also includes climatisation status: if Car remaining climatisation time [sensor.id_3_pro_remaining_climatisation_time] is greater than 0, it reports target temperature from Car climatisation temperature climate [climate.id_3_pro_start_stop_climatization] and remaining time; otherwise, it reports climatisation finished. Then, send a second notification via Telegram darkfox notify [notify.telegram_darkfox] with the text 'Menu:' and an inline keyboard offering options 'Klimatisering:/car_climatisation' and 'Opladning:/car_charging'.", "natural_language": { "trigger": "When a Telegram callback or command event with the command '/bil' is received.", "conditions": "There are no conditions that must be met.", "action": "Sends a detailed status message to the user via Telegram. The message reports whether the car is currently charging or has finished charging, including the target charge level and estimated completion time if charging, or the current state of charge if not. It also reports the status of the car's climatisation, including the target temperature and remaining time if active, or a completion message if not. After the status message, a second message is sent with the text 'Menu:' and an inline keyboard providing quick options to control climatisation and charging." }, "human_like": "Sends a Telegram message with the car's charging and climate control status, and provides a menu for further controls, when the '/bil' command is used.", "complexity": "medium" } }, { "id": "car_climatisation_menu", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command '/car_climatisation' is received OR when a Telegram command event [telegram_command] with command '/car_climatisation' is received. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Klimatisering Menu' and an inline keyboard. The keyboard's first row contains either 'Stop klimatisering:/car_climatisation_off' if Car remaining climatisation time [sensor.id_3_pro_remaining_climatisation_time] is greater than 0, otherwise 'Klimatiser nu:/car_climatisation_on'. The second row contains three buttons for temperatures 18°, 19°, and 20°, where the current temperature from Car climatisation temperature climate [climate.id_3_pro_start_stop_climatization] is compared, and the matching temperature is shown in brackets. The third row contains three buttons for temperatures 21°, 22°, and 23°, with the same bracketing logic.", "natural_language": { "trigger": "When a Telegram callback or command event with the specific command '/car_climatisation' is received.", "conditions": "There are no conditions that must be met for the action to proceed.", "action": "Sends a notification to the Telegram darkfox notify [notify.telegram_darkfox] service. The notification displays a menu titled 'Klimatisering Menu' with an interactive keyboard. The first button offers to stop climatisation if it is currently running (indicated by a remaining time greater than zero) or to start it. The next two rows offer buttons to set the climatisation temperature to values between 18° and 23°, with the currently set temperature highlighted in brackets." }, "human_like": "Shows a Telegram menu to control the car's climatisation, allowing the user to start, stop, or set the target temperature.", "complexity": "medium" } }, { "id": "car_climatisation_set", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command /car_climatisation_set OR when a Telegram command event [telegram_command] occurs with command /car_climatisation_set. CONDITIONS: None. ACTIONS: Set the temperature of Car climatisation temperature climate [climate.id_3_pro_start_stop_climatization] to the first argument from the trigger event data AND turn on Car climatisation switch [switch.id_3_pro_climatisation] AND send a notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Temperatur sat til [first argument]°.'.", "natural_language": { "trigger": "When a Telegram callback or a Telegram command with the specific command '/car_climatisation_set' is received.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "The automation sets the target temperature for the Car climatisation temperature climate [climate.id_3_pro_start_stop_climatization] to the value provided as the first argument in the Telegram command. It then turns on the Car climatisation switch [switch.id_3_pro_climatisation] and sends a confirmation message via Telegram darkfox notify [notify.telegram_darkfox], stating the temperature that was set." }, "human_like": "Sets the car's climatisation temperature and turns it on via a Telegram command, then sends a confirmation message.", "complexity": "low" } }, { "id": "car_climatisation_on", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command /car_climatisation_on occurs OR when a Telegram command event [telegram_command] with command /car_climatisation_on occurs. CONDITIONS: None. ACTIONS: Turn on Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When a Telegram callback or a Telegram command with the specific command '/car_climatisation_on' is received.", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the Car climatisation switch [switch.id_3_pro_climatisation]." }, "human_like": "Turns on the car's climatisation system when a specific command is sent via Telegram.", "complexity": "low" } }, { "id": "car_climatisation_off", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command /car_climatisation_off occurs OR when a Telegram command event [telegram_command] with command /car_climatisation_off occurs. CONDITIONS: None. ACTIONS: Turn off Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When a Telegram callback or a Telegram command is received with the specific command /car_climatisation_off.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Car climatisation switch [switch.id_3_pro_climatisation]." }, "human_like": "Turns off the car's climatisation system when a specific 'off' command is sent via Telegram.", "complexity": "low" } }, { "id": "car_charging_menu", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command '/car_charging' OR when a Telegram command event [telegram_command] occurs with command '/car_charging'. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Opladning Menu' and an inline keyboard. The first button displays 'Stop opladning:/car_charging_off' if Car charging state [sensor.id_3_pro_charging_state] is 'charging', otherwise it displays 'Start opladning:/car_charging_on'. The second row contains buttons for setting the charge limit to 50%, 60%, 70%, 80%, 90%, and 100%.", "natural_language": { "trigger": "When a Telegram callback or command event is received with the specific command '/car_charging'.", "conditions": "There are no conditions that must be met.", "action": "Sends a notification to the user via Telegram darkfox notify [notify.telegram_darkfox] with the title 'Opladning Menu'. The notification includes a dynamic inline keyboard. The first button will either say 'Stop opladning' if the Car charging state [sensor.id_3_pro_charging_state] is currently 'charging', or 'Start opladning' otherwise. The second row of buttons provides options to set the charging limit to 50%, 60%, 70%, 80%, 90%, or 100%." }, "human_like": "Sends a Telegram menu for controlling car charging, allowing the user to start/stop charging or set a target charge level.", "complexity": "medium" } }, { "id": "80abd8c2-ff5b-490e-9abd-411f10c0ad12", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command /destination OR when a Telegram command event [telegram_command] occurs with command /destination. CONDITIONS: None. ACTIONS: Execute script Send destination to car script [script.send_destination_to_car] with data: name = (first part of the event arguments before ' - ' if present, otherwise None) AND destination = (second part after ' - ' if present, otherwise the entire argument string).", "natural_language": { "trigger": "When a Telegram callback or command event is received with the specific command '/destination'.", "conditions": "There are no additional conditions that must be met.", "action": "Runs the 'Send destination to car' script, extracting a name and destination from the event's arguments. If the arguments contain a ' - ' separator, the part before it is used as the name and the part after as the destination. If there is no separator, the entire argument is used as the destination and the name is set to None." }, "human_like": "Sends a destination to the car via Telegram when a user sends the '/destination' command.", "complexity": "medium" } }, { "id": "5636f5f3-be1b-494b-95cd-be9ff7f4ba04", "result": { "structured": "TRIGGER: When the event check_climate [check_climate] occurs. CONDITIONS: None. ACTIONS: Wait for 30 seconds. Then, if Check climate binary sensor [binary_sensor.check_climate] is off, trigger the Restart tado automation [automation.restart_tado].", "natural_language": { "trigger": "The automation is triggered by the 'check_climate' event.", "conditions": "There are no conditions that must be true at the moment of triggering. The automation proceeds directly to its actions.", "action": "After a 30-second delay, the automation checks the state of the Check climate binary sensor [binary_sensor.check_climate]. If the sensor is off, it triggers the Restart tado automation [automation.restart_tado]." }, "human_like": "Waits 30 seconds after a climate check event, and if a sensor indicates a problem, it restarts the Tado system.", "complexity": "low" } }, { "id": "46bcccf0-05d3-4652-8d1c-d1cd2b747a56", "result": { "structured": "TRIGGER: When Bathroom min temp sensor [sensor.bathroom_min_temp] changes state OR when a set_climate event occurs. CONDITIONS: None. ACTIONS: Turn on Bathroom climate [climate.badevaerelse], wait 1 second, then (if Bathroom climate [climate.badevaerelse] is in heat mode) set its temperature to the current value of Bathroom min temp sensor [sensor.bathroom_min_temp], then fire a check_climate event.", "natural_language": { "trigger": "The automation runs either when the Bathroom min temp sensor [sensor.bathroom_min_temp] reports a new value, or when a specific 'set_climate' event is received.", "conditions": "There are no conditions that must be met before the actions are performed.", "action": "It first turns on the Bathroom climate [climate.badevaerelse] device. After a one-second delay, it checks if the climate device is in 'heat' mode. If it is, it sets the climate's target temperature to the value reported by the Bathroom min temp sensor [sensor.bathroom_min_temp]. Finally, it fires a 'check_climate' event." }, "human_like": "Updates the bathroom climate's temperature based on a sensor reading, ensuring it's turned on and in heating mode first.", "complexity": "medium" } }, { "id": "83706625-cc7e-490a-affb-ee3fd42c2772", "result": { "structured": "TRIGGER: When Office min temp sensor [sensor.office_min_temp] changes state OR When Office balcony door binary sensor [binary_sensor.kontor_altandor] changes state OR When a set_climate event occurs. CONDITIONS: None. ACTIONS: If Office balcony door binary sensor [binary_sensor.kontor_altandor] is off, turn on Office climate [climate.kontor]; otherwise, turn it off. Wait 1 second. If Office climate [climate.kontor] is in heat mode, set its temperature to the current state of Office min temp sensor [sensor.office_min_temp]. Finally, fire a check_climate event.", "natural_language": { "trigger": "The automation runs when there is a change in the Office min temp sensor [sensor.office_min_temp], a change in the Office balcony door binary sensor [binary_sensor.kontor_altandor], or when a set_climate event is received.", "conditions": "There are no explicit conditions that must be met before the actions run.", "action": "First, the automation checks the state of the Office balcony door binary sensor [binary_sensor.kontor_altandor]. If the door is closed (off), it turns on the Office climate [climate.kontor] system. If the door is open (on), it turns the climate system off. After a one-second delay, it checks if the Office climate [climate.kontor] is currently in heat mode. If it is, it sets the climate's target temperature to the value reported by the Office min temp sensor [sensor.office_min_temp]. Finally, it fires a check_climate event." }, "human_like": "Controls the office climate system based on the balcony door status and a minimum temperature sensor, ensuring heating is only active when the door is closed and setting the target temperature accordingly.", "complexity": "medium" } }, { "id": "af2fd7a5-316f-4296-853d-a3d1a99efe79", "result": { "structured": "TRIGGER: When Living room min temp sensor [sensor.living_room_min_temp] changes state OR When Living room balcony door binary sensor [binary_sensor.stue_altandor] changes state OR When a set_climate event occurs. CONDITIONS: None explicitly defined. ACTIONS: First, if Living room balcony door binary sensor [binary_sensor.stue_altandor] is off, turn on Living room climate [climate.stue]; otherwise, turn it off. Then, wait 1 second. Then, if Living room climate [climate.stue] is in heat mode, set its temperature to the current value of Living room min temp sensor [sensor.living_room_min_temp]. Finally, fire a check_climate event.", "natural_language": { "trigger": "The automation runs when the temperature sensor in the living room changes, when the balcony door sensor changes its state, or when a specific 'set_climate' event is fired.", "conditions": "There are no explicit conditions that must be met for the actions to run; the automation executes whenever any of the triggers occur.", "action": "First, it checks the state of the living room balcony door sensor. If the door is closed (off), it turns on the living room climate control. If the door is open (on), it turns the climate control off. After a one-second delay, if the climate control is currently set to heat mode, it sets the target temperature to the value reported by the living room's minimum temperature sensor. Finally, it fires a 'check_climate' event." }, "human_like": "Controls the living room climate by turning the heater on or off based on the balcony door status, and sets the target temperature from a sensor after a short delay.", "complexity": "medium" } }, { "id": "81f550e6-d1a0-451a-9ed7-40df34e1f8d6", "result": { "structured": "TRIGGER: When Workshop min temp sensor [sensor.workshop_min_temp] changes state OR When Workshop window binary sensor [binary_sensor.varksted_vindue] changes state OR When a set_climate event occurs. CONDITIONS: None explicitly defined. ACTIONS: If Living room balcony door binary sensor [binary_sensor.stue_altandor] is closed (off), turn on Workshop climate [climate.vaerksted]; otherwise, turn it off. Wait 1 second. If Workshop climate [climate.vaerksted] is in heat mode, set its temperature to the current state of Workshop min temp sensor [sensor.workshop_min_temp]. Finally, fire a check_climate event.", "natural_language": { "trigger": "This automation runs whenever the temperature reading from the Workshop min temp sensor [sensor.workshop_min_temp] changes, when the state of the Workshop window binary sensor [binary_sensor.varksted_vindue] changes, or when a custom 'set_climate' event is received.", "conditions": "There are no explicit conditions that must be met for the actions to run; the automation executes whenever any of the triggers occur.", "action": "First, it checks if the Living room balcony door binary sensor [binary_sensor.stue_altandor] is closed. If it is, the Workshop climate [climate.vaerksted] is turned on. If the door is open, the climate device is turned off. After a one-second delay, if the Workshop climate [climate.vaerksted] is currently set to heat mode, its target temperature is updated to match the value from the Workshop min temp sensor [sensor.workshop_min_temp]. Finally, the automation fires a 'check_climate' event." }, "human_like": "Controls the workshop heater based on temperature, window status, and a balcony door, ensuring it's only on when the door is closed and setting the target temperature automatically.", "complexity": "medium" } }, { "id": "1a0bc86a-84e4-43aa-8872-0666bb0f01bd", "result": { "structured": "TRIGGER: When Bedroom min temp sensor [sensor.bedroom_min_temp] changes state OR When Bedroom balcony door [binary_sensor.sovevarelse_altandor] changes state OR When a set_climate event occurs. CONDITIONS: None explicitly defined. ACTIONS: If Bedroom balcony door [binary_sensor.sovevarelse_altandor] is closed (off), turn on Bedroom climate [climate.sovevaerelse]; otherwise, turn it off. Wait 1 second. If Bedroom climate [climate.sovevaerelse] is in heat mode, set its temperature to the current value of Bedroom min temp sensor [sensor.bedroom_min_temp]. Finally, fire a check_climate event.", "natural_language": { "trigger": "The automation runs when the temperature reading from the Bedroom min temp sensor [sensor.bedroom_min_temp] changes, when the state of the Bedroom balcony door [binary_sensor.sovevarelse_altandor] changes, or when a custom 'set_climate' event is received.", "conditions": "There are no explicit conditions that must be met for the actions to run; the automation executes whenever any of the triggers occur.", "action": "First, it checks if the Bedroom balcony door [binary_sensor.sovevarelse_altandor] is closed. If it is, the Bedroom climate [climate.sovevaerelse] is turned on; if the door is open, the climate control is turned off. After a brief one-second delay, it checks if the Bedroom climate [climate.sovevaerelse] is currently set to heat mode. If so, it sets the thermostat's target temperature to the value reported by the Bedroom min temp sensor [sensor.bedroom_min_temp]. Finally, it triggers a 'check_climate' event." }, "human_like": "This automation controls the bedroom's climate based on the balcony door status and a temperature sensor, ensuring heating is only active when the door is closed and setting the target temperature accordingly.", "complexity": "medium" } }, { "id": "37f532fe-45ec-4c48-a2be-9b8f8de1ab17", "result": { "structured": "TRIGGER: When Living room curtain right battery [sensor.stue_gardin_hojre_battery] OR Living room curtain left battery [sensor.stue_gardin_venstre_battery] OR Bedroom curtain window battery [sensor.sovevaerelse_gardin_vindue_battery] OR Bedroom curtain door battery [sensor.sovevaerelse_gardin_dor_battery] reports a numeric state above 99. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with a message containing the name of the entity that triggered the automation, followed by 'er opladet'.", "natural_language": { "trigger": "When the battery level of any of the four curtain sensors (Living room curtain right battery [sensor.stue_gardin_hojre_battery], Living room curtain left battery [sensor.stue_gardin_venstre_battery], Bedroom curtain window battery [sensor.sovevaerelse_gardin_vindue_battery], or Bedroom curtain door battery [sensor.sovevaerelse_gardin_dor_battery]) rises above 99 percent.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere]. The message will state the name of the specific curtain battery sensor that triggered the event, followed by 'er opladet' (which means 'is charged')." }, "human_like": "Sends a notification when any of the smart curtain batteries are fully charged.", "complexity": "low" } }, { "id": "c39877f9-c5dc-41e9-9bbe-fd4fbe973f7a", "result": { "structured": "TRIGGER: When any of the following input booleans remains in its current state for 1 minute: Fold out balcony light panel input boolean [input_boolean.fold_ud_altan_lys_panel], Fold out bathroom light panel input boolean [input_boolean.fold_ud_badevaerelse_lys_panel], Fold out bedroom light panel input boolean [input_boolean.fold_ud_sovevaerelse_lys_panel], Fold out hallway light panel input boolean [input_boolean.fold_ud_gang_lys_panel], Fold out kitchen light panel input boolean [input_boolean.fold_ud_kokken_lys_panel], Fold out living room light panel input boolean [input_boolean.fold_ud_stue_lys_panel], Fold out office light panel input boolean [input_boolean.fold_ud_kontor_lys_panel], Fold out workshop light panel input boolean [input_boolean.fold_ud_vaerksted_lys_panel]. CONDITIONS: None. ACTIONS: Turn off the specific input boolean that triggered the automation [{{ trigger.entity_id }}].", "natural_language": { "trigger": "When any of the eight 'fold out' light panel input booleans for different rooms remains in its current state for one minute.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the specific input boolean that triggered the automation, effectively hiding or 'folding out' the corresponding light panel." }, "human_like": "Automatically hides the light panel interface for any room after it has been left untouched for one minute.", "complexity": "low" } }, { "id": "8eb5e623-aa20-4c04-b260-d9eb2251583e", "result": { "structured": "TRIGGER: When Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] changes to off. CONDITIONS: Guests input boolean [input_boolean.guests] is off. ACTIONS: Turn off All media group [group.all_media].", "natural_language": { "trigger": "When the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] reports that presence is no longer detected (changes to 'off').", "conditions": "The Guests input boolean [input_boolean.guests] must be turned off, meaning guest mode is not active.", "action": "Turn off all devices in the All media group [group.all_media]." }, "human_like": "Turns off all media devices when the house is empty and guest mode is not active.", "complexity": "low" } }, { "id": "dishwasher_leak_warning", "result": { "structured": "TRIGGER: When Dishwasher leak binary sensor [binary_sensor.opvaskemaskine_lak] changes to on. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Vand under opvaskemaskinen!'.", "natural_language": { "trigger": "When the Dishwasher leak binary sensor [binary_sensor.opvaskemaskine_lak] detects a leak and changes its state to on.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere with the message 'Vand under opvaskemaskinen!' by running the Notify everywhere script [script.notify_everywhere]." }, "human_like": "Sends an alert to all devices when a leak is detected under the dishwasher.", "complexity": "low" } }, { "id": "5a97b74e-24c9-4926-a442-2d2877cd6810", "result": { "structured": "TRIGGER: When Dishwasher operation state sensor [sensor.opvaskemaskine_operationstate] changes to state BSH.Common.EnumType.OperationState.Run. CONDITIONS: None. ACTIONS: Call service kidschores.claim_chore with data: kid_name = Rook, chore_name = Opvask.", "natural_language": { "trigger": "When the Dishwasher operation state sensor [sensor.opvaskemaskine_operationstate] reports that the dishwasher has started running.", "conditions": "There are no conditions that need to be met.", "action": "Claims the dishwashing chore for the child named Rook using the kidschores service." }, "human_like": "Automatically assigns the dishwashing chore to Rook when the dishwasher starts running.", "complexity": "low" } }, { "id": "98c85620-147c-44c4-a250-302572907883", "result": { "structured": "TRIGGER: When Dishwasher operation state sensor [sensor.opvaskemaskine_operationstate] changes to state 'BSH.Common.EnumType.OperationState.End'. CONDITIONS: None. ACTIONS: Call service kidschores.set_chore_due_date with data: chore_name='Tøm opvaskemaskine', due_date set to 2 seconds from the current time.", "natural_language": { "trigger": "When the Dishwasher operation state sensor [sensor.opvaskemaskine_operationstate] reports that the dishwasher has finished its cycle (state changes to 'BSH.Common.EnumType.OperationState.End').", "conditions": "There are no additional conditions that must be met.", "action": "Immediately schedules the chore 'Tøm opvaskemaskine' (Empty dishwasher) to be due in 2 seconds by calling the kidschores.set_chore_due_date service." }, "human_like": "Automatically sets the 'Empty dishwasher' chore to be due as soon as the dishwasher finishes its cycle.", "complexity": "low" } }, { "id": "bad7cf41-46f2-408a-9844-aa94685c8310", "result": { "structured": "TRIGGER: When Door phone ring event [event.dortelefon_ding] changes state. CONDITIONS: None. ACTIONS: Run Notify everywhere script [script.notify_everywhere] with parameters: message 'Dørtelefonen Ringer!' and inline keyboard option 'Svar Dør:/unlock_front_door'.", "natural_language": { "trigger": "When the Door phone ring event [event.dortelefon_ding] is triggered.", "conditions": "There are no conditions for this automation.", "action": "Sends a notification everywhere via the Notify everywhere script [script.notify_everywhere] with the message 'Dørtelefonen Ringer!' and provides an inline keyboard button labeled 'Svar Dør' that triggers the action '/unlock_front_door'." }, "human_like": "Sends a notification to all devices when the doorbell rings, including an option to answer the door.", "complexity": "low" } }, { "id": "f592b73c-e539-45e0-86ce-5196cd010957", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command '/unlock_front_door' occurs OR when a Telegram command event [telegram_command] with command '/unlock_front_door' occurs. CONDITIONS: None. ACTIONS: In parallel, send a notification 'Døråbner Aktiveret!' to Telegram darkfox notify [notify.telegram_darkfox] AND press the Door phone open door button [button.dortelefon_open_door].", "natural_language": { "trigger": "When a Telegram callback or a Telegram command is received with the specific command '/unlock_front_door'.", "conditions": "There are no conditions for this automation.", "action": "Simultaneously, it sends a notification message 'Døråbner Aktiveret!' to the Telegram darkfox notify [notify.telegram_darkfox] and presses the Door phone open door button [button.dortelefon_open_door]." }, "human_like": "Unlocks the front door and sends a confirmation message via Telegram when the '/unlock_front_door' command is received.", "complexity": "low" } }, { "id": "d1738a9b-6825-4159-8dcc-dabb41464335", "result": { "structured": "TRIGGER: When Guests event binary sensor [binary_sensor.guests_event] changes state to on OR off. CONDITIONS: None. ACTIONS: Turn Guests input boolean [input_boolean.guests] to the same state (on or off) as the trigger.", "natural_language": { "trigger": "Whenever the Guests event binary sensor [binary_sensor.guests_event] changes its state, either turning on or off.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the Guests input boolean [input_boolean.guests] to match the new state of the sensor, turning it on or off accordingly." }, "human_like": "Syncs the 'Guests' status toggle to match the state of the guests event sensor.", "complexity": "low" } }, { "id": "934d6298-ba45-4126-bd6c-65f85c928192", "result": { "structured": "TRIGGER: When Guests input boolean [input_boolean.guests] turns on. CONDITIONS: None. ACTIONS: Turn on Bathroom separate light profile input boolean [input_boolean.bathroom_separate_light_profile], Bathroom activity override input boolean [input_boolean.bathroom_activity_override], Bedroom separate light profile input boolean [input_boolean.bedroom_separate_light_profile], Office separate light profile input boolean [input_boolean.office_separate_light_profile], and Workshop separate light profile input boolean [input_boolean.workshop_separate_light_profile] in parallel. Also, turn off Living room curtain automations switch [switch.living_room_curtain_automations] in parallel.", "natural_language": { "trigger": "When the Guests input boolean [input_boolean.guests] is switched on.", "conditions": "There are no conditions for this automation.", "action": "It simultaneously turns on several room-specific light profile settings: Bathroom separate light profile input boolean [input_boolean.bathroom_separate_light_profile], Bathroom activity override input boolean [input_boolean.bathroom_activity_override], Bedroom separate light profile input boolean [input_boolean.bedroom_separate_light_profile], Office separate light profile input boolean [input_boolean.office_separate_light_profile], and Workshop separate light profile input boolean [input_boolean.workshop_separate_light_profile]. At the same time, it turns off the Living room curtain automations switch [switch.living_room_curtain_automations]." }, "human_like": "Activates guest mode by enabling specific light profiles for several rooms and disabling living room curtain automations.", "complexity": "low" } }, { "id": "31e7c655-2b98-440d-9f0e-22121ebf901f", "result": { "structured": "TRIGGER: When Guests input boolean [input_boolean.guests] changes to off. CONDITIONS: None. ACTIONS: In parallel, turn off Bathroom separate light profile input boolean [input_boolean.bathroom_separate_light_profile], Bathroom activity override input boolean [input_boolean.bathroom_activity_override], Bedroom separate light profile input boolean [input_boolean.bedroom_separate_light_profile], Office separate light profile input boolean [input_boolean.office_separate_light_profile], and Workshop separate light profile input boolean [input_boolean.workshop_separate_light_profile]; AND turn on Living room curtain automations switch [switch.living_room_curtain_automations].", "natural_language": { "trigger": "When the Guests input boolean [input_boolean.guests] is turned off.", "conditions": "There are no conditions for this automation.", "action": "It performs two sets of actions simultaneously. First, it turns off a group of input booleans that control separate light profiles and overrides for the bathroom, bedroom, office, and workshop. Second, it turns on the switch that controls the living room curtain automations." }, "human_like": "Turns off guest-specific lighting profiles and restores normal curtain automations when guest mode is disabled.", "complexity": "low" } }, { "id": "doorbell_notification", "result": { "structured": "TRIGGER: When Doorbell button binary sensor [binary_sensor.dorklokke_knap] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification with message 'Ding dong!' to Telegram darkfox notify [notify.telegram_darkfox] AND run script Popup notification script [script.popup_notification] with data message 'Ding dong!'.", "natural_language": { "trigger": "When the Doorbell button binary sensor [binary_sensor.dorklokke_knap] is pressed, changing its state from off to on.", "conditions": "There are no conditions that must be met.", "action": "Sends a 'Ding dong!' notification to the user via Telegram darkfox notify [notify.telegram_darkfox] and also triggers a popup notification script [script.popup_notification] with the same message." }, "human_like": "Sends a 'Ding dong!' notification via Telegram and a popup when the doorbell is pressed.", "complexity": "low" } }, { "id": "b586de7c-ccd2-4714-86a6-ae75a946f913", "result": { "structured": "TRIGGER: When Hallway active light profile sensor [sensor.hallway_active_light_profile] changes state OR when the refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Set variable 'profile' to the current state of Hallway active light profile sensor [sensor.hallway_active_light_profile]. Then, based on the value of 'profile': IF 'profile' equals 'Bright', apply a scene to Hallway ceiling lamp [light.gang_loftlampe], Hallway spots [light.gang_spots], Shoe cabinet light [light.skoskab], Hallway chest light [light.gang_kommode], Hallway cabinet light [light.gang_skab], and Hallway tablet light [light.hallway_tablet] with full brightness and a warm white color temperature, using the transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5 seconds). IF 'profile' equals 'Default', apply a scene to the same lights with full brightness, a warmer white color for the main lights, and secondary colors from Theme sensor [sensor.theme] for accent lights, using the same transition time. IF 'profile' equals 'Dimmed', apply a scene to the same lights with reduced brightness and secondary colors from Theme sensor [sensor.theme] for accent lights, using the same transition time. IF 'profile' equals 'Ambient', apply a scene to the same lights with low brightness, primary color hue from Theme sensor [sensor.theme] for main lights, and secondary colors for accent lights, using the same transition time. IF 'profile' equals 'Night', apply a scene turning off the main lights and setting the accent lights to a low red brightness, using the same transition time. IF 'profile' equals 'Off', apply a scene turning off all lights, using the same transition time.", "natural_language": { "trigger": "The automation is triggered whenever the Hallway active light profile sensor [sensor.hallway_active_light_profile] changes its value, or when a specific refresh_light_profile event is received.", "conditions": "There are no conditions that must be met for the action to run.", "action": "The automation first reads the current value from the Hallway active light profile sensor [sensor.hallway_active_light_profile] and stores it. It then selects and applies a specific lighting scene for the hallway based on that value. The scenes are named Bright, Default, Dimmed, Ambient, Night, and Off. Each scene sets the brightness, color, and on/off state for the Hallway ceiling lamp [light.gang_loftlampe], Hallway spots [light.gang_spots], Shoe cabinet light [light.skoskab], Hallway chest light [light.gang_kommode], Hallway cabinet light [light.gang_skab], and Hallway tablet light [light.hallway_tablet]. The transition between scenes uses a duration defined by the Scene transition time input number [input_number.scene_transition_time], defaulting to half a second. Some scenes also use color information from the Theme sensor [sensor.theme]." }, "human_like": "Applies a pre-defined lighting scene in the hallway whenever the selected light profile changes or is refreshed, allowing for different moods like bright, dimmed, ambient, or night light.", "complexity": "medium" } }, { "id": "activate_light_profile_hallway_candle_lights", "result": { "structured": "TRIGGER: When Hallway active light profile sensor [sensor.hallway_active_light_profile] changes state OR When Bathroom lock binary sensor [binary_sensor.badevarelse_las] changes state OR When the event refresh_light_profile occurs. CONDITIONS: None. ACTIONS: Run a script determined by a template. If Guests input boolean [input_boolean.guests] is on AND Hallway selected light profile sensor [sensor.hallway_selected_light_profile] state (lowercased) is NOT 'night' or 'off', then run script.hallway_candle_lights_occupied if Bathroom lock binary sensor [binary_sensor.badevarelse_las] is off, otherwise run script.hallway_candle_lights_free. Otherwise, run script.hallway_candle_lights_{Hallway active light profile sensor [sensor.hallway_active_light_profile] state (lowercased)}.", "natural_language": { "trigger": "This automation triggers when the Hallway active light profile sensor [sensor.hallway_active_light_profile] changes its state, when the Bathroom lock binary sensor [binary_sensor.badevarelse_las] changes its state, or when a custom event named 'refresh_light_profile' is received.", "conditions": "There are no explicit conditions for this automation.", "action": "The automation runs a specific script based on the current states. If the Guests input boolean [input_boolean.guests] is on and the Hallway selected light profile sensor [sensor.hallway_selected_light_profile] is not set to 'night' or 'off', it will run a script for 'occupied' or 'free' depending on whether the Bathroom lock binary sensor [binary_sensor.badevarelse_las] is unlocked (off) or locked (on). If the guest condition is not met, it runs a script named after the current state of the Hallway active light profile sensor [sensor.hallway_active_light_profile]." }, "human_like": "Activates a specific candle light profile in the hallway, adjusting the scene based on whether guests are present and the bathroom is occupied.", "complexity": "medium" } }, { "id": "refresh_hass_agent_on_startup", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Turn on Rook PC satellite publish all sensors switch [switch.rook_pc_satellite_publishallsensors] AND press Rook PC publish all sensors button [button.rook_pc_publishallsensors].", "natural_language": { "trigger": "When Home Assistant finishes starting up.", "conditions": "There are no conditions that need to be met.", "action": "Turns on the Rook PC satellite publish all sensors switch [switch.rook_pc_satellite_publishallsensors] and then presses the Rook PC publish all sensors button [button.rook_pc_publishallsensors]." }, "human_like": "Refreshes the HASS.agent integrations when Home Assistant starts by activating the relevant satellite and main agent controls.", "complexity": "low" } }, { "id": "ca020a4b-bbe0-4e8f-869e-ba2dfacd67d5", "result": { "structured": "TRIGGER: When Withings weight sensor [sensor.withings_weight] changes state. CONDITIONS: None. ACTIONS: Call service kidschores.claim_chore with data: kid_name=Rook, chore_name=Vægt.", "natural_language": { "trigger": "Whenever the Withings weight sensor [sensor.withings_weight] reports a new weight measurement.", "conditions": "There are no conditions that must be met.", "action": "Claims the 'Vægt' chore for the kid named Rook using the Kidschores service [kidschores.claim_chore]." }, "human_like": "Automatically logs Rook's weight measurement as a completed chore.", "complexity": "low" } }, { "id": "ab734918-2f34-4e43-b48c-55e383d58855", "result": { "structured": "TRIGGER: When Darkphone systolic blood pressure [sensor.darkphone_systolic_blood_pressure] changes state. CONDITIONS: None. ACTIONS: Call service kidschores.claim_chore with data: kid_name = Rook, chore_name = Blodtryk.", "natural_language": { "trigger": "Whenever the Darkphone systolic blood pressure [sensor.darkphone_systolic_blood_pressure] sensor updates its value.", "conditions": "There are no conditions that must be met.", "action": "It uses the Kidschores service [kidschores.claim_chore] to claim the 'Blodtryk' chore for the kid named Rook." }, "human_like": "Automatically claims the blood pressure chore for Rook whenever a new blood pressure reading is received.", "complexity": "low" } }, { "id": "e8b7e0a1-0e3e-45bd-9e48-53cb88d67650", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Turn on Home assistant started input boolean [input_boolean.home_assistant_started].", "natural_language": { "trigger": "When Home Assistant finishes starting up.", "conditions": "There are no conditions for this automation.", "action": "Sets the Home assistant started input boolean [input_boolean.home_assistant_started] to on." }, "human_like": "Marks the system as started by turning on a status flag when Home Assistant boots up.", "complexity": "low" } }, { "id": "bf25eccf-deca-4c0c-8931-6fe727034ab5", "result": { "structured": "TRIGGER: When Rook chores claimed sensor [sensor.rook_chores_claimed] attribute 'chores' changes. CONDITIONS: Rook chores claimed sensor [sensor.rook_chores_claimed] numeric value is above 0. ACTIONS: For each button entity ID derived from the 'chores' attribute list, press that button [button.kc_*_chore_approval_*].", "natural_language": { "trigger": "Whenever the list of chores in the 'chores' attribute of the Rook chores claimed sensor [sensor.rook_chores_claimed] changes.", "conditions": "The Rook chores claimed sensor [sensor.rook_chores_claimed] must have a numeric value greater than zero.", "action": "For each chore in the list, the corresponding approval button is pressed. The button's entity ID is automatically generated by transforming the chore's sensor name into an approval button name." }, "human_like": "Automatically approves all chores that have been claimed by Rook by pressing their corresponding approval buttons.", "complexity": "medium" } }, { "id": "888e8507-69cb-4726-9d2f-d9ef18d943c0", "result": { "structured": "TRIGGER: When Home Assistant starts OR When the system time matches a pattern where minutes are divisible by 5 (every 5 minutes). CONDITIONS: None. ACTIONS: Set KC UI set date helper input datetime [input_datetime.kc_ui_set_date_helper] to tomorrow at 11:00 PM.", "natural_language": { "trigger": "When Home Assistant first starts up, or every five minutes based on the system clock.", "conditions": "There are no conditions that must be met.", "action": "Sets the KC UI set date helper input datetime [input_datetime.kc_ui_set_date_helper] to tomorrow at 11:00 PM." }, "human_like": "Keeps a date/time helper updated to tomorrow at 11 PM, refreshing on startup and every five minutes.", "complexity": "low" } }, { "id": "663a693f-d58b-4f0c-9340-6c8961e0c76f", "result": { "structured": "TRIGGER: When the attribute 'chores' of Rook chores overdue notify sensor [sensor.rook_chores_overdue_notify] changes and remains stable for 5 seconds. CONDITIONS: The numeric value of Rook chores overdue notify sensor [sensor.rook_chores_overdue_notify] is above 0. ACTIONS: If the list of chore sensors (stored in the variable 'chore_sensors') has more than 0 items, then send a notification to Mobile app darkphone notify [notify.mobile_app_darkphone] with a title 'Opgaver forfaldne' and a message listing the names of the overdue chores. The notification includes metadata to open a specific dashboard link based on whether any chore has the label 'Helbred'.", "natural_language": { "trigger": "When the list of chores stored in the 'chores' attribute of the Rook chores overdue notify sensor [sensor.rook_chores_overdue_notify] changes and stays the same for at least five seconds.", "conditions": "The numeric value reported by the Rook chores overdue notify sensor [sensor.rook_chores_overdue_notify] must be greater than zero, indicating there is at least one overdue chore.", "action": "If there is at least one chore in the list, a notification is sent to the mobile app darkphone [notify.mobile_app_darkphone]. The notification has a title 'Opgaver forfaldne' (Overdue Tasks) and lists the names of all overdue chores. The notification is configured to open a specific dashboard when tapped: if any chore has the 'Helbred' (Health) label, it opens the health symptoms dashboard; otherwise, it opens the Rook chores dashboard." }, "human_like": "Sends a mobile notification listing overdue chores, and opens the relevant dashboard when tapped, prioritizing health-related tasks.", "complexity": "medium" } }, { "id": "601e476d-eabd-4300-960d-80fd307f1c86", "result": { "structured": "TRIGGER: When Rook chores overdue critical notify [sensor.rook_chores_overdue_critical_notify] attribute 'chores' remains stable for 5 seconds OR every 6th minute (time pattern). CONDITIONS: Rook chores overdue critical notify [sensor.rook_chores_overdue_critical_notify] numeric state is above 0 AND chore_sensors list length is greater than 0. ACTIONS: 1. Set variables action_open, action_skip, action_snooze. 2. Send notification via Mobile app darkphone notify [notify.mobile_app_darkphone] with title 'Opgaver forfaldne', list of overdue chores, and actions 'Åbn', 'Spring over', '+30 min'. 3. Wait for trigger: Android notification action event [mobile_app_notification_action] with action matching action_skip OR action_snooze. 4. Perform action based on wait result: IF action_skip THEN for each chore in chore_sensors, call Kidschores skip chore due date service [kidschores.skip_chore_due_date] with chore_name. IF action_snooze THEN for each chore in chore_sensors, call Kidschores set chore due date service [kidschores.set_chore_due_date] with chore_name and due_date set to now + 30 minutes.", "natural_language": { "trigger": "The automation triggers either when the 'chores' attribute of the Rook chores overdue critical notify [sensor.rook_chores_overdue_critical_notify] sensor remains unchanged for 5 seconds, or on a time pattern every 6th minute.", "conditions": "It checks that the numeric value of the Rook chores overdue critical notify [sensor.rook_chores_overdue_critical_notify] sensor is greater than zero, and that the list of chore sensors obtained from its 'chores' attribute is not empty.", "action": "The automation sends a high-priority notification to the mobile app darkphone notify [notify.mobile_app_darkphone] listing all overdue critical chores. The notification includes buttons to open a dashboard, skip the chores, or snooze them for 30 minutes. It then waits for the user to press either the skip or snooze button. If 'skip' is pressed, it skips the due date for each overdue chore using the Kidschores skip chore due date service [kidschores.skip_chore_due_date]. If 'snooze' is pressed, it postpones each chore's due date by 30 minutes using the Kidschores set chore due date service [kidschores.set_chore_due_date]." }, "human_like": "Sends recurring notifications for overdue critical chores to Rook, allowing them to either skip or postpone the tasks directly from the notification.", "complexity": "high" } }, { "id": "df388f52-33fe-4ab4-82ae-4690df1d906c", "result": { "structured": "TRIGGER: When Kitchen active light profile sensor [sensor.kitchen_active_light_profile] changes state OR when a refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Based on the value of the Kitchen active light profile sensor [sensor.kitchen_active_light_profile], apply a specific lighting scene: IF profile equals 'Bright' THEN apply a scene with Kitchen ceiling light [light.kokken_loftlampe], Range hood light [light.emhatte], Kitchen table light [light.kokkenbord], Kitchen spots [light.kokken_spots], Kitchen tablet light [light.kitchen_tablet], and Light chain [light.lyskaede] at high brightness and specific color temperatures, then delay for (Scene transition time input number [input_number.scene_transition_time] rounded up plus 2) seconds. IF profile equals 'Default' THEN apply a scene with the same lights at medium brightness and specific color temperatures, then delay for (Scene transition time input number [input_number.scene_transition_time] rounded up plus 2) seconds. IF profile equals 'Dimmed' THEN apply a scene with the same lights at low brightness, some using color temperature and some using the primary color hue from Theme sensor [sensor.theme], then delay for (Scene transition time input number [input_number.scene_transition_time] rounded up plus 2) seconds. IF profile equals 'Ambient' THEN apply a scene with the same lights at very low brightness, some using the primary or secondary color hue from Theme sensor [sensor.theme], then delay for (Scene transition time input number [input_number.scene_transition_time] rounded up plus 2) seconds. IF profile equals 'Night' THEN apply a scene with Kitchen ceiling light [light.kokken_loftlampe], Kitchen table light [light.kokkenbord], Kitchen spots [light.kokken_spots], Kitchen tablet light [light.kitchen_tablet], and Light chain [light.lyskaede] at minimal red brightness, turn off Range hood light [light.emhatte], with no delay. IF profile equals 'Off' THEN turn off Kitchen lights group [group.kitchen_lights] and Kitchen tablet light [light.kitchen_tablet]. All scene transitions use a duration defined by Scene transition time input number [input_number.scene_transition_time].", "natural_language": { "trigger": "The automation runs whenever the Kitchen active light profile sensor [sensor.kitchen_active_light_profile] changes its value, or when a specific refresh_light_profile event is received.", "conditions": "There are no pre-conditions that must be met for the automation to proceed.", "action": "The automation selects and applies a specific lighting scene for the kitchen based on the current value of the Kitchen active light profile sensor [sensor.kitchen_active_light_profile]. For a 'Bright' profile, it sets all kitchen lights to high brightness with cool white tones. For 'Default', it uses a balanced, medium-brightness scene. For 'Dimmed', it lowers the brightness and uses warmer or themed colors. For 'Ambient', it sets a very low, moody light with colors from the current theme. For 'Night', it activates a red night light mode, turning off the range hood light. For 'Off', it simply turns off all kitchen lights. After applying most scenes, it waits for a short delay based on a configurable transition time. The transition between light states also uses this configurable duration." }, "human_like": "Applies a pre-defined lighting scene in the kitchen (like Bright, Default, or Night mode) whenever the selected light profile changes or is refreshed.", "complexity": "medium" } }, { "id": "c6126fdc-bc40-4d2f-a904-24201aa18586", "result": { "structured": "TRIGGER: When Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] changes to state 'up' AND remains in that state for 75 milliseconds. CONDITIONS: None. ACTIONS: Repeatedly execute the following sequence: 1) Increase the volume of Kitchen media player [media_player.kokken] using media_player.volume_up. 2) Wait for 75 milliseconds. This loop continues UNTIL Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] changes to state 'off' OR changes to state 'down'.", "natural_language": { "trigger": "When the Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] is set to 'up' and stays in that state for 75 milliseconds.", "conditions": "There are no additional conditions that must be met.", "action": "Repeatedly increases the volume of the Kitchen media player [media_player.kokken] by one step, pausing for 75 milliseconds between each increase. This process continues until the remote state input select is changed to either 'off' or 'down'." }, "human_like": "Gradually increases the kitchen soundbar volume while the volume remote is held in the 'up' position.", "complexity": "medium" } }, { "id": "b52dbb09-e7ef-45f2-a1eb-c6940a7c5f2c", "result": { "structured": "TRIGGER: When Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] changes to state 'down' AND remains in that state for 75 milliseconds. ACTIONS: Repeat the following sequence: 1) Lower the volume of Kitchen media player [media_player.kokken]. 2) Wait for 75 milliseconds. Continue repeating this sequence UNTIL Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] is in state 'off' OR Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] is in state 'up'.", "natural_language": { "trigger": "When the Kitchen soundbar volume remote state input select [input_select.kokken_soundbar_volume_remote_state] is set to 'down' and stays in that state for at least 75 milliseconds.", "conditions": "There are no explicit conditions for this automation.", "action": "Repeatedly lowers the volume of the Kitchen media player [media_player.kokken] by one step, pausing for 75 milliseconds between each step, until the remote state is no longer 'down' (i.e., it changes to either 'off' or 'up')." }, "human_like": "Lowers the kitchen soundbar volume repeatedly while the volume down command is held down on the remote.", "complexity": "medium" } }, { "id": "13ec133d-2e48-4b94-891b-7d3e08bc24a3", "result": { "structured": "TRIGGER: When Kitchen motion binary sensor [binary_sensor.kokken_motion] changes to on. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to 'Kitchen'.", "natural_language": { "trigger": "When motion is detected in the kitchen, as reported by the Kitchen motion binary sensor [binary_sensor.kokken_motion].", "conditions": "The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked, and Person rook [person.rook] must be at home.", "action": "Updates the Latest motion input select [input_select.latest_motion] to indicate the kitchen as the room with the most recent motion." }, "human_like": "Updates a tracker for the most recent room with motion to 'Kitchen' when motion is detected there, but only when the vacuum is docked and a specific person is home.", "complexity": "low" } }, { "id": "reset_scene_transition_time", "result": { "structured": "TRIGGER: When the template condition evaluates to true, which occurs when the current time is more than 60 seconds after the last update of Scene transition time input number [input_number.scene_transition_time]. CONDITIONS: None. ACTIONS: Set the value of Scene transition time input number [input_number.scene_transition_time] to 0.5.", "natural_language": { "trigger": "When more than 60 seconds have passed since the Scene transition time input number [input_number.scene_transition_time] was last updated.", "conditions": "There are no additional conditions for this automation.", "action": "Resets the Scene transition time input number [input_number.scene_transition_time] to a value of 0.5." }, "human_like": "Automatically resets the scene transition time to its default value if it hasn't been updated in over a minute.", "complexity": "medium" } }, { "id": "refresh_light_profile_event_on_theme_change", "result": { "structured": "TRIGGER: When Theme input select [input_select.theme] changes state. CONDITIONS: None. ACTIONS: Fire event Restart light profile event [refresh_light_profile].", "natural_language": { "trigger": "Whenever the Theme input select [input_select.theme] changes its selected value.", "conditions": "There are no conditions that must be met.", "action": "Fires a custom event named Restart light profile event [refresh_light_profile]." }, "human_like": "Sends a signal to refresh light profiles whenever the home theme is changed.", "complexity": "low" } }, { "id": "set_light_profile", "result": { "structured": "TRIGGER: When the event set_light_profile [set_light_profile] is fired. CONDITIONS: None. ACTIONS: Extract variables: rooms from event data (as a list), profile from event data, and transition_time from event data if it is defined and matches a numeric pattern. Determine light_profile_entity: For each room in rooms, if the room is empty OR the input_boolean for that room's separate light profile is off, use Light profile input select [input_select.light_profile]; otherwise, use the room-specific input_select. Then, if transition_time is provided, set Scene transition time input number [input_number.scene_transition_time] to the numeric value (default 0.5) and wait up to 5 seconds for the state to update. Next, set the selected light_profile_entity to the specified profile. Finally, if transition_time was provided, wait 2 seconds and then trigger the Reset Scene Transition Time [automation.reset_scene_transition_time] automation.", "natural_language": { "trigger": "When a 'set_light_profile' event is received.", "conditions": "There are no conditions that must be met before the actions run.", "action": "The automation first reads the event data to determine which rooms are targeted, which light profile to apply, and optionally a transition time. It then decides which light profile selector to use: if a room is not specified or if its separate profile setting is off, it uses the global Light profile input select [input_select.light_profile]; otherwise, it uses a room-specific selector. If a transition time was provided, it sets the Scene transition time input number [input_number.scene_transition_time] to that value and waits for the change to take effect. It then applies the chosen profile to the selected light profile selector. Finally, if a transition time was set, it waits briefly and triggers another automation to reset the transition time." }, "human_like": "This automation changes the light profile for one or more rooms when requested by an event, optionally adjusting the transition speed.", "complexity": "medium" } }, { "id": "increase_light_profile", "result": { "structured": "TRIGGER: When the event increase_light_profile [increase_light_profile] occurs. CONDITIONS: The current light profile (which is either the value of sensor.[room]_light_profile if the room-specific separate profile is active, otherwise the value of Light profile input select [input_select.light_profile]) is not equal to 'Bright'. ACTIONS: Select the previous option in the light profile selector (which is either input_select.[room]_light_profile if the room-specific separate profile is active, otherwise Light profile input select [input_select.light_profile]).", "natural_language": { "trigger": "When an event named increase_light_profile [increase_light_profile] is received.", "conditions": "The current light profile setting, which is determined based on the room data from the event and the state of a room-specific separate profile flag, must not already be set to 'Bright'.", "action": "Cycles the light profile selector to the previous option in its list. The specific selector used is either a room-specific one or the global one, depending on the room and its separate profile setting." }, "human_like": "Cycles the light profile to a dimmer setting when requested, unless it's already at its brightest.", "complexity": "medium" } }, { "id": "decrease_light_profile", "result": { "structured": "TRIGGER: When the event decrease_light_profile [decrease_light_profile] is received. CONDITIONS: The current light profile (which is either the value of sensor.[room]_light_profile if the room-specific separate profile is enabled, otherwise the value of Light profile input select [input_select.light_profile]) is not 'Off'. ACTIONS: Select the next option in the light profile selector (which is either input_select.[room]_light_profile if the room-specific separate profile is enabled, otherwise Light profile input select [input_select.light_profile]).", "natural_language": { "trigger": "When a 'decrease_light_profile' event is received.", "conditions": "The current light profile setting, which depends on whether the room uses a separate profile, must not be set to 'Off'.", "action": "Cycles to the next option in the light profile selector, which could be either the global profile or a room-specific one." }, "human_like": "Decreases the light profile setting when requested, unless it's already off.", "complexity": "medium" } }, { "id": "cycle_light_profile", "result": { "structured": "TRIGGER: When the event cycle_light_profile is fired. CONDITIONS: None. ACTIONS: Set variable room from event data.room. Set variable room_separate to true if room is defined and input_boolean.[room]_separate_light_profile is on, else false. Set variable current_light_profile to the state of sensor.[room]_light_profile if room_separate is true, else state of input_select.light_profile. Set variable light_profile_entity to input_select.[room]_light_profile if room_separate is true, else input_select.light_profile. Then, if current_light_profile equals 'Bright', set light_profile_entity to 'Night'. Else, if current_light_profile equals 'Off', set light_profile_entity to 'Default'. Otherwise, cycle light_profile_entity to the previous option.", "natural_language": { "trigger": "When a custom event named 'cycle_light_profile' is received.", "conditions": "There are no explicit conditions that must be met for the actions to run.", "action": "The automation first determines which room is involved and whether that room uses a separate light profile. It then checks the current light profile setting for that context. If the current profile is 'Bright', it changes it to 'Night'. If the current profile is 'Off', it changes it to 'Default'. In all other cases, it cycles the profile to the previous option in the list." }, "human_like": "Cycles or changes the light profile for a room when triggered by an event, switching between Bright, Night, Default, and other profiles.", "complexity": "medium" } }, { "id": "room_separate_light_profile", "result": { "structured": "TRIGGER: When the state of any of the following input booleans changes: Bathroom separate light profile input boolean [input_boolean.bathroom_separate_light_profile], Bedroom separate light profile input boolean [input_boolean.bedroom_separate_light_profile], Hallway Separate Light Profile [input_boolean.hallway_separate_light_profile], Kitchen Separate Light Profile [input_boolean.kitchen_separate_light_profile], Living Room Separate Light Profile [input_boolean.living_room_separate_light_profile], Office separate light profile input boolean [input_boolean.office_separate_light_profile], Workshop separate light profile input boolean [input_boolean.workshop_separate_light_profile], Balcony Separate Light Profile [input_boolean.balcony_separate_light_profile], Office Balcony Separate Light Profile [input_boolean.office_balcony_separate_light_profile]. CONDITIONS: None. ACTIONS: For the room corresponding to the triggered entity, set the option of the room-specific input select (e.g., input_select.bathroom_light_profile) to the current value of Light profile input select [input_select.light_profile].", "natural_language": { "trigger": "Whenever the state of any of the nine room-specific 'separate light profile' input booleans changes.", "conditions": "There are no conditions that must be met for the action to run.", "action": "The automation identifies which room's boolean changed, then updates that room's specific light profile selector to match the current value of the main global light profile selector." }, "human_like": "Syncs a room's individual light profile setting to the global light profile whenever its override toggle is changed.", "complexity": "medium" } }, { "id": "close_bar_after_no_activity", "result": { "structured": "TRIGGER: When Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar] becomes 'off' and remains 'off' for 4 hours. CONDITIONS: Bar open input boolean [input_boolean.bar_open] is 'on'. ACTIONS: Turn off Bar open input boolean [input_boolean.bar_open].", "natural_language": { "trigger": "When the Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar] detects no activity and remains in that state for four hours.", "conditions": "The Bar open input boolean [input_boolean.bar_open] must be set to on.", "action": "Turns off the Bar open input boolean [input_boolean.bar_open]." }, "human_like": "Automatically closes the bar by marking it as not open after four hours of no activity in the living room bar area.", "complexity": "low" } }, { "id": "22f774d8-6463-4115-84b0-2f5529326a79", "result": { "structured": "TRIGGER: When Living room curtains auto open binary sensor [binary_sensor.living_room_curtains_auto_open] remains in its current state for 5 minutes. CONDITIONS: None. ACTIONS: If Living room curtains auto open binary sensor [binary_sensor.living_room_curtains_auto_open] is 'on', open Living room curtain [cover.stue_gardin]. If it is 'off', close Living room curtain [cover.stue_gardin]. If the state is unknown, stop Living room curtain [cover.stue_gardin].", "natural_language": { "trigger": "When the Living room curtains auto open binary sensor [binary_sensor.living_room_curtains_auto_open] stays in the same state for five minutes.", "conditions": "There are no additional conditions.", "action": "The automation checks the state of the Living room curtains auto open binary sensor [binary_sensor.living_room_curtains_auto_open]. If it is 'on', it opens the Living room curtain [cover.stue_gardin]. If it is 'off', it closes the curtain. If the sensor's state is unknown, it stops the curtain, which is a no-operation to avoid unintended movement." }, "human_like": "Automatically opens or closes the living room curtains based on a sensor's state after a five-minute delay.", "complexity": "medium" } }, { "id": "2c0834d8-a4b9-43b3-b085-05565890e98f", "result": { "structured": "TRIGGER: When Living room balcony door binary sensor [binary_sensor.stue_altandor] changes to on. CONDITIONS: Living room curtain left [cover.stue_gardin_venstre] is closed. ACTIONS: Run script Living room curtain open door script [script.stue_gardin_aabn_dor].", "natural_language": { "trigger": "When the Living room balcony door binary sensor [binary_sensor.stue_altandor] detects the door is opened.", "conditions": "The Living room curtain left [cover.stue_gardin_venstre] must be in the closed position.", "action": "Executes the Living room curtain open door script [script.stue_gardin_aabn_dor]." }, "human_like": "Automatically opens the living room curtain when the balcony door is opened, but only if the curtain is currently closed.", "complexity": "low" } }, { "id": "fe60b467-8c49-43e1-a4c7-39b69daeaf0d", "result": { "structured": "TRIGGER: When Living room balcony door binary sensor [binary_sensor.stue_altandor] changes to closed (off) AND remains in that state for 1 minute. CONDITIONS: Living room curtain left [cover.stue_gardin_venstre] is open AND Living room curtain right [cover.stue_gardin_hojre] is closed. ACTIONS: Close Living room curtain left [cover.stue_gardin_venstre].", "natural_language": { "trigger": "When the Living room balcony door binary sensor [binary_sensor.stue_altandor] reports the door is closed and stays closed for one minute.", "conditions": "The left living room curtain [cover.stue_gardin_venstre] must be open, and the right living room curtain [cover.stue_gardin_hojre] must be closed.", "action": "Closes the left living room curtain [cover.stue_gardin_venstre]." }, "human_like": "Closes the left living room curtain when the balcony door has been closed for a minute, provided the right curtain is already closed.", "complexity": "low" } }, { "id": "d7ce60c1-c867-4ff0-b24b-ee3b2d4500e9", "result": { "structured": "TRIGGER: When Bar open input boolean [input_boolean.bar_open] turns on. CONDITIONS: None. ACTIONS: Fire the refresh_light_profile event.", "natural_language": { "trigger": "When the Bar open input boolean [input_boolean.bar_open] is turned on.", "conditions": "There are no conditions for this automation.", "action": "Fires the refresh_light_profile event." }, "human_like": "Refreshes the light profile when the bar is opened.", "complexity": "low" } }, { "id": "909a3888-901a-47fd-9def-fe843c52e610", "result": { "structured": "TRIGGER: When Bar open input boolean [input_boolean.bar_open] changes to off. CONDITIONS: None. ACTIONS: Fire the event refresh_light_profile.", "natural_language": { "trigger": "When the Bar open input boolean [input_boolean.bar_open] is turned off.", "conditions": "There are no conditions for this automation.", "action": "Triggers the refresh_light_profile event." }, "human_like": "Refreshes the light profile when the bar is closed.", "complexity": "low" } }, { "id": "bar_close_timeout", "result": { "structured": "TRIGGER: When Living room activity sensor [binary_sensor.living_room_activity] becomes inactive (off) AND remains so for 4 hours. CONDITIONS: None. ACTIONS: Turn off Bar open input boolean [input_boolean.bar_open].", "natural_language": { "trigger": "When the Living room activity sensor [binary_sensor.living_room_activity] reports no activity and stays in that state for four consecutive hours.", "conditions": "There are no additional conditions that must be met.", "action": "Closes the bar by turning off the Bar open input boolean [input_boolean.bar_open]." }, "human_like": "Automatically closes the bar if there has been no activity in the living room for four hours.", "complexity": "low" } }, { "id": "living_room_balcony_door_open_reminder", "result": { "structured": "TRIGGER: When Living room activity state [sensor.living_room_activity_state] becomes 'off' AND remains 'off' for 15 minutes. CONDITIONS: Living room balcony door binary sensor [binary_sensor.stue_altandor] is 'on' AND Balcony temperature sensor [sensor.altan_temperatur] is below 18. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Stue altandør står åben!'.", "natural_language": { "trigger": "When the Living room activity state [sensor.living_room_activity_state] indicates no activity and stays that way for 15 minutes.", "conditions": "The Living room balcony door binary sensor [binary_sensor.stue_altandor] reports the door is open, and the Balcony temperature sensor [sensor.altan_temperatur] reads a temperature below 18 degrees.", "action": "Sends a notification everywhere with the message 'Stue altandør står åben!' (Living room balcony door is open!)." }, "human_like": "Sends a reminder notification if the living room balcony door is left open while it's cold outside and no one is active in the room.", "complexity": "low" } }, { "id": "a9ab798e-6086-4054-b31f-9430bbc860b0", "result": { "structured": "TRIGGER: When Living room balcony door binary sensor [binary_sensor.stue_altandor] changes to 'on'. CONDITIONS: None. ACTIONS: Turn on Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity].", "natural_language": { "trigger": "When the Living room balcony door binary sensor [binary_sensor.stue_altandor] detects the door is open (changes to 'on').", "conditions": "There are no conditions that must be met.", "action": "Turns on the Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity]." }, "human_like": "Turns on a flag to indicate activity when the living room balcony door is opened.", "complexity": "low" } }, { "id": "f2716cf8-226a-408c-b7ef-8ff6ffdda3f5", "result": { "structured": "TRIGGER: When Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity] turns on and remains on for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity].", "natural_language": { "trigger": "When the Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity] is turned on and stays on for 5 seconds.", "conditions": "There are no additional conditions.", "action": "Turns the Living room balcony door activity input boolean [input_boolean.living_room_balcony_door_activity] back off." }, "human_like": "Automatically turns off the balcony door activity indicator five seconds after it is turned on.", "complexity": "low" } }, { "id": "0f9e2d9a-7d28-484c-a0de-6bef156ac906", "result": { "structured": "TRIGGER: When Living room active light profile sensor [sensor.living_room_active_light_profile] changes state OR when the event refresh_light_profile [refresh_light_profile] occurs. CONDITIONS: None. ACTIONS: Set variable 'profile' to the current state of Living room active light profile sensor [sensor.living_room_active_light_profile]. Then, based on the value of 'profile': IF 'profile' equals 'Bright', apply a scene to group Living room lights group [group.living_room_lights] turning it on with brightness 255 and color temperature 4000K, using the transition time from Scene transition time input number [input_number.scene_transition_time] (default 0.5). IF 'profile' equals 'Default', run script Hue scene or light profile script [script.hue_scene_or_light_profile] with room 'Stue' and scene from Theme sensor [sensor.theme], then run script WLED preset or light profile script [script.wled_preset_or_light_profile] with preset from Theme sensor [sensor.theme], then apply a scene to Living room sideboard light [light.stue_skaenk] turning it on with specific brightness and color from Theme sensor [sensor.theme], using the transition time from Scene transition time input number [input_number.scene_transition_time]. IF 'profile' equals 'Dimmed', run script Hue scene or light profile script [script.hue_scene_or_light_profile] with room 'Stue' and scene from Theme sensor [sensor.theme], then run script WLED preset or light profile script [script.wled_preset_or_light_profile] with preset from Theme sensor [sensor.theme], then apply a scene to Living room sideboard light [light.stue_skaenk] turning it on with specific brightness and color from Theme sensor [sensor.theme], using the transition time from Scene transition time input number [input_number.scene_transition_time]. IF 'profile' equals 'Ambient', in parallel: run script Hue scene or light profile script [script.hue_scene_or_light_profile] with room 'Stue' and scene from Theme sensor [sensor.theme], set Living room curtain rod speed number [number.stue_gardinstang_speed] to 45, set Living room curtain rod intensity number [number.stue_gardinstang_intensity] to 60, set Living room curtain rod color palette select [select.stue_gardinstang_color_palette] to '* Colors 1&2', run script WLED preset or light profile script [script.wled_preset_or_light_profile] with preset from Theme sensor [sensor.theme], and apply a scene to Living room sideboard light [light.stue_skaenk] turning it on with specific brightness and color from Theme sensor [sensor.theme], using the transition time from Scene transition time input number [input_number.scene_transition_time]. IF 'profile' equals 'Night', apply a scene to multiple lights turning them on with low red brightness, using the transition time from Scene transition time input number [input_number.scene_transition_time]. IF 'profile' equals 'Off', turn off group Living room lights group [group.living_room_lights] using the transition time from Scene transition time input number [input_number.scene_transition_time].", "natural_language": { "trigger": "The automation triggers whenever the Living room active light profile sensor [sensor.living_room_active_light_profile] changes its value, or when a custom event named refresh_light_profile [refresh_light_profile] is fired.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation first captures the current light profile from the Living room active light profile sensor [sensor.living_room_active_light_profile]. It then selects and executes a different sequence of actions based on which profile is active. For a 'Bright' profile, it sets all living room lights to full brightness with a cool white color. For 'Default', it runs two scripts to apply a theme-based scene to Hue and WLED lights, and then configures the sideboard light. For 'Dimmed', it runs the same two scripts but with lower brightness settings, and configures the sideboard light accordingly. For 'Ambient', it runs several actions in parallel: applying a theme-based Hue scene, adjusting settings for the curtain rod light, running the WLED script, and configuring the sideboard light, all with very low brightness. For 'Night', it turns on several lights with a dim red color for nighttime visibility. For 'Off', it simply turns off all the lights in the living room group. All light changes use a transition time defined by the Scene transition time input number [input_number.scene_transition_time]." }, "human_like": "This automation applies different lighting scenes in the living room based on the selected active profile, ranging from bright and functional to dim and ambient, including a special night light mode.", "complexity": "high" } }, { "id": "activate_light_profile_living_room_dining_table", "result": { "structured": "TRIGGER: When Living room active light profile sensor [sensor.living_room_active_light_profile] changes state OR When Living room presence dining table binary sensor [binary_sensor.stue_tilstedevarelse_spisebord] turns on (to 'on') OR When Living room presence dining table binary sensor [binary_sensor.stue_tilstedevarelse_spisebord] turns off (to 'off') AND remains off for 30 seconds OR When a refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Run a script determined by a template. If Living room selected light profile sensor [sensor.living_room_selected_light_profile] is not 'Off' AND Living room presence dining table binary sensor [binary_sensor.stue_tilstedevarelse_spisebord] is 'on', then run the script for the previous light profile in the list from Light profile input select [input_select.light_profile] (or 'Bright' if at the start). Otherwise, run the script for the current Living room active light profile sensor [sensor.living_room_active_light_profile].", "natural_language": { "trigger": "This automation can start when the active light profile for the living room changes, when presence is detected at the dining table, when presence at the dining table has been absent for 30 seconds, or when a manual refresh event is triggered.", "conditions": "There are no explicit conditions that must be checked before the action runs.", "action": "The automation selects and runs a specific lighting script. If a light profile other than 'Off' is selected and someone is present at the dining table, it runs the script for the previous profile in the list (or 'Bright' if it's the first). If those criteria aren't met, it runs the script corresponding to the currently active light profile." }, "human_like": "Adjusts the dining table lights based on the selected light profile and whether someone is present, ensuring the lighting matches the room's activity.", "complexity": "medium" } }, { "id": "activate_light_profile_living_room_bar", "result": { "structured": "TRIGGER: When Living room active light profile sensor [sensor.living_room_active_light_profile] OR Living room selected light profile sensor [sensor.living_room_selected_light_profile] OR Bar open input boolean [input_boolean.bar_open] changes state. OR When Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar] becomes present (on). OR When Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar] becomes not present (off) AND remains so for 30 seconds. OR When the event refresh_light_profile [refresh_light_profile] occurs. CONDITIONS: None explicitly defined. ACTIONS: Execute a script determined by a template. The script entity is selected based on the following logic: IF Living room selected light profile sensor [sensor.living_room_selected_light_profile] is not 'Off' AND (Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar] is 'on' OR Bar open input boolean [input_boolean.bar_open] is 'on') THEN call the script named 'script.bar_lights_X', where X is the profile name preceding the selected profile in the Light profile input select [input_select.light_profile] list (or 'Bright' if it's the first item), all in lowercase. OTHERWISE, call the script named 'script.bar_lights_X', where X is the current state of Living room active light profile sensor [sensor.living_room_active_light_profile] in lowercase.", "natural_language": { "trigger": "The automation can start in several ways: when the active or selected light profile for the living room changes, when the bar open status changes, when presence is detected at the bar, when presence at the bar has been absent for 30 seconds, or when a manual refresh event for light profiles is triggered.", "conditions": "There are no separate condition checks; the logic for deciding which action to take is embedded within the action's template.", "action": "Based on the current states, the automation runs a specific lighting script for the bar area. If a light profile other than 'Off' is selected and either someone is present at the bar or the bar is marked as open, it activates a script for the previous profile in the list (or 'Bright' if it's the first). Otherwise, it activates a script matching the currently active light profile." }, "human_like": "Controls the bar lights based on the selected light profile and whether the bar area is occupied or manually set to be open.", "complexity": "high" } }, { "id": "8f82703e-c8ac-4280-bc4d-53e86c83e9bd", "result": { "structured": "TRIGGER: When any of the following binary sensors change state to 'on': Living room motion [binary_sensor.stue_motion], Living room presence all zones [binary_sensor.stue_tilstedevarelse_alle_zoner], Living room presence bar binary sensor [binary_sensor.stue_tilstedevarelse_bar], Living room presence dining table binary sensor [binary_sensor.stue_tilstedevarelse_spisebord], Living room presence sofa [binary_sensor.stue_tilstedevarelse_sofa], Stue Tilstedevarelse Altandor [binary_sensor.stue_tilstedevarelse_altandor]. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to the option 'Living Room'.", "natural_language": { "trigger": "When any of the motion or presence sensors in the living room detect activity, specifically when they turn on. This includes the main motion sensor, the presence sensors for all zones, the bar area, the dining table, the sofa, and the patio door area.", "conditions": "The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked, and the person Rook [person.rook] must be at home.", "action": "Updates the 'Latest motion input select' [input_select.latest_motion] to show 'Living Room', indicating the most recent motion activity was in that room." }, "human_like": "Updates a tracker to show the living room was the last area with motion, but only when someone is home and the robot vacuum is not running.", "complexity": "medium" } }, { "id": "5850f484-6c2f-4fcf-8f08-1731207f3dd1", "result": { "structured": "TRIGGER: When Show climate sensors input boolean [input_boolean.show_climate_sensors] turns on OR When Show thermostats input boolean [input_boolean.show_thermostats] turns on. CONDITIONS: None. ACTIONS: If the trigger was Show climate sensors input boolean [input_boolean.show_climate_sensors] turning on, then turn off Show thermostats input boolean [input_boolean.show_thermostats]. If the trigger was Show thermostats input boolean [input_boolean.show_thermostats] turning on, then turn off Show climate sensors input boolean [input_boolean.show_climate_sensors].", "natural_language": { "trigger": "The automation is triggered whenever the Show climate sensors input boolean [input_boolean.show_climate_sensors] is turned on, or when the Show thermostats input boolean [input_boolean.show_thermostats] is turned on.", "conditions": "There are no conditions that must be met for the action to run.", "action": "The action depends on which entity triggered the automation. If the Show climate sensors input boolean [input_boolean.show_climate_sensors] was turned on, then the Show thermostats input boolean [input_boolean.show_thermostats] is turned off. Conversely, if the Show thermostats input boolean [input_boolean.show_thermostats] was turned on, then the Show climate sensors input boolean [input_boolean.show_climate_sensors] is turned off." }, "human_like": "This automation ensures that only one of the two climate-related toggles is active at a time, turning one off when the other is turned on.", "complexity": "medium" } }, { "id": "92dbda3e-b736-4d13-89c6-ed7412bd9d2a", "result": { "structured": "TRIGGER: When Show climate sensors input boolean [input_boolean.show_climate_sensors] turns on and remains on for 30 seconds. CONDITIONS: None. ACTIONS: Toggle Show climate sensors input boolean [input_boolean.show_climate_sensors].", "natural_language": { "trigger": "When the Show climate sensors input boolean [input_boolean.show_climate_sensors] is switched on and stays on for 30 seconds.", "conditions": "There are no additional conditions.", "action": "Toggles the Show climate sensors input boolean [input_boolean.show_climate_sensors] back off." }, "human_like": "Automatically hides the climate sensors display 30 seconds after it is shown.", "complexity": "low" } }, { "id": "4d1fe726-f8cf-49b4-8fdb-a03fe092a0f8", "result": { "structured": "TRIGGER: When Show thermostats input boolean [input_boolean.show_thermostats] turns on and remains on for 30 seconds. CONDITIONS: None. ACTIONS: Toggle Show thermostats input boolean [input_boolean.show_thermostats].", "natural_language": { "trigger": "When the Show thermostats input boolean [input_boolean.show_thermostats] is turned on and stays on for 30 seconds.", "conditions": "There are no additional conditions.", "action": "Toggles the Show thermostats input boolean [input_boolean.show_thermostats]." }, "human_like": "Automatically hides the thermostat display 30 seconds after it is shown.", "complexity": "low" } }, { "id": "speaker_details_timeout", "result": { "structured": "TRIGGER: When any of the following input booleans remains on for 5 minutes: Show living room speaker details input boolean [input_boolean.show_stue_speaker_details] OR Show kitchen speaker details input boolean [input_boolean.show_kokken_speaker_details] OR Show office speaker details input boolean [input_boolean.show_kontor_speaker_details] OR Show bedroom speaker details input boolean [input_boolean.show_sovevaerelse_speaker_details] OR Show bathroom speaker details input boolean [input_boolean.show_badevaerelse_speaker_details] OR Show roam speaker details input boolean [input_boolean.show_roam_speaker_details]. CONDITIONS: None. ACTIONS: Turn off the specific input boolean that triggered the automation.", "natural_language": { "trigger": "When any of the six speaker details input booleans (for the living room, kitchen, office, bedroom, bathroom, or roam speaker) is turned on and remains on for five minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the exact same input boolean that triggered the automation, effectively resetting it after the timeout period." }, "human_like": "Automatically hides speaker details after they have been displayed for five minutes.", "complexity": "low" } }, { "id": "6ff8d64d-b0ff-450b-8b51-5c2da4c546e1", "result": { "structured": "TRIGGER: When Microwave running binary sensor [binary_sensor.microwave_running] turns on. CONDITIONS: None. ACTIONS: Turn off Turn off microwave if not started after door closed automation [automation.sluk_mikroovn_hvis_ikke_startet_efter_dor_lukket].", "natural_language": { "trigger": "When the Microwave running binary sensor [binary_sensor.microwave_running] detects that the microwave has started running.", "conditions": "There are no conditions for this automation.", "action": "Disables the automation named 'Turn off microwave if not started after door closed automation' [automation.sluk_mikroovn_hvis_ikke_startet_efter_dor_lukket]." }, "human_like": "Disables a safety automation when the microwave starts running.", "complexity": "low" } }, { "id": "de4b6b42-b9aa-4f47-aa7a-8a51180ed774", "result": { "structured": "TRIGGER: When Microwave running binary sensor [binary_sensor.microwave_running] changes from on to off. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Mikroovnen er færdig.'.", "natural_language": { "trigger": "When the Microwave running binary sensor [binary_sensor.microwave_running] stops running, changing its state from on to off.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere] with the message 'Mikroovnen er færdig.' (The microwave is finished)." }, "human_like": "Sends a notification to all devices when the microwave finishes running.", "complexity": "low" } }, { "id": "0cd271e7-3331-40b8-a772-d70e3f984bfb", "result": { "structured": "TRIGGER: When Microwave door open binary sensor [binary_sensor.mikroovn_dor_abner] changes to on. CONDITIONS: None. ACTIONS: Turn on Microwave switch [switch.mikroovn] AND Turn on Turn off microwave if not started after door closed automation [automation.sluk_mikroovn_hvis_ikke_startet_efter_dor_lukket].", "natural_language": { "trigger": "When the microwave door is opened, indicated by the Microwave door open binary sensor [binary_sensor.mikroovn_dor_abner] changing to 'on'.", "conditions": "There are no conditions for this automation.", "action": "Turns on the microwave via the Microwave switch [switch.mikroovn] and also enables the companion automation 'Turn off microwave if not started after door closed automation' [automation.sluk_mikroovn_hvis_ikke_startet_efter_dor_lukket]." }, "human_like": "Automatically turns on the microwave and enables a safety automation when the microwave door is opened.", "complexity": "low" } }, { "id": "f10c2677-b5cc-425e-9556-6fd4a2fd632d", "result": { "structured": "TRIGGER: When Microwave door open binary sensor [binary_sensor.mikroovn_dor_abner] changes to closed (off) AND remains closed for 1 minute. CONDITIONS: Microwave running binary sensor [binary_sensor.microwave_running] is off. ACTIONS: Turn off Microwave switch [switch.mikroovn] AND turn off Turn off microwave if not started after door closed automation [automation.sluk_mikroovn_hvis_ikke_startet_efter_dor_lukket].", "natural_language": { "trigger": "When the microwave door has been closed for one full minute.", "conditions": "The microwave is not currently running.", "action": "Turns off the microwave power and disables this automation itself to prevent it from running again." }, "human_like": "Turns off the microwave if it hasn't been started within a minute of the door being closed.", "complexity": "low" } }, { "id": "cold_water_leak_warning", "result": { "structured": "TRIGGER: When Cold water usage sensor [sensor.koldt_vand_forbrug] remains above 200 for 10 minutes. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with data: message 'Koldt vand løber!', severity 2.", "natural_language": { "trigger": "When the Cold water usage sensor [sensor.koldt_vand_forbrug] reports a value above 200 for a continuous period of 10 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere by running the Notify everywhere script [script.notify_everywhere] with the message 'Koldt vand løber!' and a severity level of 2." }, "human_like": "Sends a high-priority warning to all devices if cold water usage is unusually high for 10 minutes, indicating a potential leak.", "complexity": "low" } }, { "id": "warm_water_leak_warning", "result": { "structured": "TRIGGER: When Warm water usage sensor [sensor.varmt_vand_forbrug] remains above 200 for 10 minutes. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Varmt vand løber!' and severity 2.", "natural_language": { "trigger": "When the Warm water usage sensor [sensor.varmt_vand_forbrug] reports a value above 200 for a continuous period of 10 minutes.", "conditions": "There are no additional conditions that need to be met.", "action": "Sends a notification with the message 'Varmt vand løber!' and a severity level of 2 to all configured devices using the Notify everywhere script [script.notify_everywhere]." }, "human_like": "Sends a warning notification if warm water usage is unusually high for an extended period, indicating a potential leak.", "complexity": "low" } }, { "id": "apartment_door_lock_notification", "result": { "structured": "TRIGGER: When Apartment door lock [lock.hoveddor_las] remains unlocked for 3 minutes. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with data: message 'Hoveddøren er ikke låst!' and severity 2.", "natural_language": { "trigger": "When the Apartment door lock [lock.hoveddor_las] is left unlocked for three minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere with the message 'Hoveddøren er ikke låst!' and a severity level of 2 by running the Notify everywhere script [script.notify_everywhere]." }, "human_like": "Sends an urgent notification if the apartment door is left unlocked for three minutes.", "complexity": "low" } }, { "id": "freezer_door_open_notification", "result": { "structured": "TRIGGER: When Freezer door binary sensor [binary_sensor.fryser_dor] becomes open (on) AND remains open for 3 minutes. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Fryseren står åben!' and severity 2.", "natural_language": { "trigger": "When the Freezer door binary sensor [binary_sensor.fryser_dor] detects the door is open and remains in that state for three minutes.", "conditions": "There are no additional conditions that need to be met.", "action": "Sends a notification to all configured devices using the Notify everywhere script [script.notify_everywhere]. The notification will display the message 'Fryseren står åben!' (The freezer is open!) with a medium severity level." }, "human_like": "Sends an alert if the freezer door has been left open for three minutes.", "complexity": "low" } }, { "id": "fridge_door_open_notification", "result": { "structured": "TRIGGER: When Fridge door open binary sensor [binary_sensor.koleskab_dor_abner] becomes open (on) AND remains open for 3 minutes. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Køleskabet står åben!' and severity 2.", "natural_language": { "trigger": "When the Fridge door open binary sensor [binary_sensor.koleskab_dor_abner] detects the fridge door is open and stays open for three minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere with the message 'Køleskabet står åben!' (The fridge is open!) and a severity level of 2." }, "human_like": "Sends a notification if the fridge door has been left open for three minutes.", "complexity": "low" } }, { "id": "smartwatch_charged_notification", "result": { "structured": "TRIGGER: When Darkwatch battery level [sensor.darkwatch_battery_level] is above 98%. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Ur er fuldt opladet!'.", "natural_language": { "trigger": "When the battery level of the Darkwatch [sensor.darkwatch_battery_level] rises above 98 percent.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere] with the message 'Ur er fuldt opladet!'." }, "human_like": "Sends a notification to all devices when the smartwatch battery is fully charged.", "complexity": "low" } }, { "id": "202e827a-1c17-4941-b4ea-86598ef1a8d0", "result": { "structured": "TRIGGER: When Office blinds auto open binary sensor [binary_sensor.office_blinds_auto_open] remains in its current state for 2 minutes. CONDITIONS: None. ACTIONS: If Office blinds auto open binary sensor [binary_sensor.office_blinds_auto_open] is 'on', open Office roller blind cover [cover.kontor_rullegardin] AND Office balcony door curtain cover [cover.kontor_altandor_gardin]. If it is 'off', close Office roller blind cover [cover.kontor_rullegardin] AND Office balcony door curtain cover [cover.kontor_altandor_gardin]. If the state is unknown, stop Office roller blind cover [cover.kontor_rullegardin] AND Office balcony door curtain cover [cover.kontor_altandor_gardin].", "natural_language": { "trigger": "When the Office blinds auto open binary sensor [binary_sensor.office_blinds_auto_open] has been in the same state for two minutes.", "conditions": "There are no additional conditions that must be met.", "action": "The automation checks the state of the Office blinds auto open binary sensor [binary_sensor.office_blinds_auto_open]. If it is 'on', it opens both the Office roller blind cover [cover.kontor_rullegardin] and the Office balcony door curtain cover [cover.kontor_altandor_gardin]. If it is 'off', it closes both covers. If the sensor state is unknown, it sends a stop command to both covers as a safe no-operation." }, "human_like": "Automatically opens or closes the office blinds and curtains based on a sensor state that has been stable for two minutes.", "complexity": "medium" } }, { "id": "office_balcony_door_open_reminder", "result": { "structured": "TRIGGER: When Office activity state sensor [sensor.office_activity_state] changes to 'off' AND remains 'off' for 15 minutes. CONDITIONS: Office balcony door binary sensor [binary_sensor.kontor_altandor] is 'on' AND Office balcony temperature [sensor.kontor_altan_temperatur] is below 18. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with the message 'Kontor altandør står åben!'.", "natural_language": { "trigger": "When the Office activity state sensor [sensor.office_activity_state] indicates no activity (state 'off') for a continuous period of 15 minutes.", "conditions": "The Office balcony door binary sensor [binary_sensor.kontor_altandor] must report the door as open (state 'on'), and the Office balcony temperature [sensor.kontor_altan_temperatur] must be below 18 degrees.", "action": "Sends a notification to all configured devices using the Notify everywhere script [script.notify_everywhere], with the message 'Kontor altandør står åben!' (Office balcony door is open!)." }, "human_like": "Sends a reminder notification if the office balcony door is left open while it's cold outside and no activity is detected in the office.", "complexity": "medium" } }, { "id": "3e1c2b9f-ad00-4781-b346-b0da8fbec9e8", "result": { "structured": "TRIGGER: When Office balcony door binary sensor [binary_sensor.kontor_altandor] changes to open (on). CONDITIONS: None. ACTIONS: Turn on Office balcony door activity input boolean [input_boolean.office_balcony_door_activity].", "natural_language": { "trigger": "When the Office balcony door binary sensor [binary_sensor.kontor_altandor] opens.", "conditions": "There are no additional conditions.", "action": "Sets the Office balcony door activity input boolean [input_boolean.office_balcony_door_activity] to on." }, "human_like": "Tracks when the office balcony door is opened by setting an activity flag.", "complexity": "low" } }, { "id": "e1204019-f3e1-472c-ba71-41015227f4cc", "result": { "structured": "TRIGGER: When Office balcony door activity input boolean [input_boolean.office_balcony_door_activity] turns on and remains on for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Office balcony door activity input boolean [input_boolean.office_balcony_door_activity].", "natural_language": { "trigger": "When the Office balcony door activity input boolean [input_boolean.office_balcony_door_activity] is switched to the 'on' state and stays that way for 5 seconds.", "conditions": "There are no additional conditions that must be met.", "action": "Turns the Office balcony door activity input boolean [input_boolean.office_balcony_door_activity] back off." }, "human_like": "Automatically resets the office balcony door activity indicator after it has been on for 5 seconds.", "complexity": "low" } }, { "id": "282a1712-2ab0-45d2-8988-7b357ad91279", "result": { "structured": "TRIGGER: When Office balcony active light profile sensor [sensor.office_balcony_active_light_profile] changes state OR When a refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Wait for 0.1 seconds.", "natural_language": { "trigger": "When the Office balcony active light profile sensor [sensor.office_balcony_active_light_profile] changes its value, or when a refresh_light_profile event is received.", "conditions": "There are no conditions that must be met.", "action": "Pauses for 0.1 seconds." }, "human_like": "Waits briefly after a light profile changes or a refresh event occurs.", "complexity": "low" } }, { "id": "efe4262d-9e2d-4649-a756-fd61c97185bf", "result": { "structured": "TRIGGER: When Office active light profile sensor [sensor.office_active_light_profile] changes state OR when the event refresh_light_profile [refresh_light_profile] occurs. CONDITIONS: None (directly evaluates the variable 'profile' in the choose action). ACTIONS: Apply a lighting scene based on the value of the variable 'profile' (which is set to the current state of Office active light profile sensor [sensor.office_active_light_profile]) using a transition time from Scene transition time input number [input_number.scene_transition_time] (defaulting to 0.5 seconds). The action is a conditional choose: IF profile equals 'Bright' THEN apply a scene in parallel setting multiple office lights to specific brightness, color temperature, and color values. IF profile equals 'Default' THEN apply a scene in parallel setting multiple office lights to specific brightness, color temperature, and colors derived from Theme sensor [sensor.theme] attributes. IF profile equals 'Dimmed' THEN apply a scene in parallel setting multiple office lights to specific brightness, color temperature, and colors derived from Theme sensor [sensor.theme] attributes. IF profile equals 'Ambient' THEN apply a scene setting multiple office lights to specific brightness and colors derived from Theme sensor [sensor.theme] attributes, turning off Office ceiling lamp [light.kontor_loftlampe]. IF profile equals 'Night' THEN apply a scene setting multiple office lights to low red brightness, turning off Office ceiling lamp [light.kontor_loftlampe] and Ghost eyes light [light.spogelse_ojne]. IF profile equals 'Off' THEN turn off all lights in the group Office lights group [group.office_lights].", "natural_language": { "trigger": "This automation runs whenever the Office active light profile sensor [sensor.office_active_light_profile] changes its state, or when a custom event named 'refresh_light_profile' is received.", "conditions": "There are no separate conditions. The automation uses a variable to capture the current light profile and then selects the appropriate action based on that value.", "action": "Depending on the active light profile, it applies a specific lighting configuration to all the office lights. It uses a transition time defined by the Scene transition time input number [input_number.scene_transition_time]. For the 'Bright' profile, it sets all lights to high brightness with warm white or orange hues. For 'Default', 'Dimmed', and 'Ambient' profiles, it sets lights to various brightness levels and colors pulled from the current theme. For the 'Night' profile, it sets all lights to a dim red color. For the 'Off' profile, it simply turns off all office lights." }, "human_like": "Automatically sets the office lighting to a predefined scene (like Bright, Default, or Night mode) whenever the selected light profile changes or is refreshed.", "complexity": "high" } }, { "id": "d63a2c52-7387-4991-9511-82fbb31f2575", "result": { "structured": "TRIGGER: When GPU stand light [light.gpu_stand] OR RTX 3070 Ti GPU light [light.gigabyte_rtx3070_ti_gaming_oc_8g_0] OR G502 wireless gaming mouse LED 0 [light.g502_lightspeed_wireless_gaming_mouse_1_led_0] OR Motherboard light [light.motherboard] OR G502 wireless gaming mouse LED 1 [light.g502_lightspeed_wireless_gaming_mouse_1_led_1] changes from unavailable to any other state AND remains in the new state for 30 seconds. CONDITIONS: None. ACTIONS: Fire the event Restart light profile event [refresh_light_profile].", "natural_language": { "trigger": "When any of the specified lights — GPU stand light [light.gpu_stand], RTX 3070 Ti GPU light [light.gigabyte_rtx3070_ti_gaming_oc_8g_0], G502 wireless gaming mouse LED 0 [light.g502_lightspeed_wireless_gaming_mouse_1_led_0], Motherboard light [light.motherboard], or G502 wireless gaming mouse LED 1 [light.g502_lightspeed_wireless_gaming_mouse_1_led_1] — transitions from being unavailable to becoming available and stays available for 30 seconds.", "conditions": "There are no additional conditions that must be met.", "action": "Triggers a system event called Restart light profile event [refresh_light_profile] to refresh the lighting profile." }, "human_like": "Refreshes the lighting profile when any of the computer's RGB lights become available after being unavailable.", "complexity": "low" } }, { "id": "9f0915b1-24af-4406-b12e-5510d87377d2", "result": { "structured": "TRIGGER: When Office room state sensor [sensor.office_room_state] is 'active' OR Rook PC activity binary sensor [binary_sensor.rook_pc_activity] is 'on' OR Rook PC switch [switch.rook_pc] is 'on'. CONDITIONS: None. ACTIONS: Turn on PC circuit breaker switch [switch.pc_afbryder].", "natural_language": { "trigger": "When the Office room state sensor [sensor.office_room_state] reports the room as 'active', or when the Rook PC activity binary sensor [binary_sensor.rook_pc_activity] detects activity, or when the Rook PC switch [switch.rook_pc] is turned on.", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the PC circuit breaker switch [switch.pc_afbryder] to supply power." }, "human_like": "Turns on the PC power supply when the office is active, the PC shows activity, or the PC itself is switched on.", "complexity": "low" } }, { "id": "1baf4ea3-3efd-4f60-90dc-50d2f65b24a9", "result": { "structured": "TRIGGER: When the template condition (Office room state sensor [sensor.office_room_state] is off AND Rook PC activity binary sensor [binary_sensor.rook_pc_activity] is off AND Rook PC switch [switch.rook_pc] is off) remains true for 5 minutes. CONDITIONS: Quest not in use [binary_sensor.quest_in_use_delayed] is off. ACTIONS: Turn off PC circuit breaker switch [switch.pc_afbryder].", "natural_language": { "trigger": "When the office room is considered off, the PC shows no activity, and the PC itself is switched off, and this combined state persists for five minutes.", "conditions": "The Quest VR headset is not in use, as indicated by the delayed sensor.", "action": "Turn off the PC circuit breaker switch, cutting power to the PC setup." }, "human_like": "Automatically turns off the PC power breaker when the office is inactive, the PC is off with no activity, and the VR headset is not being used for a sustained period.", "complexity": "medium" } }, { "id": "25fc64ea-5663-4be4-aa3a-08fb6caf6c6a", "result": { "structured": "TRIGGER: When the template condition evaluates to true. The template condition is: (PC circuit breaker consumption sensor [sensor.pc_afbryder_forbrug] power consumption is greater than 0.03) OR (Rook PC activity binary sensor [binary_sensor.rook_pc_activity] is on) OR (WfH binary sensor [binary_sensor.vagtskema_wfh] is on). CONDITIONS: None. ACTIONS: Turn on PC accessories circuit breaker switch [switch.pc_tilbehor_afbryder].", "natural_language": { "trigger": "This automation triggers whenever a specific template condition becomes true. This condition is met if the PC circuit breaker consumption sensor [sensor.pc_afbryder_forbrug] reports a power consumption greater than 0.03, or if the Rook PC activity binary sensor [binary_sensor.rook_pc_activity] is active (on), or if the WfH binary sensor [binary_sensor.vagtskema_wfh] indicates that the work-from-home schedule is active (on).", "conditions": "There are no additional conditions that must be checked after the trigger.", "action": "It turns on the PC accessories circuit breaker switch [switch.pc_tilbehor_afbryder]." }, "human_like": "Turns on the PC accessories power switch when the PC is drawing power, is active, or when the work-from-home schedule is active.", "complexity": "medium" } }, { "id": "79c485f8-79de-47b2-9169-884bc6e020bc", "result": { "structured": "TRIGGER: When the template condition becomes true. CONDITIONS: The template condition is: PC circuit breaker switch [switch.pc_afbryder] is off AND PC circuit breaker consumption sensor [sensor.pc_afbryder_forbrug] power consumption is less than 0.02 AND Rook PC activity binary sensor [binary_sensor.rook_pc_activity] is off AND WfH binary sensor [binary_sensor.vagtskema_wfh] is off AND Quest in use delayed binary sensor [binary_sensor.quest_in_use_delayed] is off. ACTIONS: Turn off PC accessories circuit breaker switch [switch.pc_tilbehor_afbryder] AND turn off Printer circuit breaker switch [switch.printer_afbryder].", "natural_language": { "trigger": "When a specific set of conditions, defined by a template, becomes true.", "conditions": "The PC circuit breaker switch [switch.pc_afbryder] must be off, the power consumption from the PC circuit breaker consumption sensor [sensor.pc_afbryder_forbrug] must be below 0.02, the Rook PC activity binary sensor [binary_sensor.rook_pc_activity] must be off, the WfH binary sensor [binary_sensor.vagtskema_wfh] must be off, and the Quest in use delayed binary sensor [binary_sensor.quest_in_use_delayed] must be off.", "action": "Turn off the PC accessories circuit breaker switch [switch.pc_tilbehor_afbryder] and the Printer circuit breaker switch [switch.printer_afbryder]." }, "human_like": "Turns off the office accessories and printer when the PC is off, not in use, and no one is working from home or using the Quest headset.", "complexity": "medium" } }, { "id": "e5d8426d-2ded-49af-adf8-6f39e98a9bc2", "result": { "structured": "TRIGGER: When Rook PC printers sensor [sensor.rook_pc_printers_npid634ed_hpcolorlaserjetm255dw] has a value greater than 0. CONDITIONS: Printer circuit breaker switch [switch.printer_afbryder] is off. ACTIONS: Turn on Printer circuit breaker switch [switch.printer_afbryder].", "natural_language": { "trigger": "When the Rook PC printers sensor [sensor.rook_pc_printers_npid634ed_hpcolorlaserjetm255dw] detects that the print queue is not empty (its value is above zero).", "conditions": "If the Printer circuit breaker switch [switch.printer_afbryder] is currently off.", "action": "Turn on the Printer circuit breaker switch [switch.printer_afbryder] to power on the printer." }, "human_like": "Automatically turns on the printer's power when there is a print job waiting in the queue.", "complexity": "low" } }, { "id": "mute_pc_tv_line_in_on_office_tv_off", "result": { "structured": "TRIGGER: When Office TV media player [media_player.kontor_tv] OR Office shield remote media player [media_player.kontor_shield_remote] changes state to off. CONDITIONS: None. ACTIONS: Press Rook PC mute TV button [button.rook_pc_mute_tv].", "natural_language": { "trigger": "When either the Office TV media player [media_player.kontor_tv] or the Office shield remote media player [media_player.kontor_shield_remote] turns off.", "conditions": "There are no additional conditions that need to be met.", "action": "Press the Rook PC mute TV button [button.rook_pc_mute_tv]." }, "human_like": "Mutes the PC TV line-in when the office TV or its remote is turned off.", "complexity": "low" } }, { "id": "unute_pc_tv_line_in_on_office_tv_on", "result": { "structured": "TRIGGER: When Office TV media player [media_player.kontor_tv] turns on. CONDITIONS: None. ACTIONS: Press Rook PC unmute TV button [button.rook_pc_unmute_tv].", "natural_language": { "trigger": "When the Office TV media player [media_player.kontor_tv] is turned on.", "conditions": "There are no additional conditions that must be met.", "action": "Press the Rook PC unmute TV button [button.rook_pc_unmute_tv]." }, "human_like": "Automatically unmutes the PC TV line when the office TV is turned on.", "complexity": "low" } }, { "id": "switch_office_tv_speaker_output_to_internal_when_pc_off", "result": { "structured": "TRIGGER: When Rook PC switch [switch.rook_pc] turns off OR when Office TV media player [media_player.kontor_tv] turns on. CONDITIONS: Office TV media player [media_player.kontor_tv] is on AND Rook PC switch [switch.rook_pc] is off. ACTIONS: Set the sound output of Office TV media player [media_player.kontor_tv] to 'tv_speaker'.", "natural_language": { "trigger": "When the Rook PC switch [switch.rook_pc] is turned off, or when the Office TV media player [media_player.kontor_tv] is turned on.", "conditions": "If the Office TV media player [media_player.kontor_tv] is currently on and the Rook PC switch [switch.rook_pc] is currently off.", "action": "Changes the sound output of the Office TV media player [media_player.kontor_tv] to its internal speakers." }, "human_like": "Switches the office TV's audio to its internal speakers when the PC is off and the TV is on.", "complexity": "low" } }, { "id": "switch_office_tv_speaker_output_to_optical_when_pc_on", "result": { "structured": "TRIGGER: When Rook PC switch [switch.rook_pc] turns on OR when Office TV media player [media_player.kontor_tv] turns on. CONDITIONS: Office TV media player [media_player.kontor_tv] is on AND Rook PC switch [switch.rook_pc] is on. ACTIONS: Call service webostv.select_sound_output on Office TV media player [media_player.kontor_tv] with sound_output set to external_optical.", "natural_language": { "trigger": "When the Rook PC switch [switch.rook_pc] is turned on, or when the Office TV media player [media_player.kontor_tv] is turned on.", "conditions": "The Office TV media player [media_player.kontor_tv] must be on, and the Rook PC switch [switch.rook_pc] must also be on.", "action": "Switches the sound output of the Office TV media player [media_player.kontor_tv] to the external optical port." }, "human_like": "Automatically sets the office TV to use the optical audio output when both the PC and TV are turned on.", "complexity": "low" } }, { "id": "a0b61be0-7171-4225-8d61-e40fd3c6d888", "result": { "structured": "TRIGGER: When Office motion [binary_sensor.kontor_motion] OR Office floor movement [binary_sensor.kontor_gulv_bevagelse] OR Rook PC activity binary sensor [binary_sensor.rook_pc_activity] OR Rook PC activity ping binary sensor [binary_sensor.rook_pc_activity_ping] changes to 'on'. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to 'Office'.", "natural_language": { "trigger": "When motion is detected by any of the office sensors: Office motion [binary_sensor.kontor_motion], Office floor movement [binary_sensor.kontor_gulv_bevagelse], Rook PC activity binary sensor [binary_sensor.rook_pc_activity], or Rook PC activity ping binary sensor [binary_sensor.rook_pc_activity_ping].", "conditions": "The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked, and Person rook [person.rook] must be at home.", "action": "Update the Latest motion input select [input_select.latest_motion] to indicate the office as the location of the latest motion." }, "human_like": "Updates a tracker to show the office as the last room with motion, but only when Rook is home and the vacuum is docked.", "complexity": "medium" } }, { "id": "9639dddf-8e3b-4321-811d-6df6b8562c24", "result": { "structured": "TRIGGER: When Parking lot paid binary sensor [binary_sensor.parking_lot_paid] changes to on. CONDITIONS: None. ACTIONS: Execute Notify darkphone script [script.notify_darkphone] with a message containing the current state of Parking lot sensor [sensor.parking_lot].", "natural_language": { "trigger": "When the Parking lot paid binary sensor [binary_sensor.parking_lot_paid] detects that parking has been paid (changes to 'on').", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification to a phone using the Notify darkphone script [script.notify_darkphone]. The message includes a reminder to register the parking at the reception or online and mentions the current status from the Parking lot sensor [sensor.parking_lot]." }, "human_like": "Sends a reminder notification when parking payment is detected, prompting the user to register their parking.", "complexity": "low" } }, { "id": "c562770a-5958-46b7-ace8-3cbf4996fe88", "result": { "structured": "TRIGGER: When Parking timer sensor [sensor.parkeringsskive] remains in its current state for 10 seconds. CONDITIONS: Parking duration limit sensor [sensor.parking_duration_limit] is above 0. ACTIONS: Set variables: parked_time (formatted time from Parking last captured sensor [sensor.parking_last_captured] if available), parkeringsskive (formatted time from Parking timer sensor [sensor.parkeringsskive] if available), parking_limit (formatted time from Parking limit sensor [sensor.parking_limit] if available), parking_alarm (formatted time from Parking alarm sensor [sensor.parking_alarm] if available). THEN execute Android set alarm script [script.android_set_alarm] with parameters: action set to Mobile app darkphone notify [notify.mobile_app_darkphone], timehour and timemin extracted from parking_alarm variable, message 'Flyt bilen!'. THEN execute Notify darkphone script [script.notify_darkphone] with a message containing: parking location from Parking lot sensor [sensor.parking_lot], parked_time, parkeringsskive, parking_limit, and parking_alarm.", "natural_language": { "trigger": "When the Parking timer sensor [sensor.parkeringsskive] remains stable for 10 seconds.", "conditions": "The Parking duration limit sensor [sensor.parking_duration_limit] must have a value greater than 0.", "action": "First, several time variables are prepared from other parking-related sensors. Then, an alarm is set on the phone via the Android set alarm script [script.android_set_alarm], targeting the Mobile app darkphone notify [notify.mobile_app_darkphone] with the alarm time and a 'Move the car!' message. Finally, a detailed notification is sent via the Notify darkphone script [script.notify_darkphone], informing the user of the parking location, the time parked, the set timer, the parking limit time, and the alarm time." }, "human_like": "Sets a phone alarm and sends a notification with parking details when the parking timer is stable, ensuring the user is reminded to move their car before the time limit.", "complexity": "medium" } }, { "id": "parking_alarm", "result": { "structured": "TRIGGER: When the time matches the value of Parking alarm sensor [sensor.parking_alarm]. ACTIONS: Execute Notify darkphone script [script.notify_darkphone] with message 'Flyt bilen!' AND Turn on Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "At a specific time, as determined by the value of the Parking alarm sensor [sensor.parking_alarm].", "conditions": "There are no conditions for this automation.", "action": "Sends a notification to a phone with the message 'Flyt bilen!' and turns on the car's climatisation system." }, "human_like": "Sends a reminder to move the car and starts the car's air conditioning at a scheduled time.", "complexity": "low" } }, { "id": "45fa7427-0498-4f77-a9f4-3e5983c15dc3", "result": { "structured": "TRIGGER: When Car location sensor [sensor.bil_placering] changes to any state that is NOT 'Away', 'unknown', or 'unavailable'. CONDITIONS: Car climatisation switch [switch.id_3_pro_climatisation] is on. ACTIONS: Turn off Car climatisation switch [switch.id_3_pro_climatisation].", "natural_language": { "trigger": "When the Car location sensor [sensor.bil_placering] reports a new location that is not 'Away', 'unknown', or 'unavailable'.", "conditions": "The Car climatisation switch [switch.id_3_pro_climatisation] must currently be switched on.", "action": "Turns off the Car climatisation switch [switch.id_3_pro_climatisation]." }, "human_like": "Turns off the car's climatisation when the car is no longer reported as being away.", "complexity": "low" } }, { "id": "5d6fc4e6-291f-43f0-b555-831251da9ac5", "result": { "structured": "TRIGGER: When GDQ event active binary sensor [binary_sensor.gdq_event_active] changes to on OR off AND remains in that new state for 1 minute. CONDITIONS: The state of GDQ automations group [group.gdq_automations] is NOT equal to the state of GDQ event active binary sensor [binary_sensor.gdq_event_active]. ACTIONS: Call service 'homeassistant.turn_{{ states('binary_sensor.gdq_event_active') }}' on target GDQ automations group [group.gdq_automations] (i.e., turn the group on or off to match the sensor state).", "natural_language": { "trigger": "When the GDQ event active binary sensor [binary_sensor.gdq_event_active] changes to either 'on' or 'off' and stays in that new state for one minute.", "conditions": "The current state of the GDQ automations group [group.gdq_automations] must be different from the new state of the GDQ event active binary sensor [binary_sensor.gdq_event_active].", "action": "Turn the GDQ automations group [group.gdq_automations] on or off to match the state of the GDQ event active binary sensor [binary_sensor.gdq_event_active]." }, "human_like": "Synchronizes a group of automations with an event status, turning them on when the event starts and off when it ends, after a brief delay to confirm the state change.", "complexity": "medium" } }, { "id": "dc222bee-ba1b-49b4-80cf-7dee61761268", "result": { "structured": "TRIGGER: When the time pattern matches exactly midnight (00:00:00). CONDITIONS: None. ACTIONS: Execute Get GDQ event pyscript [pyscript.get_gdq_event].", "natural_language": { "trigger": "At midnight, every day.", "conditions": "There are no conditions for this automation.", "action": "Runs the pyscript named Get GDQ event pyscript [pyscript.get_gdq_event]." }, "human_like": "Runs a script to update GDQ event information every night at midnight.", "complexity": "low" } }, { "id": "refresh_gdq_tracker", "result": { "structured": "TRIGGER: Every minute, on the minute (hours: any, minutes: divisible by 1, seconds: 0). CONDITIONS: None. ACTIONS: Execute Refresh GDQ data script [script.refresh_gdq_data].", "natural_language": { "trigger": "The automation runs every minute, precisely at the start of each minute (e.g., 12:00:00, 12:01:00).", "conditions": "There are no conditions that must be met for the action to run.", "action": "Runs the Refresh GDQ data script [script.refresh_gdq_data]." }, "human_like": "Refreshes GDQ tracker data every minute.", "complexity": "low" } }, { "id": "notify_gdq_run_coming_up", "result": { "structured": "TRIGGER: When GDQ next watch run sensor [sensor.gdq_next_watch_run] value is below 30 OR When GDQ next watch run sensor [sensor.gdq_next_watch_run] value is below 15 OR When GDQ next watch run sensor [sensor.gdq_next_watch_run] value is below 5. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with a severity of -1 if TV currently streaming GDQ binary sensor [binary_sensor.tv_currently_streaming_gdq] is on, otherwise 1, and a message containing three TTS segments: first segment 'Næste GDQ spil: ' in Danish, second segment '{{ game }} — Run by {{ runner }},' in English, third segment ' starter {{ time }}' in Danish.", "natural_language": { "trigger": "When the GDQ next watch run sensor [sensor.gdq_next_watch_run] reports a value below 30 minutes, below 15 minutes, or below 5 minutes.", "conditions": "There are no explicit conditions that must be met for the action to run.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere]. The notification's severity is set to -1 if the TV is currently streaming GDQ [binary_sensor.tv_currently_streaming_gdq] is on, otherwise it's set to 1. The notification message is spoken in three parts: first in Danish announcing the next GDQ game, then in English stating the game name and runner, and finally in Danish stating when it starts." }, "human_like": "Sends a multi-language spoken notification when a GDQ run is about to start, adjusting the alert priority based on whether you're already watching the stream.", "complexity": "medium" } }, { "id": "e8acab09-6c30-4d0c-9c1a-3301013a34c6", "result": { "structured": "TRIGGER: When GDQ currently streaming watchlist game binary sensor [binary_sensor.gdq_currently_streaming_watchlist_game] changes to on. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with a severity of 0 if TV currently streaming GDQ binary sensor [binary_sensor.tv_currently_streaming_gdq] is on, otherwise 1, and a message containing TTS: 'GDQ streamer nu: ' in Danish, followed by TTS: '{{ game }} — Run by {{ runner }},' in English, where game is the 'game' attribute from GamesDoneQuick sensor [sensor.gamesdonequick] and runner is the 'runner' attribute from the event in GDQ calendar binary sensor [binary_sensor.gdq_calendar] whose summary matches the game.", "natural_language": { "trigger": "When the GDQ currently streaming watchlist game binary sensor [binary_sensor.gdq_currently_streaming_watchlist_game] turns on, indicating that a game from the watchlist is now being streamed.", "conditions": "There are no explicit conditions that must be met for the action to run.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere]. The notification's severity is set to low (0) if the TV currently streaming GDQ binary sensor [binary_sensor.tv_currently_streaming_gdq] is on, otherwise it's set to normal (1). The message is spoken in two parts: first 'GDQ streamer nu: ' in Danish, then the game name and runner in English, where the game name is taken from the GamesDoneQuick sensor [sensor.gamesdonequick] and the runner's name is looked up from the GDQ calendar binary sensor [binary_sensor.gdq_calendar] event matching that game." }, "human_like": "Notifies you when a game you're watching for on the GDQ stream starts, announcing the game and runner.", "complexity": "medium" } }, { "id": "refresh_gdq_runs_regex", "result": { "structured": "TRIGGER: When any of the following entities changes state: GDQ runs todo [todo.gdq_runs], GDQ games todo [todo.gdq_games], GDQ runners todo [todo.gdq_runners], GDQ commentators todo [todo.gdq_commentators], GDQ hosts todo [todo.gdq_hosts], GDQ categories todo [todo.gdq_categories] OR when GDQ automations group [group.gdq_automations] turns on. CONDITIONS: None. ACTIONS: For each entity in the list (GDQ runs todo [todo.gdq_runs], GDQ games todo [todo.gdq_games], GDQ runners todo [todo.gdq_runners], GDQ commentators todo [todo.gdq_commentators], GDQ hosts todo [todo.gdq_hosts], GDQ categories todo [todo.gdq_categories]), perform the following sequence: 1. Call the service Get todo items service [todo.get_items] with status 'needs_action' on the current entity, storing the result in variable 'todo_items'. 2. Fire the event GDQ runs updated event [gdq_runs_updated] with event data containing the current entity's identifier as 'watchlist' and the retrieved 'todo_items'.", "natural_language": { "trigger": "This automation runs when the state of any of the six GDQ-related todo lists changes, or when the GDQ automations group is turned on.", "conditions": "There are no conditions that must be met for the actions to execute.", "action": "For each of the six GDQ todo lists, the automation fetches all items marked as 'needs action' from that list and then fires an event named 'gdq_runs_updated'. This event includes which list was processed and the items that were retrieved." }, "human_like": "Refreshes and processes all GDQ-related todo lists whenever they change or when the automation group is enabled, triggering an update event for each list.", "complexity": "medium" } }, { "id": "680e332d-e89a-4170-b2b3-e997cbd830d3", "result": { "structured": "TRIGGER: When GDQ calendar updated event [gdq_calendar_updated] occurs. CONDITIONS: None. ACTIONS: Run Get GDQ bids pyscript [pyscript.gdq_get_bids] via the Run pyscript script [script.run_pyscript].", "natural_language": { "trigger": "When the GDQ calendar updated event [gdq_calendar_updated] is fired.", "conditions": "There are no conditions to check.", "action": "Executes the Get GDQ bids pyscript [pyscript.gdq_get_bids] by calling the Run pyscript script [script.run_pyscript]." }, "human_like": "Automatically fetches the latest GDQ bids whenever the GDQ calendar is updated.", "complexity": "low" } }, { "id": "bc6dbbf8-d7fd-44d6-921d-9e31b0564302", "result": { "structured": "TRIGGER: When GDQ donation stats event [gdq_donation_stats] occurs. CONDITIONS: None. ACTIONS: Run Get GDQ milestones pyscript [pyscript.gdq_get_milestones] via the Run pyscript script [script.run_pyscript].", "natural_language": { "trigger": "Whenever the GDQ donation stats event [gdq_donation_stats] is fired.", "conditions": "There are no conditions for this automation.", "action": "Executes the Get GDQ milestones pyscript [pyscript.gdq_get_milestones] using the Run pyscript script [script.run_pyscript]." }, "human_like": "Updates the GDQ milestones whenever new donation statistics are received.", "complexity": "low" } }, { "id": "update_gdq_calendar", "result": { "structured": "TRIGGER: When GDQ schedule calendar [calendar.gdq_schedule] state changes OR when Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] turns on. CONDITIONS: None. ACTIONS: 1. Update the GDQ schedule calendar [calendar.gdq_schedule] entity. 2. Wait for 5 seconds. 3. Fetch calendar events from GDQ schedule calendar [calendar.gdq_schedule] for the period starting from yesterday at 00:00:00 to 10 days from now at 23:59:59, storing the result in variable 'all_events'. 4. Process the fetched events using a Jinja2 template ('agenda.jinja') and the following data: regex patterns from Calendar regexes sensor [sensor.calendar_regexes], boolean attribute patterns from sensors GDQ runs regex [sensor.gdq_runs_regex], GDQ games watchlist [sensor.gdq_games_watchlist], GDQ runners watchlist [sensor.gdq_runners_watchlist], GDQ hosts watchlist [sensor.gdq_hosts_watchlist], GDQ commentators watchlist [sensor.gdq_commentators_watchlist], GDQ categories watchlist [sensor.gdq_categories_watchlist], and GDQ tags watchlist [sensor.gdq_tags_watchlist], and attribute extraction patterns for fields game, category, platform, release_year, runner, host, commentators, and tags. The processed events are stored in variable 'agenda_events'. 5. Fire the GDQ calendar updated event [gdq_calendar_updated] with the processed 'agenda_events' data.", "natural_language": { "trigger": "This automation runs whenever the state of the GDQ schedule calendar [calendar.gdq_schedule] changes, or when the Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] reports that Home Assistant has finished loading.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it updates the GDQ schedule calendar [calendar.gdq_schedule] entity to ensure it has the latest data. After a 5-second delay, it fetches all calendar events from the GDQ schedule calendar for a period spanning from yesterday at midnight to 10 days in the future at 11:59 PM. These raw events are then processed using a custom template. The processing extracts detailed information like the game name, category, platform, release year, runner, host, commentators, and tags from the event summaries using predefined regular expression patterns. It also checks the events against several watchlists (for runs, games, runners, hosts, commentators, categories, and tags) to flag events of interest. Finally, it fires a custom event called GDQ calendar updated [gdq_calendar_updated] containing this newly processed and structured list of events." }, "human_like": "Updates and processes the GDQ event calendar whenever the calendar changes or Home Assistant starts, extracting detailed run information and checking against user watchlists.", "complexity": "high" } }, { "id": "ddee7c3a-5809-44ba-97fd-297a63076b9c", "result": { "structured": "TRIGGER: When timer.finished event occurs for Kitchen timer 1 [timer.kitchen_1] OR Kitchen timer 2 [timer.kitchen_2] OR Kitchen timer 3 [timer.kitchen_3]. CONDITIONS: None. ACTIONS: Turn on input_boolean.timer_{{ trigger.event.data.entity_id | replace('timer.', '') }}_finished AND execute Notify everywhere script [script.notify_everywhere] with a message containing the friendly_name attribute of the triggering timer entity.", "natural_language": { "trigger": "When any of the kitchen timers (Kitchen timer 1 [timer.kitchen_1], Kitchen timer 2 [timer.kitchen_2], or Kitchen timer 3 [timer.kitchen_3]) finishes.", "conditions": "There are no conditions for this automation.", "action": "It turns on a corresponding input boolean entity (named based on which timer finished) and runs the Notify everywhere script [script.notify_everywhere] to send a notification everywhere stating that the specific timer is finished." }, "human_like": "Sends a notification and sets a flag when any of the kitchen timers finishes.", "complexity": "low" } }, { "id": "7b9af13b-fd32-4ff1-83c2-90a5981b13a7", "result": { "structured": "TRIGGER: When Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] turns on OR When any light in a predefined list (Pencil light [light.blyant], Office shelf light [light.kontor_hylde], Hobby table tool cabinet light [light.hobbybord_vaerktojsskab], Hallway chest light [light.gang_kommode], Hallway cabinet light [light.gang_skab], TV furniture light [light.tv_mobel], Shoe cabinet light [light.skoskab], Light chain [light.lyskaede], Bed shelf down [light.seng_hylder_ned], Bar light [light.bar], Bathroom right lamp [light.badevaerelse_lampe_hojre], Globe light [light.globe], Sideboard lamp [light.skaenk_lampe]) turns on or off OR When the 'effect' attribute changes for any light in that same list. CONDITIONS: Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] is on. ACTIONS: If the triggering entity is a light, turn that specific light on to 100% brightness and set its effect to 'Fade' if available, otherwise 'opal'. Otherwise, for each light in the predefined list, turn it on to 100% brightness and set its effect to 'Fade' if available, otherwise 'opal'.", "natural_language": { "trigger": "This automation can be triggered in three ways: when the Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] turns on, when any of a specific set of lights (including Pencil light, Office shelf light, and others) turns on or off, or when the visual effect of any of those lights changes.", "conditions": "The automation only proceeds if the Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] is currently in the 'on' state.", "action": "Depending on what triggered the automation, it will either turn on the specific light that changed (if it was a light) or turn on all the lights in the predefined list. In both cases, it sets the brightness to 100% and chooses the 'Fade' effect if the light supports it, otherwise it uses the 'opal' effect." }, "human_like": "When the kitchen timer finishes, or when certain lights change state, this automation turns on a set of decorative lights to full brightness with a specific visual effect.", "complexity": "medium" } }, { "id": "1cc6a65e-b3c0-4e26-89b3-55bf7a260c7d", "result": { "structured": "TRIGGER: When Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] changes state to off. CONDITIONS: None. ACTIONS: Fire the Restart light profile event [refresh_light_profile].", "natural_language": { "trigger": "When the Kitchen timer finished binary sensor [binary_sensor.kitchen_timer_finished] turns off.", "conditions": "There are no conditions that must be met.", "action": "Fires an event named refresh_light_profile." }, "human_like": "Restarts the light profile when the kitchen timer finishes.", "complexity": "low" } }, { "id": "notify_washing_machine_started", "result": { "structured": "TRIGGER: When Washing machine sensor [sensor.washing_machine] changes to state Running OR When Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] becomes greater than 5. CONDITIONS: (Washing machine sensor [sensor.washing_machine] is Running) AND (Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] is greater than 5). ACTIONS: Wait for 10 seconds, then execute Notify everywhere script [script.notify_everywhere] with a message stating the washing machine started and the estimated finish time from Washing machine finish time sensor [sensor.vaskemaskine_faerdig].", "natural_language": { "trigger": "When the Washing machine sensor [sensor.washing_machine] changes its state to 'Running', or when the Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] reports a value greater than 5.", "conditions": "The Washing machine sensor [sensor.washing_machine] must be in the 'Running' state, and the Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] must have a value above 5.", "action": "After a 10-second delay, a notification is sent everywhere using the Notify everywhere script [script.notify_everywhere]. The message announces that the washing machine has started and provides an estimated completion time based on the Washing machine finish time sensor [sensor.vaskemaskine_faerdig]." }, "human_like": "Sends a notification when the washing machine starts a cycle, including an estimate of when it will be finished.", "complexity": "medium" } }, { "id": "notify_washing_machine_almost_finished", "result": { "structured": "TRIGGER: When Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] falls below 6. CONDITIONS: Washing machine sensor [sensor.washing_machine] is in state Running. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with message 'Vaskemaskine færdig om 5 minutter.'.", "natural_language": { "trigger": "When the Wash cycle remaining time sensor [sensor.wash_cycle_remaining_time] indicates less than 6 minutes left.", "conditions": "The Washing machine sensor [sensor.washing_machine] must be in the 'Running' state.", "action": "Sends a notification everywhere with the message 'Vaskemaskine færdig om 5 minutter.' by running the Notify everywhere script [script.notify_everywhere]." }, "human_like": "Sends a notification when the washing machine is almost finished, with 5 minutes remaining in its cycle.", "complexity": "low" } }, { "id": "washing_machine_finished", "result": { "structured": "TRIGGER: When Washing machine sensor [sensor.washing_machine] changes state to Finished. CONDITIONS: None. ACTIONS: Turn on Washing machine finished input boolean [input_boolean.washing_machine_finished] AND execute Notify everywhere script [script.notify_everywhere] with message 'Vaskemaskine Færdig'.", "natural_language": { "trigger": "When the Washing machine sensor [sensor.washing_machine] reports that its state has changed to 'Finished'.", "conditions": "There are no conditions for this automation.", "action": "Turn on the Washing machine finished input boolean [input_boolean.washing_machine_finished] and run the Notify everywhere script [script.notify_everywhere] to send a notification with the message 'Vaskemaskine Færdig'." }, "human_like": "Notifies you when the washing machine has finished its cycle and marks the event with a status flag.", "complexity": "low" } }, { "id": "washing_machine_finished_reset", "result": { "structured": "TRIGGER: When Washing machine door open binary sensor [binary_sensor.vaskemaskine_dor_abner] changes to open (on). CONDITIONS: Washing machine finished input boolean [input_boolean.washing_machine_finished] is on. ACTIONS: Turn off Washing machine finished input boolean [input_boolean.washing_machine_finished].", "natural_language": { "trigger": "When the washing machine door is opened, as detected by the Washing machine door open binary sensor [binary_sensor.vaskemaskine_dor_abner].", "conditions": "The automation only runs if the Washing machine finished input boolean [input_boolean.washing_machine_finished] is currently switched on.", "action": "Resets the 'finished' status by turning off the Washing machine finished input boolean [input_boolean.washing_machine_finished]." }, "human_like": "Resets the washing machine's 'finished' status when the door is opened, indicating the laundry has been unloaded.", "complexity": "low" } }, { "id": "washing_machine_finished_reminder", "result": { "structured": "TRIGGER: When Washing machine needs emptying binary sensor [binary_sensor.vaskemaskine_skal_tommes] remains on for 15 minutes OR for 30 minutes OR for 60 minutes OR for 120 minutes OR when Bathroom activity binary sensor [binary_sensor.bathroom_activity] remains on for 10 seconds. CONDITIONS: Washing machine needs emptying binary sensor [binary_sensor.vaskemaskine_skal_tommes] is on AND remains on for 10 minutes. ACTIONS: Run script Notify everywhere [script.notify_everywhere] with message 'Husk at tømme vaskemaskinen'.", "natural_language": { "trigger": "The automation triggers when the 'Washing machine needs emptying' sensor [binary_sensor.vaskemaskine_skal_tommes] has been on for 15, 30, 60, or 120 minutes. It also triggers when the Bathroom activity binary sensor [binary_sensor.bathroom_activity] detects activity (is on) for 10 seconds.", "conditions": "The automation only proceeds if the 'Washing machine needs emptying' sensor [binary_sensor.vaskemaskine_skal_tommes] is on and has been in that state for at least 10 minutes.", "action": "Sends a notification everywhere with the message 'Husk at tømme vaskemaskinen' (Remember to empty the washing machine)." }, "human_like": "Sends a reminder to empty the washing machine at specific intervals after it's finished, or if someone is in the bathroom while it's ready.", "complexity": "medium" } }, { "id": "dryer_finished", "result": { "structured": "TRIGGER: When Dryer binary sensor [binary_sensor.torretumbler] changes from on to off AND remains off for 10 minutes. CONDITIONS: None. ACTIONS: Turn on Dryer finished input boolean [input_boolean.dryer_finished] AND execute Notify everywhere script [script.notify_everywhere] with message 'Tørretumbleren er færdig.'.", "natural_language": { "trigger": "When the Dryer binary sensor [binary_sensor.torretumbler] stops being active (changes from 'on' to 'off') and stays off for a continuous period of 10 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the Dryer finished input boolean [input_boolean.dryer_finished] to 'on' and sends a notification to all configured devices with the message 'Tørretumbleren er færdig.' (The dryer is finished)." }, "human_like": "Notifies you when the dryer has been off for 10 minutes, indicating the laundry is done.", "complexity": "low" } }, { "id": "dryer_finished_reset", "result": { "structured": "TRIGGER: When Dryer door open binary sensor [binary_sensor.torretumbler_dor_abner] changes to on. CONDITIONS: Dryer finished input boolean [input_boolean.dryer_finished] is on. ACTIONS: Turn off Dryer finished input boolean [input_boolean.dryer_finished].", "natural_language": { "trigger": "When the dryer door is opened, as detected by the Dryer door open binary sensor [binary_sensor.torretumbler_dor_abner].", "conditions": "The automation only runs if the Dryer finished input boolean [input_boolean.dryer_finished] is currently set to on.", "action": "Resets the dryer finished status by turning off the Dryer finished input boolean [input_boolean.dryer_finished]." }, "human_like": "Resets the 'dryer finished' status when the dryer door is opened.", "complexity": "low" } }, { "id": "dryer_finished_reminder", "result": { "structured": "TRIGGER: When Dryer finished input boolean [input_boolean.dryer_finished] remains on for 15 minutes OR for 30 minutes OR for 60 minutes OR for 120 minutes OR when Bathroom activity binary sensor [binary_sensor.bathroom_activity] remains on for 10 seconds. CONDITIONS: Dryer finished input boolean [input_boolean.dryer_finished] is on AND remains on for 10 minutes. ACTIONS: Run Notify everywhere script [script.notify_everywhere] with message 'Husk at tømme tørretumbleren'.", "natural_language": { "trigger": "The automation triggers when the Dryer finished input boolean [input_boolean.dryer_finished] has been on for 15, 30, 60, or 120 minutes. It also triggers when the Bathroom activity binary sensor [binary_sensor.bathroom_activity] detects activity and remains on for 10 seconds.", "conditions": "The automation only proceeds if the Dryer finished input boolean [input_boolean.dryer_finished] is on and has been in that state for at least 10 minutes.", "action": "It sends a notification everywhere with the message 'Husk at tømme tørretumbleren' (Remember to empty the tumble dryer)." }, "human_like": "Sends a reminder to empty the tumble dryer after it has been finished for a while, or when someone is in the bathroom, to ensure the task is noticed.", "complexity": "medium" } }, { "id": "e87622e0-9691-421b-8691-94fdab200eef", "result": { "structured": "TRIGGER: When Home Assistant shutdown event occurs. CONDITIONS: None. ACTIONS: Send a Telegram notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Home Assistant er ved at lukke ned!'.", "natural_language": { "trigger": "When Home Assistant begins its shutdown process.", "conditions": "There are no conditions to check.", "action": "Sends a notification to the Telegram darkfox notify [notify.telegram_darkfox] service with the message 'Home Assistant er ved at lukke ned!'." }, "human_like": "Sends a Telegram notification when Home Assistant is shutting down.", "complexity": "low" } }, { "id": "9b460db9-09da-4b32-8183-7e315bd8d9d6", "result": { "structured": "TRIGGER: When System monitor memory use percent [sensor.system_monitor_memory_use_percent] remains above 90% for 30 seconds. CONDITIONS: None. ACTIONS: Update Add-ons stats sensor [sensor.add_ons_stats], wait 2 seconds, then send a notification via Telegram darkfox notify [notify.telegram_darkfox] containing the current memory usage percentage and the top 5 add-ons by memory usage, then wait 15 minutes.", "natural_language": { "trigger": "When the System monitor memory use percent [sensor.system_monitor_memory_use_percent] stays above 90% for at least 30 seconds.", "conditions": "There are no specific conditions that need to be met.", "action": "First, it updates the Add-ons stats sensor [sensor.add_ons_stats] to get the latest data. After a 2-second delay, it sends a detailed notification to Telegram darkfox notify [notify.telegram_darkfox] stating that memory usage is high, showing the current percentage, and listing the top 5 add-ons consuming the most memory. Finally, it waits for 15 minutes before the automation can run again." }, "human_like": "Sends a Telegram alert with memory usage details when the system's memory usage is high for a sustained period.", "complexity": "medium" } }, { "id": "46d3d0e5-746b-4976-a66b-da481afbe993", "result": { "structured": "TRIGGER: When Processor use sensor [sensor.processor_use] remains above 80% for 30 seconds. CONDITIONS: None. ACTIONS: Update Add-ons stats sensor [sensor.add_ons_stats], wait 2 seconds, send a notification via Telegram darkfox notify [notify.telegram_darkfox] containing the current CPU usage and the top 5 add-ons by CPU consumption, then wait 15 minutes.", "natural_language": { "trigger": "When the Processor use sensor [sensor.processor_use] reports a usage value above 80% for a continuous period of 30 seconds.", "conditions": "There are no specific conditions that must be met.", "action": "The automation first updates the Add-ons stats sensor [sensor.add_ons_stats] to get the latest data. After a short 2-second delay, it sends a detailed notification to Telegram darkfox notify [notify.telegram_darkfox]. The message states that CPU usage is high, shows the current usage percentage, and lists the top 5 add-ons by their CPU consumption. Finally, it waits for 15 minutes before the automation can potentially run again." }, "human_like": "Sends a Telegram alert with detailed CPU usage information when the system's processor load is high for 30 seconds.", "complexity": "medium" } }, { "id": "e86275ad-9c5a-4243-9428-e47f82c03586", "result": { "structured": "TRIGGER: When Gateway external IP sensor [sensor.gateway_external_ip] changes state. CONDITIONS: (Trigger has a valid from_state AND to_state) AND (Trigger from_state is NOT 'unknown') AND (Trigger to_state is NOT 'unknown'). ACTIONS: Send a Telegram notification via Telegram darkfox notify [notify.telegram_darkfox] with a message stating the external IP changed from the previous value to the new value.", "natural_language": { "trigger": "Whenever the Gateway external IP sensor [sensor.gateway_external_ip] reports a change in its state.", "conditions": "The automation only runs if the state change has both a previous state and a new state recorded, and neither the previous state nor the new state is 'unknown'.", "action": "Sends a notification via Telegram darkfox notify [notify.telegram_darkfox] with a message informing that the external IP address has changed from the old value to the new value." }, "human_like": "Sends a Telegram notification whenever the home's external IP address changes.", "complexity": "medium" } }, { "id": "bc36b25e-030a-4f15-a0e1-65cf739b7c37", "result": { "structured": "TRIGGER: When Uncommitted changes binary sensor [binary_sensor.uncommitted_changes] turns on and remains on for 2 hours OR When Sleep state input select [input_select.sleep_state] changes to 'awake' and remains 'awake' for 2 hours. CONDITIONS: Uncommitted changes binary sensor [binary_sensor.uncommitted_changes] is on and remains on for 2 hours. ACTIONS: Create a persistent notification with ID 'uncommitted_changes', title 'Uncommitted changes!', and message 'You have uncommitted changes in your configuration!'.", "natural_language": { "trigger": "The automation triggers if the Uncommitted changes binary sensor [binary_sensor.uncommitted_changes] has been on for two hours, or if the Sleep state input select [input_select.sleep_state] has been set to 'awake' for two hours.", "conditions": "The automation only proceeds if the Uncommitted changes binary sensor [binary_sensor.uncommitted_changes] has been in the 'on' state for at least two hours.", "action": "Creates a persistent notification titled 'Uncommitted changes!' with the message 'You have uncommitted changes in your configuration!'." }, "human_like": "Sends a notification if uncommitted configuration changes have been pending for two hours and the user is awake.", "complexity": "medium" } }, { "id": "ac4fb256-a4c2-4a83-ba9c-edf92df19852", "result": { "structured": "TRIGGER: At 04:45:00 daily. CONDITIONS: None. ACTIONS: Execute the Chime TTS clear cache service [chime_tts.clear_cache] with the following parameters: clear the temporary TTS cache, clear the www TTS cache, do not clear the chimes cache, and do not clear the Home Assistant TTS cache.", "natural_language": { "trigger": "Every day at 4:45 AM.", "conditions": "There are no conditions for this automation.", "action": "Clears the TTS cache by calling the Chime TTS clear cache service [chime_tts.clear_cache], specifically removing files from the temporary and www caches while leaving the chimes and Home Assistant TTS caches untouched." }, "human_like": "Clears out old TTS audio files every morning to free up storage space.", "complexity": "low" } }, { "id": "low_battery", "result": { "structured": "TRIGGER: When Low battery sensor [sensor.low_battery] attribute 'entities' remains in any state for 15 minutes OR when Sleep state input select [input_select.sleep_state] remains in state 'awake' for 15 minutes. CONDITIONS: The template condition evaluates to true (the 'entities' attribute of Low battery sensor [sensor.low_battery] is not empty) AND Sleep state input select [input_select.sleep_state] is in state 'awake'. ACTIONS: Create a persistent notification with ID 'low_battery' containing a title and message listing the friendly names of the entities with low battery.", "natural_language": { "trigger": "The automation triggers when the list of entities with low battery reported by the Low battery sensor [sensor.low_battery] remains unchanged for 15 minutes, or when the Sleep state input select [input_select.sleep_state] has been set to 'awake' for 15 minutes.", "conditions": "For the automation to run, the Low battery sensor [sensor.low_battery] must actually report at least one entity with a low battery, and the Sleep state input select [input_select.sleep_state] must currently be set to 'awake'.", "action": "A persistent notification is created, showing a count and a list of the friendly names of all devices with low battery." }, "human_like": "Sends a notification listing devices with low battery when the system is awake and the low battery list has been stable for a while.", "complexity": "medium" } }, { "id": "f9814b8f-6cd7-42bc-9cf2-138832c4b484", "result": { "structured": "TRIGGER: When the time matches a pattern of every 5 minutes (minutes: /5, seconds: 0). CONDITIONS: None. ACTIONS: Run the script Run pyscript script [script.run_pyscript] with the action parameter set to pyscript.find_duplicate_package_names.", "natural_language": { "trigger": "Every 5 minutes, on the minute (e.g., 0:00, 0:05, 0:10, etc.).", "conditions": "There are no conditions for this automation.", "action": "Executes the pyscript script named 'Find duplicate package names pyscript' [pyscript.find_duplicate_package_names] by calling the 'Run pyscript script' [script.run_pyscript] service." }, "human_like": "Checks for duplicate package names in the system every five minutes.", "complexity": "low" } }, { "id": "b606263a-6423-4b66-b0b4-dfbbd0358ff9", "result": { "structured": "TRIGGER: When a duplicate_package_names event occurs. CONDITIONS: The event data contains a 'duplicates' dictionary with at least one entry (length > 0). ACTIONS: Create a persistent notification with ID 'duplicate_package_names', title 'Duplicate Package Names', and a message listing all duplicate package names and their associated entities from the event data.", "natural_language": { "trigger": "When the system generates a 'duplicate_package_names' event.", "conditions": "If the event data includes a list of duplicates and that list is not empty.", "action": "Creates a persistent notification titled 'Duplicate Package Names' that displays a list of all duplicate package names found, along with the entities associated with each duplicate name." }, "human_like": "Sends a notification when duplicate package names are detected, listing the duplicates for review.", "complexity": "low" } }, { "id": "9c31a41b-1c54-469b-8cec-77d4f46fde2a", "result": { "structured": "TRIGGER: When Living room video out binary sensor [binary_sensor.living_room_video_out] changes to on. CONDITIONS: Sync box HDMI input select [select.sync_box_hdmi_input] is set to 'Nvidia Shield'. ACTIONS: Turn on Living room TV active switch [switch.stue_tv_active] AND Turn on Living room shield remote [remote.stue_shield].", "natural_language": { "trigger": "When the Living room video out binary sensor [binary_sensor.living_room_video_out] detects that a video output has turned on.", "conditions": "The automation only proceeds if the Sync box HDMI input select [select.sync_box_hdmi_input] is currently set to 'Nvidia Shield'.", "action": "It turns on the Living room TV active switch [switch.stue_tv_active] and also sends a turn on command to the Living room shield remote [remote.stue_shield]." }, "human_like": "Turns on the TV and the Shield remote when the video output activates, but only if the HDMI input is set to the Shield.", "complexity": "medium" } }, { "id": "53c454fa-09d9-4b69-9862-a5de30a24ec1", "result": { "structured": "TRIGGER: When Living room video out binary sensor [binary_sensor.living_room_video_out] turns off AND remains off for 10 seconds. CONDITIONS: None. ACTIONS: Turn off Living room TV active switch [switch.stue_tv_active].", "natural_language": { "trigger": "When the Living room video out binary sensor [binary_sensor.living_room_video_out] changes to an 'off' state and stays off for 10 seconds.", "conditions": "There are no additional conditions.", "action": "Turns off the Living room TV active switch [switch.stue_tv_active]." }, "human_like": "Turns off the TV activity switch when the living room video output has been off for 10 seconds.", "complexity": "low" } }, { "id": "d603bbac-037c-48a2-97d3-89a594565dbd", "result": { "structured": "TRIGGER: When Living room media player [media_player.stue] turns on OR when the time is 23:00:00. CONDITIONS: (Living room media player [media_player.stue] is on) AND (time is after 22:59:59 AND before 08:59:58 AND weekday is Sunday OR Monday OR Tuesday OR Wednesday OR Thursday). ACTIONS: Turn on Living room night sound switch [switch.stue_night_sound] AND if the volume level of Living room media player [media_player.stue] is greater than 0.40, then set the volume of Living room media player [media_player.stue] to 0.4.", "natural_language": { "trigger": "When the Living room media player [media_player.stue] is turned on, or when the clock reaches 11:00 PM (23:00:00).", "conditions": "The Living room media player [media_player.stue] must be on, and the current time must be between 10:59:59 PM and 8:59:58 AM on a Sunday, Monday, Tuesday, Wednesday, or Thursday.", "action": "Turn on the Living room night sound switch [switch.stue_night_sound]. Then, if the volume level of the Living room media player [media_player.stue] is currently above 40%, set its volume to 40%." }, "human_like": "Activates night mode for the living room soundbar by turning on a night sound switch and lowering the volume if it's too high, during late evening and early morning hours on weekdays.", "complexity": "medium" } }, { "id": "13f5dd4a-ee3f-4839-bbe7-90350f00cf89", "result": { "structured": "TRIGGER: When Living room media player [media_player.stue] turns on OR at 09:00:00. CONDITIONS: (Living room media player [media_player.stue] is on) AND (time is after 08:59:59 AND before 22:59:58). ACTIONS: Turn off Living room night sound switch [switch.stue_night_sound].", "natural_language": { "trigger": "When the Living room media player [media_player.stue] is turned on, or at 9:00 AM.", "conditions": "If the Living room media player [media_player.stue] is currently on, and the current time is between 8:59:59 AM and 10:59:58 PM.", "action": "Turns off the Living room night sound switch [switch.stue_night_sound]." }, "human_like": "Ensures the night sound is turned off when the living room media player is active during daytime hours.", "complexity": "medium" } }, { "id": "30e2883f-068f-47a3-a8ff-efd4a6265a8c", "result": { "structured": "TRIGGER: When Living room night sound switch [switch.stue_night_sound] changes state. CONDITIONS: None. ACTIONS: Send a notification to Living room TV notify [notify.stue_tv] with the message 'Natlyd slået til' if Living room night sound switch [switch.stue_night_sound] is on, otherwise 'Natlyd slået fra'.", "natural_language": { "trigger": "Whenever the state of the Living room night sound switch [switch.stue_night_sound] changes.", "conditions": "There are no conditions that must be met.", "action": "Sends a notification to the Living room TV notify [notify.stue_tv] stating 'Natlyd slået til' if the night sound switch is turned on, or 'Natlyd slået fra' if it is turned off." }, "human_like": "Sends a notification to the living room TV whenever the night sound switch is toggled on or off.", "complexity": "low" } }, { "id": "5812551d-5044-4e94-a6e9-b141b1773316", "result": { "structured": "TRIGGER: When Living room room state sensor [sensor.living_room_room_state] changes to active OR when Living room media player [media_player.stue] changes to on. CONDITIONS: Living room room state sensor [sensor.living_room_room_state] is active AND Living room media player [media_player.stue] is on. ACTIONS: Unmute Living room media player [media_player.stue].", "natural_language": { "trigger": "When the Living room room state sensor [sensor.living_room_room_state] changes to 'active', or when the Living room media player [media_player.stue] turns on.", "conditions": "The Living room room state sensor [sensor.living_room_room_state] must be in the 'active' state, and the Living room media player [media_player.stue] must be on.", "action": "Unmutes the Living room media player [media_player.stue]." }, "human_like": "Automatically unmutes the living room media player when the room is active and the player is on.", "complexity": "low" } }, { "id": "053305bf-7d7f-4500-9d2d-d4ca67e738c9", "result": { "structured": "TRIGGER: When Living room room state sensor [sensor.living_room_room_state] changes to 'off' OR when Living room media player [media_player.stue] changes to 'on'. CONDITIONS: Living room room state sensor [sensor.living_room_room_state] is 'off' AND Living room media player [media_player.stue] is 'on'. ACTIONS: Mute the volume of Living room media player [media_player.stue].", "natural_language": { "trigger": "The automation triggers when the Living room room state sensor [sensor.living_room_room_state] changes to 'off', or when the Living room media player [media_player.stue] changes to 'on'.", "conditions": "Both the Living room room state sensor [sensor.living_room_room_state] must be in the 'off' state and the Living room media player [media_player.stue] must be in the 'on' state.", "action": "It mutes the volume of the Living room media player [media_player.stue]." }, "human_like": "Automatically mutes the living room media player when the room is reported as 'off' and the player is on.", "complexity": "low" } }, { "id": "room_activity_override_on", "result": { "structured": "TRIGGER: When any of the following input booleans changes to 'on': Bathroom activity override input boolean [input_boolean.bathroom_activity_override] OR Bathroom activity override input boolean [input_boolean.bathroom_activity_override] OR Hallway activity override input boolean [input_boolean.hallway_activity_override] OR Kitchen activity override input boolean [input_boolean.kitchen_activity_override] OR Living room activity override input boolean [input_boolean.living_room_activity_override] OR Office activity override input boolean [input_boolean.office_activity_override] OR Workshop activity override input boolean [input_boolean.workshop_activity_override] OR Balcony activity override input boolean [input_boolean.balcony_activity_override] OR Bedroom Activity Override [input_boolean.bedroom_activity_override]. CONDITIONS: None. ACTIONS: Set the corresponding room state input select to 'active'. The specific select entity is derived from the triggering boolean's entity_id by removing the 'input_boolean.' prefix and the '_activity_override' suffix, then appending '_room_state' (e.g., for 'input_boolean.bathroom_activity_override', set input_select.bathroom_room_state to 'active').", "natural_language": { "trigger": "When any of the room-specific activity override switches, such as Bathroom activity override input boolean [input_boolean.bathroom_activity_override], Hallway activity override input boolean [input_boolean.hallway_activity_override], Kitchen activity override input boolean [input_boolean.kitchen_activity_override], Living room activity override input boolean [input_boolean.living_room_activity_override], Office activity override input boolean [input_boolean.office_activity_override], Workshop activity override input boolean [input_boolean.workshop_activity_override], Balcony activity override input boolean [input_boolean.balcony_activity_override], or Bedroom Activity Override [input_boolean.bedroom_activity_override], is turned on.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the corresponding room's state selector to 'active'. For example, if the bathroom override is turned on, it will set the Bathroom room state selector [input_select.bathroom_room_state] to the 'active' option. The automation dynamically determines which selector to update based on which override switch triggered it." }, "human_like": "When a room's activity override is turned on, it automatically sets that room's state to 'active' to indicate ongoing manual activity.", "complexity": "medium" } }, { "id": "sleep_state_bedtime", "result": { "structured": "TRIGGER: When Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] turns on OR When Bedtime binary sensor [binary_sensor.bedtime] turns on. CONDITIONS: (Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on) AND (Bedtime binary sensor [binary_sensor.bedtime] is on) AND (Sleep state input select [input_select.sleep_state] is awake). ACTIONS: Set Sleep state input select [input_select.sleep_state] to bedtime.", "natural_language": { "trigger": "When the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] becomes active (on), or when the Bedtime binary sensor [binary_sensor.bedtime] becomes active (on).", "conditions": "The Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] must be on, the Bedtime binary sensor [binary_sensor.bedtime] must be on, and the Sleep state input select [input_select.sleep_state] must currently be set to 'awake'.", "action": "Changes the Sleep state input select [input_select.sleep_state] to the 'bedtime' option." }, "human_like": "Sets the sleep state to 'bedtime' when both presence is detected and bedtime is indicated, but only if the current state is 'awake'.", "complexity": "medium" } }, { "id": "sleep_state_in_bed", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to bedtime OR When Bedroom floor movement [binary_sensor.sovevarelse_gulv] changes to off. CONDITIONS: (Sleep state input select [input_select.sleep_state] is bedtime) AND (Bedroom floor movement [binary_sensor.sovevarelse_gulv] is off) AND (Bedroom motion [binary_sensor.sovevaerelse_motion] is on) AND (Bedroom door [binary_sensor.sovevarelse_dor] is off) AND (Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on). ACTIONS: Set Sleep state input select [input_select.sleep_state] to in bed.", "natural_language": { "trigger": "The automation triggers when the sleep state is changed to 'bedtime' or when the bedroom floor movement sensor stops detecting movement.", "conditions": "All of the following must be true: the sleep state is set to 'bedtime', the bedroom floor movement sensor is not detecting movement, the bedroom motion sensor is detecting motion, the bedroom door is closed, and the delayed presence sensor for Rook indicates presence.", "action": "Changes the sleep state to 'in bed'." }, "human_like": "Updates the sleep state to 'in bed' when bedtime conditions are met, including motion, a closed door, and confirmed presence.", "complexity": "medium" } }, { "id": "sleep_state_sleeping", "result": { "structured": "TRIGGER: When Sleep as Android event [sleep_as_android] reports sleep_tracking_started OR when Sleep as Android event [sleep_as_android] reports sleep_tracking_resumed. CONDITIONS: (Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on) AND ((Sleep state input select [input_select.sleep_state] is in bed) OR (Sleep state input select [input_select.sleep_state] is paused) OR ((Sleep state input select [input_select.sleep_state] is bedtime) AND (Bedroom motion [binary_sensor.sovevaerelse_motion] is on))). ACTIONS: Set Sleep state input select [input_select.sleep_state] to sleeping.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has started or has been resumed.", "conditions": "If the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] indicates presence is detected, and the current sleep state is either 'in bed', 'paused', or 'bedtime' with motion currently detected in the bedroom.", "action": "Changes the sleep state to 'sleeping' by updating the Sleep state input select [input_select.sleep_state]." }, "human_like": "Updates the sleep state to 'sleeping' when sleep tracking begins or resumes, provided someone is home and the current state indicates readiness for sleep.", "complexity": "medium" } }, { "id": "sleep_state_sleeping_cancelled", "result": { "structured": "TRIGGER: When a sleep_as_android event of type sleep_tracking_stopped occurs. CONDITIONS: (Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on) AND (The current time is between 20:00:00 and 04:00:00) AND (Sleep state input select [input_select.sleep_state] is sleeping OR Sleep state input select [input_select.sleep_state] is paused). ACTIONS: Set Sleep state input select [input_select.sleep_state] to 'in bed'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has stopped.", "conditions": "If the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] reports presence, the current time is between 8:00 PM and 4:00 AM, and the current sleep state [input_select.sleep_state] is either 'sleeping' or 'paused'.", "action": "Change the sleep state to 'in bed' by updating the Sleep state input select [input_select.sleep_state]." }, "human_like": "If sleep tracking is cancelled at night while someone is home and the sleep state is active, it resets the state to 'in bed'.", "complexity": "medium" } }, { "id": "sleep_state_paused_event", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] of type 'sleep_tracking_paused' occurs. CONDITIONS: Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on AND Sleep state input select [input_select.sleep_state] is set to 'sleeping'. ACTIONS: Set Sleep state input select [input_select.sleep_state] to 'paused'.", "natural_language": { "trigger": "When the Sleep as Android app sends a 'sleep_tracking_paused' event.", "conditions": "If the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] indicates presence (is on) and the current sleep state [input_select.sleep_state] is set to 'sleeping'.", "action": "Change the sleep state [input_select.sleep_state] to 'paused'." }, "human_like": "Pauses the sleep tracking state when a pause event is received from the Sleep as Android app, but only if someone is present and the system is currently in a sleeping state.", "complexity": "low" } }, { "id": "sleep_state_paused", "result": { "structured": "TRIGGER: When Bedroom floor movement [binary_sensor.sovevarelse_gulv] changes to on. CONDITIONS: Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on AND Sleep state input select [input_select.sleep_state] is sleeping. ACTIONS: Set Sleep state input select [input_select.sleep_state] to paused.", "natural_language": { "trigger": "When movement is detected on the bedroom floor, indicated by Bedroom floor movement [binary_sensor.sovevarelse_gulv] turning on.", "conditions": "If the delayed presence sensor, Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed], is active (on), and the current sleep state, Sleep state input select [input_select.sleep_state], is set to 'sleeping'.", "action": "Change the sleep state to 'paused' by updating Sleep state input select [input_select.sleep_state]." }, "human_like": "Pauses the sleep state when movement is detected in the bedroom, but only if someone is still present and the system is currently in sleeping mode.", "complexity": "low" } }, { "id": "sleep_state_unpause", "result": { "structured": "TRIGGER: When Bedroom floor movement [binary_sensor.sovevarelse_gulv] changes to off. CONDITIONS: Sleep state input select [input_select.sleep_state] is paused AND Bedroom motion [binary_sensor.sovevaerelse_motion] is on AND Bedroom door [binary_sensor.sovevarelse_dor] is off. ACTIONS: Set Sleep state input select [input_select.sleep_state] to sleeping.", "natural_language": { "trigger": "When the Bedroom floor movement [binary_sensor.sovevarelse_gulv] sensor indicates movement has stopped (changes to 'off').", "conditions": "The Sleep state input select [input_select.sleep_state] must be set to 'paused'. Additionally, the Bedroom motion [binary_sensor.sovevaerelse_motion] sensor must detect motion (be 'on'), and the Bedroom door [binary_sensor.sovevarelse_dor] must be closed (be 'off').", "action": "Changes the sleep state from 'paused' to 'sleeping' by updating the Sleep state input select [input_select.sleep_state]." }, "human_like": "Resumes the sleep state to 'sleeping' when floor movement stops, provided motion is detected, the door is closed, and the state was previously paused.", "complexity": "low" } }, { "id": "sleep_state_smart_wake", "result": { "structured": "TRIGGER: When a sleep_as_android event with event_data.event equal to 'smart_period' occurs. CONDITIONS: Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on AND (Sleep state input select [input_select.sleep_state] is 'in bed' OR 'sleeping' OR 'paused'). ACTIONS: Set Sleep state input select [input_select.sleep_state] to 'smart wake'.", "natural_language": { "trigger": "When the Sleep as Android app sends a 'smart_period' event.", "conditions": "The Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] must be on, indicating presence is detected. Also, the current sleep state, tracked by Sleep state input select [input_select.sleep_state], must be either 'in bed', 'sleeping', or 'paused'.", "action": "Changes the sleep state to 'smart wake' by updating the Sleep state input select [input_select.sleep_state]." }, "human_like": "Updates the sleep state to 'smart wake' when a smart alarm period begins from the Sleep as Android app, but only if someone is present and the current sleep state is appropriate.", "complexity": "medium" } }, { "id": "sleep_state_alarm", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] of type 'alarm_alert_start' occurs. CONDITIONS: (Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on) AND (Sleep state input select [input_select.sleep_state] is 'in bed' OR 'sleeping' OR 'paused' OR 'smart wake'). ACTIONS: Set Sleep state input select [input_select.sleep_state] to 'alarm'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating an alarm has started.", "conditions": "If the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on, and the current sleep state is one of the following: 'in bed', 'sleeping', 'paused', or 'smart wake'.", "action": "Changes the sleep state to 'alarm'." }, "human_like": "Changes the sleep state to 'alarm' when an alarm starts on the Sleep as Android app, but only if someone is home and the current sleep state is appropriate.", "complexity": "medium" } }, { "id": "sleep_state_snoozing", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] of type alarm_snooze_clicked occurs. CONDITIONS: Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is on AND Sleep state input select [input_select.sleep_state] is alarm. ACTIONS: Set Sleep state input select [input_select.sleep_state] to snoozing.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating the alarm snooze button was clicked.", "conditions": "If the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] reports presence (is on) and the current sleep state [input_select.sleep_state] is set to 'alarm'.", "action": "Changes the sleep state to 'snoozing' by updating the Sleep state input select [input_select.sleep_state]." }, "human_like": "Changes the sleep state to 'snoozing' when the alarm is snoozed via the Sleep as Android app, provided someone is present.", "complexity": "low" } }, { "id": "sleep_state_waking", "result": { "structured": "TRIGGER: When Sleep as Android event [sleep_as_android] fires with event data 'alarm_alert_dismiss' OR when Sleep as Android event [sleep_as_android] fires with event data 'alarm_snooze_cancelled' OR when Sleep as Android event [sleep_as_android] fires with event data 'sleep_tracking_stopped'. CONDITIONS: (Sleep state input select [input_select.sleep_state] is alarm) OR (Sleep state input select [input_select.sleep_state] is snoozing). ACTIONS: Set Sleep state input select [input_select.sleep_state] to waking.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating an alarm alert was dismissed, an alarm snooze was cancelled, or sleep tracking has stopped.", "conditions": "If the current sleep state, as indicated by Sleep state input select [input_select.sleep_state], is either 'alarm' or 'snoozing'.", "action": "Changes the sleep state to 'waking' by updating Sleep state input select [input_select.sleep_state]." }, "human_like": "Updates the sleep state to 'waking' when you dismiss an alarm, cancel a snooze, or stop sleep tracking in the Sleep as Android app.", "complexity": "medium" } }, { "id": "sleep_state_awake", "result": { "structured": "TRIGGER: When Entrance movement binary sensor [binary_sensor.gang_entre_bevaegelse] changes to on OR When Hallway bathroom movement binary sensor [binary_sensor.gang_badevaerelse_bevaegelse] changes to on OR When Bedroom door [binary_sensor.sovevarelse_dor] changes to on. CONDITIONS: (Bedroom door [binary_sensor.sovevarelse_dor] is on) AND (Entrance movement binary sensor [binary_sensor.gang_entre_bevaegelse] is on OR Hallway bathroom movement binary sensor [binary_sensor.gang_badevaerelse_bevaegelse] is on) AND (Sleep state input select [input_select.sleep_state] is alarm OR snoozing OR waking). ACTIONS: Set Sleep state input select [input_select.sleep_state] to awake.", "natural_language": { "trigger": "When motion is detected by the Entrance movement binary sensor [binary_sensor.gang_entre_bevaegelse] or the Hallway bathroom movement binary sensor [binary_sensor.gang_badevaerelse_bevaegelse], or when the Bedroom door [binary_sensor.sovevarelse_dor] opens.", "conditions": "The Bedroom door [binary_sensor.sovevarelse_dor] must be open, and at least one of the motion sensors in the hallway must be active. Additionally, the current sleep state, as indicated by Sleep state input select [input_select.sleep_state], must be set to either 'alarm', 'snoozing', or 'waking'.", "action": "Changes the sleep state to 'awake' by updating Sleep state input select [input_select.sleep_state]." }, "human_like": "Changes the sleep state to 'awake' when the bedroom door opens or motion is detected in the hallway, but only if the current state is already indicating an active or waking period.", "complexity": "medium" } }, { "id": "32b08820-d50d-4a06-a0a6-7678e16a0112", "result": { "structured": "TRIGGER: When Minutes to bedtime sensor [sensor.minutes_to_bedtime] is below 31. CONDITIONS: Sleep state input select [input_select.sleep_state] is awake. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with a message stating the remaining minutes to bedtime and the scheduled wake-up time.", "natural_language": { "trigger": "When the Minutes to bedtime sensor [sensor.minutes_to_bedtime] indicates there are less than 31 minutes remaining until bedtime.", "conditions": "The Sleep state input select [input_select.sleep_state] must be set to 'awake'.", "action": "Sends a Telegram notification to the user via Telegram darkfox notify [notify.telegram_darkfox], informing them that bedtime is approaching, stating the exact minutes left and the time the alarm is set to ring." }, "human_like": "Sends a bedtime reminder via Telegram when there are less than 31 minutes left and the sleep state is set to awake.", "complexity": "low" } }, { "id": "27d962dd-56b7-4bc6-a857-c562a6eaca63", "result": { "structured": "TRIGGER: When Minutes to bedtime sensor [sensor.minutes_to_bedtime] is below 16. CONDITIONS: Sleep state input select [input_select.sleep_state] is awake. ACTIONS: Run script Notify text script [script.notify_text] with data: message_title 'Det er snart sengetid!', message 'Du har kun {{ states('sensor.minutes_to_bedtime') }} minutter til at afslutte hvad du laver. Alarmen ringer kl. {{ states('sensor.wake_up_time_clock') }}.' AND Fire event Set light profile event [set_light_profile] with data: room 'bedroom', profile 'Ambient', transition_time 900.", "natural_language": { "trigger": "When the Minutes to bedtime sensor [sensor.minutes_to_bedtime] indicates there are less than 16 minutes until bedtime.", "conditions": "The Sleep state input select [input_select.sleep_state] must be set to 'awake'.", "action": "Sends a notification via the Notify text script [script.notify_text] with a reminder that bedtime is approaching, including the exact minutes left and the wake-up alarm time. Simultaneously, it changes the bedroom lighting to an 'Ambient' profile with a 900-second transition." }, "human_like": "Sends a bedtime reminder and adjusts the bedroom lights to a calming setting when there are less than 16 minutes until bedtime and the sleep state is set to awake.", "complexity": "low" } }, { "id": "bedtime_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to 'bedtime'. CONDITIONS: None. ACTIONS: Execute script Notify text script [script.notify_text] with data: message_title 'Sengetid!' and message 'Tid til at gå i gang med sengetidsrutinen! Alarm kl. {{ states('sensor.wake_up_time_clock') }}' AND fire event set_light_profile [set_light_profile] with data: room 'bedroom', profile 'Ambient', transition_time 300.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is changed to the 'bedtime' state.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Sends a notification with the title 'Sengetid!' and a message stating it's time to start the bedtime routine, including the current wake-up time from the Wake up time clock sensor [sensor.wake_up_time_clock]. It also triggers a light profile change event to set the bedroom lights to the 'Ambient' profile with a 300-second transition." }, "human_like": "Starts the bedtime routine by sending a notification and setting the bedroom lights to a relaxing ambient profile.", "complexity": "low" } }, { "id": "4c56b511-63c9-4ee3-b1e9-3ceddebd6995", "result": { "structured": "TRIGGER: When Minutes to bedtime sensor [sensor.minutes_to_bedtime] is below -15. CONDITIONS: Sleep state input select [input_select.sleep_state] is bedtime AND Kitchen active binary sensor [binary_sensor.kitchen_active] is off AND Bathroom active binary sensor [binary_sensor.bathroom_active] is off AND Bedroom active binary sensor [binary_sensor.sovevarelse_active] is off. ACTIONS: Execute Notify text script [script.notify_text] with a custom message, fire the set_light_profile event for the bedroom with the Night profile and a 120-second transition, execute Pause all media script [script.pause_all_media], and if Strict bedtime input boolean [input_boolean.strict_bedtime] is on, then execute Notify text script [script.notify_text] with a second custom message.", "natural_language": { "trigger": "When the Minutes to bedtime sensor [sensor.minutes_to_bedtime] indicates that it is more than 15 minutes past the scheduled bedtime.", "conditions": "The Sleep state input select [input_select.sleep_state] must be set to 'bedtime', and the Kitchen active binary sensor [binary_sensor.kitchen_active], Bathroom active binary sensor [binary_sensor.bathroom_active], and Bedroom active binary sensor [binary_sensor.sovevarelse_active] must all be off, indicating no activity in those areas.", "action": "Sends a notification stating the user is late for bed, sets the bedroom lights to a night profile, pauses all media playback, and if strict bedtime mode is enabled, sends a second notification warning that devices will be turned off soon." }, "human_like": "This automation reminds you that you're past your bedtime and prepares the bedroom for sleep by adjusting lights and pausing media, with an extra warning if strict bedtime mode is active.", "complexity": "medium" } }, { "id": "63924853-ef16-4329-9706-da461362527d", "result": { "structured": "TRIGGER: When Minutes to bedtime sensor [sensor.minutes_to_bedtime] is below -30. CONDITIONS: Sleep state input select [input_select.sleep_state] is 'bedtime' AND Kitchen active binary sensor [binary_sensor.kitchen_active] is off AND Bathroom active binary sensor [binary_sensor.bathroom_active] is off AND Bedroom active binary sensor [binary_sensor.sovevarelse_active] is off. ACTIONS: Execute the following actions in parallel: 1. Run Notify text script [script.notify_text] with a message stating the user is very late to bed and the alarm time. 2. Fire the set_light_profile event for the bedroom with the 'Night' profile and a 120-second transition. 3. Run Pause all media script [script.pause_all_media]. 4. If Strict bedtime input boolean [input_boolean.strict_bedtime] is on, then: a. Run Notify text script [script.notify_text] with a message about strict bedtime. b. Turn off Living room TV switch [switch.stue_tv] and Rook PC switch [switch.rook_pc].", "natural_language": { "trigger": "The automation triggers when the Minutes to bedtime sensor [sensor.minutes_to_bedtime] indicates it is more than 30 minutes past the scheduled bedtime.", "conditions": "All of the following must be true: the Sleep state input select [input_select.sleep_state] is set to 'bedtime', and the Kitchen active binary sensor [binary_sensor.kitchen_active], Bathroom active binary sensor [binary_sensor.bathroom_active], and Bedroom active binary sensor [binary_sensor.sovevarelse_active] all report as inactive (off).", "action": "Several actions are performed simultaneously: a notification is sent stating the user is very late to bed, the bedroom lights are set to a 'Night' profile, and all media playback is paused. Additionally, if the Strict bedtime input boolean [input_boolean.strict_bedtime] is enabled, a second notification is sent and the living room TV and office PC are turned off." }, "human_like": "Enforces a strict bedtime routine by sending notifications, pausing media, and adjusting lights when the user is significantly late for bed, with an option to turn off entertainment devices.", "complexity": "medium" } }, { "id": "in_bed_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to state 'in bed'. CONDITIONS: None. ACTIONS: In parallel: 1. Run script Sleep as Android set alarm script [script.sleep_as_android_set_alarm] with variables 'message' set to 'HA' and 'timehour' and 'timemin' extracted from the current value of Wake up time clock [sensor.wake_up_time_clock]. 2. Run script Voice broadcast script [script.voice_broadcast] on Bedroom media player [media_player.sovevaerelse] at volume 0.08, announcing the alarm time and a summary of tomorrow's calendar events (or a message if none exist). 3. Fire the set_light_profile event with data: room 'bedroom', profile 'Ambient', transition_time 120.0 seconds.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is set to 'in bed'.", "conditions": "There are no conditions for this automation.", "action": "Three actions are performed simultaneously: First, it sets an alarm using the Sleep as Android set alarm script [script.sleep_as_android_set_alarm], using the time from the Wake up time clock [sensor.wake_up_time_clock]. Second, it uses the Voice broadcast script [script.voice_broadcast] to announce the set alarm time and read out tomorrow's calendar events (or state there are none) on the Bedroom media player [media_player.sovevaerelse] at a low volume. Third, it triggers a lighting change event to set the bedroom lights to an 'Ambient' profile with a 2-minute transition." }, "human_like": "Sets up the bedroom for sleep by setting an alarm, announcing the next day's schedule, and adjusting the lights when you indicate you're going to bed.", "complexity": "medium" } }, { "id": "sleeping_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes from 'in bed' to 'sleeping'. CONDITIONS: None. ACTIONS: Turn on Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke]. THEN, IF Sleep As Android State [input_select.sleep_as_android_state] is 'awake', run script Sleep As Android Start Tracking [script.sleep_as_android_start_tracking]. THEN, fire event set_light_profile [set_light_profile] with data: room='bedroom', profile='Off', transition_time=10.0.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes from 'in bed' to 'sleeping'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it turns on the switch Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke]. Then, it checks if the Sleep As Android State [input_select.sleep_as_android_state] is set to 'awake'. If it is, it starts the sleep tracking by running the script Sleep As Android Start Tracking [script.sleep_as_android_start_tracking]. Finally, it sends an event to set the light profile for the bedroom to 'Off' with a 10-second transition." }, "human_like": "Activates a 'do not disturb' mode, optionally starts sleep tracking, and turns off the bedroom lights when the user's sleep state changes to 'sleeping'.", "complexity": "medium" } }, { "id": "sleep_paused_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to paused. CONDITIONS: None. ACTIONS: Start script Sleep As Android Pause Tracking [script.sleep_as_android_pause_tracking] AND fire event set_light_profile with data {room: bedroom, profile: Night}.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes its state to 'paused'.", "conditions": "There are no conditions that must be met for the automation to run.", "action": "It runs the script called Sleep As Android Pause Tracking [script.sleep_as_android_pause_tracking] and sends a custom event named 'set_light_profile' with instructions to set the light profile for the bedroom to 'Night'." }, "human_like": "Pauses sleep tracking and sets the bedroom lights to a night-time profile when the sleep state is set to 'paused'.", "complexity": "low" } }, { "id": "resume_sleep_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes from paused to sleeping. CONDITIONS: None. ACTIONS: Start script Sleep As Android Start Tracking [script.sleep_as_android_start_tracking] AND fire event set_light_profile [set_light_profile] with data: room=bedroom, profile=Off.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes its value from 'paused' to 'sleeping'.", "conditions": "There are no conditions that must be met.", "action": "It starts the Sleep As Android Start Tracking [script.sleep_as_android_start_tracking] script and sends a 'set_light_profile' event to turn the lights off in the bedroom." }, "human_like": "Resumes sleep tracking and turns off the bedroom lights when the sleep state is set from 'paused' back to 'sleeping'.", "complexity": "low" } }, { "id": "smart_wake_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to state 'smart wake'. CONDITIONS: None. ACTIONS: Fire event set_light_profile [set_light_profile] with data: room=bedroom, profile=Night, transition_time=300 AND Turn off Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke].", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is changed to the 'smart wake' setting.", "conditions": "There are no conditions that must be met.", "action": "It triggers a 'set_light_profile' event for the bedroom to change the lighting to the 'Night' profile over a 5-minute transition, and it turns off the switch named Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke]." }, "human_like": "Activates a gentle 'Night' lighting profile and silences a notification switch when the smart wake sleep state is selected.", "complexity": "low" } }, { "id": "6fabaa3a-aac3-4b0d-b4aa-76890922f4f0", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to 'smart wake'. CONDITIONS: None. ACTIONS: Unjoin media players: Bedroom media player [media_player.sovevaerelse], Badevaerelse [media_player.badevaerelse], Kitchen media player [media_player.kokken], Kontor [media_player.kontor], Living room media player [media_player.stue], Roam [media_player.roam]. Set volume of Bedroom media player [media_player.sovevaerelse] to 0.01. Wait 1 second. Execute script.mass_playlist on Sovevaerelse Mass [media_player.sovevaerelse_mass] with repeat mode 'all' and playlist containing 'I Love Chillhop'.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is set to 'smart wake'.", "conditions": "There are no conditions for this automation.", "action": "The automation first unjoins a group of media players: Bedroom media player [media_player.sovevaerelse], Badevaerelse [media_player.badevaerelse], Kitchen media player [media_player.kokken], Kontor [media_player.kontor], Living room media player [media_player.stue], and Roam [media_player.roam]. It then sets the volume of the Bedroom media player [media_player.sovevaerelse] to a very low level (0.01). After a one-second delay, it starts playing the 'I Love Chillhop' playlist on the Sovevaerelse Mass [media_player.sovevaerelse_mass] media player, set to repeat all tracks." }, "human_like": "Starts a gentle wake-up routine by playing a chillhop playlist in the bedroom at low volume when the smart wake sleep state is activated.", "complexity": "low" } }, { "id": "84d6b64e-0e23-4a77-baf9-dfc7cfe9d100", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to 'smart wake' AND remains in that state for 30 minutes. CONDITIONS: None. ACTIONS: Fire the 'set_light_profile' event with data: room='bedroom', profile='Ambient', transition_time=300 AND set the volume of Bedroom media player [media_player.sovevaerelse] to 0.02.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is set to 'smart wake' and stays in that state for 30 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "It triggers a custom event to set the bedroom lights to an 'Ambient' profile with a 300-second transition, and sets the volume of the Bedroom media player [media_player.sovevaerelse] to a low level (2%)." }, "human_like": "Gradually adjusts the bedroom lights and sets a low media volume 30 minutes after entering a 'smart wake' sleep state.", "complexity": "low" } }, { "id": "alarm_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to alarm. ACTIONS: Turn off Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke]. Fire event set_light_profile [set_light_profile] with data: room=bedroom, profile=Ambient, transition_time=300. Wait for 5 minutes. Check condition: Sleep state input select [input_select.sleep_state] is alarm OR snoozing OR waking. Fire event set_light_profile [set_light_profile] with data: room=bedroom, profile=Dimmed, transition_time=300. Check condition: Sun [sun.sun] is above_horizon.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes to the 'alarm' state.", "conditions": "The automation includes two conditional checks during its action sequence. After a 5-minute delay, it checks if the Sleep state input select [input_select.sleep_state] is still in 'alarm', 'snoozing', or 'waking'. Later, it checks if the Sun [sun.sun] is above the horizon.", "action": "First, it turns off the switch Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke]. Then, it triggers a 'set_light_profile' event to set the bedroom lights to 'Ambient' profile with a 300-second transition. After waiting for 5 minutes, if the sleep state is still 'alarm', 'snoozing', or 'waking', it triggers another 'set_light_profile' event to set the bedroom lights to 'Dimmed' profile with a 300-second transition, but only if the sun is above the horizon." }, "human_like": "When the alarm goes off, it turns off a 'do not disturb' switch, gradually brightens the bedroom lights, and after a delay, dims them if it's daytime and the alarm state is still active.", "complexity": "medium" } }, { "id": "f025618f-e3ae-428e-b22a-7df121b56a44", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to 'snooze'. ACTIONS: 1. Unjoin the following media players from any group: Bedroom media player [media_player.sovevaerelse], Badevaerelse [media_player.badevaerelse], Kitchen media player [media_player.kokken], Kontor [media_player.kontor], Living room media player [media_player.stue], Roam [media_player.roam]. 2. Set the volume of Bedroom media player [media_player.sovevaerelse] to 0.2. 3. Wait for 1 second. 4. Execute script 'mass_playlist' on Sovevaerelse Mass [media_player.sovevaerelse_mass] with the 'Chillhop Radio' playlist and repeat mode set to 'all'. 5. Wait for 10 minutes. 6. Check if Sleep state input select [input_select.sleep_state] is in state 'alarm' OR 'snoozing'. 7. If the condition is true, set the volume of Bedroom media player [media_player.sovevaerelse] to 0.3.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] is set to 'snooze'.", "conditions": "After a 10-minute delay, the automation checks if the Sleep state input select [input_select.sleep_state] is still set to either 'alarm' or 'snoozing'. This condition must be met for the final volume adjustment to occur.", "action": "The automation first unjoins several media players from any audio groups, lowers the volume of the Bedroom media player [media_player.sovevaerelse], waits a moment, then starts playing the 'Chillhop Radio' playlist on repeat on the Sovevaerelse Mass [media_player.sovevaerelse_mass] device. After a 10-minute wait, if the sleep state is still 'alarm' or 'snoozing', it slightly increases the volume of the Bedroom media player." }, "human_like": "When snooze is activated, this automation plays relaxing music in the bedroom at a low volume and, after a 10-minute delay, slightly increases the volume if the alarm is still active.", "complexity": "medium" } }, { "id": "waking_action_media", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to 'waking'. CONDITIONS: None. ACTIONS: Execute script.mass_playlist on Sovevaerelse Mass [media_player.sovevaerelse_mass] with repeat_mode set to 'all' and a playlist containing the state of Podcast Radioavisen [sensor.podcast_radioavisen] and the string 'I Love Chillhop'. Then set volume to 0.3 on Bedroom media player [media_player.sovevaerelse].", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes its state to 'waking'.", "conditions": "There are no conditions that must be met.", "action": "First, it starts a playlist on the Sovevaerelse Mass [media_player.sovevaerelse_mass] media player. The playlist includes the current episode from the Podcast Radioavisen [sensor.podcast_radioavisen] sensor followed by the 'I Love Chillhop' playlist, and sets the player to repeat all tracks. Then, it sets the volume of the Bedroom media player [media_player.sovevaerelse] to 30%." }, "human_like": "Plays a relaxing morning playlist and sets the bedroom volume when you wake up.", "complexity": "low" } }, { "id": "waking_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to state 'waking'. CONDITIONS: None. ACTIONS: Execute in parallel: 1) Set Last Wake Up Time [input_text.last_wake_up_time] to the current timestamp. 2) Fire the set_light_profile event with data: room 'bedroom', profile 'Dimmed', transition_time 120.0 seconds. 3) Turn off Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke].", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes to the 'waking' state.", "conditions": "There are no conditions for this automation.", "action": "Three actions are performed simultaneously: first, the current time is recorded in the Last Wake Up Time [input_text.last_wake_up_time] field. Second, a lighting event is triggered to set the bedroom lights to a 'Dimmed' profile with a 120-second transition. Third, the switch Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke] is turned off." }, "human_like": "This automation records the wake-up time, dims the bedroom lights, and turns off a 'do not disturb' switch when the sleep state is set to 'waking'.", "complexity": "low" } }, { "id": "awake_action_media", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes from waking to awake. CONDITIONS: None. ACTIONS: 1. Join media players: Badevaerelse [media_player.badevaerelse] with group members: media_player.sovevaerelse AND (IF Guests input boolean [input_boolean.guests] is off THEN media_player.kokken) AND (IF Guests input boolean [input_boolean.guests] is off AND Roam [media_player.roam] is not unavailable THEN media_player.roam). 2. Execute script.mass_briefing_playlist on Badevaerelse Mass [media_player.badevaerelse_mass] with volume 0.5 and playlist: Podcast Radioavisen [sensor.podcast_radioavisen], Podcast DW News Brief [sensor.podcast_dw_news_brief], Podcast Daily Tech Headlines [sensor.podcast_daily_tech_headlines], Podcast Daily Tech News Show [sensor.podcast_daily_tech_news_show], I Love Chillhop. 3. Wait until Badevaerelse [media_player.badevaerelse] state is playing (timeout 30 seconds). 4. Set volume to 0.5 on media players: media_player.badevaerelse, media_player.sovevaerelse AND (IF Guests input boolean [input_boolean.guests] is off THEN media_player.kokken). 5. Wait 2 minutes. 6. Set volume to 0.6 on media players: media_player.badevaerelse, media_player.sovevaerelse AND (IF Guests input boolean [input_boolean.guests] is off THEN media_player.kokken).", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes from 'waking' to 'awake'.", "conditions": "There are no conditions for this automation.", "action": "First, it groups the Badevaerelse [media_player.badevaerelse] media player with the Bedroom media player [media_player.sovevaerelse]. If the Guests input boolean [input_boolean.guests] is off, it also includes the Kitchen media player [media_player.kokken] and, if the Roam [media_player.roam] player is available, it includes that as well. Then, it starts a briefing playlist on the Badevaerelse Mass [media_player.badevaerelse_mass] player at 50% volume. The playlist includes several news and tech podcasts followed by a music playlist. The automation waits for the main Badevaerelse player to start playing (with a 30-second timeout), then sets the volume of the grouped players to 50%. After a two-minute delay, it increases the volume of the same group of players to 60%." }, "human_like": "Starts a morning news and music briefing on the bathroom speakers when you wake up, gradually increasing the volume.", "complexity": "medium" } }, { "id": "awake_action", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes from 'waking' to 'awake'. CONDITIONS: None. ACTIONS: Perform the following actions in parallel: Turn off Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke], run Sleep As Android Stop Tracking [script.sleep_as_android_stop_tracking], and run Sleep As Android Dismiss Alarm [script.sleep_as_android_dismiss_alarm]. Then, fire the set_light_profile event for the bedroom and bathroom with profile 'Dimmed' and a transition time of 120 seconds. Wait for 3 minutes. Finally, fire the set_light_profile event for the bedroom and bathroom with profile 'Default' and a transition time of 120 seconds.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] changes from 'waking' to 'awake'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Immediately and simultaneously, it turns off the switch Dorklokke Forstyr Ikke [switch.dorklokke_forstyr_ikke], runs the Sleep As Android Stop Tracking [script.sleep_as_android_stop_tracking] script, and runs the Sleep As Android Dismiss Alarm [script.sleep_as_android_dismiss_alarm] script. It then sets the lights in the bedroom and bathroom to a 'Dimmed' profile over a period of 120 seconds. After waiting for three minutes, it changes the lights in the same rooms to the 'Default' profile, also over 120 seconds." }, "human_like": "This automation runs a morning routine when you are fully awake, turning off a 'do not disturb' mode, stopping sleep tracking, dismissing alarms, and gradually brightening the bedroom and bathroom lights.", "complexity": "medium" } }, { "id": "pause_tablet_on_sleep", "result": { "structured": "TRIGGER: When Sleep as Android event [sleep_as_android] occurs with event data 'light_sleep' OR when Sleep as Android event [sleep_as_android] occurs with event data 'deep_sleep' OR when Sleep as Android event [sleep_as_android] occurs with event data 'rem'. CONDITIONS: Foxtablet Music Active [binary_sensor.foxtablet_music_active] is on. ACTIONS: Send a notification to mobile_app_foxtablet with message 'command_media', priority high, TTL 0, and media_command 'pause'. The media_package_name is determined by a template that finds the first playback_state_ attribute of sensor.foxtablet_media_session with value 'Playing' and extracts the package name by removing the 'playback_state_' prefix.", "natural_language": { "trigger": "When a Sleep as Android event [sleep_as_android] is received indicating the user has entered light sleep, deep sleep, or REM sleep.", "conditions": "The Foxtablet Music Active [binary_sensor.foxtablet_music_active] sensor must be on, meaning media is currently playing on the tablet.", "action": "Sends a high-priority notification to the tablet to pause the currently playing media. The notification includes a command to pause, and it identifies which media app to target by checking the playback state attributes of the sensor.foxtablet_media_session entity." }, "human_like": "Pauses media playing on the tablet when the user falls asleep, as detected by Sleep as Android.", "complexity": "medium" } }, { "id": "10d61b0d-3f8e-40ea-8393-6058c79b189c", "result": { "structured": "TRIGGER: When a sleep_as_android event occurs with event data: event equals 'sleep_tracking_started'. CONDITIONS: None. ACTIONS: Trigger the script script.trigger_tasker_task with data: action = 'notify.mobile_app_foxtablet', task_id = 'SET_EXTRA_DIM', extra_data = 'state:true'.", "natural_language": { "trigger": "When the Sleep as Android event [sleep_as_android] reports that sleep tracking has started.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a command to a tablet via a script, instructing it to set its screen to extra dim mode." }, "human_like": "Automatically dims the tablet screen when sleep tracking begins.", "complexity": "low" } }, { "id": "1e67b4e2-cae9-4942-b465-41381052fc4b", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data: event equals 'sleep_tracking_stopped'. CONDITIONS: None. ACTIONS: Execute script.trigger_tasker_task with data: action 'notify.mobile_app_foxtablet', task_id 'SET_EXTRA_DIM', extra_data 'state:false'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has stopped.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a command to a tablet via the Tasker app to disable its extra dim setting." }, "human_like": "Turns off the tablet's extra dim mode when you stop sleep tracking in the Sleep as Android app.", "complexity": "low" } }, { "id": "turn_off_fan_on_sleep", "result": { "structured": "TRIGGER: When Sleep as Android event [sleep_as_android] reports a deep_sleep event OR When Sleep as Android event [sleep_as_android] reports a rem event OR When Sleep state input select [input_select.sleep_state] changes to awake. CONDITIONS: None. ACTIONS: Turn off Sovevaerelse Blaeser [fan.sovevaerelse_blaeser].", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating deep sleep or REM sleep, or when the Sleep state input select [input_select.sleep_state] changes to 'awake'.", "conditions": "There are no conditions that must be met.", "action": "Turns off the fan named Sovevaerelse Blaeser [fan.sovevaerelse_blaeser]." }, "human_like": "Turns off the bedroom fan when you enter deep sleep, REM sleep, or wake up.", "complexity": "low" } }, { "id": "27c977e6-9811-40dd-b11c-10d1447c2833", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] OR Sovevaerelse Summer Simmer Perception [sensor.sovevaerelse_summer_simmer_perception] changes state to any value that is NOT 'unavailable' OR 'unknown'. CONDITIONS: ((Sleep state input select [input_select.sleep_state] is 'smart wake' OR 'alarm' OR 'snoozing' OR 'waking') AND (Sovevaerelse Summer Simmer Perception [sensor.sovevaerelse_summer_simmer_perception] is 'slightly_warm' OR 'increasing_discomfort')) OR ((Sleep state input select [input_select.sleep_state] is NOT 'awake') AND (Sovevaerelse Summer Simmer Perception [sensor.sovevaerelse_summer_simmer_perception] is 'extremely_warm' OR 'danger_of_heatstroke' OR 'extreme_danger_of_heatstroke' OR 'circulatory_collapse_imminent')). ACTIONS: Turn on Sovevaerelse Blaeser [fan.sovevaerelse_blaeser] AND set Aircondition [climate.aircondition] to heat_cool mode with a temperature of 20°C.", "natural_language": { "trigger": "When the Sleep state input select [input_select.sleep_state] or the Sovevaerelse Summer Simmer Perception [sensor.sovevaerelse_summer_simmer_perception] changes to any state, as long as the new state is not 'unavailable' or 'unknown'.", "conditions": "If either of the following two scenarios is true: 1) The sleep state is set to 'smart wake', 'alarm', 'snoozing', or 'waking', and the temperature perception is 'slightly_warm' or 'increasing_discomfort'. OR 2) The sleep state is not set to 'awake', and the temperature perception is at a more severe level: 'extremely_warm', 'danger_of_heatstroke', 'extreme_danger_of_heatstroke', or 'circulatory_collapse_imminent'.", "action": "Turn on the Sovevaerelse Blaeser [fan.sovevaerelse_blaeser] and set the Aircondition [climate.aircondition] to heat/cool mode with a target temperature of 20°C." }, "human_like": "Turns on the bedroom fan and sets the air conditioner to cool the room if it's too warm in the morning, depending on the current sleep state and temperature perception.", "complexity": "medium" } }, { "id": "notify_phone_not_charging_on_sleep", "result": { "structured": "TRIGGER: When Sleep state input select [input_select.sleep_state] changes to sleeping OR When Darkphone Charger Type [sensor.darkphone_charger_type] changes to none AND remains for 10 seconds OR When Darkphone Interactive [binary_sensor.darkphone_interactive] changes to off AND remains for 10 seconds. CONDITIONS: (Sleep state input select [input_select.sleep_state] is sleeping) OR (Darkphone Charger Type [sensor.darkphone_charger_type] is none) OR (Darkphone Interactive [binary_sensor.darkphone_interactive] is off). ACTIONS: Execute script.darkphone_tts with message 'Din telefon lader ikke. Husk at sætte den i laderen.' and severity 3, then wait 5 minutes.", "natural_language": { "trigger": "The automation triggers when the sleep state is set to sleeping, or when the Darkphone Charger Type [sensor.darkphone_charger_type] reports 'none' for at least 10 seconds, or when the Darkphone Interactive [binary_sensor.darkphone_interactive] becomes inactive (off) for at least 10 seconds.", "conditions": "At least one of the following must be true: the sleep state is currently sleeping, the phone charger type is none, or the phone is not interactive (off).", "action": "It plays a TTS message via the script.darkphone_tts script saying 'Din telefon lader ikke. Husk at sætte den i laderen.' with severity level 3, and then waits for 5 minutes." }, "human_like": "Reminds you to charge your phone when you go to sleep or if your phone is not charging and inactive.", "complexity": "medium" } }, { "id": "update_vacuum_last_clean", "result": { "structured": "TRIGGER: When Roborock vacuum [vacuum.valetudo_roborocks5] changes state from cleaning. CONDITIONS: None. ACTIONS: Set Vacuum Last Clean [input_datetime.vacuum_last_clean] to the current date and time.", "natural_language": { "trigger": "When the Roborock vacuum [vacuum.valetudo_roborocks5] finishes cleaning, indicated by its state changing from 'cleaning'.", "conditions": "There are no additional conditions that must be met.", "action": "Updates the timestamp for the last cleaning by setting the Vacuum Last Clean [input_datetime.vacuum_last_clean] input to the current date and time." }, "human_like": "Records the date and time whenever the robot vacuum finishes a cleaning job.", "complexity": "low" } }, { "id": "vacuum_show_menu_when_undocked", "result": { "structured": "TRIGGER: When Roborock vacuum [vacuum.valetudo_roborocks5] changes state to cleaning, paused, idle, returning, or error. CONDITIONS: None. ACTIONS: Turn on Vacuum Show Card [input_boolean.vacuum_show_card].", "natural_language": { "trigger": "When the Roborock vacuum [vacuum.valetudo_roborocks5] changes its state to any of the following: cleaning, paused, idle, returning, or error.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Turns on the Vacuum Show Card [input_boolean.vacuum_show_card]." }, "human_like": "Shows a vacuum control menu whenever the robot vacuum is not docked.", "complexity": "low" } }, { "id": "vacuum_hide_menu_when_docked", "result": { "structured": "TRIGGER: When Roborock vacuum [vacuum.valetudo_roborocks5] changes to state docked. CONDITIONS: None. ACTIONS: Turn off Vacuum Show Card [input_boolean.vacuum_show_card].", "natural_language": { "trigger": "When the Roborock vacuum [vacuum.valetudo_roborocks5] returns to its dock and enters the docked state.", "conditions": "There are no conditions that must be met.", "action": "Hides the vacuum control menu by turning off the Vacuum Show Card [input_boolean.vacuum_show_card]." }, "human_like": "Hides the vacuum control menu when the robot vacuum is docked.", "complexity": "low" } }, { "id": "vacuum_while_away", "result": { "structured": "TRIGGER: When the time matches a pattern of 11:00, 11:05, 11:10, ... (every 5 minutes from 11:00 to 11:55) OR when the time matches a pattern of 15:00, 15:05, 15:10, ... (every 5 minutes from 15:00 to 15:55). CONDITIONS: (Helligdage [calendar.helligdage] is off OR Guests input boolean [input_boolean.guests] is off) AND the current weekday is Monday, Tuesday, Wednesday, Thursday, or Friday AND Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] is off AND the value of Vacuum Last Clean [input_datetime.vacuum_last_clean] is more than 8 hours in the past. ACTIONS: Start the Roborock vacuum [vacuum.valetudo_roborocks5].", "natural_language": { "trigger": "The automation triggers every 5 minutes during two specific hours: from 11:00 AM to 11:55 AM, and again from 3:00 PM to 3:55 PM.", "conditions": "All of the following must be true: It is not a holiday (Helligdage [calendar.helligdage] is off) and there are no guests (Guests input boolean [input_boolean.guests] is off). It must be a weekday (Monday through Friday). The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked and ready. The house must be unoccupied, indicated by the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] being off. Finally, at least 8 hours must have passed since the last recorded cleaning time (Vacuum Last Clean [input_datetime.vacuum_last_clean]).", "action": "Starts the Roborock vacuum [vacuum.valetudo_roborocks5] to begin a cleaning cycle." }, "human_like": "Automatically starts the robot vacuum on weekdays during late morning and mid-afternoon when nobody is home, ensuring it's been at least 8 hours since the last clean.", "complexity": "medium" } }, { "id": "vacuum_stop_before_coming_home", "result": { "structured": "TRIGGER: When Rook Home Soon [binary_sensor.rook_home_soon] changes from off to on AND remains on for 5 minutes OR When Rook Presence [binary_sensor.rook_presence] changes from off to on AND remains on for 1 minute. CONDITIONS: None. ACTIONS: Choose action based on condition: IF Vacuum Area Cleaned Since Last Empty [sensor.vacuum_area_cleaned_since_last_empty] (as integer) is greater than Vacuum M2 Before Empty [input_number.vacuum_m2_before_empty] (as integer) THEN run script.send_vacuum_to_emptying_position. OTHERWISE (default), IF Roborock vacuum [vacuum.valetudo_roborocks5] is NOT docked THEN send Roborock vacuum [vacuum.valetudo_roborocks5] to base.", "natural_language": { "trigger": "When the Rook Home Soon [binary_sensor.rook_home_soon] sensor turns on and stays on for five minutes, or when the Rook Presence [binary_sensor.rook_presence] sensor turns on and stays on for one minute.", "conditions": "There are no separate conditions that must be met before the action runs; the logic is handled within the action sequence.", "action": "The automation first checks if the Vacuum Area Cleaned Since Last Empty [sensor.vacuum_area_cleaned_since_last_empty] is greater than the threshold set in Vacuum M2 Before Empty [input_number.vacuum_m2_before_empty]. If it is, it sends the vacuum to its emptying position. Otherwise, if the Roborock vacuum [vacuum.valetudo_roborocks5] is not already docked, it commands the vacuum to return to its base." }, "human_like": "Stops the vacuum cleaner and sends it to either empty its bin or return to the dock when someone is about to arrive home or has just arrived.", "complexity": "medium" } }, { "id": "c3d79ebf-18c1-4e2a-8776-a7fdddf87de1", "result": { "structured": "TRIGGER: When Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] becomes on and remains for 10 seconds OR When Location At Work [binary_sensor.location_at_work] remains in any state for 5 minutes OR Every 30 minutes (time pattern). CONDITIONS: Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] is on. ACTIONS: Choose one action based on conditions: 1. IF Puzzel Expected State [binary_sensor.puzzel_expected_state] is on AND Location At Work [binary_sensor.location_at_work] is on THEN run script.puzzel_log_on with a data template that selects a queue ID. 2. IF Puzzel Expected State [binary_sensor.puzzel_expected_state] is on AND Location At Work [binary_sensor.location_at_work] is off THEN run Notify darkphone script [script.notify_darkphone] with a message and an inline keyboard template. 3. IF Puzzel Status [binary_sensor.puzzel_status] is on AND Location At Work [binary_sensor.location_at_work] is on THEN run Notify darkphone script [script.notify_darkphone] with a different message and inline keyboard. 4. IF Puzzel Status [binary_sensor.puzzel_status] is on AND Location At Work [binary_sensor.location_at_work] is off THEN run script.puzzel_log_off.", "natural_language": { "trigger": "The automation can be triggered in three ways: when the Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] sensor turns on and stays on for 10 seconds; when the Location At Work [binary_sensor.location_at_work] sensor remains in its current state (on or off) for 5 minutes; or on a scheduled basis, every 30 minutes.", "conditions": "For the automation to proceed, the Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] must be in the 'on' state.", "action": "Depending on the current state of other sensors, one of four actions will be taken. If you are expected to be logged into Puzzel and you are at work, it will automatically log you in to an appropriate queue. If you are expected to be logged in but you are not at work, it will send a notification to your phone asking if you want to log in, with a list of queue options. If you are currently logged into Puzzel and are at work, it will notify you that you are still logged in and offer an option to log out. Finally, if you are logged into Puzzel but are not at work, it will automatically log you out." }, "human_like": "Manages Puzzel login status by automatically logging in or out, or sending notifications, based on whether you are at work and what the expected login state should be.", "complexity": "high" } }, { "id": "9b773b63-18d4-4c98-b743-683bc9d5cad9", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command /puzzel_ignore_incorrect OR when a Telegram command event [telegram_command] occurs with command /puzzel_ignore_incorrect. CONDITIONS: None. ACTIONS: Execute script ignore_incorrect_puzzel_state [script.ignore_incorrect_puzzel_state] AND answer the Telegram callback query with the message 'Ignorerer forkert Puzzel status indtil næste skift'.", "natural_language": { "trigger": "When a Telegram callback or a Telegram command is received with the specific command '/puzzel_ignore_incorrect'.", "conditions": "There are no conditions that need to be checked.", "action": "Runs a script called 'ignore_incorrect_puzzel_state' and sends a reply to the Telegram query confirming that the incorrect Puzzel status is being ignored until the next change." }, "human_like": "Ignores an incorrect Puzzel device status when requested via a Telegram command, and confirms the action to the user.", "complexity": "low" } }, { "id": "efca9026-7293-4d95-8ae9-7cc084b3e244", "result": { "structured": "TRIGGER: When Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] changes state, provided the previous state was NOT unknown AND NOT unavailable. CONDITIONS: None. ACTIONS: Execute script reset_ignore_incorrect_puzzel_state.", "natural_language": { "trigger": "Whenever the Puzzel State Incorrect [binary_sensor.puzzel_state_incorrect] changes from any state, as long as it was not previously in an 'unknown' or 'unavailable' state.", "conditions": "There are no additional conditions for this automation.", "action": "Runs the script named 'reset_ignore_incorrect_puzzel_state'." }, "human_like": "Resets the system's 'ignore incorrect puzzle state' flag whenever the puzzle state incorrect sensor changes from a valid state.", "complexity": "low" } }, { "id": "set_work_phone_modes", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to ringing OR offhook OR when the state of any of the following entities changes: Working [binary_sensor.working], Arbejdstelefon Do Not Disturb Sensor [sensor.arbejdstelefon_do_not_disturb_sensor], Arbejdstelefon Ringer Mode [sensor.arbejdstelefon_ringer_mode]. CONDITIONS: None. ACTIONS: Choose based on condition: IF Working [binary_sensor.working] is on THEN send notification to mobile_app_arbejdstelefon with command_ringer_mode set to normal AND send notification to mobile_app_arbejdstelefon with command_dnd set to off. ELSE IF Working [binary_sensor.working] is off THEN send notification to mobile_app_arbejdstelefon with command_ringer_mode set to vibrate AND send notification to mobile_app_arbejdstelefon with command_dnd set to priority_only.", "natural_language": { "trigger": "The automation triggers when the phone state of Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to either ringing or offhook, or when there is any change in the state of the Working [binary_sensor.working] sensor, the Arbejdstelefon Do Not Disturb Sensor [sensor.arbejdstelefon_do_not_disturb_sensor], or the Arbejdstelefon Ringer Mode [sensor.arbejdstelefon_ringer_mode] sensor.", "conditions": "There are no explicit conditions; the action selection is determined by the state of the Working [binary_sensor.working] sensor at the time of the trigger.", "action": "If the Working [binary_sensor.working] sensor indicates the user is at work (state is on), the automation sends two notifications to the mobile app for the work phone: one to set the ringer mode to normal and another to turn off Do Not Disturb. If the Working [binary_sensor.working] sensor indicates the user is not at work (state is off), it sends notifications to set the ringer mode to vibrate and set Do Not Disturb to priority_only." }, "human_like": "This automation adjusts the ringer and Do Not Disturb settings on a work phone based on whether the user is currently working, ensuring the phone is audible during work hours and silenced otherwise.", "complexity": "medium" } }, { "id": "update_3d_printer_model_image_on_file_change", "result": { "structured": "TRIGGER: When Octoprint Print File [sensor.octoprint_print_file] changes state. ACTIONS: Run script Update Model Image [script.update_model_image].", "natural_language": { "trigger": "Whenever the Octoprint Print File [sensor.octoprint_print_file] sensor updates its state.", "conditions": "There are no conditions for this automation.", "action": "It runs the Update Model Image [script.update_model_image] script." }, "human_like": "Updates the 3D printer's model image whenever the selected print file changes.", "complexity": "low" } }, { "id": "set_3d_printer_last_started", "result": { "structured": "TRIGGER: When Octoprint Start Time [sensor.octoprint_start_time] changes state to any value that is NOT unavailable AND NOT unknown. CONDITIONS: None. ACTIONS: Set the value of 3D Printer Last Started [input_text.3d_printer_last_started] to the current state of Octoprint Start Time [sensor.octoprint_start_time] AND set the value of 3D Printer Last Ended [input_text.3d_printer_last_ended] to an empty string.", "natural_language": { "trigger": "Whenever the Octoprint Start Time [sensor.octoprint_start_time] sensor updates to a valid state, meaning it is neither 'unavailable' nor 'unknown'.", "conditions": "There are no conditions that need to be met for this automation to run.", "action": "It records the new start time by updating the 3D Printer Last Started [input_text.3d_printer_last_started] text field with the latest value from the sensor, and it clears the 3D Printer Last Ended [input_text.3d_printer_last_ended] text field." }, "human_like": "This automation logs when the 3D printer starts a job and clears the previous end time.", "complexity": "low" } }, { "id": "set_3d_printer_last_ended", "result": { "structured": "TRIGGER: When Octoprint Start Time [sensor.octoprint_start_time] changes to state 'unknown'. CONDITIONS: None. ACTIONS: Set the value of 3D Printer Last Ended [input_text.3d_printer_last_ended] to the current date and time.", "natural_language": { "trigger": "When the Octoprint Start Time [sensor.octoprint_start_time] sensor changes its state to 'unknown'.", "conditions": "There are no conditions for this automation.", "action": "It records the current date and time by setting the value of the 3D Printer Last Ended [input_text.3d_printer_last_ended] text input." }, "human_like": "Records the time when the 3D printer job finishes by updating a timestamp.", "complexity": "low" } }, { "id": "16e9122a-c1c4-4966-9040-1dc133e2e009", "result": { "structured": "TRIGGER: When the time pattern matches every 15 minutes (hours: any, minutes: divisible by 15, seconds: 0) OR When Calendar [calendar.calendar] changes state OR When Home assistant loaded [binary_sensor.home_assistant_loaded] turns on and remains on for 10 seconds OR When Calendar regexes sensor [sensor.calendar_regexes] changes state. CONDITIONS: Calendar regexes sensor [sensor.calendar_regexes] state is OK. ACTIONS: Call service Get calendar events service [calendar.get_events] for Calendar [calendar.calendar] to retrieve events from today at 00:00:00 until 7 days later at 23:59:59, storing results in variable 'all_events'. Then, set variable 'agenda_events' by rendering the Jinja2 template 'agenda.jinja' with the imported function 'agenda_events', passing the retrieved events, calendar entity, calendar name, regexes, and boolean attributes. Finally, fire the event 'calendar_updated' with data including the calendar name, current timestamp, and the processed agenda events.", "natural_language": { "trigger": "The automation can be triggered in four ways: every 15 minutes on the hour, whenever the Calendar [calendar.calendar] changes state, when the Home assistant loaded [binary_sensor.home_assistant_loaded] sensor turns on and stays on for 10 seconds, or when the Calendar regexes sensor [sensor.calendar_regexes] changes state.", "conditions": "The automation only proceeds if the Calendar regexes sensor [sensor.calendar_regexes] is in an 'OK' state.", "action": "The automation fetches calendar events for the next week from the Calendar [calendar.calendar]. It then processes these events using a custom Jinja2 template to filter and categorize them based on predefined regular expressions. Finally, it announces that the calendar has been updated by firing an event containing the processed event list." }, "human_like": "This automation updates and processes a personal calendar every 15 minutes or when relevant sensors change, ensuring the calendar data is current and categorized.", "complexity": "high" } }, { "id": "ada86b2e-be99-4b82-b53f-da58547a0b3c", "result": { "structured": "TRIGGER: When the time pattern matches every 15 minutes (hours: any, minutes: divisible by 15, seconds: 0) OR When Arbejdskalender [calendar.arbejdskalender] changes state OR When Home assistant loaded [binary_sensor.home_assistant_loaded] turns on and remains on for 10 seconds OR When Calendar regexes sensor [sensor.calendar_regexes] changes state. CONDITIONS: None. ACTIONS: Retrieve events from Arbejdskalender [calendar.arbejdskalender] for the period from today at 00:00:00 to 7 days later at 23:59:59, storing the result in variable 'all_events'. Then, process the events using the 'agenda_events' template function with inputs: all_events, calendar_entity, calendar_name, regexes, and bool_attrs, storing the result in variable 'agenda_events'. Finally, fire a custom event 'calendar_updated' with data: calendar name, current timestamp, and the processed events.", "natural_language": { "trigger": "The automation triggers every 15 minutes on the hour, whenever the Arbejdskalender [calendar.arbejdskalender] changes state, when the Home assistant loaded [binary_sensor.home_assistant_loaded] sensor turns on and stays on for 10 seconds, or when the Calendar regexes sensor [sensor.calendar_regexes] changes state.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation fetches calendar events from the Arbejdskalender [calendar.arbejdskalender] for the next week, processes them using a custom template to categorize events based on regex patterns, and then fires a custom event named 'calendar_updated' containing the calendar name, the current time, and the processed event data." }, "human_like": "This automation updates and processes work calendar events every 15 minutes or when relevant sensors change, then announces the update via a custom event.", "complexity": "medium" } }, { "id": "e565f087-c440-4619-ab51-b18d535dbfac", "result": { "structured": "TRIGGER: When the time pattern matches every 15 minutes (hours: any, minutes: divisible by 15, seconds: 0) OR When the state of Vagtplan [calendar.vagtplan] changes OR When Home assistant loaded [binary_sensor.home_assistant_loaded] turns on and remains on for 10 seconds OR When the state of Calendar regexes sensor [sensor.calendar_regexes] changes. CONDITIONS: None. ACTIONS: 1. Call service Get calendar events service [calendar.get_events] on Vagtplan [calendar.vagtplan] to retrieve events from today at 00:00:00 until 15 days later at 23:59:59, storing the result in variable 'all_events'. 2. Set variable 'agenda_events' by processing 'all_events' using the imported Jinja2 functions 'agenda_events' and 'parse_work_schedule_event' with the provided calendar name and regexes. 3. Fire the 'calendar_updated' event with data containing the calendar name, current timestamp, and the processed events.", "natural_language": { "trigger": "The automation triggers in four ways: every 15 minutes on the clock (e.g., 0, 15, 30, 45 minutes past the hour), whenever there is a change to the Vagtplan [calendar.vagtplan] calendar, when the Home assistant loaded [binary_sensor.home_assistant_loaded] sensor turns on and stays on for 10 seconds, or when the Calendar regexes sensor [sensor.calendar_regexes] changes its state.", "conditions": "There are no specific conditions that must be met for the actions to run; the automation executes whenever any of the triggers fire.", "action": "The automation first fetches all events from the Vagtplan [calendar.vagtplan] calendar for the next 15 days. It then processes these events using custom Jinja2 templates to format them into an agenda, applying specific work schedule parsing rules. Finally, it announces that the calendar has been updated by firing an event named 'calendar_updated', which includes the calendar name, the current time, and the newly processed list of events." }, "human_like": "This automation updates and processes the work schedule from a calendar every 15 minutes or when the calendar changes, then announces the update.", "complexity": "medium" } }, { "id": "fdab31ae-dbd7-4808-a671-6fa05e331a59", "result": { "structured": "TRIGGER: When the time pattern matches every 15 minutes (hours: any, minutes: divisible by 15, seconds: 0) OR When the state of Tripit [calendar.tripit] changes OR When Home assistant loaded [binary_sensor.home_assistant_loaded] turns on and remains on for 10 seconds OR When the state of Calendar regexes sensor [sensor.calendar_regexes] changes. CONDITIONS: None. ACTIONS: 1. Call the service Get calendar events service [calendar.get_events] for the entity Tripit [calendar.tripit] to retrieve events from today at 00:00:00 until 7 days later at 23:59:59, storing the result in variable 'all_events'. 2. Set variable 'agenda_events' by processing 'all_events' using the Jinja2 template 'agenda.jinja' with the provided variables (calendar_entity, calendar_name, regexes, bool_attrs, attrs). 3. Fire the 'calendar_updated' event with data: calendar name 'Tripit Kalender', current timestamp, and the processed 'agenda_events'.", "natural_language": { "trigger": "The automation runs every 15 minutes on the hour, whenever the Tripit calendar [calendar.tripit] state changes, when the Home assistant loaded [binary_sensor.home_assistant_loaded] sensor turns on and stays on for 10 seconds, or when the Calendar regexes sensor [sensor.calendar_regexes] changes.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it fetches calendar events from the Tripit [calendar.tripit] calendar for the next seven days. Then, it processes these events using a custom template ('agenda.jinja') and a set of regular expressions and attributes defined in variables to format the data. Finally, it fires a 'calendar_updated' event containing the calendar name, the current time, and the newly processed list of events." }, "human_like": "This automation updates and processes events from the Tripit calendar every 15 minutes or when relevant changes occur, then announces the update via an event.", "complexity": "medium" } }, { "id": "55586488-6ce5-429b-84c5-ce84f17f5c8b", "result": { "structured": "TRIGGER: Every 15 minutes (time pattern). CONDITIONS: None. ACTIONS: Execute Run pyscript script [script.run_pyscript] with data action 'pyscript.get_dmi_weather_report' and location_id 'secret dmi_location_id'.", "natural_language": { "trigger": "The automation triggers every 15 minutes.", "conditions": "There are no conditions for this automation.", "action": "Runs the pyscript script named 'pyscript.get_dmi_weather_report' using the Run pyscript script [script.run_pyscript] service, providing a specific location identifier." }, "human_like": "Fetches a weather report from DMI every 15 minutes.", "complexity": "low" } }, { "id": "4db44655-fc7d-4808-b8fd-90ada6708c54", "result": { "structured": "TRIGGER: Every 15 minutes (time pattern). CONDITIONS: None. ACTIONS: Execute script Run pyscript [script.run_pyscript] with parameters: action = pyscript.get_dmi_severe_weather_warnings, data = location_id = secret dmi_location_id.", "natural_language": { "trigger": "The automation triggers every 15 minutes, based on a time pattern.", "conditions": "There are no conditions that must be met for the action to run.", "action": "It runs the Run pyscript [script.run_pyscript] script, which calls a specific Python function (pyscript.get_dmi_severe_weather_warnings) and passes a secret location identifier as data." }, "human_like": "Checks for severe weather warnings from DMI every 15 minutes.", "complexity": "low" } }, { "id": "6f7e8d9a-0b1c-2d3e-4f5g-6h7i8j9k0l1m", "result": { "structured": "TRIGGER: When DMI Aktuel Varsel [sensor.dmi_aktuel_varsel] attribute 'icon_file' changes to any value that is not an empty string. CONDITIONS: None. ACTIONS: Download a file from the URL https://www.dmi.dk/fileadmin/assets/Varselsikoner/{{ state_attr('sensor.dmi_aktuel_varsel', 'icon_file') }} to the local subdirectory 'dmi_warning_icons' and overwrite any existing file.", "natural_language": { "trigger": "Whenever the 'icon_file' attribute of the DMI Aktuel Varsel [sensor.dmi_aktuel_varsel] sensor changes to a non-empty value.", "conditions": "There are no additional conditions that must be met.", "action": "Downloads the weather warning icon file from the Danish Meteorological Institute's server. It constructs the download URL by appending the value of the 'icon_file' attribute to a base path, saves the file to a local folder named 'dmi_warning_icons', and replaces the file if it already exists." }, "human_like": "Automatically downloads the latest weather warning icon from the Danish Meteorological Institute whenever a new icon is available.", "complexity": "low" } }, { "id": "c220f137-3ea0-4a9e-9531-5db7e025168c", "result": { "structured": "TRIGGER: When Forecast Home [weather.forecast_home] changes state. CONDITIONS: None. ACTIONS: Retrieve hourly weather forecasts for Forecast Home [weather.forecast_home] and store the result in variable 'forecast', then fire an event named 'weather_forecast' with data containing the entity ID and the retrieved forecast list.", "natural_language": { "trigger": "Whenever the Forecast Home [weather.forecast_home] weather entity updates its state.", "conditions": "There are no conditions that must be met.", "action": "The automation fetches the hourly weather forecast for Forecast Home [weather.forecast_home] and saves the data. It then triggers a custom event called 'weather_forecast', passing along the entity ID and the forecast data." }, "human_like": "Fetches and broadcasts the latest hourly weather forecast whenever the weather entity updates.", "complexity": "low" } }, { "id": "7abec12c-5464-4934-93aa-6decdc94186a", "result": { "structured": "TRIGGER: When the template condition evaluates to true: Blitzortung Lightning Distance [sensor.blitzortung_lightning_distance] is not 'unknown' AND is not 'unavailable' AND its numeric value is less than 10. CONDITIONS: None. ACTIONS: Execute script Notify darkphone script [script.notify_darkphone] with a message title 'Vejr Varsel: Torden' and a message containing the lightning distance value and its unit of measurement, then wait for 10 minutes.", "natural_language": { "trigger": "When the Blitzortung Lightning Distance [sensor.blitzortung_lightning_distance] sensor reports a valid reading (not 'unknown' or 'unavailable') and the distance is less than 10 units.", "conditions": "There are no additional conditions.", "action": "Sends a notification titled 'Vejr Varsel: Torden' to a phone via the Notify darkphone script [script.notify_darkphone], including the exact lightning distance and its unit of measurement, and then pauses for 10 minutes." }, "human_like": "Sends a lightning warning notification when a strike is detected within 10 kilometers.", "complexity": "low" } }, { "id": "e463a349-ae3b-41be-8d29-3fbc75d4e5ed", "result": { "structured": "TRIGGER: When Elkedel Varmholdningstid [number.elkedel_varmholdningstid] changes state OR When Elkedel Brygger [binary_sensor.elkedel_brygger] turns on. CONDITIONS: Elkedel Varmholdningstid [number.elkedel_varmholdningstid] is above 0 AND Elkedel Brygger [binary_sensor.elkedel_brygger] is on. ACTIONS: Turn on Elkedel Varmholdning [switch.elkedel_varmholdning].", "natural_language": { "trigger": "When the timer for the kettle's keep-warm function, Elkedel Varmholdningstid [number.elkedel_varmholdningstid], changes its value, or when the kettle's brewing sensor, Elkedel Brygger [binary_sensor.elkedel_brygger], indicates that brewing has started (turns on).", "conditions": "The keep-warm timer, Elkedel Varmholdningstid [number.elkedel_varmholdningstid], must be set to a value greater than zero, and the kettle's brewing sensor, Elkedel Brygger [binary_sensor.elkedel_brygger], must be in the 'on' state.", "action": "Activates the kettle's keep-warm function by turning on the switch Elkedel Varmholdning [switch.elkedel_varmholdning]." }, "human_like": "Automatically turns on the kettle's keep-warm function when brewing is active and a keep-warm duration is set.", "complexity": "low" } }, { "id": "b85c1cdb-f8dd-4680-8101-cdc9919a60f2", "result": { "structured": "TRIGGER: When Elkedel [switch.elkedel] turns off. CONDITIONS: None. ACTIONS: Set Elkedel Varmholdningstid [number.elkedel_varmholdningstid] to 0.", "natural_language": { "trigger": "When the Elkedel [switch.elkedel] is turned off.", "conditions": "There are no conditions that need to be met.", "action": "Resets the 'keep warm' timer by setting Elkedel Varmholdningstid [number.elkedel_varmholdningstid] to 0." }, "human_like": "Resets the kettle's keep-warm timer to zero when the kettle is turned off.", "complexity": "low" } }, { "id": "kettle_brewing_notification", "result": { "structured": "TRIGGER: When Elkedel Brygger [binary_sensor.elkedel_brygger] changes state from off to on. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Elkedel brygger'.", "natural_language": { "trigger": "When the Elkedel Brygger [binary_sensor.elkedel_brygger] sensor turns on.", "conditions": "There are no conditions for this automation.", "action": "Sends a notification to the user's Telegram account via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Elkedel brygger'." }, "human_like": "Sends a Telegram notification when the kettle starts brewing.", "complexity": "low" } }, { "id": "kettle_done_notification", "result": { "structured": "TRIGGER: When Elkedel Brygger [binary_sensor.elkedel_brygger] changes state from on to off. CONDITIONS: None. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with a message. The message is 'Elkedel færdig' appended with ' og holder varm i ' plus the integer value of Elkedel Varmholdningstid [number.elkedel_varmholdningstid] plus ' minutter' IF Elkedel Status [sensor.elkedel_status] is 'Holder varm'. Otherwise, the message is just 'Elkedel færdig'.", "natural_language": { "trigger": "When the kettle finishes brewing, indicated by the Elkedel Brygger [binary_sensor.elkedel_brygger] sensor changing from 'on' to 'off'.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere]. The notification message states that the kettle is done. If the Elkedel Status [sensor.elkedel_status] is 'Holder varm' (keeping warm), the message will also include how many minutes it will keep warm, based on the value from Elkedel Varmholdningstid [number.elkedel_varmholdningstid]." }, "human_like": "Sends a notification when the kettle is done brewing, and tells you how long it will keep warm if that feature is active.", "complexity": "low" } }, { "id": "pause_media_on_phone_call", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes from idle to ringing OR offhook OR When Darkphone Phone State [sensor.darkphone_phone_state] changes from idle to ringing OR offhook. CONDITIONS: Rook Presence [binary_sensor.rook_presence] is on AND (triggering entity is Darkphone Phone State [sensor.darkphone_phone_state] OR Working [binary_sensor.working] is on). ACTIONS: Run Pause all media script [script.pause_all_media].", "natural_language": { "trigger": "When either the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] or the Darkphone Phone State [sensor.darkphone_phone_state] changes from idle to a ringing or offhook state.", "conditions": "The Rook Presence [binary_sensor.rook_presence] must be on. Additionally, either the phone that triggered the automation must be the Darkphone, or the Working [binary_sensor.working] sensor must be on.", "action": "Pauses all media by running the Pause all media script [script.pause_all_media]." }, "human_like": "Automatically pauses media playback when a phone call is received, but only if someone is present and either a specific phone is ringing or the user is working.", "complexity": "medium" } }, { "id": "unpause_media_on_phone_call_finished", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to idle OR when Darkphone Phone State [sensor.darkphone_phone_state] changes to idle. CONDITIONS: Rook Presence [binary_sensor.rook_presence] is on. ACTIONS: Execute script Resume All Media [script.resume_all_media].", "natural_language": { "trigger": "When either the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] or the Darkphone Phone State [sensor.darkphone_phone_state] changes its state to idle.", "conditions": "If the Rook Presence [binary_sensor.rook_presence] sensor indicates that someone is present (state is on).", "action": "Runs the script named Resume All Media [script.resume_all_media]." }, "human_like": "Resumes all media playback when a phone call ends and someone is present in the home.", "complexity": "low" } }, { "id": "on_call_ringing_while_sleeping", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to ringing. CONDITIONS: Rook Presence [binary_sensor.rook_presence] is on AND On Call [binary_sensor.on_call] is on. ACTIONS: If Sleep state input select [input_select.sleep_state] is sleeping OR smart wake, then set Sleep state input select [input_select.sleep_state] to paused AND fire the set_light_profile event for the bedroom with profile Night.", "natural_language": { "trigger": "When the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to a ringing state.", "conditions": "Both the Rook Presence [binary_sensor.rook_presence] must be on, indicating someone is present, and the On Call [binary_sensor.on_call] must be on, indicating the user is on call.", "action": "If the current sleep state, Sleep state input select [input_select.sleep_state], is either 'sleeping' or 'smart wake', then the automation will change the sleep state to 'paused' and trigger a lighting event to set the bedroom lights to the 'Night' profile." }, "human_like": "Pauses the sleep routine and sets the bedroom lights to a night profile when a work phone rings while the user is on call and present at home.", "complexity": "medium" } }, { "id": "on_call_picked_up", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to offhook. CONDITIONS: Rook Presence [binary_sensor.rook_presence] is on AND On Call [binary_sensor.on_call] is on AND Sleep state input select [input_select.sleep_state] is sleeping OR smart wake OR paused. ACTIONS: Fire event set_light_profile [set_light_profile] with room: bedroom, profile: Ambient, then wait 30 seconds, then if Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] is still offhook, fire event set_light_profile [set_light_profile] with room: bedroom, profile: Dimmed.", "natural_language": { "trigger": "When the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to offhook, indicating the work phone has been picked up.", "conditions": "If Rook Presence [binary_sensor.rook_presence] is detected, the On Call [binary_sensor.on_call] status is active, and the Sleep state input select [input_select.sleep_state] is set to either sleeping, smart wake, or paused.", "action": "First, set the bedroom lights to the Ambient profile by firing the set_light_profile [set_light_profile] event. After a 30-second delay, if the phone is still offhook, change the bedroom lights to the Dimmed profile by firing the same event with the new profile." }, "human_like": "When a work call is picked up during specific sleep states and presence is detected, it adjusts the bedroom lighting to an ambient level, then dims it after 30 seconds if the call continues.", "complexity": "medium" } }, { "id": "on_call_done", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes from offhook to idle AND remains idle for 2 minutes OR when PC074805 [device_tracker.pc074805] changes to not_home AND remains not_home for 30 seconds. CONDITIONS: Rook Presence [binary_sensor.rook_presence] is on AND On Call [binary_sensor.on_call] is on AND PC074805 [device_tracker.pc074805] is not_home AND Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] is idle. ACTIONS: If Sleep state input select [input_select.sleep_state] is paused, then trigger the Set light profile event [set_light_profile] for the bedroom with profile 'Off' AND set Sleep state input select [input_select.sleep_state] to sleeping.", "natural_language": { "trigger": "When the work phone call ends and the phone remains idle for two minutes, or when the device PC074805 leaves home and remains away for thirty seconds.", "conditions": "The automation only runs if Rook Presence [binary_sensor.rook_presence] is detected, the On Call [binary_sensor.on_call] status is active, the device PC074805 [device_tracker.pc074805] is confirmed to be away from home, and the work phone [sensor.arbejdstelefon_phone_state] is idle.", "action": "If the current sleep state is 'paused', the automation will turn off the bedroom lights by setting the light profile to 'Off' and then change the sleep state to 'sleeping'." }, "human_like": "Ends an on-call session and prepares for sleep by turning off bedroom lights when the user is away and the work phone is not in use.", "complexity": "medium" } }, { "id": "on_call_not_picked_up", "result": { "structured": "TRIGGER: When Work Phone Ringing [input_boolean.work_phone_ringing] turns off and remains off for 5 seconds. CONDITIONS: Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] is idle AND Rook Presence [binary_sensor.rook_presence] is on AND On Call [binary_sensor.on_call] is on. ACTIONS: If Sleep state input select [input_select.sleep_state] is paused, then trigger the set_light_profile event for the bedroom with profile 'Off' and set Sleep state input select [input_select.sleep_state] to sleeping.", "natural_language": { "trigger": "When the Work Phone Ringing [input_boolean.work_phone_ringing] stops ringing and remains off for at least 5 seconds.", "conditions": "The Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] must be idle, the Rook Presence [binary_sensor.rook_presence] must be on, and the On Call [binary_sensor.on_call] status must be on.", "action": "If the Sleep state input select [input_select.sleep_state] is currently set to 'paused', the automation will trigger a light profile event to turn off the bedroom lights and then change the sleep state to 'sleeping'." }, "human_like": "When a work call ends and you are on call and present, it will turn off the bedroom lights and set the sleep state to sleeping if it was previously paused.", "complexity": "medium" } }, { "id": "work_phone_caller_lookup", "result": { "structured": "TRIGGER: When Work Phone Caller [input_text.work_phone_caller] changes state. CONDITIONS: (The new state of the trigger is not empty, 'unavailable', or 'unknown') AND (Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] is ringing OR offhook). ACTIONS: Set variable 'phone_number' to the last 8 characters of the state of Work Phone Caller [input_text.work_phone_caller]. Execute script 'puzzel_lookup_caller' with the phone number, storing the result in variable 'caller'. Execute script 'puzzel_get_current_request', storing the result in variable 'puzzel_request'. Set variable 'current_request' to the value of 'puzzel_request' or an empty dictionary. Set variable 'actual_phone_number' to the 'phone_number' from 'current_request' if it exists, otherwise use the 'phone_number' variable. Set variable 'actual_caller' to the 'caller' from 'current_request' if it exists, otherwise use the 'caller' variable. Set variable 'line' to the 'name' from the nested 'caller' object within 'caller' if 'current_request' has a 'phone_number' key, otherwise set to an empty string. Fire the 'work_call_received' event with data containing the actual phone number, caller info, and line.", "natural_language": { "trigger": "Whenever the text input for the Work Phone Caller [input_text.work_phone_caller] is updated.", "conditions": "The new value entered for the caller is not empty, 'unavailable', or 'unknown', and the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] indicates that the phone is either ringing or offhook.", "action": "The automation extracts the last 8 digits of the phone number from the input text. It then performs a caller lookup using a script and retrieves any current request information from another script. It processes these results to determine the final phone number and caller details to use. Finally, it fires an event named 'work_call_received' containing the resolved phone number, caller information, and a line identifier." }, "human_like": "Looks up and processes caller information for incoming work phone calls when a number is entered and the phone is active.", "complexity": "medium" } }, { "id": "work_call_picked_up", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to 'offhook'. CONDITIONS: None. ACTIONS: Turn on Work Phone Picked Up [input_boolean.work_phone_picked_up].", "natural_language": { "trigger": "When the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes to the 'offhook' state, indicating the phone has been picked up.", "conditions": "There are no additional conditions that must be met.", "action": "Sets the Work Phone Picked Up [input_boolean.work_phone_picked_up] status to on." }, "human_like": "Tracks when the work phone is picked up by turning on a status indicator.", "complexity": "low" } }, { "id": "work_call_ended", "result": { "structured": "TRIGGER: When Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes from ringing OR offhook to idle. CONDITIONS: None. ACTIONS: Fire the event work_call_ended with call_info data derived from Current Work Call [sensor.current_work_call] and Work Phone Picked Up [input_boolean.work_phone_picked_up], then clear the Work Phone Caller [input_text.work_phone_caller] text field, and finally turn off Work Phone Picked Up [input_boolean.work_phone_picked_up].", "natural_language": { "trigger": "When the Arbejdstelefon Phone State [sensor.arbejdstelefon_phone_state] changes from either ringing or offhook to idle, indicating a work call has ended.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "It first fires a custom event named 'work_call_ended', which includes detailed information about the call such as the phone number, formatted number, caller information, line, start time, and whether the call was picked up. Then, it clears the text field for Work Phone Caller [input_text.work_phone_caller] and turns off the Work Phone Picked Up [input_boolean.work_phone_picked_up] indicator." }, "human_like": "Cleans up work phone call information and resets indicators when a work call ends.", "complexity": "medium" } }, { "id": "notify_work_call", "result": { "structured": "TRIGGER: When Current Work Call [sensor.current_work_call] changes state. CONDITIONS: The trigger is defined AND the trigger has a to_state AND the to_state has a state AND the to_state has attributes AND the to_state.state is not 'unknown', 'unavailable', or an empty string. ACTIONS: If the trigger.to_state.attributes.caller_info exists and is not empty, then set variables (caller, name, title, email, organization, formatted_phone, line) from the attributes, and send a notification to mobile_app_arbejdstelefon with the caller details and a notification to Telegram darkfox notify [notify.telegram_darkfox] with the caller details. Otherwise, send a notification to Telegram darkfox notify [notify.telegram_darkfox] stating the call is from an unknown number.", "natural_language": { "trigger": "Whenever the state of the Current Work Call [sensor.current_work_call] changes.", "conditions": "The automation only proceeds if the state change is valid, meaning the new state is not 'unknown', 'unavailable', or empty, and all necessary trigger data is present.", "action": "If the call has detailed caller information, it extracts the caller's name, title, email, organization, phone number, and line. It then sends a high-priority notification to a mobile app and a message to Telegram darkfox notify [notify.telegram_darkfox] with these details. If no caller information is available, it sends a Telegram message stating the work call is from an unknown number." }, "human_like": "Sends notifications for incoming work calls, providing detailed caller information when available or alerting about an unknown caller.", "complexity": "medium" } }, { "id": "88f231b1-3ece-4832-89da-698a699887ce", "result": { "structured": "TRIGGER: When Rook Presence [binary_sensor.rook_presence] changes from on to off OR when Rook Presence [binary_sensor.rook_presence] changes from off to on. CONDITIONS: None. ACTIONS: Execute script debug_notification with data: message 'Presence: {{ states('binary_sensor.rook_presence') }}', title 'Presence'.", "natural_language": { "trigger": "Whenever the Rook Presence [binary_sensor.rook_presence] sensor changes its state, either from present (on) to not present (off) or from not present (off) to present (on).", "conditions": "There are no additional conditions that need to be met.", "action": "Sends a debug notification with a title of 'Presence' and a message containing the current state of the Rook Presence sensor." }, "human_like": "Sends a notification whenever the presence sensor detects someone arriving or leaving.", "complexity": "low" } }, { "id": "86c36bf4-87dd-4a33-8f71-19ae84b98426", "result": { "structured": "TRIGGER: When Rook Home Soon [binary_sensor.rook_home_soon] changes from on to off OR When Rook Home Soon [binary_sensor.rook_home_soon] changes from off to on. CONDITIONS: None. ACTIONS: Execute script.debug_notification with data: message 'Home Soon: {{ states(''binary_sensor.rook_home_soon'') }}' and title 'Home Soon'.", "natural_language": { "trigger": "Whenever the Rook Home Soon [binary_sensor.rook_home_soon] sensor changes its state, either from on to off or from off to on.", "conditions": "There are no conditions that must be met.", "action": "Sends a debug notification using the script.debug_notification service. The notification's title is 'Home Soon' and its message includes the current state of the Rook Home Soon sensor." }, "human_like": "Sends a notification whenever the 'Home Soon' sensor changes state, showing its current value for debugging purposes.", "complexity": "low" } }, { "id": "533afc86-936c-45bc-92eb-dbb2e2a3a66e", "result": { "structured": "TRIGGER: When Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] changes to off. CONDITIONS: Guests input boolean [input_boolean.guests] is off. ACTIONS: For each entity in the group.away_power_saving_devices entity list, turn off that entity, continuing on any errors.", "natural_language": { "trigger": "When the Rook presence delayed binary sensor [binary_sensor.rook_presence_delayed] indicates that presence is no longer detected.", "conditions": "The Guests input boolean [input_boolean.guests] must be off, meaning no guests are present.", "action": "Iterates through all devices in the 'away_power_saving_devices' group and turns each one off, ignoring any errors that occur during the process." }, "human_like": "Turns off power-saving devices when the house is empty and no guests are present.", "complexity": "medium" } }, { "id": "bfa2d56c-21c2-4d9f-9dfb-abe37e55e8d1", "result": { "structured": "TRIGGER: When Rook Presence [binary_sensor.rook_presence] changes to 'on'. CONDITIONS: None. ACTIONS: For each entity in the group 'home_power_saving_devices', turn it on, and continue even if an error occurs for any individual device.", "natural_language": { "trigger": "When the Rook Presence [binary_sensor.rook_presence] sensor detects presence and changes its state to 'on'.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Turns on every device that is a member of the 'home_power_saving_devices' group. If turning on a specific device fails, the automation continues to try turning on the remaining devices in the group." }, "human_like": "Turns on all power-saving devices in the home when someone is detected as present.", "complexity": "medium" } }, { "id": "rook_state_machine", "result": { "structured": "TRIGGER: When an event rook_state_change occurs. CONDITIONS: None. ACTIONS: If the new_state from the event is in the allowed_transitions list for the current_state of Rook State [input_select.rook_state], then set Rook State Changed [input_datetime.rook_state_changed] to the current timestamp and change Rook State [input_select.rook_state] to the new_state. Otherwise, run script.debug_notification with a message indicating an invalid state transition.", "natural_language": { "trigger": "Whenever a custom event named 'rook_state_change' is received.", "conditions": "There are no explicit conditions; the automation evaluates the event data directly.", "action": "The automation checks if the new state provided in the event is a valid transition from the current Rook State [input_select.rook_state], based on a predefined list of allowed transitions. If it is valid, it updates the timestamp in Rook State Changed [input_datetime.rook_state_changed] and changes the Rook State [input_select.rook_state] to the new state. If the transition is not allowed, it sends a debug notification reporting the invalid attempt." }, "human_like": "Manages the Rook state machine by allowing only predefined state transitions and logging changes or invalid attempts.", "complexity": "medium" } }, { "id": "c2e74123-6fe3-43c6-bf7c-e0af3fab0ed7", "result": { "structured": "TRIGGER: When Rook State Changed Minutes Ago [sensor.rook_state_changed_minutes_ago] is above 5. CONDITIONS: Rook State [input_select.rook_state] is just_arrived. ACTIONS: Fire rook_state_change event with state: home.", "natural_language": { "trigger": "When the sensor tracking how many minutes ago the state changed [sensor.rook_state_changed_minutes_ago] reports a value greater than 5.", "conditions": "If the current Rook State [input_select.rook_state] is set to 'just_arrived'.", "action": "Triggers a custom event named 'rook_state_change' with the data indicating the new state is 'home'." }, "human_like": "Changes the system state to 'home' a few minutes after arriving, if the state hasn't been updated recently.", "complexity": "low" } }, { "id": "44ae4efa-54f0-439e-9b68-fa2caaaf3294", "result": { "structured": "TRIGGER: When Rook State Changed Minutes Ago [sensor.rook_state_changed_minutes_ago] is above 5. CONDITIONS: Rook State [input_select.rook_state] is 'leaving'. ACTIONS: Fire event 'rook_state_change' with event data state: 'just_left'.", "natural_language": { "trigger": "When the sensor tracking how many minutes ago the Rook state changed [sensor.rook_state_changed_minutes_ago] reports a value greater than 5.", "conditions": "If the current Rook State [input_select.rook_state] is set to 'leaving'.", "action": "Triggers a custom event named 'rook_state_change' and sets the new state within the event data to 'just_left'." }, "human_like": "Advances the Rook state from 'leaving' to 'just_left' after more than five minutes have passed since the last state change.", "complexity": "low" } }, { "id": "ca164f86-7ee5-4001-b705-c0c1585472cf", "result": { "structured": "TRIGGER: When Rook State Changed Minutes Ago [sensor.rook_state_changed_minutes_ago] is above 30. CONDITIONS: Rook State [input_select.rook_state] is just_left. ACTIONS: Fire event rook_state_change with data state set to away.", "natural_language": { "trigger": "When the sensor tracking how many minutes ago the Rook state changed [sensor.rook_state_changed_minutes_ago] reports a value greater than 30.", "conditions": "The current Rook State [input_select.rook_state] must be set to 'just_left'.", "action": "Fires a custom event named 'rook_state_change' with the new state set to 'away'." }, "human_like": "Changes the Rook state to 'away' if it has been 'just_left' for more than 30 minutes.", "complexity": "low" } }, { "id": "64d9c2af-8404-404c-ae18-b86cd3d98a94", "result": { "structured": "TRIGGER: When Rook State Changed Minutes Ago [sensor.rook_state_changed_minutes_ago] is above 1080. CONDITIONS: Rook State [input_select.rook_state] is away. ACTIONS: Fire the rook_state_change event with state data 'away_long'.", "natural_language": { "trigger": "When the sensor tracking how long ago the state changed, Rook State Changed Minutes Ago [sensor.rook_state_changed_minutes_ago], reports a value greater than 1080 minutes (18 hours).", "conditions": "The current Rook State [input_select.rook_state] must be set to 'away'.", "action": "Triggers a custom event named 'rook_state_change' and provides the new state 'away_long' as event data." }, "human_like": "Changes the system's 'away' state to 'away_long' after it has been in the 'away' state for more than 18 hours.", "complexity": "low" } }, { "id": "update_puzzel_user_info", "result": { "structured": "TRIGGER: When Puzzel Login [sensor.puzzel_login] changes state OR when Home Assistant starts. CONDITIONS: None. ACTIONS: Wait 1 second, then update Puzzel User [sensor.puzzel_user], wait 1 second, then update Puzzel User Details [sensor.puzzel_user_details].", "natural_language": { "trigger": "When the state of the Puzzel Login [sensor.puzzel_login] sensor changes, or when the Home Assistant system starts up.", "conditions": "There are no conditions for this automation.", "action": "After a one-second delay, it refreshes the data for the Puzzel User [sensor.puzzel_user] sensor. It then waits another second before refreshing the data for the Puzzel User Details [sensor.puzzel_user_details] sensor." }, "human_like": "Refreshes user information from the Puzzel system when a login status changes or when Home Assistant restarts.", "complexity": "low" } }, { "id": "0a2b75b8-58d4-4dce-8894-fb09bd8aba6b", "result": { "structured": "TRIGGER: Every 5 seconds (time pattern on seconds). CONDITIONS: Puzzel Status [binary_sensor.puzzel_status] is on. ACTIONS: Update the entities sensor.puzzel_user_status [sensor.puzzel_user_status] and sensor.puzzel_user_details [sensor.puzzel_user_details].", "natural_language": { "trigger": "Every five seconds.", "conditions": "If the Puzzel Status [binary_sensor.puzzel_status] is currently on.", "action": "Forces an update of the Puzzel User Status [sensor.puzzel_user_status] and Puzzel User Details [sensor.puzzel_user_details] sensors to fetch the latest data." }, "human_like": "Refreshes Puzzel user data every few seconds while the user is logged in.", "complexity": "low" } }, { "id": "7194575a-e2c6-4c54-b081-847fdf8056d2", "result": { "structured": "TRIGGER: When Puzzel User Status [sensor.puzzel_user_status] changes state. CONDITIONS: None. ACTIONS: Update the entity Puzzel User Requests [sensor.puzzel_user_requests].", "natural_language": { "trigger": "Whenever the state of the Puzzel User Status [sensor.puzzel_user_status] sensor changes.", "conditions": "There are no conditions that must be met.", "action": "Forces an immediate update of the Puzzel User Requests [sensor.puzzel_user_requests] sensor." }, "human_like": "Updates the Puzzel user requests sensor whenever the user status changes.", "complexity": "low" } }, { "id": "puzzel_state_confirmation", "result": { "structured": "TRIGGER: When Puzzel Profil [sensor.puzzel_profil] changes state, but not from unknown or unavailable to unknown or unavailable. OR When the state attribute of Puzzel Status [binary_sensor.puzzel_status] changes, but not from unknown or unavailable to unknown or unavailable. CONDITIONS: Both Puzzel State [sensor.puzzel_state] and Puzzel Profil [sensor.puzzel_profil] have a known value (are not 'unknown' or 'unavailable'). ACTIONS: Wait for 5 seconds, then execute Notify darkphone script [script.notify_darkphone] with a message. The message is: If Puzzel Status [binary_sensor.puzzel_status] is 'on', then 'Logged into Puzzel - [current state of sensor.puzzel_ko]. Status: [current state of sensor.puzzel_state]'. Otherwise, 'Logged off Puzzel'.", "natural_language": { "trigger": "This automation triggers when either the Puzzel Profil [sensor.puzzel_profil] sensor changes its state, or when the state attribute of the Puzzel Status [binary_sensor.puzzel_status] sensor changes. It specifically ignores any changes where the state is transitioning from or to an 'unknown' or 'unavailable' status.", "conditions": "For the automation to proceed, both the Puzzel State [sensor.puzzel_state] and the Puzzel Profil [sensor.puzzel_profil] sensors must have a valid, known value (i.e., they are not in an 'unknown' or 'unavailable' state).", "action": "After a 5-second delay, the automation runs a script called Notify darkphone script [script.notify_darkphone]. The script sends a notification message. If the Puzzel Status [binary_sensor.puzzel_status] is 'on', the message indicates the user is logged into Puzzel, showing their current profile and status. If the status is not 'on', the message simply states that the user is logged off Puzzel." }, "human_like": "Sends a notification about Puzzel login status changes, confirming the user's profile and state after a short delay.", "complexity": "medium" } }, { "id": "puzzel_state_notification", "result": { "structured": "TRIGGER: When Puzzel Profil [sensor.puzzel_profil] changes state OR when the attribute 'state' of Puzzel State [sensor.puzzel_state] changes. CONDITIONS: None. ACTIONS: Send a notification to mobile_app_arbejdstelefon with a title and message. The title is 'Puzzel Status: Logget af' if Puzzel Profil [sensor.puzzel_profil] is 'Logget af', otherwise 'Puzzel Status: Logget på'. The message includes the current state of Puzzel Profil [sensor.puzzel_profil] and Puzzel State [sensor.puzzel_state]. The notification includes a tag 'puzzel_status', channel 'Puzzel Status', importance low, ttl 0, priority high, persistent true, clickAction noAction, and a dynamic icon based on the state of Puzzel State [sensor.puzzel_state]. The notification also provides three actions: one to toggle login/logout, one to toggle pause/available, and one to open the work menu.", "natural_language": { "trigger": "The automation triggers whenever the Puzzel Profil [sensor.puzzel_profil] changes its state, or when the 'state' attribute of the Puzzel State [sensor.puzzel_state] sensor changes.", "conditions": "There are no conditions that must be met for the automation to run.", "action": "Sends a notification to the mobile app 'arbejdstelefon'. The notification's title indicates whether the user is logged in or out based on the Puzzel Profil [sensor.puzzel_profil] state. The message shows the current profile and status. The notification is configured to be persistent, high priority, and includes a dynamic icon that changes depending on the Puzzel State [sensor.puzzel_state] (e.g., a phone icon for available, pause icon for pause, etc.). It also provides quick action buttons to toggle login/logout, toggle pause/available status, and open the work menu in the Lovelace interface." }, "human_like": "Sends a phone notification with the current work phone system status and provides quick buttons to change your availability or open the work dashboard.", "complexity": "medium" } }, { "id": "notification_action_puzzel_switch", "result": { "structured": "TRIGGER: When a mobile app notification action event [mobile_app_notification_action] occurs with the action 'puzzel_switch'. CONDITIONS: None. ACTIONS: Toggle the Puzzel [switch.puzzel] switch.", "natural_language": { "trigger": "When a notification action named 'puzzel_switch' is received from the mobile app.", "conditions": "There are no conditions that must be met.", "action": "Toggles the state of the Puzzel [switch.puzzel] switch." }, "human_like": "Toggles the Puzzel switch when a specific notification action is pressed on a mobile device.", "complexity": "low" } }, { "id": "notification_action_puzzel_pause", "result": { "structured": "TRIGGER: When a mobile app notification action event [mobile_app_notification_action] occurs with the action data equal to 'puzzel_pause'. CONDITIONS: None. ACTIONS: Toggle the state of Puzzel Pause [switch.puzzel_pause].", "natural_language": { "trigger": "When a notification action from a mobile app is received, specifically when the action is 'puzzel_pause'.", "conditions": "There are no conditions that need to be met.", "action": "Toggles the Puzzel Pause [switch.puzzel_pause] switch, turning it on if it was off, or off if it was on." }, "human_like": "Toggles a switch when a specific notification action is pressed on a mobile device.", "complexity": "low" } }, { "id": "telegram_bot_puzzel_menu", "result": { "structured": "TRIGGER: When Telegram callback event [telegram_callback] occurs with command /puzzel OR When Telegram command event [telegram_command] occurs with command /puzzel. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with a dynamic message and inline keyboard. The message is: If Puzzel Profil [sensor.puzzel_profil] state is 'Logget af', then 'Logget af Puzzel', else 'Logget på Puzzel - [current state of Puzzel Profil]. Status: [current state of Puzzel State]'. The inline keyboard is: If Puzzel Profil [sensor.puzzel_profil] state is 'Logget af', then a list of buttons generated from the available_profiles attribute of Puzzel Ko [sensor.puzzel_ko], each formatted as 'profile_name:/puzzel_login profile_name'. Else, a list of buttons: 'Log af:/puzzel_log_off', 'Skift kø:/puzzel_login', 'Ledig:/puzzel_pause off', 'Pause:/puzzel_pause on'.", "natural_language": { "trigger": "When a Telegram callback or command event is received with the specific command '/puzzel'.", "conditions": "There are no conditions that must be met; the automation runs immediately upon the trigger.", "action": "Sends a notification to the user via the Telegram darkfox notify service. The message content and the interactive menu buttons change based on the current login status. If the Puzzel Profil sensor shows 'Logget af' (logged off), the message states 'Logget af Puzzel' and the menu shows buttons for each available Puzzel profile to log in. If a profile is logged in, the message shows the current profile name and status from the Puzzel State sensor, and the menu offers options to log off, switch queue, set status to available, or set status to paused." }, "human_like": "Shows a dynamic Puzzel status menu in Telegram, allowing the user to see their current login state and control it with interactive buttons.", "complexity": "medium" } }, { "id": "telegram_bot_log_off_puzzel", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command /puzzel_log_off OR when a Telegram command event [telegram_command] occurs with command /puzzel_log_off. CONDITIONS: None. ACTIONS: Answer the Telegram callback query with message 'Logger af Puzzel...' AND run script puzzel_log_off.", "natural_language": { "trigger": "When a Telegram callback event [telegram_callback] or a Telegram command event [telegram_command] is received with the command /puzzel_log_off.", "conditions": "There are no conditions for this automation.", "action": "Sends a response message 'Logger af Puzzel...' to the Telegram callback and then runs the script puzzel_log_off." }, "human_like": "Handles Telegram commands to log off from Puzzel by responding and running a log-off script.", "complexity": "low" } }, { "id": "telegram_bot_log_on_puzzel", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] with command /puzzel_login occurs OR when a Telegram command event [telegram_command] with command /puzzel_login occurs. CONDITIONS: None. ACTIONS: Choose: If the trigger event data does NOT contain 'args', then send a message via Telegram darkfox notify [notify.telegram_darkfox] asking 'Log på Puzzel?' with an inline keyboard built from the sorted available_profiles attribute of Puzzel Ko [sensor.puzzel_ko]. Otherwise (default), set variable queue_id to the first argument (converted to integer) and variable profile to the profile from Puzzel Ko's [sensor.puzzel_ko] available_profiles where id equals queue_id. Then choose: If profile is not None, answer the callback query with 'Logger på [profile.name]...' and execute script.puzzel_log_on with queue_id. Otherwise (default), answer the callback query with 'Kø ikke fundet' and trigger automation Telegram Bot Log On Puzzel [automation.telegram_bot_log_on_puzzel] again.", "natural_language": { "trigger": "The automation is triggered either by a Telegram callback or a direct Telegram command, both containing the specific command '/puzzel_login'.", "conditions": "There are no explicit conditions; the automation proceeds directly to actions based on the trigger event data.", "action": "If the command was sent without any arguments, the bot replies with a message asking 'Log på Puzzel?' and presents an inline keyboard listing the available profiles from the Puzzel Ko [sensor.puzzel_ko] sensor. If an argument was provided, the bot attempts to find a matching profile. If found, it acknowledges the selection with a message, logs into the specified Puzzel queue, and runs a script. If the profile is not found, it replies with an error message and re-triggers itself to offer the profile list again." }, "human_like": "This automation handles Telegram commands for logging into Puzzel, either by listing available profiles or processing a selected profile to initiate login.", "complexity": "medium" } }, { "id": "telegram_bot_pause_puzzel", "result": { "structured": "TRIGGER: When a Telegram callback event [telegram_callback] occurs with command /puzzel_pause OR when a Telegram command event [telegram_command] occurs with command /puzzel_pause. CONDITIONS: None. ACTIONS: If the trigger event has no arguments, then answer the callback query with message 'Sætter på pause...' and run script.puzzel_pause_on. Otherwise, if the first argument of the trigger event is 'off', then answer the callback query with message 'Sætter ledig...' and run script.puzzel_pause_off.", "natural_language": { "trigger": "When a Telegram callback or command event is received with the specific command '/puzzel_pause'.", "conditions": "There are no additional conditions that must be met.", "action": "Depending on the arguments provided with the event, the automation will respond differently. If no arguments are provided, it will reply with 'Sætter på pause...' and activate the 'puzzel_pause_on' script. If the first argument is 'off', it will reply with 'Sætter ledig...' and activate the 'puzzel_pause_off' script." }, "human_like": "This automation handles Telegram commands to pause or resume a 'Puzzel' activity, sending appropriate responses and triggering the corresponding scripts.", "complexity": "medium" } }, { "id": "switch_pc_sound_to_vr", "result": { "structured": "TRIGGER: When Quest In Use [binary_sensor.quest_in_use] becomes on. CONDITIONS: None. ACTIONS: Press Rook PC VR Sound [button.rook_pc_vr_sound].", "natural_language": { "trigger": "When the Quest In Use [binary_sensor.quest_in_use] sensor indicates the VR headset is in use.", "conditions": "There are no additional conditions that must be met.", "action": "Press the Rook PC VR Sound [button.rook_pc_vr_sound] button to switch the PC audio output." }, "human_like": "Automatically switches the PC audio to VR when the VR headset is turned on.", "complexity": "low" } }, { "id": "5cb9a551-a39e-462b-9a7f-ebc36711173d", "result": { "structured": "TRIGGER: When an MQTT message is received on the topic 'SleepAsAndroid'. CONDITIONS: None. ACTIONS: Fire a Home Assistant event named sleep_as_android [sleep_as_android] with event data: event = the 'event' field from the MQTT payload, value1 = the 'value1' field from the MQTT payload if it exists, value2 = the 'value2' field from the MQTT payload if it exists, value3 = the 'value3' field from the MQTT payload if it exists.", "natural_language": { "trigger": "When an MQTT message is published to the 'SleepAsAndroid' topic.", "conditions": "There are no conditions that must be met.", "action": "Creates a Home Assistant event called sleep_as_android [sleep_as_android]. The event includes data extracted from the MQTT message: the main event type, and up to three optional values (value1, value2, value3) if they were present in the original message." }, "human_like": "Forwards sleep tracking events from the Sleep as Android app into Home Assistant as a local event.", "complexity": "low" } }, { "id": "7984e11c-2846-4faa-aed7-ee439127b9fd", "result": { "structured": "TRIGGER: When a webhook request is received at the endpoint 'secret sleep_as_android_webhook' via GET or POST. CONDITIONS: None. ACTIONS: Fire the event Sleep as Android event [sleep_as_android] with event data fields: 'event' set to the 'event' value from the webhook JSON payload, and optionally 'value1', 'value2', 'value3' set to their respective values from the webhook JSON payload if they exist.", "natural_language": { "trigger": "When the Home Assistant webhook endpoint named 'secret sleep_as_android_webhook' receives an incoming HTTP request, either a GET or a POST.", "conditions": "There are no conditions that must be met for the action to run.", "action": "It triggers a custom event called Sleep as Android event [sleep_as_android]. The event includes data from the webhook, specifically passing through the 'event' type and any optional 'value1', 'value2', or 'value3' parameters that were sent." }, "human_like": "This automation listens for webhook calls from the Sleep as Android app and forwards the data as a local event for other automations to use.", "complexity": "low" } }, { "id": "101fbdda-3b78-42ea-aa9d-9e8e41200e07", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] of type 'time_to_bed_alarm_alert' occurs. CONDITIONS: Sleep As Android State [input_select.sleep_as_android_state] is set to 'awake'. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to 'bedtime'.", "natural_language": { "trigger": "When the Sleep as Android app sends a 'time_to_bed_alarm_alert' event.", "conditions": "The Sleep As Android State [input_select.sleep_as_android_state] must currently be set to 'awake'.", "action": "Changes the Sleep As Android State [input_select.sleep_as_android_state] to 'bedtime'." }, "human_like": "Updates the sleep tracking state to 'bedtime' when a bedtime alarm alert is received from the Sleep as Android app, but only if the current state is 'awake'.", "complexity": "low" } }, { "id": "fc21b034-8ae6-4492-bd54-049929dcb983", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'sleep_tracking_started' OR when a Sleep as Android event [sleep_as_android] occurs with event data 'sleep_tracking_resumed'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to the option 'sleeping'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has started or has been resumed.", "conditions": "There are no conditions that must be met.", "action": "Updates the Sleep As Android State [input_select.sleep_as_android_state] selection to 'sleeping'." }, "human_like": "Updates the sleep tracking state to 'sleeping' when sleep tracking begins or resumes in the Sleep as Android app.", "complexity": "low" } }, { "id": "39894ea0-3b35-4ba8-8f0a-1e4cf745d525", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'sleep_tracking_stopped'. CONDITIONS: None. ACTIONS: Choose based on conditions: IF (time is between 20:00:00 and 04:00:00) AND (Sleep As Android State [input_select.sleep_as_android_state] is sleeping OR Sleep As Android State [input_select.sleep_as_android_state] is paused) THEN set Sleep As Android State [input_select.sleep_as_android_state] to bedtime. OTHERWISE set Sleep As Android State [input_select.sleep_as_android_state] to awake.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has stopped.", "conditions": "There are no separate conditions; the decision logic is part of the action sequence.", "action": "The automation checks if the current time is between 8:00 PM and 4:00 AM, and if the Sleep As Android State [input_select.sleep_as_android_state] is currently set to 'sleeping' or 'paused'. If both are true, it sets the state to 'bedtime'. Otherwise, it sets the state to 'awake'." }, "human_like": "Updates the sleep tracking state when sleep monitoring stops, setting it to 'bedtime' if it's nighttime and sleep was in progress, otherwise marking you as 'awake'.", "complexity": "medium" } }, { "id": "c26bb668-9674-4a71-9936-08689fd67fb1", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'sleep_tracking_paused'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to the option 'paused'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has been paused.", "conditions": "There are no additional conditions that must be met.", "action": "Updates the Sleep As Android State [input_select.sleep_as_android_state] selector to show the status as 'paused'." }, "human_like": "Updates a status indicator to show when sleep tracking is paused via the Sleep as Android app.", "complexity": "low" } }, { "id": "83b0f739-65dc-4750-95ec-65b17f0b867c", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'smart_period'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to option 'smart wake'.", "natural_language": { "trigger": "When the Sleep as Android app sends a 'smart_period' event.", "conditions": "There are no conditions that must be met.", "action": "Changes the Sleep As Android State [input_select.sleep_as_android_state] to the 'smart wake' option." }, "human_like": "Updates the Sleep As Android state to 'smart wake' when the app enters its smart wake-up period.", "complexity": "low" } }, { "id": "89bc0e9f-aea6-4f3b-a356-03053b387578", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_alert_start'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to the option 'alarm'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that an alarm has started.", "conditions": "There are no conditions that must be met.", "action": "Update the Sleep As Android State [input_select.sleep_as_android_state] selector to show 'alarm'." }, "human_like": "Updates a status indicator to show 'alarm' when a Sleep as Android alarm starts.", "complexity": "low" } }, { "id": "ca190425-e85b-4f14-b4ec-8bb7d0063f55", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_snooze_clicked'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to the option 'snoozing'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating the alarm snooze button was clicked.", "conditions": "There are no conditions for this automation.", "action": "Update the Sleep As Android State [input_select.sleep_as_android_state] selector to show 'snoozing'." }, "human_like": "Updates the Sleep As Android state to 'snoozing' when the alarm snooze button is pressed in the app.", "complexity": "low" } }, { "id": "2777f4fa-1631-46d6-9755-a0515e33da0f", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_alert_dismiss' OR when a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_skip_next' OR when a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_snooze_cancelled' OR when a Sleep as Android event [sleep_as_android] occurs with event data 'sleep_tracking_stopped'. CONDITIONS: None. ACTIONS: Set Sleep As Android State [input_select.sleep_as_android_state] to 'awake'.", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating an alarm was dismissed, an alarm was skipped, an alarm snooze was cancelled, or sleep tracking has stopped.", "conditions": "There are no additional conditions.", "action": "Updates the Sleep As Android State [input_select.sleep_as_android_state] to 'awake'." }, "human_like": "Sets the sleep tracking state to 'awake' when you dismiss, skip, or cancel an alarm, or when sleep tracking ends.", "complexity": "low" } }, { "id": "899e638d-4471-4168-94ee-8a9e51885a1e", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with event data 'alarm_snooze_clicked'. CONDITIONS: None. ACTIONS: Reset Snooze Counter [counter.snooze_counter].", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating the alarm snooze button was clicked.", "conditions": "There are no conditions that must be met.", "action": "Resets the Snooze Counter [counter.snooze_counter] back to zero." }, "human_like": "Resets the snooze counter whenever the snooze button is pressed in the Sleep as Android app.", "complexity": "low" } }, { "id": "247c8b50-72be-467b-95bf-73ebebaaa4ab", "result": { "structured": "TRIGGER: When a Sleep as Android event [sleep_as_android] occurs with the event data 'sleep_tracking_started'. CONDITIONS: None. ACTIONS: Increment Snooze Counter [counter.snooze_counter].", "natural_language": { "trigger": "When the Sleep as Android app sends an event indicating that sleep tracking has started.", "conditions": "There are no conditions for this automation.", "action": "Increment the Snooze Counter [counter.snooze_counter] by one." }, "human_like": "Increments a counter each time sleep tracking starts via the Sleep as Android app.", "complexity": "low" } }, { "id": "2a88ce77-de4b-4454-9e57-b69ac7deba33", "result": { "structured": "TRIGGER: When Aircondition [climate.aircondition] changes to any state except 'off'. CONDITIONS: Aircondition Afbryder [switch.aircondition_afbryder] is off. ACTIONS: Turn on Aircondition Afbryder [switch.aircondition_afbryder], wait 5 seconds, then turn on Aircondition [climate.aircondition].", "natural_language": { "trigger": "When the Aircondition [climate.aircondition] changes its state to any mode other than 'off'.", "conditions": "The Aircondition Afbryder [switch.aircondition_afbryder] is currently switched off.", "action": "Turns on the Aircondition Afbryder [switch.aircondition_afbryder], waits for 5 seconds, and then turns on the Aircondition [climate.aircondition]." }, "human_like": "Ensures the AC power switch is turned on and the climate device is started when the air conditioner is set to an active mode.", "complexity": "low" } }, { "id": "adjust_speaker_group_volume", "result": { "structured": "TRIGGER: When any of the following input numbers changes state: Stue Group Volume [input_number.stue_group_volume], Kokken Group Volume [input_number.kokken_group_volume], Kontor Group Volume [input_number.kontor_group_volume], Sovevaerelse Group Volume [input_number.sovevaerelse_group_volume], Badevaerelse Group Volume [input_number.badevaerelse_group_volume], or Roam Group Volume [input_number.roam_group_volume]. CONDITIONS: None. ACTIONS: For each member in the media player group associated with the changed input number, set the volume of that media player to the new value of the input number (converted from a percentage to a decimal level).", "natural_language": { "trigger": "Whenever the value of any of the volume control sliders (Stue Group Volume [input_number.stue_group_volume], Kokken Group Volume [input_number.kokken_group_volume], Kontor Group Volume [input_number.kontor_group_volume], Sovevaerelse Group Volume [input_number.sovevaerelse_group_volume], Badevaerelse Group Volume [input_number.badevaerelse_group_volume], or Roam Group Volume [input_number.roam_group_volume]) is changed.", "conditions": "There are no additional conditions that must be met.", "action": "For the specific speaker group whose volume slider was adjusted, the automation fetches all the individual media players that belong to that group. It then sets the volume level for each of those speakers to match the new value from the slider, converting the percentage value to a decimal volume level." }, "human_like": "This automation synchronizes the volume of all speakers in a group whenever the master volume slider for that group is adjusted.", "complexity": "medium" } }, { "id": "790eb451-80a1-4e6d-a02e-27bd51e3687f", "result": { "structured": "TRIGGER: When Kokken Tablet Battery Level [sensor.kokken_tablet_battery_level] is below 60 OR When Kokken Tablet Battery Level [sensor.kokken_tablet_battery_level] becomes unknown OR unavailable OR When Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] turns on. CONDITIONS: Kokken Tablet Battery Level [sensor.kokken_tablet_battery_level] is below 60. ACTIONS: Turn on Kokken Tablet Lader [switch.kokken_tablet_lader].", "natural_language": { "trigger": "The automation can start if the battery level of the kitchen tablet [sensor.kokken_tablet_battery_level] drops below 60%, if the battery level sensor becomes unknown or unavailable, or when Home Assistant finishes loading [binary_sensor.home_assistant_loaded].", "conditions": "The automation only proceeds if the kitchen tablet's battery level [sensor.kokken_tablet_battery_level] is confirmed to be below 60%.", "action": "It turns on the kitchen tablet charger [switch.kokken_tablet_lader]." }, "human_like": "Automatically starts charging the kitchen tablet when its battery is low, ensuring the charger is activated after Home Assistant restarts or if the battery sensor reports an issue.", "complexity": "medium" } }, { "id": "a4b4cf41-183f-4071-bd8a-00569dc76c16", "result": { "structured": "TRIGGER: When Kokken Tablet Battery Level [sensor.kokken_tablet_battery_level] is above 80% OR when Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] becomes 'on'. CONDITIONS: Kokken Tablet Battery Level [sensor.kokken_tablet_battery_level] is above 80%. ACTIONS: Turn off Kokken Tablet Lader [switch.kokken_tablet_lader].", "natural_language": { "trigger": "When the battery level of the Kokken Tablet [sensor.kokken_tablet_battery_level] rises above 80%, or when the Home Assistant system finishes loading [binary_sensor.home_assistant_loaded].", "conditions": "The battery level of the Kokken Tablet [sensor.kokken_tablet_battery_level] must be above 80%.", "action": "Turns off the charger for the Kokken Tablet [switch.kokken_tablet_lader]." }, "human_like": "Turns off the kitchen tablet charger when its battery is sufficiently charged or when Home Assistant restarts, to prevent overcharging.", "complexity": "low" } }, { "id": "b74dbe2a-670d-41ef-9b20-25c070f4325b", "result": { "structured": "TRIGGER: When Gang Tablet Battery Level [sensor.gang_tablet_battery_level] is below 60 OR When Gang Tablet Battery Level [sensor.gang_tablet_battery_level] becomes unknown OR unavailable OR When Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] turns on. CONDITIONS: Gang Tablet Battery Level [sensor.gang_tablet_battery_level] is below 60. ACTIONS: Turn on Gang Tablet Lader [switch.gang_tablet_lader].", "natural_language": { "trigger": "When the Gang Tablet Battery Level [sensor.gang_tablet_battery_level] drops below 60%, or when its state becomes unknown or unavailable, or when the Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] reports that Home Assistant has finished loading.", "conditions": "The Gang Tablet Battery Level [sensor.gang_tablet_battery_level] must be below 60%.", "action": "Turns on the Gang Tablet Lader [switch.gang_tablet_lader] to start charging the tablet." }, "human_like": "Automatically starts charging the hallway tablet when its battery is low or its status is unclear, ensuring it's ready for use.", "complexity": "low" } }, { "id": "9b1665fb-5a02-4489-8a9d-ff49d8afcb14", "result": { "structured": "TRIGGER: When Gang Tablet Battery Level [sensor.gang_tablet_battery_level] is above 80% OR when Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] becomes on. CONDITIONS: Gang Tablet Battery Level [sensor.gang_tablet_battery_level] is above 80%. ACTIONS: Turn off Gang Tablet Lader [switch.gang_tablet_lader].", "natural_language": { "trigger": "When the Gang Tablet Battery Level [sensor.gang_tablet_battery_level] rises above 80%, or when the Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] reports that Home Assistant has finished loading.", "conditions": "The Gang Tablet Battery Level [sensor.gang_tablet_battery_level] must be above 80%.", "action": "Turns off the charger by switching off Gang Tablet Lader [switch.gang_tablet_lader]." }, "human_like": "Stops charging the hallway tablet when its battery level is high enough, or when Home Assistant restarts, to prevent overcharging.", "complexity": "low" } }, { "id": "restart_tado", "result": { "structured": "TRIGGER: Every 5 minutes (at minutes divisible by 5, seconds 0). CONDITIONS: Tado Hub Crashed [binary_sensor.tado_hub_crashed] is on AND remains on for 15 minutes. ACTIONS: Turn off Tado [switch.tado], then wait 60 seconds, then turn on Tado [switch.tado], then wait until Tado [device_tracker.tado] is home, then trigger the Set climate event [set_climate].", "natural_language": { "trigger": "The automation runs every five minutes, on the minute (when seconds are zero).", "conditions": "It only proceeds if the Tado Hub Crashed [binary_sensor.tado_hub_crashed] sensor has been in the 'on' state for a continuous period of 15 minutes.", "action": "It first turns off the Tado switch [switch.tado], waits for one minute, then turns the Tado switch back on. After that, it waits until the Tado device tracker [device_tracker.tado] reports a status of 'home'. Finally, it triggers the 'set_climate' event [set_climate]." }, "human_like": "Automatically restarts the Tado system if the hub has been reported as crashed for 15 minutes, and then restores the climate settings once it's back online.", "complexity": "medium" } }, { "id": "update_telegram_keyboard", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Send a notification via Telegram darkfox notify [notify.telegram_darkfox] with the message 'Home Assistant er genstartet' and a custom keyboard containing the buttons '/puzzel', '/bil', and '/destination'.", "natural_language": { "trigger": "When Home Assistant finishes starting up.", "conditions": "There are no conditions that must be met.", "action": "Sends a notification to the Telegram darkfox notify [notify.telegram_darkfox] service. The message will read 'Home Assistant er genstartet' (Home Assistant is restarted) and will include a custom keyboard with the options '/puzzel', '/bil', and '/destination'." }, "human_like": "Sends a Telegram notification with a custom keyboard when Home Assistant restarts.", "complexity": "low" } }, { "id": "handle_telegram_message", "result": { "structured": "TRIGGER: When a Telegram text message event occurs with a specific chat ID (secret telegram_darkfox_id). CONDITIONS: None. ACTIONS: Process the incoming message text through a conversation agent (agent_id: 4e0a875b09f8a19a405e1bf3e5c4adac) in Danish and store the response in variable 'agent', then send the agent's plain text response back to the same Telegram chat.", "natural_language": { "trigger": "When a Telegram text message is received from a specific, predefined chat.", "conditions": "There are no conditions that must be met.", "action": "The automation processes the received message using a Danish-language conversation agent and then automatically sends the agent's reply back to the same Telegram chat." }, "human_like": "Automatically replies to messages from a specific Telegram chat using a conversational AI assistant.", "complexity": "low" } }, { "id": "fedddc04-a5ac-4412-811d-b54d5f03cb0e", "result": { "structured": "TRIGGER: When a Telegram command event [telegram_command] with command /yt-dlp is received. CONDITIONS: None. ACTIONS: Execute shell command yt_dlp with the URL from the command text and send the resulting file to the Telegram chat that issued the command.", "natural_language": { "trigger": "When a user sends the '/yt-dlp' command via Telegram.", "conditions": "There are no additional conditions that need to be met.", "action": "The automation runs the yt-dlp shell command using the URL provided in the Telegram message, then sends the downloaded file back to the user in the same Telegram chat." }, "human_like": "Downloads a video from a URL sent via a Telegram command and sends the file back to the user.", "complexity": "low" } }, { "id": "light_profile_frontend_theme_setter", "result": { "structured": "TRIGGER: When Home Assistant starts OR When Light profile input select [input_select.light_profile] changes state OR When a template evaluates to a list of browser IDs from available browser_mod sensors. CONDITIONS: None (the automation uses a choose action with internal conditions). ACTIONS: Choose an action based on the state of Light profile input select [input_select.light_profile]. If state is Bright, set browser theme to light for the specified browser(s). If state is Dimmed, Ambient, Night, or Off, set browser theme to dark for the specified browser(s). Otherwise, set browser theme to auto for the specified browser(s). The browser_id variable is set to a list containing the browserID from the triggering template sensor if available, otherwise an empty list.", "natural_language": { "trigger": "The automation runs when Home Assistant first starts, when the Light profile input select [input_select.light_profile] is changed, or when a template detects that a browser_mod sensor becomes available. The template trigger builds a list of browser IDs from all available sensors matching a specific pattern.", "conditions": "This automation does not have global conditions. Instead, it uses a choose action to select different actions based on the current light profile.", "action": "Depending on the selected light profile, it changes the theme of connected browsers. If the profile is set to 'Bright', it sets the browser theme to light mode. If the profile is 'Dimmed', 'Ambient', 'Night', or 'Off', it sets the theme to dark mode. For any other profile state, it sets the theme to auto. The action targets specific browser IDs, which are determined from the trigger that fired." }, "human_like": "Automatically sets the dark or light theme for browser dashboards based on the selected overall lighting profile in the house.", "complexity": "medium" } }, { "id": "29f91918-2f1c-4968-a147-2de8df7555f4", "result": { "structured": "TRIGGER: When Next Travel Event [sensor.next_travel_event] remains in any state for 10 seconds. CONDITIONS: None. ACTIONS: 1. Execute script osm_geocoding_lookup with query parameter set to the location attribute of Next Travel Event [sensor.next_travel_event] and store the result in variable geocoded_data. 2. Set variable destination to the result of processing geocoded_data.location through the geocodejson_to_vw template function, or an empty object if geocoded_data.location is not present. 3. Fire event upcoming_travel_destination_coordinates with event_data containing the destination variable.", "natural_language": { "trigger": "When the Next Travel Event [sensor.next_travel_event] sensor remains in its current state for 10 seconds.", "conditions": "There are no conditions for this automation.", "action": "First, it runs a script called osm_geocoding_lookup to find geographic coordinates for the location stored in the Next Travel Event sensor. The result is saved. Then, it processes that result using a template to format the destination data. Finally, it fires a custom event named upcoming_travel_destination_coordinates, providing the processed destination information." }, "human_like": "Looks up and processes the geographic coordinates for your next travel destination whenever your travel plans are updated.", "complexity": "medium" } }, { "id": "e342768f-0119-453a-8301-201282f58103", "result": { "structured": "TRIGGER: Every 5 minutes (time pattern). CONDITIONS: Rook Next Scheduled Destination Leave Soon [binary_sensor.rook_next_scheduled_destination_leave_soon] is on. ACTIONS: If Upcoming travel location [sensor.upcoming_travel_location] has attribute 'mode' equal to 'driving', then update Rook Destination Duration In Traffic [sensor.rook_destination_duration_in_traffic]. Otherwise, if Upcoming travel location [sensor.upcoming_travel_location] has attribute 'mode' equal to 'transit', then update Rook Destination Transit Duration [sensor.rook_destination_transit_duration].", "natural_language": { "trigger": "The automation runs every five minutes.", "conditions": "The automation only proceeds if the Rook Next Scheduled Destination Leave Soon [binary_sensor.rook_next_scheduled_destination_leave_soon] sensor is in the 'on' state, indicating that the departure time for the next scheduled destination is approaching.", "action": "Depending on the travel mode of the upcoming trip, a specific sensor is updated. If the travel mode is 'driving', the Rook Destination Duration In Traffic [sensor.rook_destination_duration_in_traffic] sensor is refreshed. If the travel mode is 'transit', the Rook Destination Transit Duration [sensor.rook_destination_transit_duration] sensor is refreshed." }, "human_like": "Refreshes travel time information every five minutes when it's almost time to leave for a scheduled destination, ensuring the data is current for the chosen mode of transport.", "complexity": "medium" } }, { "id": "f4eb3d8f-daf0-487b-91d0-d0f8d89d6fa7", "result": { "structured": "TRIGGER: When the time pattern matches minutes divisible by 45 (i.e., every 45 minutes) OR when the state of Upcoming travel location [sensor.upcoming_travel_location] changes OR when the state of Rook Next Scheduled Destination Active [binary_sensor.rook_next_scheduled_destination_active] changes. CONDITIONS: Rook Next Scheduled Destination Active [binary_sensor.rook_next_scheduled_destination_active] is on. ACTIONS: If the attribute 'mode' of Upcoming travel location [sensor.upcoming_travel_location] is 'driving', then update the entity Rook Destination Duration In Traffic [sensor.rook_destination_duration_in_traffic]. If the attribute 'mode' of Upcoming travel location [sensor.upcoming_travel_location] is 'transit', then update the entity Rook Destination Transit Duration [sensor.rook_destination_transit_duration].", "natural_language": { "trigger": "The automation triggers every 45 minutes, or whenever there is a change in the Upcoming travel location [sensor.upcoming_travel_location] or the Rook Next Scheduled Destination Active [binary_sensor.rook_next_scheduled_destination_active] sensor.", "conditions": "The automation only proceeds if the Rook Next Scheduled Destination Active [binary_sensor.rook_next_scheduled_destination_active] is currently on.", "action": "Depending on the travel mode, it updates a specific sensor. If the upcoming travel mode is 'driving', it updates the Rook Destination Duration In Traffic [sensor.rook_destination_duration_in_traffic] sensor. If the mode is 'transit', it updates the Rook Destination Transit Duration [sensor.rook_destination_transit_duration] sensor." }, "human_like": "Updates travel duration sensors every 45 minutes or when travel plans change, but only if a scheduled destination is active.", "complexity": "medium" } }, { "id": "time_to_leave_notification", "result": { "structured": "TRIGGER: When Next scheduled leave in sensor [sensor.next_scheduled_leave_in] falls below 61 OR below 46 OR below 31 OR below 21 OR below 16 OR below 11 OR below 6 OR below 1. CONDITIONS: The previous state of the triggered entity is NOT 'unavailable' AND NOT 'unknown'. ACTIONS: Run Notify everywhere script [script.notify_everywhere] with a message: 'Tid til at tage afsted.' if the new state is less than 1, otherwise 'Tag afsted om X minutter.' where X is the integer value of the new state.", "natural_language": { "trigger": "When the Next scheduled leave in sensor [sensor.next_scheduled_leave_in] drops below any of the following thresholds: 60, 45, 30, 20, 15, 10, 5, or 0 minutes.", "conditions": "The automation only runs if the sensor's previous state was not 'unavailable' or 'unknown', ensuring it only acts on valid numeric changes.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere]. The message is 'Tid til at tage afsted.' (Time to leave) if the time is less than 1 minute, otherwise it states 'Tag afsted om X minutter.' (Leave in X minutes), where X is the number of minutes left." }, "human_like": "Sends escalating time-to-leave notifications as a scheduled departure time approaches, reminding you when it's time to go.", "complexity": "medium" } }, { "id": "c5dab2fa-93df-488e-ad02-5da4c458d497", "result": { "structured": "TRIGGER: When Chime TTS Sounds [sensor.chime_tts_sounds] changes state OR When Notification Sounds [sensor.notification_sounds] changes state OR When Home Assistant starts. CONDITIONS: None. ACTIONS: Save the current value of Notification Sound [input_text.notification_sound] to a variable. Set the options for Notification Sound [input_select.notification_sound] to a list combining formatted file names from Chime TTS Sounds [sensor.chime_tts_sounds] and Notification Sounds [sensor.notification_sounds]. Then, set the selected option for Notification Sound [input_select.notification_sound] back to the previously saved value.", "natural_language": { "trigger": "This automation runs when the Chime TTS Sounds [sensor.chime_tts_sounds] or Notification Sounds [sensor.notification_sounds] sensors update, or when Home Assistant first starts up.", "conditions": "There are no conditions for this automation.", "action": "First, it stores the currently selected sound from Notification Sound [input_text.notification_sound]. Then, it builds a new list of available sound options by processing the file lists from both the Chime TTS Sounds [sensor.chime_tts_sounds] and Notification Sounds [sensor.notification_sounds] sensors, formatting the file paths into readable titles. Finally, it applies this new list of options to the Notification Sound [input_select.notification_sound] dropdown and restores the previously saved selection." }, "human_like": "Updates the list of available notification sounds whenever the sound libraries change or the system restarts, preserving the user's current selection.", "complexity": "medium" } }, { "id": "554dfdef-5e6d-4abd-9cf3-791cd1329f03", "result": { "structured": "TRIGGER: When Notification Sound [input_select.notification_sound] changes state AND remains stable for 1 second. CONDITIONS: Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] is on. ACTIONS: Set the value of Notification Sound [input_text.notification_sound] to the current state of Notification Sound [input_select.notification_sound].", "natural_language": { "trigger": "When the Notification Sound [input_select.notification_sound] selection changes and remains stable for one second.", "conditions": "The automation only runs if the Home assistant loaded binary sensor [binary_sensor.home_assistant_loaded] indicates that Home Assistant is fully loaded and operational.", "action": "Copies the currently selected notification sound from the dropdown menu (input_select) into a text field (input_text) for storage or reference." }, "human_like": "Saves the selected notification sound to a text field whenever a new sound is chosen, ensuring Home Assistant is ready first.", "complexity": "low" } }, { "id": "09c0059c-52b2-42d1-9650-a46a22e97aae", "result": { "structured": "TRIGGER: When Chime Path [sensor.chime_path] changes state AND the previous state is NOT unknown AND the previous state is NOT unavailable. CONDITIONS: None. ACTIONS: Execute Voice broadcast script [script.voice_broadcast] with the message 'Notifikationslyd ændret'.", "natural_language": { "trigger": "Whenever the Chime Path [sensor.chime_path] sensor changes its state, but only if it was not previously in an 'unknown' or 'unavailable' state.", "conditions": "There are no additional conditions that need to be met.", "action": "Runs the Voice broadcast script [script.voice_broadcast] to announce 'Notifikationslyd ændret' (Notification sound changed)." }, "human_like": "Announces when the notification sound has been changed.", "complexity": "low" } }, { "id": "16796890-7e97-4e23-96da-0617c70d1c1d", "result": { "structured": "TRIGGER: When Vacation Mode [input_boolean.vacation_mode] turns off. CONDITIONS: None. ACTIONS: Turn off Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active], wait for 2 seconds, then trigger the event Restart light profile event [refresh_light_profile].", "natural_language": { "trigger": "When the Vacation Mode [input_boolean.vacation_mode] is turned off.", "conditions": "There are no conditions that need to be met.", "action": "Deactivates the vacation lighting by turning off the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch, waits for two seconds, and then sends a refresh_light_profile event to restart the normal lighting profile." }, "human_like": "Turns off vacation lighting and restores the normal light profile when vacation mode is disabled.", "complexity": "low" } }, { "id": "6498613d-e172-4b9c-8ea1-b02f095f8e8a", "result": { "structured": "TRIGGER: Every 5 minutes. CONDITIONS: (Vacation Mode [input_boolean.vacation_mode] is on) AND ((time is between 17:00 and 23:00 on Monday, Tuesday, Wednesday, Thursday, or Friday) OR (time is between 10:00 and 23:00 on Saturday or Sunday)) AND ((Sun [sun.sun] elevation is below 4 degrees) OR (Kokken Illuminance [sensor.kokken_illuminance] is below 10)). ACTIONS: Turn on Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active].", "natural_language": { "trigger": "The automation runs every five minutes.", "conditions": "If Vacation Mode [input_boolean.vacation_mode] is enabled. Additionally, the current time must be within specific windows: on weekdays (Monday to Friday) between 5:00 PM and 11:00 PM, or on weekends (Saturday and Sunday) between 10:00 AM and 11:00 PM. Finally, either the sun's elevation must be below 4 degrees, indicating it is dark outside, or the light level in the kitchen, measured by Kokken Illuminance [sensor.kokken_illuminance], must be below 10.", "action": "Activates the vacation lighting by turning on Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active]." }, "human_like": "Turns on vacation lights during evening and weekend hours when it's dark or the kitchen is dim, but only if vacation mode is active.", "complexity": "medium" } }, { "id": "98223344-098b-4299-a45b-96e837be919c", "result": { "structured": "TRIGGER: At 23:00:00 daily. CONDITIONS: Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is on. ACTIONS: Turn off Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active].", "natural_language": { "trigger": "Every day at 11:00 PM.", "conditions": "If the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is currently switched on.", "action": "Turns off the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active]." }, "human_like": "Turns off the vacation lights schedule at 11 PM each night.", "complexity": "low" } }, { "id": "f6b6f7e1-6bfb-4d34-8ab9-37324f8da9d8", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns on. CONDITIONS: Vacation Mode Random Boolean [binary_sensor.vacation_mode_random_boolean] is on. ACTIONS: Wait for a delay of 1 hour plus the number of minutes specified by Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes], then turn on Office ceiling lamp [light.kontor_loftlampe] with a brightness of 200.", "natural_language": { "trigger": "When the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is switched on.", "conditions": "The Vacation Mode Random Boolean [binary_sensor.vacation_mode_random_boolean] must be in the 'on' state.", "action": "After waiting for a delay of one hour plus a random number of minutes (taken from the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor), the Office ceiling lamp [light.kontor_loftlampe] is turned on with its brightness set to 200." }, "human_like": "Turns on the office light with a random delay when vacation lighting is activated, to simulate occupancy.", "complexity": "medium" } }, { "id": "704d680d-9c4d-4864-b7a5-9e0eb4f34997", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns on. CONDITIONS: None. ACTIONS: Wait for a delay of Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] minutes, then turn on Living room spot 3 [light.stue_spot_3] with brightness 200 and color temperature 3333 Kelvin.", "natural_language": { "trigger": "When the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned on.", "conditions": "There are no additional conditions that must be met.", "action": "After waiting for a random number of minutes specified by the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor, the automation turns on the Living room spot 3 [light.stue_spot_3] light to a specific brightness and warm white color." }, "human_like": "Turns on a living room light with a warm, cozy glow after a random delay when vacation mode lighting is activated.", "complexity": "low" } }, { "id": "3b27e55d-b343-46bc-9b2e-1c42002a29d0", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns on OR when the event vacation_kitchen_loop occurs. CONDITIONS: None. ACTIONS: Wait for a delay of Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] minutes. Then turn on Kitchen ceiling light [light.kokken_loftlampe] with a color temperature of 3333 Kelvin and a brightness of 200. Then wait for a delay of Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] minutes. Then turn off Kitchen ceiling light [light.kokken_loftlampe]. Then wait for a delay of 2 hours. Then fire the event vacation_kitchen_loop.", "natural_language": { "trigger": "The automation starts either when the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned on, or when a specific event named 'vacation_kitchen_loop' is received.", "conditions": "There are no conditions that must be checked for this automation to proceed.", "action": "After a random delay determined by the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor, the Kitchen ceiling light [light.kokken_loftlampe] is turned on to a warm white color and a medium brightness. After another delay of the same random duration, the light is turned off. Following a final two-hour pause, the automation triggers the 'vacation_kitchen_loop' event, which can restart the sequence." }, "human_like": "Simulates random light activity in the kitchen while on vacation, turning the light on and off at varying intervals to create the appearance of someone being home.", "complexity": "medium" } }, { "id": "60374093-f70e-40df-a664-dcc4421b17d2", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns on OR When the event vacation_bathroom_loop occurs. CONDITIONS: Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is on. ACTIONS: Wait for a delay of N minutes, where N is the value from Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]. Then turn on Bathroom lamp [light.badevaerelse_lampe] with brightness 200 and color temperature 3333 Kelvin. Then wait for a delay of N/2 minutes (integer division). Then turn off Bathroom lamp [light.badevaerelse_lampe]. Then wait for a delay of 2 hours. Then trigger the event vacation_bathroom_loop.", "natural_language": { "trigger": "This automation starts either when the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is switched on, or when a custom event named 'vacation_bathroom_loop' is received.", "conditions": "The automation only proceeds if the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is currently in the 'on' state.", "action": "After a random delay determined by the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor, the Bathroom lamp [light.badevaerelse_lampe] is turned on to a specific brightness and color temperature. It stays on for half of that random duration, then turns off. After a final two-hour pause, the automation triggers the 'vacation_bathroom_loop' event to restart the sequence." }, "human_like": "Simulates bathroom light activity while on vacation, turning the light on and off at random intervals to give the appearance that the home is occupied.", "complexity": "medium" } }, { "id": "3f66aea8-43db-476a-8f5d-d38d0bfb7086", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] changes to off. CONDITIONS: None. ACTIONS: Wait for a delay. The delay duration is 0 minutes if Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is off, otherwise it is the value from Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]. Then, turn off Office ceiling lamp [light.kontor_loftlampe].", "natural_language": { "trigger": "When the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned off.", "conditions": "There are no conditions that must be met.", "action": "After a delay, turn off the Office ceiling lamp [light.kontor_loftlampe]. The delay is determined by checking the state of the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch. If it is already off, there is no delay. If it is on, the delay duration is the number of minutes specified by the sensor Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]." }, "human_like": "Turns off the office ceiling light after a short, configurable delay when vacation lighting mode is deactivated.", "complexity": "medium" } }, { "id": "d4e31627-05b8-40f3-b4bc-bcb5e51fbd1a", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns off. CONDITIONS: None. ACTIONS: Delay for a duration determined by a template: if Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is on, wait for the number of minutes specified by Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]; otherwise, wait 0 minutes. Then, turn off Living room spot 3 [light.stue_spot_3].", "natural_language": { "trigger": "The automation starts when the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned off.", "conditions": "There are no conditions that must be met for the action to run.", "action": "After the trigger, the automation waits for a variable amount of time. If Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is still on at the moment of the delay check, it waits for a random number of minutes provided by the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor. Otherwise, it proceeds immediately. Finally, it turns off the Living room spot 3 [light.stue_spot_3] light." }, "human_like": "Turns off a living room light after a delay when vacation lighting mode is deactivated, using a random delay if the mode is still active.", "complexity": "medium" } }, { "id": "81cb653f-741c-45cf-af42-7d6dad7007cd", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns off. CONDITIONS: None. ACTIONS: Wait for a delay. The delay duration is: if Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is on, then the value from Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]; otherwise 0 minutes. Then, turn off Kitchen ceiling light [light.kokken_loftlampe].", "natural_language": { "trigger": "When the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned off.", "conditions": "There are no conditions that must be met for the action to run.", "action": "After a delay, the Kitchen ceiling light [light.kokken_loftlampe] is turned off. The length of the delay depends on the state of the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch at the moment the automation is triggered. If the switch was on, the delay is a random number of minutes provided by the sensor Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes]. If the switch was already off, there is no delay." }, "human_like": "Turns off the kitchen light after a short, variable delay when the vacation lighting mode is deactivated.", "complexity": "medium" } }, { "id": "99259e0c-cff0-411c-83b3-1392fa88a00e", "result": { "structured": "TRIGGER: When Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] turns off. CONDITIONS: None. ACTIONS: Wait for a delay. If Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] is on, the delay duration is the value from Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] minutes. Otherwise, the delay is 0 minutes. Then, turn off Bathroom lamp [light.badevaerelse_lampe].", "natural_language": { "trigger": "The automation is triggered when the Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] switch is turned off.", "conditions": "There are no conditions that must be met for the action to run.", "action": "After a delay, the Bathroom lamp [light.badevaerelse_lampe] is turned off. The length of the delay depends on the state of Vacation Mode Lights Active [input_boolean.vacation_mode_lights_active] at the moment the automation runs: if it is on, the delay is the number of minutes specified by the Vacation Mode Random Minutes [sensor.vacation_mode_random_minutes] sensor; if it is off, there is no delay." }, "human_like": "Turns off the bathroom light after a delay when vacation lighting mode is deactivated, with the delay being random if the mode was still active.", "complexity": "medium" } }, { "id": "748368fc-75e1-4931-b0a4-63bb9f0e15e5", "result": { "structured": "TRIGGER: When Darkphone Last Notification Post Time [sensor.darkphone_last_notification_post_time] changes state. CONDITIONS: Darkphone Last Notification [sensor.darkphone_last_notification] state is com.volkswagen.weconnect. ACTIONS: Press ID 3 Pro Wakeup [button.id_3_pro_wakeup].", "natural_language": { "trigger": "Whenever the sensor tracking the last notification post time on the phone, Darkphone Last Notification Post Time [sensor.darkphone_last_notification_post_time], updates.", "conditions": "The automation only proceeds if the last notification received on the phone, Darkphone Last Notification [sensor.darkphone_last_notification], is from the Volkswagen WeConnect app.", "action": "Presses the button named ID 3 Pro Wakeup [button.id_3_pro_wakeup] to force a data update." }, "human_like": "Forces a Volkswagen vehicle data update when a notification from the WeConnect app is detected on the phone.", "complexity": "low" } }, { "id": "6045309c-38ec-4bd9-828b-c812ff88b32e", "result": { "structured": "TRIGGER: When ID 3 Pro Climatisation Change Requested [binary_sensor.id_3_pro_climatisation_change_requested] changes to on OR when ID 3 Pro Charging Change Requested [binary_sensor.id_3_pro_charging_change_requested] changes to on. CONDITIONS: (ID 3 Pro Climatisation Change Requested [binary_sensor.id_3_pro_climatisation_change_requested] is on) OR (ID 3 Pro Charging Change Requested [binary_sensor.id_3_pro_charging_change_requested] is on). ACTIONS: Wait for 10 seconds, then press the ID 3 Pro Wakeup [button.id_3_pro_wakeup] button.", "natural_language": { "trigger": "When either the ID 3 Pro Climatisation Change Requested [binary_sensor.id_3_pro_climatisation_change_requested] or the ID 3 Pro Charging Change Requested [binary_sensor.id_3_pro_charging_change_requested] sensor turns on.", "conditions": "If either the climatisation change requested sensor or the charging change requested sensor is currently in the 'on' state.", "action": "After a 10-second delay, the automation presses the ID 3 Pro Wakeup [button.id_3_pro_wakeup] button." }, "human_like": "Wakes up the ID.3 Pro vehicle a short time after a climatisation or charging change is requested.", "complexity": "low" } }, { "id": "5b33950a-780e-4708-94b5-9276239e4a80", "result": { "structured": "TRIGGER: When the event id_3_pro_destinations_sent occurs. CONDITIONS: None. ACTIONS: Extract the list of destinations from the event data. Calculate the number of destinations. Identify the last destination in the list. Send a notification via Telegram darkfox notify [notify.telegram_darkfox] containing a formatted list of all destinations. Wait for 0.5 seconds. Send a second notification via Telegram darkfox notify [notify.telegram_darkfox] containing the geographic coordinates of the last destination.", "natural_language": { "trigger": "When the system receives the custom event named 'id_3_pro_destinations_sent'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation extracts the list of destinations from the event data. It then sends a detailed Telegram notification to the user, listing the name and address of each destination. After a brief half-second delay, it sends a second Telegram notification containing the latitude and longitude of the final destination in the list." }, "human_like": "Sends a summary and the location of the final destination to a Telegram user when a set of destinations has been sent to a car.", "complexity": "medium" } }, { "id": "2569ea62-ac9f-4ba8-9e18-13a914f9e180", "result": { "structured": "TRIGGER: When Varksted Dor [binary_sensor.varksted_dor] changes state to on OR off, provided the previous state was NOT unavailable AND NOT unknown. CONDITIONS: None. ACTIONS: Turn on Workshop Door Activity [input_boolean.workshop_door_activity].", "natural_language": { "trigger": "Whenever the Varksted Dor [binary_sensor.varksted_dor] sensor changes to either open (on) or closed (off), as long as it wasn't previously in an unavailable or unknown state.", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the Workshop Door Activity [input_boolean.workshop_door_activity] input boolean." }, "human_like": "Tracks activity on the workshop door by turning on a status flag whenever the door is opened or closed.", "complexity": "low" } }, { "id": "0af8945b-8abc-4cca-88fd-a168c64bcc37", "result": { "structured": "TRIGGER: When Workshop Door Activity [input_boolean.workshop_door_activity] turns on AND remains on for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Workshop Door Activity [input_boolean.workshop_door_activity].", "natural_language": { "trigger": "When the Workshop Door Activity [input_boolean.workshop_door_activity] is turned on and stays on for 5 seconds.", "conditions": "There are no additional conditions.", "action": "Turns the Workshop Door Activity [input_boolean.workshop_door_activity] back off." }, "human_like": "Automatically turns off the workshop door activity indicator 5 seconds after it is turned on.", "complexity": "low" } }, { "id": "b51a8636-e588-400d-b894-1be7ed7bf265", "result": { "structured": "TRIGGER: When Workshop Activity [binary_sensor.workshop_activity] remains off for 15 minutes. CONDITIONS: Hobbybord Afbryder Forbrug [sensor.hobbybord_afbryder_forbrug] is above 0.05. ACTIONS: Execute Notify everywhere script [script.notify_everywhere] with the message: 'Loddekolben eller andet er muligvis tændt på hobbybordet. Husk at slukke for strømmen.'", "natural_language": { "trigger": "When the Workshop Activity [binary_sensor.workshop_activity] sensor indicates no activity for a continuous period of 15 minutes.", "conditions": "If the power consumption sensor Hobbybord Afbryder Forbrug [sensor.hobbybord_afbryder_forbrug] reports a value greater than 0.05.", "action": "Sends a notification everywhere using the Notify everywhere script [script.notify_everywhere], reminding the user that a soldering iron or other device might be left on at the hobby desk and to remember to turn off the power." }, "human_like": "Sends a reminder to turn off the power at the hobby desk if no activity is detected for 15 minutes but power consumption is still high.", "complexity": "low" } }, { "id": "cbb52f2f-38f4-4131-b561-79b269a8dfe4", "result": { "structured": "TRIGGER: When Workshop Activity [binary_sensor.workshop_activity] becomes inactive (off) AND remains inactive for 30 minutes. CONDITIONS: None. ACTIONS: Turn off Hobbybord Afbryder [switch.hobbybord_afbryder].", "natural_language": { "trigger": "When the Workshop Activity [binary_sensor.workshop_activity] sensor reports no activity and stays in that state for 30 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the power to the desk by switching off Hobbybord Afbryder [switch.hobbybord_afbryder]." }, "human_like": "Automatically turns off the workshop desk power after 30 minutes of inactivity.", "complexity": "low" } }, { "id": "b95904b0-7a60-4c6e-bdaf-1c6fe7a98df2", "result": { "structured": "TRIGGER: When Workshop Active Light Profile [sensor.workshop_active_light_profile] changes state OR when the refresh_light_profile event occurs. CONDITIONS: None. ACTIONS: Based on the value of the variable 'profile' (which is set to the current state of Workshop Active Light Profile [sensor.workshop_active_light_profile]), apply a specific lighting scene with a transition time defined by Scene transition time input number [input_number.scene_transition_time] (defaulting to 0.5 seconds). The action is a conditional choice: IF profile == 'Bright' THEN set light.vaerksted_loftlampe, light.hobbybord_bord, and light.hobbybord_vaerktojsskab to full brightness (255) with a neutral color temperature (4000K). IF profile == 'Default' THEN set light.vaerksted_loftlampe, light.hobbybord_bord, and light.hobbybord_vaerktojsskab to full brightness (255) with a neutral color temperature (4000K). IF profile == 'Dimmed' THEN set light.vaerksted_loftlampe to brightness 72 with the hue from Theme sensor [sensor.theme], and set light.hobbybord_bord and light.hobbybord_vaerktojsskab to brightness 48. IF profile == 'Ambient' THEN set light.vaerksted_loftlampe to brightness 48 with the hue from Theme sensor [sensor.theme], and set light.hobbybord_bord and light.hobbybord_vaerktojsskab to brightness 36. IF profile == 'Night' THEN set light.vaerksted_loftlampe to brightness 2 with a red color (RGB 255,0,0), set light.hobbybord_bord to brightness 8, and turn off light.hobbybord_vaerktojsskab. IF profile == 'Off' THEN turn off light.vaerksted_lys.", "natural_language": { "trigger": "The automation is triggered either when the Workshop Active Light Profile [sensor.workshop_active_light_profile] changes its value, or when a custom event named 'refresh_light_profile' is received.", "conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon being triggered.", "action": "The automation reads the current value of the Workshop Active Light Profile [sensor.workshop_active_light_profile] into a variable called 'profile'. It then selects and applies a specific lighting scene based on that profile value. The transition between light states uses a duration defined by the Scene transition time input number [input_number.scene_transition_time], defaulting to half a second. The profiles are: 'Bright' and 'Default' both turn on the main workshop lights at full brightness with a neutral white color. 'Dimmed' sets the lights to a lower, colored brightness based on the current theme. 'Ambient' sets them to an even lower, colored brightness. 'Night' sets a very dim red light on the ceiling light, a low light on the hobby table, and turns off the tool cabinet light. 'Off' simply turns off the main workshop light." }, "human_like": "This automation changes the workshop lighting to match a selected profile, such as Bright, Dimmed, or Night, and can also be refreshed on demand.", "complexity": "medium" } }, { "id": "ccf9375e-f45f-4845-927a-7dc0743e7c0c", "result": { "structured": "TRIGGER: When Vaerksted Motion [binary_sensor.vaerksted_motion] changes to on OR when Varktojsskab [binary_sensor.varktojsskab] changes to on. CONDITIONS: Roborock vacuum [vacuum.valetudo_roborocks5] is docked AND Person rook [person.rook] is home. ACTIONS: Set Latest motion input select [input_select.latest_motion] to 'Workshop'.", "natural_language": { "trigger": "When motion is detected in the workshop, either by the main Vaerksted Motion [binary_sensor.vaerksted_motion] sensor or by the Varktojsskab [binary_sensor.varktojsskab] sensor.", "conditions": "The Roborock vacuum [vacuum.valetudo_roborocks5] must be docked, and Person rook [person.rook] must be at home.", "action": "Updates the Latest motion input select [input_select.latest_motion] to indicate that the latest motion was detected in the Workshop." }, "human_like": "Updates a tracker to show the workshop was the last room with motion, but only when someone is home and the robot vacuum isn't running.", "complexity": "medium" } } ]