AutomationDataset/golles/automation-descriptions.json

1172 lines
132 KiB
JSON

[
{
"id": "kerst_sfeer_achtertuin",
"result": {
"structured": "TRIGGER: When the time is 15:30:00. CONDITIONS: The current month is December AND the current day of the month is greater than or equal to 6. ACTIONS: Turn on colored light plug [light.gekleurde_licht_plug] AND set colored light plug countdown [number.gekleurde_licht_plug_countdown] to a value calculated as the number of seconds from now until a random time between 00:00 and 00:01 tomorrow.",
"natural_language": {
"trigger": "Every day at 3:30 PM.",
"conditions": "The automation only runs during the month of December, and only on or after the 6th day of the month.",
"action": "Turns on the colored light plug [light.gekleurde_licht_plug] and sets a countdown timer on the colored light plug countdown [number.gekleurde_licht_plug_countdown] to automatically turn the light off at a random moment just after midnight."
},
"human_like": "Turns on festive backyard lights in the afternoon during the Christmas season and sets them to turn off automatically just after midnight.",
"complexity": "medium"
}
},
{
"id": "automatic_backgarden_lights",
"result": {
"structured": "TRIGGER: When back door contact [binary_sensor.achterdeur_contact] changes from closed (off) to open (on) OR When backyard motion [binary_sensor.achtertuin_beweging] changes from no motion (off) to motion detected (on). CONDITIONS: backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is below 10. ACTIONS: Turn on backyard bright scene [scene.achtertuin_helder] with a 2-second transition, then wait for 10 minutes, then turn off backyard group light [light.achtertuin_groep] with a 2-second transition.",
"natural_language": {
"trigger": "When the back door contact [binary_sensor.achterdeur_contact] opens, or when motion is detected by the backyard motion [binary_sensor.achtertuin_beweging] sensor.",
"conditions": "The automation only runs if the light level measured by the backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is below 10.",
"action": "It first turns on the backyard bright scene [scene.achtertuin_helder] with a gentle 2-second fade-in. After waiting for 10 minutes, it turns off the backyard group light [light.achtertuin_groep] with a 2-second fade-out."
},
"human_like": "Automatically turns on the backyard lights when the door opens or motion is detected if it's dark, and turns them off again after 10 minutes.",
"complexity": "low"
}
},
{
"id": "adguardhome_protection_switches",
"result": {
"structured": "TRIGGER: When adguard home primary protection [switch.adguard_home_primary_bescherming] changes to on OR off. CONDITIONS: None. ACTIONS: If adguard home primary protection [switch.adguard_home_primary_bescherming] is on, then turn on adguard home secondary protection [switch.adguard_home_secondary_bescherming]. Otherwise, turn off adguard home secondary protection [switch.adguard_home_secondary_bescherming].",
"natural_language": {
"trigger": "Whenever the adguard home primary protection [switch.adguard_home_primary_bescherming] is turned on or off.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the primary protection switch is turned on, the automation will turn on the secondary protection switch [switch.adguard_home_secondary_bescherming]. If the primary protection switch is turned off, it will turn off the secondary protection switch."
},
"human_like": "Keeps the secondary AdGuard Home protection switch in sync with the primary one, turning it on or off accordingly.",
"complexity": "low"
}
},
{
"id": "notification_afval",
"result": {
"structured": "TRIGGER: At 19:30:00 daily. CONDITIONS: (The template variable 'entity' equals the string 'none') AND (vacation mode [input_boolean.vacation_mode] is off). ACTIONS: Send a Discord notification to the configured webhook secret discord_afval [secret discord_afval] with an embed containing a title, a description mentioning the friendly name of the waste container, and a thumbnail image URL.",
"natural_language": {
"trigger": "The automation triggers every day at 7:30 PM.",
"conditions": "The automation runs only if a specific template variable, which is calculated to find a waste container sensor that will be collected tomorrow, results in the value 'none' (meaning no such container was found). Additionally, the vacation mode [input_boolean.vacation_mode] must be turned off.",
"action": "Sends a notification to a Discord channel via the webhook Discord Afval Webhook [secret discord_afval]. The notification is formatted as an embed with a title, a message stating that no waste container will be collected tomorrow, and a thumbnail image."
},
"human_like": "Sends a daily Discord reminder at 7:30 PM that no waste will be collected tomorrow, but only when not on vacation.",
"complexity": "medium"
}
},
{
"id": "ios_action_everything_off",
"result": {
"structured": "TRIGGER: When an iOS action named 'Alles uit' is fired. CONDITIONS: None. ACTIONS: Execute the script 'Now turn everything off' [script.everything_off].",
"natural_language": {
"trigger": "When the iOS action named 'Alles uit' is triggered.",
"conditions": "There are no conditions for this automation.",
"action": "Runs the script called 'Now turn everything off' [script.everything_off]."
},
"human_like": "Turns everything off when the 'Alles uit' action is triggered from an iOS device.",
"complexity": "low"
}
},
{
"id": "check_devices_left_on",
"result": {
"structured": "TRIGGER: When residents group [group.residents] remains not_home for 5 minutes. CONDITIONS: guest mode [input_boolean.guest_mode] is off AND (count inside lights on [sensor.count_inside_lights_on] is above 0 OR count speakers on [sensor.count_speakers_on] is above 0 OR count tvs on [sensor.count_tvs_on] is above 0). ACTIONS: 1. Set variable action_all_off. 2. Send notification to all_phones with title 'Niemand meer thuis' and a message listing the counts of lights, TVs, and speakers that are on, including an action button 'Zet alles uit' linked to the variable. 3. Wait for a mobile app notification action matching the variable. 4. If the received action matches, run script.everything_off. 5. Clear the notification with tag devices_left_on on all devices.",
"natural_language": {
"trigger": "When the residents group [group.residents] has been in the 'not_home' state for 5 minutes.",
"conditions": "The guest mode [input_boolean.guest_mode] must be turned off, and at least one of the following must be true: the count inside lights on [sensor.count_inside_lights_on] is greater than zero, the count speakers on [sensor.count_speakers_on] is greater than zero, or the count tvs on [sensor.count_tvs_on] is greater than zero.",
"action": "First, a unique variable is created for the action. Then, a notification is sent to all phones, stating that nobody is home and listing which lights, TVs, and speakers are still on. The notification includes a button to turn everything off. The automation then waits for someone to press that button. If the button is pressed, the script 'everything_off' is executed. Finally, the notification is cleared from all devices."
},
"human_like": "Sends a phone notification when everyone is away and lights, TVs, or speakers are left on, allowing you to turn them all off with a single tap.",
"complexity": "medium"
}
},
{
"id": "air_purifier_off_door_open",
"result": {
"structured": "TRIGGER: When back door contact [binary_sensor.achterdeur_contact] becomes open (on) AND remains so for 5 minutes OR When kitchen window contact [binary_sensor.keukenraam_contact] becomes open (on) AND remains so for 5 minutes. CONDITIONS: air purifier [fan.air_purifier] is on. ACTIONS: Turn off air purifier [fan.air_purifier].",
"natural_language": {
"trigger": "When the back door contact [binary_sensor.achterdeur_contact] has been open for at least five minutes, or when the kitchen window contact [binary_sensor.keukenraam_contact] has been open for at least five minutes.",
"conditions": "The air purifier [fan.air_purifier] must currently be turned on.",
"action": "Turns off the air purifier [fan.air_purifier]."
},
"human_like": "Turns off the air purifier if either the back door or kitchen window has been open for five minutes, to prevent it from running unnecessarily.",
"complexity": "low"
}
},
{
"id": "air_purifier_on_based_on_aqi",
"result": {
"structured": "TRIGGER: When air purifier pm2 5 [sensor.air_purifier_pm2_5] is above 10 for 2 minutes. CONDITIONS: (air purifier [fan.air_purifier] is off) AND (back door contact [binary_sensor.achterdeur_contact] is off) AND (kitchen window contact [binary_sensor.keukenraam_contact] is off). ACTIONS: Turn on air purifier [fan.air_purifier].",
"natural_language": {
"trigger": "When the air quality sensor for PM2.5 [sensor.air_purifier_pm2_5] reports a value above 10 for at least two minutes.",
"conditions": "The air purifier [fan.air_purifier] must be off, the back door [binary_sensor.achterdeur_contact] must be closed, and the kitchen window [binary_sensor.keukenraam_contact] must also be closed.",
"action": "Turn on the air purifier [fan.air_purifier]."
},
"human_like": "Turns on the air purifier when indoor air quality is poor, but only if all windows and doors are closed to ensure it's effective.",
"complexity": "low"
}
},
{
"id": "air_purifier_off_based_on_aqi",
"result": {
"structured": "TRIGGER: When air purifier pm2 5 [sensor.air_purifier_pm2_5] remains below 5 for 2 minutes. CONDITIONS: air purifier [fan.air_purifier] is on. ACTIONS: Turn off air purifier [fan.air_purifier].",
"natural_language": {
"trigger": "When the PM2.5 level reported by the air purifier pm2 5 [sensor.air_purifier_pm2_5] stays below 5 for at least two minutes.",
"conditions": "The air purifier [fan.air_purifier] must currently be switched on.",
"action": "Turns the air purifier [fan.air_purifier] off."
},
"human_like": "Turns off the air purifier when the air quality is good (PM2.5 below 5) for a sustained period.",
"complexity": "low"
}
},
{
"id": "notification_aurora",
"result": {
"structured": "TRIGGER: When aurora visibility visibility alert [binary_sensor.aurora_visibility_visibility_alert] changes from off to on. CONDITIONS: None. ACTIONS: If lg c9 [media_player.lg_c9] is on, then send a notification to the TV with the message containing the current aurora visibility visibility [sensor.aurora_visibility_visibility] percentage chance. Then, send a Discord notification to the secret discord_weer webhook with an embed containing the same percentage chance and additional information.",
"natural_language": {
"trigger": "When the aurora visibility visibility alert [binary_sensor.aurora_visibility_visibility_alert] becomes active, indicating a change from off to on.",
"conditions": "There are no conditions that must be met for the actions to proceed.",
"action": "First, if the LG C9 TV [media_player.lg_c9] is currently on, a notification is sent to the TV displaying the current aurora visibility visibility [sensor.aurora_visibility_visibility] percentage chance. Then, regardless of the TV's state, a detailed notification is sent to a Discord channel via the secret discord_weer webhook, including the chance percentage and a link to the NOAA aurora forecast."
},
"human_like": "Sends notifications to the TV and Discord when there is an alert for a chance to see the aurora borealis.",
"complexity": "low"
}
},
{
"id": "logeerkamer_klimaat",
"result": {
"structured": "TRIGGER: When guest room window contact [binary_sensor.logeerkamerraam_contact] changes state. CONDITIONS: None. ACTIONS: If guest room window contact [binary_sensor.logeerkamerraam_contact] is open (on), turn off guest room climate [climate.logeerkamer]. If guest room window contact [binary_sensor.logeerkamerraam_contact] is closed (off) for 5 minutes, turn on guest room climate [climate.logeerkamer].",
"natural_language": {
"trigger": "Whenever the guest room window contact [binary_sensor.logeerkamerraam_contact] changes its state, either opening or closing.",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "If the window is detected as open, the guest room climate [climate.logeerkamer] is immediately turned off. If the window is detected as closed, the automation waits for 5 minutes to ensure it remains closed, and then turns the guest room climate [climate.logeerkamer] back on."
},
"human_like": "Automatically turns off the guest room climate when the window is opened, and turns it back on 5 minutes after the window is closed to save energy.",
"complexity": "low"
}
},
{
"id": "logeerkamer_electric_heater",
"result": {
"structured": "TRIGGER: When macbook in home office and on [binary_sensor.macbook_in_thuis_kantoor_en_aan] turns on OR When guest room occupancy [binary_sensor.logeerkamer_bezetting] turns on and remains for 5 minutes OR When guest room occupancy [binary_sensor.logeerkamer_bezetting] turns off. CONDITIONS: None. ACTIONS: If guest room occupancy [binary_sensor.logeerkamer_bezetting] is on, then turn on electric heater climate [climate.elektrische_kachel]. Otherwise, turn off electric heater climate [climate.elektrische_kachel].",
"natural_language": {
"trigger": "The automation triggers immediately when the macbook in home office and on [binary_sensor.macbook_in_thuis_kantoor_en_aan] is detected as being used, or when the guest room occupancy [binary_sensor.logeerkamer_bezetting] sensor indicates the room is occupied for at least five minutes, or when the guest room occupancy [binary_sensor.logeerkamer_bezetting] sensor indicates the room is no longer occupied.",
"conditions": "There are no separate conditions; the logic is handled within the action's if-then-else block.",
"action": "If the guest room occupancy [binary_sensor.logeerkamer_bezetting] is on, the electric heater climate [climate.elektrische_kachel] is turned on. If the guest room occupancy [binary_sensor.logeerkamer_bezetting] is off, the electric heater climate [climate.elektrische_kachel] is turned off."
},
"human_like": "Controls the electric heater in the guest room based on occupancy, turning it on when the room is occupied and off when it's empty, with an additional trigger if a laptop is in use in the home office.",
"complexity": "medium"
}
},
{
"id": "close_logeerkamer_cover",
"result": {
"structured": "TRIGGER: When the time reaches the value set in covers down time [input_datetime.covers_down]. CONDITIONS: None. ACTIONS: Execute script close_cover_window_state with parameters: wait_minutes = 240, cover_entity = guest room cover [cover.logeerkamer], window_entity = guest room window contact [binary_sensor.logeerkamerraam_contact].",
"natural_language": {
"trigger": "At the specific time set in the covers down time [input_datetime.covers_down] input.",
"conditions": "There are no conditions for this automation.",
"action": "Runs the script 'close_cover_window_state', which will close the guest room cover [cover.logeerkamer] after waiting for 240 minutes, but only if the guest room window contact [binary_sensor.logeerkamerraam_contact] indicates the window is closed."
},
"human_like": "Closes the guest room blind at a scheduled time, but only if the window is closed.",
"complexity": "low"
}
},
{
"id": "close_slaapkamer_cover",
"result": {
"structured": "TRIGGER: At the time specified by covers down time [input_datetime.covers_down]. CONDITIONS: None. ACTIONS: Execute script close_cover_window_state with parameters: wait_minutes = 240, cover_entity = bedroom cover [cover.slaapkamer], window_entity = bedroom window contact [binary_sensor.slaapkamerraam_contact].",
"natural_language": {
"trigger": "The automation runs at a specific time of day, which is set by the covers down time [input_datetime.covers_down] entity.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "It runs a script named 'close_cover_window_state', instructing it to close the bedroom cover [cover.slaapkamer] while monitoring the bedroom window contact [binary_sensor.slaapkamerraam_contact] for a waiting period of 240 minutes."
},
"human_like": "Closes the bedroom cover at a scheduled time, but only if the window is closed, waiting up to four hours for the window to be shut.",
"complexity": "low"
}
},
{
"id": "slaapkamer_light_auto",
"result": {
"structured": "TRIGGER: When bedroom motion occupancy [binary_sensor.slaapkamer_beweging_occupancy] changes state. CONDITIONS: (Current time is between day_start_time (08:00:00) AND day_end_time (00:00:00)) AND (bedroom light strength illuminance [sensor.slaapkamer_lichtsterkte_illuminance] is below 10 lux). ACTIONS: Turn on bedroom ceiling group light [light.slaapkamer_plafond_groep] to bedroom ceiling group bright scene [scene.slaapkamer_plafond_groep_helder] and after no motion for 15 minutes, turn it to bedroom ceiling group dimmed scene [scene.slaapkamer_plafond_groep_gedimd] and then turn it off. TRIGGER: When bedroom motion occupancy [binary_sensor.slaapkamer_beweging_occupancy] changes state. CONDITIONS: (Current time is NOT between day_start_time (08:00:00) AND day_end_time (00:00:00)) AND (bedroom light strength illuminance [sensor.slaapkamer_lichtsterkte_illuminance] is below 10 lux). ACTIONS: Turn on bedroom ceiling group light [light.slaapkamer_plafond_groep] to bedroom ceiling group relaxed scene [scene.slaapkamer_plafond_groep_ontspannen] and after no motion for 15 minutes, turn it to bedroom ceiling group nightlight scene [scene.slaapkamer_plafond_groep_nachtlampje] and then turn it off.",
"natural_language": {
"trigger": "When motion is detected or stops being detected by the bedroom motion occupancy sensor [binary_sensor.slaapkamer_beweging_occupancy].",
"conditions": "The automation checks if the current light level from the bedroom light strength illuminance sensor [sensor.slaapkamer_lichtsterkte_illuminance] is below 10 lux. It also checks the time of day. If it's daytime (between 08:00:00 and 00:00:00), the day-time logic applies. If it's night-time (outside that window), the night-time logic applies.",
"action": "During the day, if motion is detected and conditions are met, the bedroom ceiling group light [light.slaapkamer_plafond_groep] turns on to the bright scene [scene.slaapkamer_plafond_groep_helder]. If no motion is detected for 15 minutes, it first switches to a dimmed scene [scene.slaapkamer_plafond_groep_gedimd] and then turns off. During the night, it turns on to a relaxed scene [scene.slaapkamer_plafond_groep_ontspannen] and, after 15 minutes of no motion, switches to a nightlight scene [scene.slaapkamer_plafond_groep_nachtlampje] before turning off."
},
"human_like": "Automatically turns the bedroom lights on when motion is detected and it's dark, using different brightness scenes for day and night, and turns them off after a period of inactivity.",
"complexity": "medium"
}
},
{
"id": "disable_slaapkamer_light_auto",
"result": {
"structured": "TRIGGER: When an iOS action named 'Naar bed' is fired OR when an iOS action named 'Gaan slapen' is fired OR when an iOS action named 'Uit bed' is fired OR when bedroom cover [cover.slaapkamer] position attribute reaches 100. CONDITIONS: None. ACTIONS: If the trigger was 'Uit bed' OR the bedroom cover [cover.slaapkamer] position reached 100, then turn on bedroom lamp automatically on off by presence automation [automation.slaapkamerlamp_automatisch_aan_uit_door_aanwezigheid]. Otherwise, turn off bedroom lamp automatically on off by presence automation [automation.slaapkamerlamp_automatisch_aan_uit_door_aanwezigheid].",
"natural_language": {
"trigger": "The automation triggers when any of the following events occur: an iOS action named 'Naar bed' is fired, an iOS action named 'Gaan slapen' is fired, an iOS action named 'Uit bed' is fired, or when the bedroom cover [cover.slaapkamer] is fully open (position reaches 100%).",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "The automation performs a conditional action. If the trigger was specifically the 'Uit bed' iOS action or the bedroom cover reaching 100% open, it turns on the bedroom lamp automatically on off by presence automation [automation.slaapkamerlamp_automatisch_aan_uit_door_aanwezigheid]. For any other trigger ('Naar bed', 'Gaan slapen'), it turns off that same automation."
},
"human_like": "Controls the automatic bedroom light based on sleep-related events, turning the automation off when going to bed and back on when getting up.",
"complexity": "medium"
}
},
{
"id": "mechanische_ventilatie_toilet",
"result": {
"structured": "TRIGGER: When toilet motion occupancy [binary_sensor.toilet_beweging_occupancy] changes from off to on. CONDITIONS: The mechanical ventilation fan [fan.mechanische_ventilatie_ventilatie] percentage attribute is below 26. ACTIONS: Execute script 'mechanical_ventilation_speed_timer' with data: speed = 2, timer = 15.",
"natural_language": {
"trigger": "When motion is first detected in the toilet, as indicated by the toilet motion occupancy [binary_sensor.toilet_beweging_occupancy] sensor turning on.",
"conditions": "The mechanical ventilation fan [fan.mechanische_ventilatie_ventilatie] must be running at a speed below 26%.",
"action": "Runs a script to set the mechanical ventilation fan to medium speed for 15 minutes."
},
"human_like": "Boosts the ventilation fan to medium speed for 15 minutes when someone enters the toilet, but only if the fan is currently running at a low speed.",
"complexity": "low"
}
},
{
"id": "auto_light_woonkamer",
"result": {
"structured": "TRIGGER: When living room occupancy [binary_sensor.woonkamer_bezetting] changes to motion detected (on) OR When living room occupancy [binary_sensor.woonkamer_bezetting] changes to no motion (off) for 15 minutes. CONDITIONS: (Current time is between 08:00:00 and 00:00:00 AND ep dining table illuminance [sensor.epl_eettafel_illuminance] is below 2.2 lux) OR (Current time is NOT between 08:00:00 and 00:00:00 AND ep dining table illuminance [sensor.epl_eettafel_illuminance] is above 25 lux). ACTIONS: If triggered by motion (on) AND conditions are met, apply living dining evening scene [scene.wooneet_avond] during day OR living dining night scene [scene.wooneet_nacht] during night. If triggered by no motion (off) for 15 minutes AND conditions are met, apply living dining night scene [scene.wooneet_nacht] before turning off living dining light [light.wooneet] after a 60-second cooldown.",
"natural_language": {
"trigger": "The automation triggers when motion is detected by the living room occupancy [binary_sensor.woonkamer_bezetting] sensor, or when no motion has been detected by the same sensor for a continuous period of 15 minutes.",
"conditions": "For the automation to act on motion detection, it checks if it is daytime (between 08:00 and 00:00) and the ambient light level from the ep dining table illuminance [sensor.epl_eettafel_illuminance] sensor is below 2.2 lux. Alternatively, if it is nighttime (outside 08:00 to 00:00), it acts if the ambient light level is above 25 lux. The same condition logic applies when the trigger is for no motion.",
"action": "When motion is detected and the conditions are satisfied, the automation turns on the lights by activating the living dining evening scene [scene.wooneet_avond] during the day or the living dining night scene [scene.wooneet_nacht] at night. When no motion is detected for 15 minutes and the conditions are met, it first activates the living dining night scene [scene.wooneet_nacht] and then, after a 60-second delay, turns off the living dining light [light.wooneet]."
},
"human_like": "Automatically turns the living room lights on when someone is present and it's dark enough, and turns them off after a period of inactivity, using different lighting scenes for day and night.",
"complexity": "medium"
}
},
{
"id": "auto_light_woonkamer_when_someone_arrives_home",
"result": {
"structured": "TRIGGER: When residents group [group.residents] changes from not_home to home. CONDITIONS: ep dining table illuminance [sensor.epl_eettafel_illuminance] is below 2.2. ACTIONS: Turn on living dining evening scene [scene.wooneet_avond] with a transition of 1 second.",
"natural_language": {
"trigger": "When any resident arrives home, indicated by the residents group [group.residents] changing its state from 'not_home' to 'home'.",
"conditions": "The light level at the dining table, measured by the ep dining table illuminance [sensor.epl_eettafel_illuminance], is below 2.2 lux.",
"action": "Turns on the evening lighting scene for the living and dining area, using the living dining evening scene [scene.wooneet_avond], with a one-second fade-in transition."
},
"human_like": "Turns on the evening lights in the living room when someone arrives home, but only if it's already dark.",
"complexity": "low"
}
},
{
"id": "skull_light_woonkamer",
"result": {
"structured": "TRIGGER: When living dining light [light.wooneet] turns off OR when living dining evening scene [scene.wooneet_avond] is activated. ACTIONS: If the trigger was the activation of living dining evening scene [scene.wooneet_avond], then turn on skull light [light.skull] with the 'breathe' effect, brightness 128, and a specific color. Otherwise, turn off skull light [light.skull].",
"natural_language": {
"trigger": "The automation runs when the main living dining light [light.wooneet] is turned off, or when the living dining evening scene [scene.wooneet_avond] is activated.",
"conditions": "There are no explicit conditions; the action taken depends on which trigger occurred.",
"action": "If the trigger was the evening scene being activated, the skull light [light.skull] is turned on with a specific 'breathe' effect, brightness, and color. If the trigger was the main light turning off, the skull light [light.skull] is simply turned off."
},
"human_like": "Controls a decorative skull light, turning it on with a special effect when the evening scene is activated, and turning it off when the main living room light is turned off.",
"complexity": "medium"
}
},
{
"id": "tv_lights_based_on_source",
"result": {
"structured": "TRIGGER: When lg c9 [media_player.lg_c9] source changes from Jellyfin or Netflix OR When lg c9 [media_player.lg_c9] source changes to Jellyfin or Netflix OR When ep dining table illuminance [sensor.epl_eettafel_illuminance] is below 4. CONDITIONS: (ep dining table illuminance [sensor.epl_eettafel_illuminance] is below 4) AND (living room light [light.woonkamer] is on) AND ((trigger.id is not illuminance) OR (trigger.id is illuminance AND lg c9 [media_player.lg_c9] source is Jellyfin or Netflix)). ACTIONS: If lg c9 [media_player.lg_c9] source is Jellyfin or Netflix, then activate living dining movie scene [scene.wooneet_film]. Otherwise, if current time is between 08:00:00 and 00:00:00, activate living dining evening scene [scene.wooneet_avond]. Otherwise, activate living dining night scene [scene.wooneet_nacht].",
"natural_language": {
"trigger": "The automation triggers when the source of the lg c9 [media_player.lg_c9] changes either from or to Jellyfin or Netflix, or when the ep dining table illuminance [sensor.epl_eettafel_illuminance] falls below a value of 4.",
"conditions": "All conditions must be met: the ep dining table illuminance [sensor.epl_eettafel_illuminance] must be below 4, the living room light [light.woonkamer] must be on, and if the trigger was the illuminance sensor, the lg c9 [media_player.lg_c9] must currently be set to Jellyfin or Netflix as its source.",
"action": "If the lg c9 [media_player.lg_c9] is set to Jellyfin or Netflix, the living dining movie scene [scene.wooneet_film] is activated. If not, and the current time is between 8 AM and midnight, the living dining evening scene [scene.wooneet_avond] is activated. Otherwise, the living dining night scene [scene.wooneet_nacht] is activated."
},
"human_like": "Adjusts the living room lighting to a movie, evening, or night scene based on the TV source and ambient light levels.",
"complexity": "medium"
}
},
{
"id": "disable_automatic_lights_movie_scene",
"result": {
"structured": "TRIGGER: When living dining movie scene [scene.wooneet_film] changes state OR When living dining evening scene [scene.wooneet_avond] OR living dining meal scene [scene.wooneet_eten] OR living dining night scene [scene.wooneet_nacht] changes state OR When tv light [light.tv] turns off. CONDITIONS: None. ACTIONS: If the trigger was living dining movie scene [scene.wooneet_film] changing state, then turn off living room automatically on off by presence automation [automation.woonkamer_automatisch_aan_uit_door_aanwezigheid]. Otherwise, turn on living room automatically on off by presence automation [automation.woonkamer_automatisch_aan_uit_door_aanwezigheid].",
"natural_language": {
"trigger": "The automation is triggered by any change to the living dining movie scene [scene.wooneet_film], any change to the living dining evening scene [scene.wooneet_avond], the living dining meal scene [scene.wooneet_eten], or the living dining night scene [scene.wooneet_nacht], or when the tv light [light.tv] is turned off.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "If the trigger was the movie scene changing, the automation disables the living room automatically on off by presence automation [automation.woonkamer_automatisch_aan_uit_door_aanwezigheid]. For any other trigger, it enables that same automation."
},
"human_like": "Manages the automatic lighting in the living room by disabling it when a movie scene is activated, and re-enabling it for other scenes or when the TV light is turned off.",
"complexity": "medium"
}
},
{
"id": "zolder_light_auto",
"result": {
"structured": "TRIGGER: When attic occupancy [binary_sensor.zolder_bezetting] changes state. CONDITIONS: (Current time is between 08:00:00 and 00:00:00 AND ep attic illuminance [sensor.epl_zolder_illuminance] is below 0.7 lux) OR (Current time is NOT between 08:00:00 and 00:00:00). ACTIONS: If attic occupancy [binary_sensor.zolder_bezetting] is on, then: If current time is between 08:00:00 and 00:00:00, activate attic bright scene [scene.zolder_helder] on attic light [light.zolder]. If current time is NOT between 08:00:00 and 00:00:00, activate attic relaxed scene [scene.zolder_ontspannen] on attic light [light.zolder]. Wait for 60 seconds (cooldown). If attic occupancy [binary_sensor.zolder_bezetting] is off, then: Wait for 15 minutes (no_motion_wait). If attic occupancy [binary_sensor.zolder_bezetting] remains off for the wait period, then: If current time is between 08:00:00 and 00:00:00, activate attic dimmed scene [scene.zolder_gedimd] on attic light [light.zolder]. If current time is NOT between 08:00:00 and 00:00:00, activate attic nightlight scene [scene.zolder_nachtlampje] on attic light [light.zolder].",
"natural_language": {
"trigger": "The automation triggers whenever the attic occupancy [binary_sensor.zolder_bezetting] sensor changes its state, either detecting or ceasing to detect motion.",
"conditions": "For the automation to turn the lights on, it checks if it's daytime (between 08:00 and midnight) and the ep attic illuminance [sensor.epl_zolder_illuminance] is below 0.7 lux, or if it's nighttime (outside of 08:00 to midnight). The illuminance check only applies during the day.",
"action": "When motion is detected, the attic light [light.zolder] is turned on with a bright scene [scene.zolder_helder] during the day or a relaxed scene [scene.zolder_ontspannen] at night. After a 60-second cooldown, the automation monitors for motion to stop. When motion is no longer detected, it waits 15 minutes. If no motion returns during that time, the light switches to a dimmed scene [scene.zolder_gedimd] during the day or a nightlight scene [scene.zolder_nachtlampje] at night."
},
"human_like": "Automatically turns the attic light on with an appropriate brightness when someone enters, and dims or turns it off after they leave, adjusting for the time of day and ambient light levels.",
"complexity": "medium"
}
},
{
"id": "zolder_auto_off",
"result": {
"structured": "TRIGGER: When attic occupancy [binary_sensor.zolder_bezetting] becomes unoccupied (off) AND remains for 10 minutes OR When attic light [light.zolder] becomes on AND remains for 5 minutes. CONDITIONS: attic occupancy [binary_sensor.zolder_bezetting] is off AND remains for 10 minutes AND attic light [light.zolder] is on. ACTIONS: Turn off attic light [light.zolder].",
"natural_language": {
"trigger": "When the attic occupancy sensor [binary_sensor.zolder_bezetting] reports the room is unoccupied and stays that way for 10 minutes, or when the attic light [light.zolder] is turned on and remains on for 5 minutes.",
"conditions": "The attic occupancy sensor [binary_sensor.zolder_bezetting] must be in the 'off' state (unoccupied) for at least 10 minutes, and the attic light [light.zolder] must be on.",
"action": "Turns off the attic light [light.zolder]."
},
"human_like": "Turns off the attic light after a period of no occupancy or if the light has been left on for a while.",
"complexity": "medium"
}
},
{
"id": "notification_low_battery",
"result": {
"structured": "TRIGGER: When iphone battery level [sensor.iphone_van_golles_battery_level] OR iphone watch battery level [sensor.iphone_van_golles_watch_battery_level] OR ipad mini battery level [sensor.ipad_mini_van_golles_battery_level] falls below 30% OR When guest room battery [sensor.logeerkamer_battery] OR kitchen battery [sensor.keuken_battery] OR toothbrush battery [sensor.tandenborstel_battery] falls below 30% AND remains below for 30 minutes OR When va1788876800 battery [binary_sensor.va1788876800_batterij] OR va1805654016 battery [binary_sensor.va1805654016_batterij] OR va1923094528 battery [binary_sensor.va1923094528_batterij] OR va2677479424 battery [binary_sensor.va2677479424_batterij] OR va2979272704 battery [binary_sensor.va2979272704_batterij] OR va3030325248 battery [binary_sensor.va3030325248_batterij] OR va3382122496 battery [binary_sensor.va3382122496_batterij] OR va4103542784 battery [binary_sensor.va4103542784_batterij] changes from off to on. CONDITIONS: None. ACTIONS: Set variables: device_id, device_model (Apple Watch if entity_id contains 'watch_battery', else device model), area (area name of the triggering entity). Then send a Discord notification to Discord Batterijen Webhook [secret discord_batterijen] with an embed title '🔋 Batterij leeg' and a description stating the device model and area (if any) is empty.",
"natural_language": {
"trigger": "The automation triggers in three possible scenarios. First, when the battery level of any mobile device (iphone battery level [sensor.iphone_van_golles_battery_level], iphone watch battery level [sensor.iphone_van_golles_watch_battery_level], or ipad mini battery level [sensor.ipad_mini_van_golles_battery_level]) drops below 30%. Second, when the battery level of any important device (guest room battery [sensor.logeerkamer_battery], kitchen battery [sensor.keuken_battery], or toothbrush battery [sensor.tandenborstel_battery]) drops below 30% and stays below that level for 30 minutes. Third, when any of the eight Tado battery sensors (e.g., va1788876800 battery [binary_sensor.va1788876800_batterij]) changes its state from 'off' to 'on', indicating a low battery.",
"conditions": "There are no conditions that must be met after a trigger occurs.",
"action": "The automation first calculates some variables based on the triggering entity: its device ID, its model (specifically marking it as an 'Apple Watch' if the entity ID contains 'watch_battery'), and the area it is located in. It then sends a formatted notification to a specific Discord channel via the Discord Batterijen Webhook [secret discord_batterijen]. The notification has an orange embed with the title '🔋 Batterij leeg' and a message stating which device's battery is empty, including the area if available."
},
"human_like": "Sends a Discord notification when the battery of important mobile devices, sensors, or Tado thermostats gets low, using different thresholds and timing for different device types.",
"complexity": "medium"
}
},
{
"id": "ios_action_going_to_bed",
"result": {
"structured": "TRIGGER: When an iOS action named 'Naar bed' is fired. CONDITIONS: None. ACTIONS: Execute script everything_off excluding lights: living room large 1 light [light.woonkamer_groot_1], living room large 2 light [light.woonkamer_groot_2], hallway spot 1 light [light.overloop_spot_1], hallway spot 2 light [light.overloop_spot_2], hallway spot 3 light [light.overloop_spot_3], colored light plug [light.gekleurde_licht_plug], and fan [fan.ventilator]. THEN turn off living room light [light.woonkamer] with a 30-second transition. THEN, IF bedroom cover [cover.slaapkamer] is open OR wardrobe cover [cover.kledingkamer] is open OR guest room cover [cover.logeerkamer] is open, set covers down time [input_datetime.covers_down] to 5 seconds from now. THEN, IF bedroom window contact [binary_sensor.slaapkamerraam_contact] is open (on), wait for it to close (off) for up to 60 minutes, aborting the automation if it times out. FINALLY, activate bedroom go to bed scene [scene.slaapkamer_naar_bed] with a 2-second transition.",
"natural_language": {
"trigger": "The automation is triggered when the user executes the 'Naar bed' (Going to bed) action from their iOS device.",
"conditions": "There are no explicit conditions that must be met before the actions run; the automation proceeds immediately after the trigger.",
"action": "First, it runs a script to turn off most devices, but it excludes specific lights and a fan. Next, it turns off the main living room light with a slow fade. Then, it checks if any of the covers in the bedroom, wardrobe, or guest room are open; if so, it schedules them to close in 5 seconds. After that, if the bedroom window is open, it waits for up to 60 minutes for the window to close, and if it doesn't close in time, the automation stops. Finally, it turns on a pre-configured bedtime scene in the bedroom with a gentle transition."
},
"human_like": "This automation prepares the house for bedtime by turning off most lights and devices, closing covers if needed, ensuring the bedroom window is shut, and then setting a cozy bedroom scene, all triggered by a single tap on an iPhone.",
"complexity": "medium"
}
},
{
"id": "ios_action_going_to_sleep",
"result": {
"structured": "TRIGGER: When an iOS action named 'Gaan slapen' is fired. CONDITIONS: None. ACTIONS: Execute the script 'everything_off' [script.everything_off].",
"natural_language": {
"trigger": "When a user triggers the iOS shortcut named 'Gaan slapen'.",
"conditions": "There are no additional conditions.",
"action": "Runs the script called 'everything_off' [script.everything_off] to turn everything off."
},
"human_like": "Turns everything off when the 'Gaan slapen' (Going to sleep) iOS shortcut is triggered.",
"complexity": "low"
}
},
{
"id": "ios_action_going_out_of_bed",
"result": {
"structured": "TRIGGER: When an iOS action named 'Uit bed' is fired. CONDITIONS: None. ACTIONS: Execute script 'open_south_facing_covers_based_on_weather' AND press button guest room roller blind preference position button [button.logeerkamer_rolgordijn_voorkeurspositie] AND press button kitchen roller blind preference position button [button.keuken_rolgordijn_voorkeurspositie].",
"natural_language": {
"trigger": "When the iOS shortcut or action named 'Uit bed' is triggered from a mobile device.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "First, it runs a script called 'open_south_facing_covers_based_on_weather'. Then, it presses the button for the guest room roller blind preference position [button.logeerkamer_rolgordijn_voorkeurspositie] and the button for the kitchen roller blind preference position [button.keuken_rolgordijn_voorkeurspositie]."
},
"human_like": "When the 'Uit bed' iOS action is used, it opens the south-facing window covers based on the weather and sets the guest room and kitchen roller blinds to their preferred positions.",
"complexity": "low"
}
},
{
"id": "tado_auto_home_and_away_mode",
"result": {
"structured": "TRIGGER: When residents group [group.residents] changes state. CONDITIONS: None. ACTIONS: If residents group [group.residents] is not_home, then set living room climate [climate.woonkamer] preset mode to away AND turn off electric heater climate [climate.elektrische_kachel]. Otherwise, set living room climate [climate.woonkamer] preset mode to home.",
"natural_language": {
"trigger": "Whenever the state of the residents group [group.residents] changes.",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "If the residents group [group.residents] is 'not_home', the automation will set the living room climate [climate.woonkamer] to 'away' mode and turn off the electric heater climate [climate.elektrische_kachel]. In all other cases (when the group state is not 'not_home'), it will set the living room climate [climate.woonkamer] to 'home' mode."
},
"human_like": "Automatically sets the home's climate to 'away' mode and turns off the electric heater when everyone is out, and switches back to 'home' mode when someone is present.",
"complexity": "medium"
}
},
{
"id": "tado_preheat_going_home_cold_day",
"result": {
"structured": "TRIGGER: When house nearest distance [sensor.huis_nearest_distance] is below 10. CONDITIONS: residents group [group.residents] is not_home AND house nearest direction of travel [sensor.huis_nearest_direction_of_travel] is towards AND living room climate [climate.woonkamer] current_temperature is below 18. ACTIONS: Send a Discord notification to Discord Algemeen Webhook [secret discord_algemeen] with a message indicating that house nearest device [sensor.huis_nearest_device] is almost home and the living room is being preheated, AND set living room climate [climate.woonkamer] to 25 degrees for 15 minutes.",
"natural_language": {
"trigger": "When the house nearest distance [sensor.huis_nearest_distance] indicates that the nearest resident is less than 10 units away.",
"conditions": "All residents are currently not at home, the nearest resident is traveling towards the house, and the current temperature in the living room [climate.woonkamer] is below 18 degrees.",
"action": "Sends a notification to a Discord channel [secret discord_algemeen] stating that the nearest device [sensor.huis_nearest_device] is almost home and the living room is being preheated because it's cold, and then activates the Tado climate timer to heat the living room [climate.woonkamer] to 25 degrees for 15 minutes."
},
"human_like": "Preheats the living room on a cold day when someone is almost home, and sends a notification about it.",
"complexity": "medium"
}
},
{
"id": "covers_down_set_daily_time",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR at 12:00:00 daily. CONDITIONS: None. ACTIONS: Set the time for covers down time [input_datetime.covers_down] to a calculated value based on the current day of the year and the sun's next setting time. The calculation uses the formula: offsetMinutes = -((|currentDay - 183|) / 2.5 - 45), rounded to the nearest integer, where currentDay is the day of the year (1-365/366). The final time is the sun's next setting time plus this offset in minutes.",
"natural_language": {
"trigger": "The automation runs either when Home Assistant first starts up or every day at noon (12:00:00).",
"conditions": "There are no conditions that must be met for the action to execute.",
"action": "It calculates a new time for the covers down time [input_datetime.covers_down] based on the current date and the sun's schedule. It finds the day of the year, calculates an offset in minutes using a specific formula that depends on how far the current day is from the middle of the year (day 183), and then adds this offset to the sun's next setting time. The result is used to update the time stored in the input_datetime entity."
},
"human_like": "Automatically adjusts the daily closing time for covers (like blinds or shutters) based on the time of year and sunset, updating it at startup and every day at noon.",
"complexity": "medium"
}
},
{
"id": "covers_overkiz_reload_integration",
"result": {
"structured": "TRIGGER: When bedroom cover [cover.slaapkamer] becomes unavailable AND remains unavailable for 5 minutes OR When bedroom cover [cover.slaapkamer] becomes unavailable AND remains unavailable for 60 minutes. CONDITIONS: None. ACTIONS: Reload the Overkiz integration configuration entry for bedroom cover [cover.slaapkamer] AND Clear the persistent notification with ID 'config_entry_reconfigure'.",
"natural_language": {
"trigger": "When the bedroom cover [cover.slaapkamer] becomes unavailable and stays in that state for either 5 minutes or 60 minutes.",
"conditions": "There are no conditions to check.",
"action": "Reloads the Overkiz integration configuration entry associated with the bedroom cover [cover.slaapkamer] and dismisses a persistent notification with the ID 'config_entry_reconfigure'."
},
"human_like": "Reloads the Overkiz integration if the bedroom cover becomes unavailable for a set duration, and clears a related notification.",
"complexity": "low"
}
},
{
"id": "doorbell_press_action",
"result": {
"structured": "TRIGGER: When doorbell ringing [binary_sensor.deurbel_ringing] changes from off to on. CONDITIONS: None. ACTIONS: Set variables: message_title = 'Ding dong', message_text = 'Iemand staat bij de deur', tv_sources_to_pause = ['Jellyfin', 'Netflix', 'YouTube'], tv_current_source = source attribute of lg c9 [media_player.lg_c9], internal_url = secret internal_url. Then, IF macbook in home office and on [binary_sensor.macbook_in_thuis_kantoor_en_aan] is on, THEN send a notification to Sander with title and message, including group 'deurbel', entity camera.deurbel, and a dashboard URL. Then, IF lg c9 [media_player.lg_c9] is on, THEN send a notification to lg c9 [media_player.lg_c9] with the message. THEN, IF the source attribute of lg c9 [media_player.lg_c9] is in tv_sources_to_pause, THEN pause lg c9 [media_player.lg_c9]. ELSE IF mediabox [media_player.mediabox] is not idle, paused, off, unavailable, or unknown AND the source attribute of lg c9 [media_player.lg_c9] is 'Ziggo' AND the play_mode attribute of mediabox [media_player.mediabox] is not 'linear', THEN pause mediabox [media_player.mediabox]. Finally, wait for 5 seconds.",
"natural_language": {
"trigger": "When the doorbell ringing [binary_sensor.deurbel_ringing] is pressed, changing its state from off to on.",
"conditions": "There are no global conditions; actions are executed based on conditional checks within the action sequence.",
"action": "First, several variables are set, including the notification title and text, a list of TV sources that should be paused, the current source of the LG TV, and an internal URL. Then, if the macbook in home office and on [binary_sensor.macbook_in_thuis_kantoor_en_aan] is on, a notification is sent to Sander with the doorbell message, linking to the front door camera [camera.deurbel] and a dashboard. Next, if the lg c9 [media_player.lg_c9] TV is on, a notification is sent to the TV. If the TV's current source is Jellyfin, Netflix, or YouTube, the TV is paused. Alternatively, if the TV's source is Ziggo, and the mediabox [media_player.mediabox] is playing (but not in a linear TV mode), the mediabox is paused. Finally, the automation waits for 5 seconds."
},
"human_like": "When the doorbell rings, it sends notifications to Sander if he's working from home and to the TV if it's on, and pauses media playback on the TV or mediabox depending on what's currently playing.",
"complexity": "medium"
}
},
{
"id": "flightradar24_notification",
"result": {
"structured": "TRIGGER: When a flightradar24_entry event occurs (Plane entering the area). CONDITIONS: None. ACTIONS: Set variables for flight details (registration, callsign, model, airline, origin, destination, altitude, speed, url) using data from the trigger event, with fallback values. Then, send a Discord notification via Discord Flightradar Webhook [secret discord_flightradar] containing an embed with the flight details, including a conditional title color for specific callsigns and a conditional destination field for callsign LIFELN1.",
"natural_language": {
"trigger": "When a plane enters the monitored area, triggering a flightradar24_entry event.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "First, the automation extracts and formats various details about the flight from the event data, such as its registration, callsign, model, airline, origin, destination, altitude, and speed, providing default values if data is missing. It also constructs a URL for the flight. Then, it sends a formatted notification to a Discord channel using the Discord Flightradar Webhook [secret discord_flightradar]. The notification includes an embed with the flight details, a thumbnail photo, and special formatting: the embed color is yellow if the callsign contains 'LIFELN', and the destination field is replaced with the state of the p2000 lifeliner 1 [sensor.p2000_lifeliner_1] sensor if the callsign is exactly 'LIFELN1'."
},
"human_like": "Sends a detailed Discord notification with flight information whenever a plane enters the monitored area on Flightradar24.",
"complexity": "medium"
}
},
{
"id": "goedemorgen_bericht",
"result": {
"structured": "TRIGGER: When overloop sensor 1 motion [binary_sensor.overloop_sensor_1_beweging] changes to on (motion detected). CONDITIONS: (lg c9 [media_player.lg_c9] is off) AND (lg soundbar [media_player.lg_soundbar] is off OR idle) AND (morning [binary_sensor.morning] is on) AND (The automation 'goedemorgen_bericht_bij_1e_beweging_in_de_woonkamer' has not been triggered in the last 6 hours). ACTIONS: Force update local weather and traffic [sensor.lokaal_weer_en_verkeer] entity. Set lg soundbar [media_player.lg_soundbar] volume to 25%. Wait for 5 seconds. Speak a dynamic morning message via lg soundbar [media_player.lg_soundbar] containing the day, date, weather description (from local weather and traffic [sensor.lokaal_weer_en_verkeer] or knmi weather forecast [sensor.knmi_weersverwachting]), and any active knmi warning [binary_sensor.knmi_waarschuwing] description. Wait until lg soundbar [media_player.lg_soundbar] changes from playing to idle (with a 2-minute timeout). Restore lg soundbar [media_player.lg_soundbar] source and volume via a shell command.",
"natural_language": {
"trigger": "When motion is first detected by the overloop sensor 1 motion [binary_sensor.overloop_sensor_1_beweging].",
"conditions": "The lg c9 TV [media_player.lg_c9] must be off. The lg soundbar [media_player.lg_soundbar] must be either off or idle. The morning [binary_sensor.morning] sensor must be on, indicating it's morning. Additionally, this automation must not have run in the last 6 hours.",
"action": "First, it forces an update of the local weather and traffic [sensor.lokaal_weer_en_verkeer] sensor. Then, it sets the lg soundbar [media_player.lg_soundbar] volume to 25%. After a short 5-second delay, it uses text-to-speech on the soundbar to announce a good morning message. This message includes the time of day, the current date, a weather report (using data from either the local weather and traffic sensor or the knmi weather forecast [sensor.knmi_weersverwachting]), and any active weather warnings from the knmi warning [binary_sensor.knmi_waarschuwing]. The automation waits for the message to finish playing (or times out after 2 minutes) before finally restoring the soundbar's original source and volume level."
},
"human_like": "Announces a personalized good morning message with the date and weather report via the soundbar when motion is first detected in the hallway in the morning, provided the TV is off.",
"complexity": "medium"
}
},
{
"id": "track_golf_75",
"result": {
"structured": "TRIGGER: When event GOLF_75_START occurs OR When event GOLF_75_STOP occurs OR When Home Assistant starts (event: start). CONDITIONS: For the start event path: (person variable equals \"none\") AND (trigger is start). For the stop event path: (person variable equals \"none\") AND (trigger is stop). For the restore event path: (trigger is restore). ACTIONS: If start event triggers and person is \"none\", then repeatedly update device_tracker golf_7_5 location using the person's latitude, longitude, and GPS accuracy every 30 seconds until the automation is stopped. If stop event triggers and person is \"none\", then update device_tracker golf_7_5 location once using the person's latitude, longitude, and GPS accuracy. If restore event triggers, then update device_tracker golf_7_5 location once using the last known coordinates and accuracy from sensor.golf_7_5_last_known_location.",
"natural_language": {
"trigger": "The automation can be triggered in three ways: when a GOLF_75_START event is received (indicating driving focus is turned on), when a GOLF_75_STOP event is received (indicating driving focus is turned off), or when Home Assistant starts up.",
"conditions": "For the start event to proceed, the automation must successfully identify a person entity linked to the user who sent the event; if no person is found (person variable is \"none\"), the start path is taken. Similarly, for the stop event, the person variable must also be \"none\". The restore path runs unconditionally when Home Assistant starts.",
"action": "If triggered by the start event and a person is identified, the automation begins a loop that continuously updates the car's location (device_tracker golf_7_5) with the person's GPS coordinates and accuracy, repeating every 30 seconds. If triggered by the stop event and a person is identified, it updates the car's location one final time with the person's coordinates. If triggered by Home Assistant startup, it restores the car's location using the last stored coordinates from the sensor golf 7 5 last known location [sensor.golf_7_5_last_known_location]."
},
"human_like": "Tracks the location of a car by updating its position based on the driver's phone location while driving focus is active, and restores the last known location when Home Assistant restarts.",
"complexity": "high"
}
},
{
"id": "home_connect_dishwaser_delayed_start",
"result": {
"structured": "TRIGGER: When bosch sbv88tx36e 68a40e0cd8f6 bsh common status doorstate [binary_sensor.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_status_doorstate] changes from open (on) to closed (off). CONDITIONS: bosch sbv88tx36e 68a40e0cd8f6 bsh common status remotecontrolstartallowed [binary_sensor.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_status_remotecontrolstartallowed] is on. ACTIONS: Start the dishwasher program delayed at 03:00 by calling the home_connect_alt.start_program service for the device associated with switch bosch sbv88tx36e 68a40e0cd8f6 bsh common setting powerstate [switch.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_setting_powerstate] with program key Dishcare.Dishwasher.Program.Auto2 and a calculated delay option BSH.Common.Option.StartInRelative set to the number of seconds until the next 03:00 AM.",
"natural_language": {
"trigger": "When the dishwasher door sensor [binary_sensor.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_status_doorstate] changes from being open to being closed.",
"conditions": "If the dishwasher's remote start status [binary_sensor.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_status_remotecontrolstartallowed] indicates that a remote start is currently allowed.",
"action": "Schedules the dishwasher to start its 'Auto2' program with a delayed start. The delay is calculated so that the program begins at 3:00 AM the next time that hour occurs. This is performed on the dishwasher device linked to the power state switch [switch.bosch_sbv88tx36e_68a40e0cd8f6_bsh_common_setting_powerstate]."
},
"human_like": "Automatically schedules the dishwasher to run overnight at 3 AM when its door is closed, provided remote start is enabled.",
"complexity": "medium"
}
},
{
"id": "home_connect_conversation_remaining_time",
"result": {
"structured": "TRIGGER: When a conversation command matches the pattern 'Wanneer is de {machine} klaar'. CONDITIONS: None. ACTIONS: Respond with a message. If the spoken machine is 'vaatwasser' AND dishwasher remaining minutes [sensor.vaatwasser_resterende_minuten] is not 'unavailable', respond with 'over [value]'. If the spoken machine is 'wasmachine' AND washing machine remaining minutes [sensor.wasmachine_resterende_minuten] is not 'unavailable', respond with 'over [value]'. If the spoken machine is 'oven' AND oven remaining minutes [sensor.oven_resterende_minuten] is not 'unavailable', respond with 'over [value]'. Otherwise, respond with 'Ik weet het niet, staat de [machine] wel aan?'.",
"natural_language": {
"trigger": "When you ask the voice assistant 'Wanneer is de {machine} klaar' (When is the machine ready), where {machine} is a placeholder for the specific appliance name.",
"conditions": "There are no additional conditions that must be met for the action to run.",
"action": "The voice assistant will give a spoken response. If you ask about the 'vaatwasser' (dishwasher) and the dishwasher remaining minutes [sensor.vaatwasser_resterende_minuten] sensor has a valid value, it will respond with the remaining time. The same logic applies for the 'wasmachine' (washing machine) using washing machine remaining minutes [sensor.wasmachine_resterende_minuten] and the 'oven' using oven remaining minutes [sensor.oven_resterende_minuten]. If the requested machine is not one of these three, or if the corresponding sensor reports as 'unavailable', the assistant will reply that it doesn't know and asks if the machine is turned on."
},
"human_like": "When asked when a dishwasher, washing machine, or oven will be finished, the voice assistant replies with the remaining time if it's available.",
"complexity": "medium"
}
},
{
"id": "vacation_mode",
"result": {
"structured": "TRIGGER: When residents group [group.residents] state changes to not_home AND remains for 24 hours OR When residents group [group.residents] state changes to home. CONDITIONS: None. ACTIONS: IF the trigger is 'aan' AND guest mode [input_boolean.guest_mode] is off THEN Turn on vacation mode [input_boolean.vacation_mode] ELSE Turn off vacation mode [input_boolean.vacation_mode].",
"natural_language": {
"trigger": "The automation triggers in two scenarios: first, when the residents group [group.residents] has been away from home for a full 24 hours. Second, when the residents group [group.residents] returns home.",
"conditions": "There are no separate conditions block. The action logic includes a check: if the trigger was the 24-hour absence and the guest mode [input_boolean.guest_mode] is turned off.",
"action": "If the trigger was the 24-hour absence and guest mode is off, the automation turns on vacation mode [input_boolean.vacation_mode]. In all other cases (i.e., when the residents return home), it turns off vacation mode."
},
"human_like": "Automatically turns on vacation mode when everyone has been away for a full day and guest mode is off, and turns it off when someone returns home.",
"complexity": "medium"
}
},
{
"id": "vacation_mode_presence",
"result": {
"structured": "TRIGGER: When ep dining table illuminance [sensor.epl_eettafel_illuminance] remains below 2.2 for 30 minutes OR at 23:30:00 OR at 00:45:00 OR at 00:00:00. CONDITIONS: vacation mode [input_boolean.vacation_mode] is on AND guest mode [input_boolean.guest_mode] is off. ACTIONS: (IF trigger is woonkamer_avond THEN wait a random number of minutes between 0 and 15, turn on living room large 2 light [light.woonkamer_groot_2] with specific color and brightness, wait until 22:00:00, wait a random number of minutes between 0 and 30, turn off living room large 2 light [light.woonkamer_groot_2]) OR (IF trigger is tanden_poetsen THEN wait a random number of minutes between 0 and 30, turn on bathroom bright scene [scene.badkamer_helder], wait a random number of minutes between 3 and 5, turn off bathroom light [light.badkamer]) OR (IF trigger is nacht_toilet THEN wait a random number of minutes between 0 and 30, turn on bathroom relaxed scene [scene.badkamer_ontspannen], wait a random number of minutes between 1 and 3, turn off bathroom light [light.badkamer]) OR (IF trigger is alles_uit THEN run script.everything_off).",
"natural_language": {
"trigger": "The automation triggers in one of four ways: when the ep dining table illuminance [sensor.epl_eettafel_illuminance] stays below 2.2 lux for 30 minutes, or at 23:30, or at 00:45, or at midnight (00:00).",
"conditions": "The automation only runs if vacation mode [input_boolean.vacation_mode] is turned on and guest mode [input_boolean.guest_mode] is turned off.",
"action": "Depending on which trigger fired, a different sequence of actions is performed. If the light level trigger fired, it waits a random short time, turns on a specific living room light, waits until 10 PM, waits another random time, and then turns the light off. If the 23:30 trigger fired, it waits a random time, activates a bright bathroom scene, waits a few minutes, and turns off the bathroom light. If the 00:45 trigger fired, it waits a random time, activates a relaxed bathroom scene, waits a couple of minutes, and turns off the bathroom light. If the midnight trigger fired, it runs a script to turn everything off."
},
"human_like": "Simulates evening and nighttime activity in the home while on vacation by turning lights on and off at specific times or when it gets dark, to give the appearance that someone is home.",
"complexity": "high"
}
},
{
"id": "auto_christmas_tree_light",
"result": {
"structured": "TRIGGER: When living room occupancy [binary_sensor.woonkamer_bezetting] changes to on OR off. CONDITIONS: NOT (christmas tree light [light.kerstboom] is unavailable). ACTIONS: IF (time is between 07:00:00 and 00:00:00) AND (living room occupancy [binary_sensor.woonkamer_bezetting] is on) THEN send MQTT command to set effect 'carnaval' with speed 50 and specified colors to zigbee2mqtt/Kerstboom/set AND turn on christmas tree light [light.kerstboom]. OTHERWISE turn off christmas tree light [light.kerstboom].",
"natural_language": {
"trigger": "When the living room occupancy [binary_sensor.woonkamer_bezetting] sensor detects that the room becomes occupied or unoccupied.",
"conditions": "The automation only runs if the christmas tree light [light.kerstboom] is not in an unavailable state.",
"action": "If it is between 7 AM and midnight and the living room is occupied, the automation sends a specific MQTT command to set a colorful 'carnaval' effect on the Christmas tree light and then turns the light on. At any other time, or if the living room is not occupied, it simply turns the Christmas tree light off."
},
"human_like": "Turns on the Christmas tree lights with a festive effect when someone is in the living room during the day, and turns them off otherwise.",
"complexity": "medium"
}
},
{
"id": "christmas_keep_woonkamer_groot_2_off",
"result": {
"structured": "TRIGGER: When living room large 2 light [light.woonkamer_groot_2] turns on OR when christmas tree light [light.kerstboom] turns on. CONDITIONS: NOT (christmas tree light [light.kerstboom] is unavailable). ACTIONS: Turn off living room large 2 light [light.woonkamer_groot_2].",
"natural_language": {
"trigger": "When the living room large 2 light [light.woonkamer_groot_2] is turned on, or when the christmas tree light [light.kerstboom] is turned on.",
"conditions": "The automation only runs if the christmas tree light [light.kerstboom] is not in an unavailable state.",
"action": "Turns off the living room large 2 light [light.woonkamer_groot_2]."
},
"human_like": "Keeps the main living room light off when the Christmas tree lights are active, ensuring the tree remains the primary light source.",
"complexity": "low"
}
},
{
"id": "badkamer_klimaat",
"result": {
"structured": "TRIGGER: When bathroom window contact [binary_sensor.badkamerraam_contact] changes state. CONDITIONS: None. ACTIONS: If bathroom window contact [binary_sensor.badkamerraam_contact] is open (on), turn off bathroom climate [climate.badkamer]. If bathroom window contact [binary_sensor.badkamerraam_contact] is closed (off), wait 5 minutes (300 seconds), then turn on bathroom climate [climate.badkamer].",
"natural_language": {
"trigger": "Whenever the bathroom window contact [binary_sensor.badkamerraam_contact] changes its state, either opening or closing.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the window is opened, the bathroom climate [climate.badkamer] is turned off immediately. If the window is closed, the automation waits for 5 minutes before turning the bathroom climate [climate.badkamer] back on."
},
"human_like": "Controls the bathroom climate based on the window state, turning it off when the window is open and back on 5 minutes after it's closed.",
"complexity": "low"
}
},
{
"id": "mechanische_ventilatie_douchen",
"result": {
"structured": "TRIGGER: When shower motion occupancy [binary_sensor.douche_beweging_occupancy] changes from off to on. ACTIONS: 1. Execute script 'mechanical_ventilation_speed_timer' with speed 4 for 30 minutes. 2. Wait for shower motion occupancy [binary_sensor.douche_beweging_occupancy] to change from on to off and remain off for 5 minutes, with a timeout of 45 minutes. 3. Execute script 'mechanical_ventilation_speed_timer' with speed 3 for 15 minutes.",
"natural_language": {
"trigger": "When motion is first detected in the shower area, indicated by the shower motion occupancy [binary_sensor.douche_beweging_occupancy] sensor turning on.",
"conditions": "There are no explicit conditions for this automation.",
"action": "Immediately sets the mechanical ventilation fan to its highest speed for 30 minutes. It then waits for motion to stop for a continuous 5-minute period, but will stop waiting after 45 minutes even if motion continues. Finally, after the wait is satisfied or times out, it sets the fan to a high speed for 15 minutes."
},
"human_like": "Boosts ventilation to extra high when someone starts showering, then lowers it to high after they leave, helping to clear steam and moisture.",
"complexity": "medium"
}
},
{
"id": "logeerkamer_awtrix_klok",
"result": {
"structured": "TRIGGER: Not defined in the provided automation snippet; the automation uses a blueprint (golles/awtrix_clock.yaml) with inputs but no explicit triggers listed. CONDITIONS: Not defined in the provided automation snippet; the automation uses a blueprint with inputs but no explicit conditions listed. ACTIONS: Not defined in the provided automation snippet; the automation uses a blueprint with inputs but no explicit actions listed. NOTE: This automation is a blueprint-based automation. The blueprint 'golles/awtrix_clock.yaml' is invoked with the following inputs: light_entity: guest room clock matrix light [light.logeerkamer_klok_matrix], topic: awtrix_b92250, button_entity: guest room clock button select [binary_sensor.logeerkamer_klok_button_select], temp_entity: guest room temperature [sensor.logeerkamer_temperatuur], weather_entity: knmi purmerend weather [weather.knmi_purmerend], occupancy_entity: guest room occupancy [binary_sensor.logeerkamer_bezetting], dishwasher_entity: dishwasher remaining minutes [sensor.vaatwasser_resterende_minuten], washing_machine_entity: washing machine remaining minutes [sensor.wasmachine_resterende_minuten].",
"natural_language": {
"trigger": "The triggers are not explicitly defined in the provided automation YAML. This automation uses a blueprint called 'golles/awtrix_clock.yaml', which likely contains its own trigger logic, but the specific triggers are not detailed here.",
"conditions": "The conditions are not explicitly defined in the provided automation YAML. The automation uses a blueprint, which likely contains its own condition logic, but the specific conditions are not detailed here.",
"action": "The actions are not explicitly defined in the provided automation YAML. The automation uses a blueprint, which likely contains its own action logic, but the specific actions are not detailed here. The blueprint is configured to use several entities: the guest room clock matrix light [light.logeerkamer_klok_matrix], a specific MQTT topic (awtrix_b92250), the guest room clock button select [binary_sensor.logeerkamer_klok_button_select], the guest room temperature [sensor.logeerkamer_temperatuur], the knmi purmerend weather [weather.knmi_purmerend], the guest room occupancy [binary_sensor.logeerkamer_bezetting], the dishwasher remaining minutes [sensor.vaatwasser_resterende_minuten], and the washing machine remaining minutes [sensor.wasmachine_resterende_minuten]."
},
"human_like": "Configures an Awtrix smart clock in the guest room to display time, temperature, weather, occupancy status, and appliance timers.",
"complexity": "medium"
}
},
{
"id": "turn_off_klok_when_light_switch_pressed",
"result": {
"structured": "TRIGGER: When guest room switch button 4 event [event.logeerkamer_schakelaar_button_4] changes state. CONDITIONS: None. ACTIONS: Turn off guest room clock matrix light [light.logeerkamer_klok_matrix].",
"natural_language": {
"trigger": "Whenever the guest room switch button 4 event [event.logeerkamer_schakelaar_button_4] is triggered.",
"conditions": "There are no conditions that need to be met.",
"action": "Turns off the guest room clock matrix light [light.logeerkamer_klok_matrix]."
},
"human_like": "Turns off the guest room clock light when button 4 on the switch is pressed.",
"complexity": "low"
}
},
{
"id": "notification_knmi",
"result": {
"structured": "TRIGGER: When knmi warning [binary_sensor.knmi_waarschuwing] changes from off to on. CONDITIONS: None. ACTIONS: If lg c9 [media_player.lg_c9] is on, then send a notification to the TV (notify.lg_c9) containing the title and description attributes from knmi warning [binary_sensor.knmi_waarschuwing]. Then, send a Discord notification to the secret discord_weer webhook with an embed containing the warning title, description, a link, and a color determined by the warning code attribute (green, yellow, orange, red).",
"natural_language": {
"trigger": "The automation is triggered when the KNMI warning sensor [binary_sensor.knmi_waarschuwing] becomes active, changing its state from off to on.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "First, the automation checks if the LG C9 TV [media_player.lg_c9] is turned on. If it is, a notification containing the title and description of the KNMI warning is sent to the TV. Then, regardless of the TV's state, a formatted notification is sent to a specific Discord channel via a webhook. This Discord message includes the warning details, a link to the official KNMI warnings page, and a colored banner (green, yellow, orange, or red) based on the severity code of the warning."
},
"human_like": "Sends notifications to the TV and Discord when a new KNMI weather warning is issued, with the Discord message color-coded based on the warning's severity.",
"complexity": "medium"
}
},
{
"id": "notification_leeghwaterbad_ticket",
"result": {
"structured": "TRIGGER: When person sander [person.sander] changes state to Leeghwaterbad. CONDITIONS: The timestamp of leeghwaterbad next order [sensor.leeghwaterbad_volgende_bestelling] minus the current timestamp is between 0 and 3600 seconds (i.e., the order is within the next hour). ACTIONS: Send a notification to mobile_app_iphone_van_golles with title '🏊 Veel plezier met zwemmen', message 'Klik voor de tickets', and data including tag 'leeghwaterbad', an image from the 'ticket' attribute of leeghwaterbad next order [sensor.leeghwaterbad_volgende_bestelling], and a URL from the same 'ticket' attribute.",
"natural_language": {
"trigger": "When the location of person sander [person.sander] changes to Leeghwaterbad.",
"conditions": "The next scheduled order at Leeghwaterbad, as indicated by the sensor leeghwaterbad next order [sensor.leeghwaterbad_volgende_bestelling], is due within the next hour.",
"action": "Sends a notification to the mobile phone with the title '🏊 Veel plezier met zwemmen' and the message 'Klik voor de tickets'. The notification includes an image and a link, both taken from the ticket information stored in the leeghwaterbad next order [sensor.leeghwaterbad_volgende_bestelling] sensor."
},
"human_like": "Sends a swimming ticket notification to your phone when you arrive at Leeghwaterbad and have a booking within the next hour.",
"complexity": "medium"
}
},
{
"id": "lgc9_turn_on_wol",
"result": {
"structured": "TRIGGER: When the LG C9 [media_player.lg_c9] receives a 'turn_on' command via the webostv integration. CONDITIONS: None. ACTIONS: Send a Wake-on-LAN magic packet to the MAC address associated with the LG C9.",
"natural_language": {
"trigger": "When a command is issued to turn on the LG C9 [media_player.lg_c9] through the webOS TV integration.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a Wake-on-LAN packet to the television's MAC address to power it on."
},
"human_like": "Turns on the LG C9 television by sending a Wake-on-LAN signal when a turn-on command is received.",
"complexity": "low"
}
},
{
"id": "ios_action_radio_qmusic",
"result": {
"structured": "TRIGGER: When an iOS action named 'Qmusic' is fired. CONDITIONS: None. ACTIONS: Execute script.play_livingroom_radio with stream URL https://stream.qmusic.nl/qmusic/mp3.",
"natural_language": {
"trigger": "When the iOS action named 'Qmusic' is triggered.",
"conditions": "There are no conditions for this automation.",
"action": "Starts playing the Qmusic radio stream in the living room by running the script 'play_livingroom_radio' with the specified stream URL."
},
"human_like": "Plays Qmusic radio in the living room when the Qmusic iOS action is used.",
"complexity": "low"
}
},
{
"id": "ios_action_tv_ziggo",
"result": {
"structured": "TRIGGER: When an iOS action named 'Ziggo' is fired. CONDITIONS: None. ACTIONS: If mediabox [media_player.mediabox] is off, then run script.lg_c9_source_ziggo. Otherwise, turn off mediabox [media_player.mediabox].",
"natural_language": {
"trigger": "When an iOS shortcut or action named 'Ziggo' is triggered.",
"conditions": "There are no conditions that must be checked before proceeding.",
"action": "The automation checks if the mediabox [media_player.mediabox] is currently off. If it is, it runs a script called 'lg_c9_source_ziggo'. If the mediabox is not off (meaning it is on), it turns the mediabox off."
},
"human_like": "Toggles the TV's source to Ziggo or turns the TV off, depending on its current state, when triggered by an iOS shortcut.",
"complexity": "low"
}
},
{
"id": "notification_meteoalarm",
"result": {
"structured": "TRIGGER: When meteoalarm [binary_sensor.meteoalarm] changes state from off to on. CONDITIONS: (state attribute 'headline' of meteoalarm [binary_sensor.meteoalarm] is None) AND (state attribute 'description' of meteoalarm [binary_sensor.meteoalarm] is None) AND (state attribute 'instruction' of meteoalarm [binary_sensor.meteoalarm] is None). ACTIONS: If lg c9 [media_player.lg_c9] is on, then send a notification to the TV with a message containing the 'description' and 'instruction' attributes from meteoalarm [binary_sensor.meteoalarm]. Then, send a Discord notification to the secret Discord Weer Webhook [secret discord_weer] with an embed containing the 'headline', 'description', and 'instruction' attributes from meteoalarm [binary_sensor.meteoalarm], colored based on the 'code' attribute.",
"natural_language": {
"trigger": "When the MeteoAlarm sensor [binary_sensor.meteoalarm] becomes active, changing its state from off to on.",
"conditions": "The automation only runs if the MeteoAlarm sensor [binary_sensor.meteoalarm] has no headline, no description, and no instruction data available in its state attributes.",
"action": "If the LG C9 TV [media_player.lg_c9] is turned on, a notification is sent to the TV displaying the description and instruction from the MeteoAlarm. Then, a detailed notification is sent to a specific Discord channel via a webhook [secret discord_weer], which includes the alarm headline, description, instruction, a link to the MeteoAlarm website, and a color-coded embed based on the severity code."
},
"human_like": "Sends weather alert notifications to the TV and Discord when a MeteoAlarm warning is triggered, but only if the alert lacks detailed information.",
"complexity": "medium"
}
},
{
"id": "notification_ip_changed",
"result": {
"structured": "TRIGGER: When myip [sensor.myip] changes state. CONDITIONS: The new state of myip [sensor.myip] is different from its old state, and the new state is not 'unknown' or 'unavailable'. ACTIONS: Send a notification via Discord Monitoring Webhook [secret discord_monitoring] with an embed containing the new IP address.",
"natural_language": {
"trigger": "Whenever the IP address sensor myip [sensor.myip] reports a new state.",
"conditions": "The new IP address must be different from the previous one, and it must not be 'unknown' or 'unavailable'.",
"action": "Sends a Discord notification to the Discord Monitoring Webhook [secret discord_monitoring] with a message stating the new external IP address and a reminder to check the DDNS update."
},
"human_like": "Sends a Discord alert when the external IP address changes, prompting a check of the DDNS update.",
"complexity": "low"
}
},
{
"id": "overloop_on_from_zolder",
"result": {
"structured": "TRIGGER: When attic stairs motion [binary_sensor.zoldertrap_sensor_beweging] detects motion (on). CONDITIONS: attic motion [binary_sensor.zolder_beweging] is on AND hallway sensor 2 light [sensor.overloop_sensor_2_licht] is below 10 AND (hallway light [light.overloop] is off OR hallway light [light.overloop] brightness is below 25). ACTIONS: Turn on hallway spot 2 light [light.overloop_spot_2] with profile 'helder' and a 1-second transition.",
"natural_language": {
"trigger": "When motion is detected on the attic stairs by the attic stairs motion [binary_sensor.zoldertrap_sensor_beweging].",
"conditions": "If motion is also currently detected in the attic by the attic motion [binary_sensor.zolder_beweging], the light level measured by the hallway sensor 2 light [sensor.overloop_sensor_2_licht] is below 10, and either the main hallway light [light.overloop] is off or its brightness is below 25.",
"action": "Turns on the hallway spot 2 light [light.overloop_spot_2] using the 'helder' (bright) profile with a smooth 1-second transition."
},
"human_like": "Automatically turns on a hallway light when someone comes down from the attic, but only if the hallway is dark enough and the main light isn't already bright.",
"complexity": "medium"
}
},
{
"id": "notification_p2000",
"result": {
"structured": "TRIGGER: When p2000 nearby [sensor.p2000_dichtbij] changes state. CONDITIONS: The new state of p2000 nearby [sensor.p2000_dichtbij] is different from its previous state. ACTIONS: If lg c9 [media_player.lg_c9] is on, then send a notification to lg c9 [media_player.lg_c9] containing the current state of p2000 nearby [sensor.p2000_dichtbij]. Then, send a Discord notification to Discord P2000 Webhook [secret discord_p2000] with an embed. The embed's color is determined by the discipline attribute of p2000 nearby [sensor.p2000_dichtbij] (yellow for ambulance, red for fire brigade, blue for police). The title includes an emoji based on the discipline and the text 'P2000 melding'. The description includes the state of p2000 nearby [sensor.p2000_dichtbij], a Google Maps link using its latitude and longitude attributes, and a blank line.",
"natural_language": {
"trigger": "When the sensor p2000 nearby [sensor.p2000_dichtbij] changes its state.",
"conditions": "The automation only runs if the new state of the sensor is different from its old state, ensuring it only reacts to actual changes.",
"action": "If the LG TV [media_player.lg_c9] is turned on, a notification with the P2000 message is sent to the TV. Then, a detailed notification is always sent to a Discord channel via a webhook. The Discord message includes a colored embed (yellow for ambulance, red for fire brigade, blue for police) with a relevant emoji in the title, the full P2000 message, and a link to the location on Google Maps."
},
"human_like": "Sends P2000 emergency alerts to Discord and the TV when a new incident is reported nearby, with details and a map link.",
"complexity": "medium"
}
},
{
"id": "3d_printer_lamp",
"result": {
"structured": "TRIGGER: When attic occupancy [binary_sensor.zolder_bezetting] changes state OR when p1s 01p00c480300533 online [binary_sensor.p1s_01p00c480300533_online] becomes on OR when p1s 01p00c480300533 recording timelapse [binary_sensor.p1s_01p00c480300533_recording_timelapse] becomes on. CONDITIONS: p1s 01p00c480300533 online [binary_sensor.p1s_01p00c480300533_online] is on. ACTIONS: IF (attic occupancy [binary_sensor.zolder_bezetting] is on) OR (p1s 01p00c480300533 recording timelapse [binary_sensor.p1s_01p00c480300533_recording_timelapse] is on) THEN turn on p1s 01p00c480300533 chamber light [light.p1s_01p00c480300533_chamber_light]. ELSE wait 2 minutes AND turn off p1s 01p00c480300533 chamber light [light.p1s_01p00c480300533_chamber_light].",
"natural_language": {
"trigger": "The automation triggers when the attic occupancy sensor [binary_sensor.zolder_bezetting] changes its state, when the 3D printer's online status [binary_sensor.p1s_01p00c480300533_online] turns on, or when the printer's timelapse recording status [binary_sensor.p1s_01p00c480300533_recording_timelapse] turns on.",
"conditions": "The printer must be online, meaning the p1s 01p00c480300533 online [binary_sensor.p1s_01p00c480300533_online] sensor is in the 'on' state.",
"action": "If the attic is occupied [binary_sensor.zolder_bezetting is on] or the printer is recording a timelapse [binary_sensor.p1s_01p00c480300533_recording_timelapse is on], the printer's chamber light [light.p1s_01p00c480300533_chamber_light] is turned on. Otherwise, after waiting for two minutes, the chamber light is turned off."
},
"human_like": "Automatically controls the 3D printer's chamber light, turning it on when someone is in the attic or when a timelapse is being recorded, and turning it off after a delay when the room is empty and no timelapse is active.",
"complexity": "medium"
}
},
{
"id": "alarm_auto_on_off",
"result": {
"structured": "TRIGGER: When residents group [group.residents] changes to home OR not_home. CONDITIONS: None. ACTIONS: If residents group [group.residents] is not_home, then set the alarm to arm away on alarmo [alarm_control_panel.alarmo]. Otherwise, disarm the alarm on alarmo [alarm_control_panel.alarmo].",
"natural_language": {
"trigger": "When the residents group [group.residents] changes its state to either 'home' or 'not_home'.",
"conditions": "There are no additional conditions.",
"action": "If the residents group [group.residents] is 'not_home', the alarm system alarmo [alarm_control_panel.alarmo] is armed to 'away' mode. In all other cases (i.e., when the group state is 'home'), the alarm is disarmed."
},
"human_like": "Automatically arms the alarm when everyone leaves and disarms it when someone comes home.",
"complexity": "low"
}
},
{
"id": "borg_webhook",
"result": {
"structured": "TRIGGER: When a webhook request is received with webhook_id 'borg' via POST method and local_only true. CONDITIONS: None. ACTIONS: Set the value of borg [input_text.borg] to the 'status' field from the webhook JSON payload.",
"natural_language": {
"trigger": "When a specific webhook named 'borg' is triggered locally via a POST request.",
"conditions": "There are no additional conditions for this automation.",
"action": "Updates the text value of the entity borg [input_text.borg] with the 'status' information received from the webhook."
},
"human_like": "Updates a text field with the status from a local backup webhook.",
"complexity": "low"
}
},
{
"id": "notification_borg_warning",
"result": {
"structured": "TRIGGER: When borg [input_text.borg] remains in any state for 30 minutes. CONDITIONS: The state of borg [input_text.borg] equals 'Backup and/or Prune finished with errors'. ACTIONS: Send a Discord notification to Discord Monitoring Webhook [secret discord_monitoring] with a red-colored embed titled 'Borg backup' containing a description stating the backup did not go well and showing the last status from borg [input_text.borg].",
"natural_language": {
"trigger": "When the borg [input_text.borg] input text entity remains unchanged in any state for 30 minutes.",
"conditions": "The current state of the borg [input_text.borg] entity must be exactly 'Backup and/or Prune finished with errors'.",
"action": "Sends a notification to a Discord channel via the Discord Monitoring Webhook [secret discord_monitoring]. The notification is a red alert message with the title 'Borg backup', stating the backup was not successful and displaying the last reported status from the borg [input_text.borg] entity."
},
"human_like": "Sends a Discord alert if the Borg backup status indicates an error has been present for half an hour.",
"complexity": "low"
}
},
{
"id": "send_particulate_matter_data",
"result": {
"structured": "TRIGGER: When particulate matter pm 10 [sensor.particulate_matter_pm_10] OR particulate matter pm 2 5 [sensor.particulate_matter_pm_2_5] changes state OR When particulate matter humidity [sensor.particulate_matter_humidity] OR particulate matter pressure [sensor.particulate_matter_pressure] OR particulate matter temperature [sensor.particulate_matter_temperature] changes state. CONDITIONS: particulate matter standalone mode switch [switch.particulate_matter_standalone_mode] is off. ACTIONS: Wait 1 second. Then, choose based on which trigger fired: IF trigger is sds011 AND particulate matter pm 10 [sensor.particulate_matter_pm_10] is NOT (unavailable OR unknown) AND particulate matter pm 2 5 [sensor.particulate_matter_pm_2_5] is NOT (unavailable OR unknown) AND particulate matter wifi signal [sensor.particulate_matter_wifi_signal] is NOT (unavailable OR unknown) THEN execute rest_command.post_luftdaten_sds011, rest_command.post_madavi_sds011, and rest_command.post_opensensemap_sds011. IF trigger is bme280 AND particulate matter humidity [sensor.particulate_matter_humidity] is NOT (unavailable OR unknown) AND particulate matter pressure [sensor.particulate_matter_pressure] is NOT (unavailable OR unknown) AND particulate matter temperature [sensor.particulate_matter_temperature] is NOT (unavailable OR unknown) AND particulate matter wifi signal [sensor.particulate_matter_wifi_signal] is NOT (unavailable OR unknown) THEN execute rest_command.post_luftdaten_bme280, rest_command.post_madavi_bme280, and rest_command.post_opensensemap_bme280.",
"natural_language": {
"trigger": "The automation triggers when either the particulate matter concentration sensors (PM10 or PM2.5) report a new value, or when the environmental sensors (humidity, pressure, or temperature) report a new value.",
"conditions": "The automation only runs if the particulate matter standalone mode switch [switch.particulate_matter_standalone_mode] is turned off, indicating the device is not in standalone mode.",
"action": "After a one-second delay to ensure all sensor data is current, the automation checks which sensor group triggered the event. If the particulate matter sensors triggered and their values (PM10, PM2.5, and WiFi signal) are all available, it sends the data to three external services: Luftdaten, Madavi, and openSenseMap. If the environmental sensors triggered and their values (humidity, pressure, temperature, and WiFi signal) are all available, it sends that data to the corresponding endpoints for the same three services."
},
"human_like": "Sends air quality and environmental sensor data to external monitoring services when the device is not in standalone mode.",
"complexity": "medium"
}
},
{
"id": "rain_detected",
"result": {
"structured": "TRIGGER: When rain contact [binary_sensor.regen_contact] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification to Sander with title '🌧️ Regen' and message 'Test bericht, het regent', grouping it under 'weather' and linking to '/dashboard-buiten/weer'.",
"natural_language": {
"trigger": "When the rain contact [binary_sensor.regen_contact] sensor detects that it has started raining, indicated by a change from 'off' to 'on'.",
"conditions": "There are no conditions that must be met for this automation to proceed.",
"action": "Sends a notification to Sander with the title '🌧️ Regen' and the message 'Test bericht, het regent'. The notification is grouped under 'weather' and includes a link to the '/dashboard-buiten/weer' page."
},
"human_like": "Sends a rain alert notification to Sander when the rain sensor detects the start of rain.",
"complexity": "low"
}
},
{
"id": "keuken_rolgordijn_auto",
"result": {
"structured": "TRIGGER: When the time reaches the value set in covers down time [input_datetime.covers_down] OR When backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] remains below 25 for 15 minutes OR When the time reaches 19:30:00 OR When the time reaches 08:30:00 (with trigger id 'open'). CONDITIONS: None. ACTIONS: IF the triggered event has the id 'open', THEN press kitchen roller blind preference position button [button.keuken_rolgordijn_voorkeurspositie]. OTHERWISE, wait for a random delay between 0 and 30 minutes, THEN execute script 'close_cover_window_state' with parameters: wait_minutes=240, cover_entity=cover.keuken, window_entity=binary_sensor.keukenraam_contact.",
"natural_language": {
"trigger": "The automation can start in four ways: at a specific time set by the covers down time [input_datetime.covers_down], when the backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] stays below a value of 25 for 15 consecutive minutes, at 7:30 PM, or at 8:30 AM (this last trigger is specifically identified as 'open').",
"conditions": "There are no conditions that must be checked before performing the actions.",
"action": "If the automation was triggered by the 8:30 AM event (identified as 'open'), it will press the kitchen roller blind preference position button [button.keuken_rolgordijn_voorkeurspositie]. For any of the other three triggers, it will first wait for a random amount of time between 0 and 30 minutes, and then run a script called 'close_cover_window_state'. This script will manage closing the kitchen cover [cover.keuken], taking into account the state of the kitchen window contact [binary_sensor.keukenraam_contact] and waiting up to 240 minutes if needed."
},
"human_like": "Automatically opens the kitchen roller blind in the morning and closes it in the evening or when it gets dark, with a random delay for closing to vary the daily schedule.",
"complexity": "medium"
}
},
{
"id": "close_kledingkamer_cover",
"result": {
"structured": "TRIGGER: When the scheduled time reaches covers down time [input_datetime.covers_down]. CONDITIONS: None. ACTIONS: Execute script close_cover_window_state with parameters: wait for 240 minutes, target cover wardrobe cover [cover.kledingkamer], and monitor window contact wardrobe window contact [binary_sensor.kledingkamerraam_contact].",
"natural_language": {
"trigger": "At the specific time set in the input entity covers down time [input_datetime.covers_down].",
"conditions": "There are no additional conditions that must be met.",
"action": "Runs a script named 'close_cover_window_state' which will attempt to close the wardrobe cover [cover.kledingkamer], but will wait for up to 240 minutes if the wardrobe window contact [binary_sensor.kledingkamerraam_contact] indicates the window is open."
},
"human_like": "Closes the wardrobe cover at a scheduled time, but waits if the window is open.",
"complexity": "low"
}
},
{
"id": "rolluiken_open_niemand_thuis",
"result": {
"structured": "TRIGGER: At 09:00:00. CONDITIONS: residents group [group.residents] is not_home AND guest mode [input_boolean.guest_mode] is off. ACTIONS: Execute script 'open_south_facing_covers_based_on_weather' AND press guest room roller blind preference position button [button.logeerkamer_rolgordijn_voorkeurspositie].",
"natural_language": {
"trigger": "At 9:00 AM.",
"conditions": "If the residents group [group.residents] is marked as not home and guest mode [input_boolean.guest_mode] is turned off.",
"action": "First, it runs a script to open the south-facing covers based on the weather. Then, it presses the guest room roller blind preference position button [button.logeerkamer_rolgordijn_voorkeurspositie]."
},
"human_like": "Opens the south-facing roller blinds and sets the guest room blind to its preferred position at 9 AM when nobody is home and guest mode is off.",
"complexity": "low"
}
},
{
"id": "switch_soundbar_source_and_volume_when_tv_on",
"result": {
"structured": "TRIGGER: When lg c9 [media_player.lg_c9] turns on (state changes from off to on). CONDITIONS: None. ACTIONS: Execute shell command set_soundbar_source_and_volume with parameters source 15 and volume 12.",
"natural_language": {
"trigger": "When the lg c9 [media_player.lg_c9] TV turns on.",
"conditions": "There are no conditions for this automation.",
"action": "Runs a shell command to set the soundbar's source to 15 and its volume to 12."
},
"human_like": "Automatically sets the soundbar to the correct source and volume when the TV is turned on.",
"complexity": "low"
}
},
{
"id": "electricity_low_today",
"result": {
"structured": "TRIGGER: When the time is 10:30:00 OR When residents group [group.residents] changes from not_home to home. CONDITIONS: (dsmr meter stats electricity tariff [sensor.dsmr_meter_stats_electricity_tariff] is low) AND (residents group [group.residents] is home) AND (weekday is Monday OR Tuesday OR Wednesday OR Thursday OR Friday) AND (time is after 07:00:00 AND before 23:00:00) AND (the automation 'automation.notificatie_elektriciteit_laag_tarief_vandaag' was last triggered more than 24 hours ago). ACTIONS: Send a Discord notification to Discord Meterstanden Webhook [secret discord_meterstanden] with an embed title '🔌 Elektriciteit' and description 'Vandaag is de Elektriciteit de hele dag laag tarief'.",
"natural_language": {
"trigger": "The automation triggers either at 10:30 AM every day, or when the residents group [group.residents] changes its state from 'not_home' to 'home'.",
"conditions": "All of the following must be true: the electricity tariff sensor [sensor.dsmr_meter_stats_electricity_tariff] must show 'low'; the residents group [group.residents] must be 'home'; the current day must be a weekday (Monday through Friday); the current time must be between 07:00 and 23:00; and the automation itself must not have been triggered in the last 24 hours.",
"action": "Sends a notification to a Discord channel via the Discord Meterstanden Webhook [secret discord_meterstanden]. The notification is an embed with the title '🔌 Elektriciteit' and the message 'Vandaag is de Elektriciteit de hele dag laag tarief' (Today the electricity is low tariff all day)."
},
"human_like": "Sends a weekday Discord notification when electricity is on a low tariff and residents are home, but only once per day.",
"complexity": "medium"
}
},
{
"id": "system_monitoring_alert",
"result": {
"structured": "TRIGGER: When system monitor disk usage [sensor.system_monitor_schijfgebruik] exceeds 80% OR When system monitor disk usage media [sensor.system_monitor_schijfgebruik_media] exceeds 80% OR When system monitor memory usage [sensor.system_monitor_geheugengebruik] exceeds 80% AND remains for 5 minutes OR When system monitor swap usage [sensor.system_monitor_swap_usage] exceeds 80% AND remains for 5 minutes OR When system monitor processor use [sensor.system_monitor_processor_use] exceeds 80% AND remains for 5 minutes OR When system monitor processor temperature [sensor.system_monitor_processortemperatuur] exceeds 85°C AND remains for 5 minutes. CONDITIONS: None. ACTIONS: Send a red Discord alert via Discord Monitoring Webhook [secret discord_monitoring] with a message containing the specific alert text and the current state value, THEN wait for up to 1 hour for the triggering sensor's value to drop below its defined threshold, and if it does, send a green Discord resolved notification via Discord Monitoring Webhook [secret discord_monitoring] with a message containing the specific resolved text and the current state value.",
"natural_language": {
"trigger": "The automation triggers when any of several system monitoring sensors exceed their thresholds. For disk usage on SSD1 [sensor.system_monitor_schijfgebruik] or SSD2 [sensor.system_monitor_schijfgebruik_media], the trigger is immediate when usage goes above 80%. For memory usage [sensor.system_monitor_geheugengebruik], swap usage [sensor.system_monitor_swap_usage], processor use [sensor.system_monitor_processor_use], and processor temperature [sensor.system_monitor_processortemperatuur], the value must stay above 80% (or 85°C for temperature) for a continuous period of 5 minutes.",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "When triggered, the automation first sends a red 'alert' notification to a Discord channel via the Discord Monitoring Webhook [secret discord_monitoring]. The message includes a specific description of the issue (e.g., 'SSD1 is bijna vol') with the current sensor value. It then waits for up to one hour, checking if the sensor value that caused the alert drops back below its threshold. If the value recovers within that hour, a green 'resolved' notification is sent to the same Discord channel. If the value does not recover within the hour, no further action is taken."
},
"human_like": "Sends Discord alerts for high system resource usage (like disk, memory, CPU, and temperature), and sends a follow-up 'all clear' message if the issue resolves within an hour.",
"complexity": "medium"
}
},
{
"id": "auto_day_night_theme",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR When Sun [sun.sun] changes state to below_horizon OR above_horizon. CONDITIONS: None. ACTIONS: If Sun [sun.sun] is below_horizon, set the frontend theme to Mushroom Shadow with dark mode. Otherwise, set the frontend theme to Mushroom Shadow with light mode.",
"natural_language": {
"trigger": "This automation runs when Home Assistant first starts, or whenever the Sun [sun.sun] changes its state, such as when it sets (below_horizon) or rises (above_horizon).",
"conditions": "There are no conditions that must be met for the action to run; the automation proceeds directly from the trigger.",
"action": "Depending on the state of the sun, it changes the user interface theme. If the sun is below the horizon (nighttime), it sets the theme to Mushroom Shadow in dark mode. If the sun is above the horizon (daytime), it sets the theme to Mushroom Shadow in light mode."
},
"human_like": "Automatically switches the interface theme between light and dark modes based on sunrise and sunset.",
"complexity": "low"
}
},
{
"id": "trapkast_light_based_on_door",
"result": {
"structured": "TRIGGER: When closet door contact [binary_sensor.trapkastdeur_contact] changes to open (on) OR closed (off). CONDITIONS: None. ACTIONS: If closet door contact [binary_sensor.trapkastdeur_contact] is open (on), turn on closet lamp [light.trapkastlamp], wait 10 minutes, then turn off closet lamp [light.trapkastlamp]. Otherwise, turn off closet lamp [light.trapkastlamp].",
"natural_language": {
"trigger": "Whenever the closet door contact [binary_sensor.trapkastdeur_contact] changes its state, either opening or closing.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the door is opened, the closet lamp [light.trapkastlamp] is turned on. After a 10-minute delay, the lamp is turned off. If the door is closed, the lamp is immediately turned off."
},
"human_like": "Automatically turns on the closet light when the door is opened, and turns it off after 10 minutes or immediately when the door is closed.",
"complexity": "medium"
}
},
{
"id": "trapkast_knop",
"result": {
"structured": "TRIGGER: When the Zigbee switch [d6a97e023579c72e49cbdd8f5391df8b] is pressed (single click). CONDITIONS: None. ACTIONS: Toggle closet lamp [light.trapkastlamp].",
"natural_language": {
"trigger": "When the Zigbee switch [d6a97e023579c72e49cbdd8f5391df8b] is pressed once.",
"conditions": "There are no conditions for this automation.",
"action": "Toggles the closet lamp [light.trapkastlamp] on or off."
},
"human_like": "Toggles the closet light on or off with a single press of the Zigbee switch.",
"complexity": "low"
}
},
{
"id": "ziggo_auto_off_when_tv_off",
"result": {
"structured": "TRIGGER: When lg c9 [media_player.lg_c9] remains off for 1 minute. CONDITIONS: NOT (mediabox [media_player.mediabox] is off). ACTIONS: Turn off mediabox [media_player.mediabox].",
"natural_language": {
"trigger": "When the TV (lg c9 [media_player.lg_c9]) has been turned off for at least one minute.",
"conditions": "If the mediabox [media_player.mediabox] is not already off.",
"action": "Turn off the mediabox [media_player.mediabox]."
},
"human_like": "Automatically turns off the mediabox when the TV has been off for a minute, but only if the mediabox is still on.",
"complexity": "low"
}
},
{
"id": "ups_state_change",
"result": {
"structured": "TRIGGER: When ups status [sensor.ups_status] changes state. CONDITIONS: (NOT (ups self test result [sensor.ups_resultaat_zelftest] is In progress)) AND (trigger.from_state.state is NOT in [\"unavailable\", \"Online\", \"Online Battery Charging\"] AND trigger.to_state.state is NOT in [\"unavailable\", \"Online\", \"Online Battery Charging\"]). ACTIONS: Send a Discord notification to Discord Monitoring Webhook [secret discord_monitoring] with an embed titled \"🔋 UPS status\", a description containing the current state of ups status [sensor.ups_status], and a color determined by the state (green if \"Online\", red otherwise).",
"natural_language": {
"trigger": "Whenever the ups status [sensor.ups_status] sensor changes its state.",
"conditions": "The ups self test result [sensor.ups_resultaat_zelftest] must not be \"In progress\". Additionally, the change must be between states that are both considered non-normal; specifically, the previous state and the new state must not be \"unavailable\", \"Online\", or \"Online Battery Charging\".",
"action": "Sends a notification to a Discord channel via the Discord Monitoring Webhook [secret discord_monitoring]. The notification includes an embed with a title \"🔋 UPS status\", a description showing the current status of the UPS, and a colored indicator (green for \"Online\", red for any other status)."
},
"human_like": "Sends a Discord alert when the UPS changes to or from a non-normal operating state, but only when a self-test is not running.",
"complexity": "medium"
}
},
{
"id": "post_daily_meter_values_at_midnight",
"result": {
"structured": "TRIGGER: At midnight (00:00:00). CONDITIONS: None. ACTIONS: Execute the REST command post_daily_meter_values.",
"natural_language": {
"trigger": "At exactly midnight.",
"conditions": "There are no conditions.",
"action": "Calls the REST command named post_daily_meter_values."
},
"human_like": "Posts daily meter values to a remote service at midnight.",
"complexity": "low"
}
},
{
"id": "notification_monthly_meter_values",
"result": {
"structured": "TRIGGER: When the time is 09:00:00. CONDITIONS: The current day of the month is the 1st. ACTIONS: Execute the REST command 'get_monthly_meter_values' and store the response in variable 'meter_response'. IF the response status is 200, THEN set variables 'current_month', 'previous_month', 'jan1st_year', and 'previous_jan1st' based on the response data, and send a notification to Discord Meterstanden Webhook [secret discord_meterstanden] with an embedded message containing the current month's meter values, the consumption compared to the previous month, and the consumption since January 1st of the current (or previous) year.",
"natural_language": {
"trigger": "The automation triggers daily at 9:00 AM.",
"conditions": "It only proceeds if the current day is the first day of the month.",
"action": "It fetches monthly meter values via a REST command. If the fetch is successful (status code 200), it calculates the current month's readings, the consumption since the previous month, and the consumption since January 1st of the relevant year. It then sends a formatted notification with these details to a specified Discord channel using the Discord Meterstanden Webhook [secret discord_meterstanden]."
},
"human_like": "Sends a monthly summary of electricity and heating meter readings to Discord on the first day of each month.",
"complexity": "medium"
}
},
{
"id": "badkamer_light_auto",
"result": {
"structured": "TRIGGER: When bathroom motion [binary_sensor.badkamer_beweging] detects motion (on). CONDITIONS: (Current time is between 08:00:00 and 00:00:00 (daytime) AND bathroom sensor light [sensor.badkamer_sensor_licht] illuminance is below 15 lux) OR (Current time is between 00:00:00 and 08:00:00 (nighttime)). ACTIONS: Turn on bathroom light [light.badkamer] with bathroom bright scene [scene.badkamer_helder] (daytime) OR bathroom relaxed scene [scene.badkamer_ontspannen] (nighttime). After motion stops, wait 15 seconds, then turn on bathroom light [light.badkamer] with bathroom dimmed scene [scene.badkamer_gedimd] (daytime) OR bathroom nightlight scene [scene.badkamer_nachtlampje] (nighttime). Wait 120 seconds, then turn off bathroom light [light.badkamer].",
"natural_language": {
"trigger": "When motion is detected by the bathroom motion sensor [binary_sensor.badkamer_beweging].",
"conditions": "If it is daytime (between 08:00 and midnight) and the ambient light level from the bathroom sensor light [sensor.badkamer_sensor_licht] is below 15 lux, or if it is nighttime (between midnight and 08:00).",
"action": "During the day, the bathroom light [light.badkamer] is turned on to the bright scene [scene.badkamer_helder]. At night, it is turned on to the relaxed scene [scene.badkamer_ontspannen]. After motion is no longer detected, there is a 15-second delay, then the light is set to a dimmed scene (bathroom dimmed scene [scene.badkamer_gedimd] during the day or bathroom nightlight scene [scene.badkamer_nachtlampje] at night). Finally, after a 120-second cooldown period, the light is turned off."
},
"human_like": "Automatically turns the bathroom light on with different brightness levels when motion is detected, depending on the time of day and ambient light, and turns it off after a delay when the room is empty.",
"complexity": "medium"
}
},
{
"id": "badkamer_enable_automatic_lights",
"result": {
"structured": "TRIGGER: When bathroom light [light.badkamer] changes from on to off. CONDITIONS: bathroom light automatically on off by presence automation [automation.badkamerlamp_automatisch_aan_uit_door_aanwezigheid] is off. ACTIONS: Turn on bathroom light automatically on off by presence automation [automation.badkamerlamp_automatisch_aan_uit_door_aanwezigheid].",
"natural_language": {
"trigger": "When the bathroom light [light.badkamer] is turned off.",
"conditions": "If the automation that controls the bathroom light based on presence [automation.badkamerlamp_automatisch_aan_uit_door_aanwezigheid] is currently disabled.",
"action": "Re-enables the presence-based bathroom light automation by turning it on."
},
"human_like": "Re-enables the automatic bathroom light control when the light is manually turned off.",
"complexity": "low"
}
},
{
"id": "notification_new_version",
"result": {
"structured": "TRIGGER: When docker hub update available [binary_sensor.docker_hub_update_available] changes from off to on AND remains on for 90 minutes. CONDITIONS: None. ACTIONS: Send a Discord notification via Discord Updates Webhook [secret discord_updates] with an embed containing the new version from docker hub [sensor.docker_hub], the current version from current version [sensor.current_version], and the release notes from home assistant website [sensor.home_assistant_website].",
"natural_language": {
"trigger": "When the binary sensor indicating a Docker Hub update becomes available and stays in the 'available' state for 90 minutes.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a formatted notification to a Discord channel via a webhook. The notification includes details about the new Home Assistant version available, the currently installed version, and a link to the release notes."
},
"human_like": "Sends a Discord notification when a new Home Assistant version has been available for 90 minutes.",
"complexity": "low"
}
},
{
"id": "someone_arrives_home",
"result": {
"structured": "TRIGGER: When person sander [person.sander] changes state from not_home to home. CONDITIONS: backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is below 10. ACTIONS: Turn on front yard bright scene [scene.voortuin_helder] with a 2-second transition. THEN wait for front door contact [binary_sensor.voordeur_contact] to change from on to off, with a timeout of 15 minutes (proceed if timeout occurs). THEN delay for 5 seconds. THEN turn off front yard light [light.voortuin] with a 2-second transition.",
"natural_language": {
"trigger": "When person sander [person.sander] arrives home, changing their state from 'not_home' to 'home'.",
"conditions": "The backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] reports a light level below 10, indicating it is dark enough.",
"action": "First, the front yard bright scene [scene.voortuin_helder] is activated with a 2-second fade-in. Then, the automation waits for the front door contact [binary_sensor.voordeur_contact] to close (change from open to closed) for up to 15 minutes; if this doesn't happen, it proceeds anyway. After that, it pauses for 5 seconds and then turns off the front yard light [light.voortuin] with a 2-second fade-out."
},
"human_like": "Turns on the front yard lights when Sander arrives home after dark, and turns them off after the front door is closed or after a timeout.",
"complexity": "medium"
}
},
{
"id": "automatic_frontgarden_lights",
"result": {
"structured": "TRIGGER: When front door contact [binary_sensor.voordeur_contact] changes from closed (off) to open (on). CONDITIONS: backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is below 10 lux. ACTIONS: Turn on front yard bright scene [scene.voortuin_helder] with a 2-second transition. Then, wait for front door contact [binary_sensor.voordeur_contact] to change from open (on) to closed (off) for up to 5 minutes (if timeout occurs, continue). Then, wait for 30 seconds. Then, turn off front yard light [light.voortuin] with a 2-second transition.",
"natural_language": {
"trigger": "When the front door contact [binary_sensor.voordeur_contact] opens.",
"conditions": "The backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] must report a light level below 10 lux.",
"action": "First, it turns on the front yard bright scene [scene.voortuin_helder] with a smooth 2-second transition. Then, it waits for the front door to close, but will proceed after a maximum wait of 5 minutes even if the door remains open. After that, it waits an additional 30 seconds before turning off the front yard light [light.voortuin] with a 2-second transition."
},
"human_like": "Turns on the front yard lights when the front door opens at night, and turns them off a short while after the door closes.",
"complexity": "medium"
}
},
{
"id": "washing_machine_door_open_when_done",
"result": {
"structured": "TRIGGER: When bosch wawh2643nl 68a40e31630b bsh common status operationstate [sensor.bosch_wawh2643nl_68a40e31630b_bsh_common_status_operationstate] changes from 'Afgerond' to 'Klaar'. CONDITIONS: bosch wawh2643nl 68a40e31630b bsh common status doorstate [binary_sensor.bosch_wawh2643nl_68a40e31630b_bsh_common_status_doorstate] is open (on) AND balcony door contact [binary_sensor.balkondeur_contact] is closed (off) AND attic window contact [binary_sensor.zolderraam_contact] is closed (off). ACTIONS: (IF mechanical ventilation fan [fan.mechanische_ventilatie_ventilatie] percentage is below 51 THEN run script mechanical_ventilation_speed_timer with speed 3 for 30 minutes) AND (IF attic climate [climate.zolder] state is 'auto' AND attic climate [climate.zolder] temperature attribute is below 20 THEN run tado.set_climate_timer on attic climate [climate.zolder] for 2 hours with temperature 23).",
"natural_language": {
"trigger": "When the washing machine's operation state changes from 'Afgerond' (Finished) to 'Klaar' (Ready).",
"conditions": "The washing machine door must be open, the balcony door must be closed, and the attic window must be closed.",
"action": "If the mechanical ventilation fan is running at less than 51% speed, it will be turned to speed 3 for 30 minutes to reduce humidity. Additionally, if the attic climate control is in 'auto' mode and the current temperature is below 20 degrees, the heating will be set to 23 degrees for 2 hours to help reduce humidity."
},
"human_like": "When the washing cycle is complete and the door is open, this automation helps reduce humidity by increasing ventilation and, if needed, warming the attic.",
"complexity": "medium"
}
},
{
"id": "notification_washing_machine",
"result": {
"structured": "TRIGGER: When bosch wawh2643nl 68a40e31630b bsh common status operationstate [sensor.bosch_wawh2643nl_68a40e31630b_bsh_common_status_operationstate] changes state from 'Loopt' to 'Afgerond'. CONDITIONS: lg c9 [media_player.lg_c9] is on. ACTIONS: Send a notification to lg c9 [media_player.lg_c9] with the message 'Wasmachine is klaar'.",
"natural_language": {
"trigger": "When the washing machine's operation state sensor [sensor.bosch_wawh2643nl_68a40e31630b_bsh_common_status_operationstate] changes from 'Running' to 'Completed'.",
"conditions": "The LG C9 television [media_player.lg_c9] must be turned on.",
"action": "Sends a notification to the LG C9 television [media_player.lg_c9] displaying the message 'Wasmachine is klaar' (Washing machine is done)."
},
"human_like": "Sends a notification to the living room TV when the washing machine finishes its cycle, but only if the TV is on.",
"complexity": "low"
}
},
{
"id": "ios_action_alarm_clock_off",
"result": {
"structured": "TRIGGER: When an iOS action named 'Wekker uit' is fired. CONDITIONS: (person sander [person.sander] has a user_id attribute matching the user_id from the trigger) AND (person sander [person.sander] is at home). ACTIONS: No action (empty sequence).",
"natural_language": {
"trigger": "When the iOS action named 'Wekker uit' (Alarm off) is triggered.",
"conditions": "If the action was triggered by person sander [person.sander] and if person sander [person.sander] is currently at home.",
"action": "No action is performed; the automation does nothing."
},
"human_like": "This automation validates that Sander is home and triggered the 'Alarm off' iOS action, but does not perform any further actions.",
"complexity": "medium"
}
},
{
"id": "ios_action_alarm_clock_snooze",
"result": {
"structured": "TRIGGER: When an iOS action named 'Wekker gesnoozed' is fired. CONDITIONS: (Temperature [sensor.knmi_temperatuur] is above -2) AND (The user_id from the trigger matches the user_id attribute of person sander [person.sander]) AND (person sander [person.sander] is at home). ACTIONS: If bedroom cover [cover.slaapkamer] is closed, press bedroom my position button [button.slaapkamer_my_position]. If wardrobe cover [cover.kledingkamer] is closed, press wardrobe my position button [button.kledingkamer_my_position].",
"natural_language": {
"trigger": "When the iOS action 'Wekker gesnoozed' (alarm clock snoozed) is triggered from a mobile device.",
"conditions": "The outdoor temperature reported by the KNMI sensor [sensor.knmi_temperatuur] must be above -2 degrees. The action must have been triggered by Sander, verified by matching the user ID from the event with Sander's user ID attribute [person.sander]. Additionally, Sander's location [person.sander] must be 'home'.",
"action": "If the bedroom cover [cover.slaapkamer] is closed, it will be set to a preferred position by pressing the 'my position' button [button.slaapkamer_my_position]. Independently, if the wardrobe cover [cover.kledingkamer] is closed, it will also be set to a preferred position by pressing its 'my position' button [button.kledingkamer_my_position]."
},
"human_like": "When Sander snoozes his alarm while at home and it's not too cold, this automation sets his bedroom and wardrobe covers to a preferred position if they are closed.",
"complexity": "medium"
}
},
{
"id": "zigbee2mqtt_coordinator_update_notification",
"result": {
"structured": "TRIGGER: When zigbee2mqtt coordinator update [update.zigbee2mqtt_coordinator] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification via Discord Updates Webhook [secret discord_updates] with an embed containing details about the available coordinator firmware update, including the latest version from zigbee2mqtt coordinator latest version [sensor.zigbee2mqtt_coordinator_latest_version] and the current version from zigbee2mqtt bridge coordinator version [sensor.zigbee2mqtt_bridge_coordinator_version].",
"natural_language": {
"trigger": "When the zigbee2mqtt coordinator update [update.zigbee2mqtt_coordinator] becomes available, changing its state from off to on.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to a Discord channel using the Discord Updates Webhook [secret discord_updates]. The notification includes an embedded message with the title 'Coordinator update', details about the available firmware version from zigbee2mqtt coordinator latest version [sensor.zigbee2mqtt_coordinator_latest_version] and the currently installed version from zigbee2mqtt bridge coordinator version [sensor.zigbee2mqtt_bridge_coordinator_version], along with a link to the latest releases."
},
"human_like": "Sends a Discord notification when a new Zigbee2MQTT coordinator firmware update becomes available.",
"complexity": "low"
}
},
{
"id": "notification_zigbee_devices_unavailable",
"result": {
"structured": "TRIGGER: When count zigbee unavailable [sensor.count_zigbee_unavailable] is below 1 OR When count zigbee unavailable [sensor.count_zigbee_unavailable] is above 0 for 3 hours. CONDITIONS: The system uptime [sensor.uptime] is greater than 5 minutes (300 seconds). ACTIONS: Send a Discord notification to Discord Monitoring Webhook [secret discord_monitoring] with an embed. The embed's color and description message are determined by which trigger fired.",
"natural_language": {
"trigger": "This automation triggers in two scenarios: first, when the count of unavailable Zigbee devices [sensor.count_zigbee_unavailable] drops below one, indicating all devices are back online. Second, when the count of unavailable devices [sensor.count_zigbee_unavailable] remains above zero for a continuous period of three hours.",
"conditions": "The automation will only run if the system has been up for more than five minutes, as determined by the uptime sensor [sensor.uptime]. This prevents notifications from being sent immediately after a system reboot.",
"action": "Sends a formatted notification to a Discord channel via the Discord Monitoring Webhook [secret discord_monitoring]. The notification includes an embed with a title, an icon, a color, and a message. The color and the specific message text (either confirming all devices are reachable or listing the unavailable ones) depend on which trigger condition was met."
},
"human_like": "Sends a Discord alert when Zigbee devices become unreachable for an extended period or when they all come back online, but waits a few minutes after a system reboot to avoid false alarms.",
"complexity": "medium"
}
},
{
"id": "notification_ziggo_incidents",
"result": {
"structured": "TRIGGER: When ziggo incidents [sensor.ziggo_incidents] changes state. CONDITIONS: The sensor attribute 'announcements' is not None and not an empty list AND the sensor attribute 'outages' is not None and not an empty list. ACTIONS: Send a Discord notification to Discord Monitoring Webhook [secret discord_monitoring] with an embed containing the title 'Storingen en onderhoud' and a description populated with the values of the 'outages' and 'announcements' attributes from ziggo incidents [sensor.ziggo_incidents].",
"natural_language": {
"trigger": "Whenever the state of the Ziggo incidents sensor [sensor.ziggo_incidents] changes.",
"conditions": "The automation only proceeds if the Ziggo incidents sensor has both 'announcements' and 'outages' attributes, and both of these attributes contain data (they are not empty or missing).",
"action": "Sends a formatted notification to a Discord channel via the Discord Monitoring Webhook [secret discord_monitoring]. The notification includes an embed with a title and a description that lists the current outages and announcements reported by the Ziggo incidents sensor."
},
"human_like": "Sends a Discord alert with Ziggo service outage and maintenance information whenever new data is available.",
"complexity": "medium"
}
},
{
"id": "notification_arrived_home_after_visited_parents",
"result": {
"structured": "TRIGGER: When person sander [person.sander] arrives home (state changes to home). CONDITIONS: (visisted parents [sensor.visisted_parents] state is greater than 0) AND (The automation automation.notificatie_komt_thuis_na_bezoeken_ouders has not been triggered in the last 24 hours). ACTIONS: Send a notification to sander with title 'Welkom thuis' and message 'Je bent vandaag bij ouders geweest', including group 'zone_ouders' and a shortcut named 'Home Assistant - Ouders bericht'.",
"natural_language": {
"trigger": "When person sander [person.sander] arrives at home.",
"conditions": "The sensor visisted parents [sensor.visisted_parents] must have a value greater than 0, and the automation itself must not have been triggered within the last 24 hours.",
"action": "Sends a notification to sander with the title 'Welkom thuis' and the message 'Je bent vandaag bij ouders geweest', grouping it under 'zone_ouders' and providing a shortcut named 'Home Assistant - Ouders bericht'."
},
"human_like": "Sends a welcome home notification to Sander when he returns home after having visited his parents, but only once per day.",
"complexity": "medium"
}
},
{
"id": "ios_action_awning_command",
"result": {
"structured": "TRIGGER: When an iOS action_fired event occurs with actionName 'Zonnescherm dicht' OR When an iOS action_fired event occurs with actionName 'Zonnescherm open' OR When an iOS action_fired event occurs with actionName 'Zonnescherm helemaal open'. CONDITIONS: None. ACTIONS: Set variable 'action_name' to the value of the event's actionName. Then, based on the value of 'action_name': IF 'action_name' equals 'Zonnescherm dicht' THEN close awning cover [cover.zonnescherm]. IF 'action_name' equals 'Zonnescherm open' THEN press awning my position button [button.zonnescherm_my_position]. IF 'action_name' equals 'Zonnescherm helemaal open' THEN open awning cover [cover.zonnescherm].",
"natural_language": {
"trigger": "When a user triggers an iOS shortcut or widget action named 'Zonnescherm dicht', 'Zonnescherm open', or 'Zonnescherm helemaal open'.",
"conditions": "There are no additional conditions that must be met for this automation to run.",
"action": "The automation first captures the name of the action that was triggered. Depending on the action name, it performs a different operation: if the action is 'Zonnescherm dicht', it closes the awning cover [cover.zonnescherm]. If the action is 'Zonnescherm open', it presses the awning my position button [button.zonnescherm_my_position]. If the action is 'Zonnescherm helemaal open', it opens the awning cover [cover.zonnescherm] fully."
},
"human_like": "Controls the backyard awning based on iOS shortcut commands, allowing you to close it, open it fully, or set it to a 'my position' preset.",
"complexity": "medium"
}
},
{
"id": "auto_close_awning",
"result": {
"structured": "TRIGGER: When sun position [sensor.zon_positie] changes from Achter to Voor OR When Sun [sun.sun] sets (state changes to below_horizon) OR When Sun [sun.sun] elevation attribute falls below 7. CONDITIONS: awning contact contact [binary_sensor.zonnescherm_contact_contact] is on. ACTIONS: Close the awning cover [cover.zonnescherm].",
"natural_language": {
"trigger": "The automation triggers when the sun position [sensor.zon_positie] moves from 'Achter' to 'Voor', when the sun [sun.sun] sets, or when the sun's elevation [sun.sun] drops below 7 degrees.",
"conditions": "The awning contact contact [binary_sensor.zonnescherm_contact_contact] must be on, indicating the awning is likely extended or in a state that allows closing.",
"action": "Closes the awning cover [cover.zonnescherm]."
},
"human_like": "Automatically closes the backyard awning when the sun moves to the front, sets, or is low in the sky, provided the awning is in a state that allows it.",
"complexity": "medium"
}
},
{
"id": "ios_action_awning_can_be_opened",
"result": {
"structured": "TRIGGER: When backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is above 3800 OR When sun position [sensor.zon_positie] changes from Voor to Achter. CONDITIONS: backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is above 3800 AND sun position [sensor.zon_positie] is Achter AND knmi max temperature today [sensor.knmi_max_temperatuur_vandaag] is above 19 AND knmi precipitation today [sensor.knmi_neerslag_vandaag] is below 10 AND awning contact contact [binary_sensor.zonnescherm_contact_contact] is off AND vacation mode [input_boolean.vacation_mode] is off. ACTIONS: Set a variable 'action_open' based on the automation context ID. Send a notification to all phones asking if the awning should be opened, with a 'Yes, open' action button. Wait for a mobile app notification action matching the 'action_open' variable. If the received action matches, press the awning my position button [button.zonnescherm_my_position] and clear the notification with tag 'sun' on all devices.",
"natural_language": {
"trigger": "The automation triggers when the light level from the backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] exceeds 3800, or when the sun position [sensor.zon_positie] changes from 'Voor' (front) to 'Achter' (behind).",
"conditions": "All of the following must be true: The backyard sensor 1 light [sensor.achtertuin_sensor_1_licht] is still above 3800, the sun position [sensor.zon_positie] is currently 'Achter', the maximum forecasted temperature for today from knmi max temperature today [sensor.knmi_max_temperatuur_vandaag] is above 19 degrees, the forecasted precipitation for today from knmi precipitation today [sensor.knmi_neerslag_vandaag] is below 10, the awning contact contact [binary_sensor.zonnescherm_contact_contact] indicates the awning is not in contact (off), and the vacation mode [input_boolean.vacation_mode] is turned off.",
"action": "The automation prepares a unique action identifier. It then sends a notification to all phones asking if the user wants to open the awning, providing a 'Yes, open' button. It waits for the user to tap that button. If the user confirms, it presses the awning my position button [button.zonnescherm_my_position] to open the awning and clears the original notification from all devices."
},
"human_like": "Asks for permission to open the awning when the sun moves behind the house and conditions like light, temperature, and weather are suitable.",
"complexity": "medium"
}
}
]