AutomationDataset/gieljnssns/automation-descriptions.json

2875 lines
367 KiB
JSON

[
{
"id": "2df820fc-5f67-4ed6-a150-be60e6c4b9fa",
"result": {
"structured": "TRIGGER: When kitchen back door [binary_sensor.keuken_achterdeur] becomes open (on) AND remains open for 90 seconds. CONDITIONS: (average temperature inside [sensor.gemiddelde_temp_binnen] is less than outside temperature [sensor.buiten_temperatuur]) AND (average downstairs temperature [sensor.gemiddelde_temp_beneden] is above 22). ACTIONS: 1. Update back door sensor [sensor.achterdeur]. 2. Announce a TTS message on kitchen mass speaker [media_player.mass_keuken] using the state of back door sensor [sensor.achterdeur]. 3. Wait 60 seconds. 4. Update back door sensor [sensor.achterdeur] again. 5. Check if kitchen back door [binary_sensor.keuken_achterdeur] is still open (on). 6. If condition 5 is true, run script notify_everyone_at_home with a warning title and message, and play a sound. 7. Announce the same TTS message on kitchen mass speaker [media_player.mass_keuken] again.",
"natural_language": {
"trigger": "When the kitchen back door [binary_sensor.keuken_achterdeur] is left open for 90 seconds.",
"conditions": "If the average temperature inside [sensor.gemiddelde_temp_binnen] is lower than the outside temperature [sensor.buiten_temperatuur], and the average downstairs temperature [sensor.gemiddelde_temp_beneden] is above 22 degrees.",
"action": "First, it updates the back door sensor [sensor.achterdeur] and then plays a text-to-speech announcement on the kitchen mass speaker [media_player.mass_keuken] using the current state of the back door sensor. After a 60-second delay, it updates the sensor again and checks if the back door is still open. If it is, it sends a push notification with a sound alert to everyone at home and repeats the TTS announcement."
},
"human_like": "Warns you to close the back door when it's left open in warm weather to prevent heat loss, using voice announcements and notifications.",
"complexity": "medium"
}
},
{
"id": "5d7a7e2a-ceeb-4b06-b900-ead7be000f41",
"result": {
"structured": "TRIGGER: When kitchen back door [binary_sensor.keuken_achterdeur] opens (state changes to on). CONDITIONS: kitchen ceiling light [light.keuken_luster] is off AND kitchen entry light [light.keuken_inkom] is off AND kitchen spotlights [light.keuken_spots] is off AND dark inside sensor [sensor.dark_inside] is true. ACTIONS: Turn on kitchen entry light [light.keuken_inkom].",
"natural_language": {
"trigger": "When the kitchen back door [binary_sensor.keuken_achterdeur] opens.",
"conditions": "All the kitchen lights are off: the kitchen ceiling light [light.keuken_luster], the kitchen entry light [light.keuken_inkom], and the kitchen spotlights [light.keuken_spots]. Additionally, it must be dark inside, as indicated by the dark inside sensor [sensor.dark_inside].",
"action": "Turn on the kitchen entry light [light.keuken_inkom]."
},
"human_like": "Turns on the kitchen entry light when the back door is opened, but only if it's dark inside and all other kitchen lights are off.",
"complexity": "low"
}
},
{
"id": "295ff81a-e388-498f-8c2c-077f9734d06c",
"result": {
"structured": "TRIGGER: When sun azimuth [sensor.sun_azimut] is above 230 OR dark outside sensor [sensor.dark_outside] is true AND remains for 5 minutes OR filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] is below 400 AND remains for 5 minutes OR wind speed [sensor.windsnelheid] is greater than 40 OR wind gust [sensor.windvlaag] is greater than 60 OR outside brightness [sensor.buiten_lichtsterkte] is below 10000 AND remains for 5 minutes OR (rain next 10 minutes [sensor.regen_komende_10_minuten] is not unknown AND not unavailable AND is greater than 0.80) OR (if rain next 10 minutes [sensor.regen_komende_10_minuten] is unknown or unavailable, then average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is greater than 0.80) OR (zandhoven precipitation [sensor.neerslag_zandhoven] is not unknown AND not unavailable AND is greater than 0.40) OR (if zandhoven precipitation [sensor.neerslag_zandhoven] is unknown or unavailable, then precipitation intensity [sensor.neerslagintensiteit] is greater than 0.40). CONDITIONS: (rear facade closed [input_boolean.achtergevel_closed] is on OR kitchen cover 1 [cover.keuken_1] current_position is less than 50 OR kitchen cover 2 [cover.keuken_2] current_position is less than 50 OR bedroom cover [cover.slaapkamer] current_position is less than 50) AND night closed [input_boolean.nacht_closed] is off. ACTIONS: Run script.achtergevel_openen, wait 5 minutes, then run script.achtergevel_openen again.",
"natural_language": {
"trigger": "The automation can be triggered by any of the following events: the sun azimuth [sensor.sun_azimut] is past a certain point (above 230), it has been dark outside [sensor.dark_outside] for at least five minutes, the filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] has been low (below 400) for five minutes, the wind speed [sensor.windsnelheid] exceeds 40, a wind gust [sensor.windvlaag] exceeds 60, the outside brightness [sensor.buiten_lichtsterkte] has been below 10000 for five minutes, the forecasted rain for the next 10 minutes [sensor.regen_komende_10_minuten] is high (over 0.80) or, if that data is unavailable, the average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is high, or the current precipitation in Zandhoven [sensor.neerslag_zandhoven] is high (over 0.40) or, if that data is unavailable, the current precipitation intensity [sensor.neerslagintensiteit] is high.",
"conditions": "For the automation to proceed, at least one of the following must be true: the rear facade is marked as closed [input_boolean.achtergevel_closed], or the kitchen cover 1 [cover.keuken_1] is less than 50% open, or the kitchen cover 2 [cover.keuken_2] is less than 50% open, or the bedroom cover [cover.slaapkamer] is less than 50% open. Additionally, the night closed mode [input_boolean.nacht_closed] must be turned off.",
"action": "The automation executes the script 'achtergevel_openen' to open the rear facade, waits for five minutes, and then runs the same script again."
},
"human_like": "This automation opens the rear facade when weather conditions are favourable and the covers are not fully open, ensuring it's not nighttime mode.",
"complexity": "high"
}
},
{
"id": "9d85fbd0-a081-4afa-8c56-d9216ea52a37",
"result": {
"structured": "TRIGGER: When outside brightness [sensor.buiten_lichtsterkte] is above 15000 for 5 minutes OR Every 10 minutes (at minutes matching /10 pattern) OR When outside brightness [sensor.buiten_lichtsterkte] is above 5000 and the current hour is before 9. CONDITIONS: (sun azimuth [sensor.sun_azimut] is between 70 and 200) AND (sun [sun.sun] elevation is above 10) AND (filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] is above 580) AND (outside brightness [sensor.buiten_lichtsterkte] is above 15000 OR the trigger with id 'ochtend' fired) AND (wind speed [sensor.windsnelheid] is below 40) AND (wind gust [sensor.windvlaag] is below 60) AND ((if rain next 10 minutes [sensor.regen_komende_10_minuten] is not unknown/unavailable then its value is below 0.15, otherwise average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is below 0.15)) AND ((if zandhoven precipitation [sensor.neerslag_zandhoven] is not unknown/unavailable then its value is below 0.15, otherwise precipitation intensity [sensor.neerslagintensiteit] is below 0.15)) AND (max uv index [sensor.max_uv_index] is above 3) AND (filtered outside temperature [sensor.buitentemperatuur_gefilterd] is above 15) AND (average downstairs temperature [sensor.gemiddelde_temp_beneden] is above 22) AND (max outside temperature forecast 12h [sensor.max_temperatuur_buiten_voorspelling_12u] is greater than (average downstairs temperature [sensor.gemiddelde_temp_beneden] minus 2)) AND (current month is greater than 3) AND (current month is less than 10) AND (side facade close script [script.zijgevel_sluiten] is off) AND (rear facade closed [input_boolean.achtergevel_closed] is off) AND (kitchen cover 1 [cover.keuken_1] current position is above 50) AND (kitchen cover 2 [cover.keuken_2] current position is above 50) AND (bedroom cover [cover.slaapkamer] current position is above 50). ACTIONS: Execute script Achtergevel sluiten [script.achtergevel_sluiten].",
"natural_language": {
"trigger": "The automation can be triggered in three ways: when the outside brightness [sensor.buiten_lichtsterkte] has been above 15000 lux for at least five minutes; every ten minutes on the clock (e.g., at 0, 10, 20, etc. minutes past the hour); or in the morning when the outside brightness [sensor.buiten_lichtsterkte] is above 5000 lux and the time is before 9 AM.",
"conditions": "A large set of conditions must all be true for the action to run. These ensure favorable weather and environmental conditions for closing the rear facade. The sun's azimuth [sensor.sun_azimut] must be between 70 and 200 degrees, and its elevation [sun.sun] must be above 10 degrees. The filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] must be above 580. Additionally, either the outside brightness [sensor.buiten_lichtsterkte] must be above 15000 lux, or the morning trigger condition must have fired. Wind conditions must be calm, with wind speed [sensor.windsnelheid] below 40 and wind gusts [sensor.windvlaag] below 60. Precipitation must be unlikely, checking either rain next 10 minutes [sensor.regen_komende_10_minuten] or the average precipitation forecast [sensor.neerslagverwachting_gemiddeld], and either zandhoven precipitation [sensor.neerslag_zandhoven] or precipitation intensity [sensor.neerslagintensiteit]—all must be below 0.15. The UV index [sensor.max_uv_index] must be above 3, and temperatures must be suitable: the filtered outside temperature [sensor.buitentemperatuur_gefilterd] above 15°C, the average downstairs temperature [sensor.gemiddelde_temp_beneden] above 22°C, and the forecasted maximum outside temperature for the next 12 hours [sensor.max_temperatuur_buiten_voorspelling_12u] must be within 2 degrees of the current indoor temperature. The automation is only active between the months of April and September (month > 3 and month < 10). Furthermore, the side facade close script [script.zijgevel_sluiten] must not be running (state 'off'), the rear facade must not already be closed [input_boolean.achtergevel_closed is 'off'], and all three specified covers—kitchen cover 1 [cover.keuken_1], kitchen cover 2 [cover.keuken_2], and bedroom cover [cover.slaapkamer]—must be open more than 50%.",
"action": "Runs the script named Achtergevel sluiten [script.achtergevel_sluiten] to close the rear facade."
},
"human_like": "Automatically closes the rear facade blinds when sunny, warm, and calm weather conditions are met, typically to manage heat and light, but only if the covers are already partly open and it's the right time of year.",
"complexity": "high"
}
},
{
"id": "960aa9bb-f469-49fd-8128-4c2e14b84563",
"result": {
"structured": "TRIGGER: When canopy door [binary_sensor.afdak_deur] changes state. CONDITIONS: (The current time minus the uptime sensor [sensor.uptime] value is greater than 60 seconds) AND (dark outside sensor [sensor.dark_outside] is true). ACTIONS: If canopy door [binary_sensor.afdak_deur] is on, then turn on canopy lighting [light.afdak_verlichting] and set canopy lighting end time [input_datetime.afdak_verlichting_end_time] to current time plus 300 seconds. Otherwise, turn on canopy lighting [light.afdak_verlichting] and set canopy lighting end time [input_datetime.afdak_verlichting_end_time] to current time plus 120 seconds.",
"natural_language": {
"trigger": "Whenever the state of the canopy door [binary_sensor.afdak_deur] changes.",
"conditions": "The system must have been running for more than 60 seconds, and the dark outside sensor [sensor.dark_outside] must report that it is dark outside.",
"action": "If the canopy door [binary_sensor.afdak_deur] is open, the canopy lighting [light.afdak_verlichting] is turned on and a timer is set to turn it off after 5 minutes. If the door is closed, the lighting is still turned on, but the timer is set for a shorter duration of 2 minutes."
},
"human_like": "Turns on the canopy light when the door is used after dark, setting a longer timer if the door is left open.",
"complexity": "medium"
}
},
{
"id": "2e149c66-0924-4c5a-892b-ebd69e44bed1",
"result": {
"structured": "TRIGGER: When dishwasher switch [switch.afwasmachien] changes from on to off OR When dishwasher running [binary_sensor.afwasmachien_staat_op] changes to off. CONDITIONS: None. ACTIONS: If dishwasher switch [switch.afwasmachien] is off AND the trigger was the switch change, then turn on dishwasher optimizer automation [automation.afwasmachien_optimizer]. If the trigger was dishwasher running [binary_sensor.afwasmachien_staat_op] changing to off, then turn off dishwasher optimizer automation [automation.afwasmachien_optimizer].",
"natural_language": {
"trigger": "The automation triggers either when the dishwasher switch [switch.afwasmachien] is turned off from an on state, or when the dishwasher running [binary_sensor.afwasmachien_staat_op] sensor reports that the dishwasher is no longer running (changes to off).",
"conditions": "There are no conditions that must be met for the actions to run; the automation proceeds directly from the trigger.",
"action": "Depending on which trigger occurred, the automation performs one of two actions. If the dishwasher switch was turned off, it starts the dishwasher optimizer automation [automation.afwasmachien_optimizer]. If the sensor indicates the dishwasher has stopped running, it stops the dishwasher optimizer automation [automation.afwasmachien_optimizer]."
},
"human_like": "Manages the dishwasher optimizer automation by starting it when the dishwasher is turned off and stopping it when the dishwasher finishes its cycle.",
"complexity": "medium"
}
},
{
"id": "49873b07-7d1b-4fb6-a8cf-fa2f986fded7",
"result": {
"structured": "TRIGGER: When alarm boolean [input_boolean.alarm] turns on. CONDITIONS: None. ACTIONS: Turn on alarm lights 1 script [script.alarm_lights1] AND turn on alarm sound script [script.alarm_sound].",
"natural_language": {
"trigger": "When the alarm boolean [input_boolean.alarm] is switched on.",
"conditions": "There are no conditions.",
"action": "Activates the alarm lights 1 script [script.alarm_lights1] and the alarm sound script [script.alarm_sound]."
},
"human_like": "Turns on the alarm lights and sound when the alarm is activated.",
"complexity": "low"
}
},
{
"id": "73eba5ec-f30e-4963-94f8-5c5520ce2ab0",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes to Juist Weg OR Afwezig OR When martine tracker [device_tracker.martine_not_so_binary] changes to Juist Weg OR Afwezig OR When fien tracker [device_tracker.fien_not_so_binary] changes to Juist Weg OR Afwezig OR When noor tracker [device_tracker.noor_not_so_binary] changes to Juist Weg OR Afwezig. CONDITIONS: (martine tracker [device_tracker.martine_not_so_binary] is Juist Weg OR Afwezig OR Langdurig Afwezig) AND (noor tracker [device_tracker.noor_not_so_binary] is Juist Weg OR Afwezig OR Langdurig Afwezig) AND (fien tracker [device_tracker.fien_not_so_binary] is Juist Weg OR Afwezig OR Langdurig Afwezig) AND (giel tracker [device_tracker.giel_not_so_binary] is Juist Weg OR Afwezig OR Langdurig Afwezig). ACTIONS: Arm the ha alarm [alarm_control_panel.ha_alarm] in away mode using the secret code. Then, if kitchen mass speaker [media_player.mass_keuken] is playing, pause it. Otherwise, if bathroom mass speaker [media_player.mass_badkamer] is playing, pause it. Otherwise, if living 2 mass speaker [media_player.mass_living_2] is playing, pause it.",
"natural_language": {
"trigger": "When any of the four family member trackers (giel tracker, martine tracker, fien tracker, or noor tracker) changes its state to either 'Juist Weg' or 'Afwezig'.",
"conditions": "All four family member trackers must be in a state indicating they are away. Specifically, martine tracker must be 'Juist Weg', 'Afwezig', or 'Langdurig Afwezig'; noor tracker must be 'Juist Weg', 'Afwezig', or 'Langdurig Afwezig'; fien tracker must be 'Juist Weg', 'Afwezig', or 'Langdurig Afwezig'; and giel tracker must be 'Juist Weg', 'Afwezig', or 'Langdurig Afwezig'.",
"action": "First, the home alarm system (ha alarm) is armed in away mode. Then, the automation checks if any of the specified speakers are playing music and pauses them. It checks the kitchen mass speaker first, then the bathroom mass speaker, and finally the living 2 mass speaker, pausing the first one it finds that is playing."
},
"human_like": "Arms the house alarm and pauses any playing music when all family members are detected as being away.",
"complexity": "medium"
}
},
{
"id": "3ab59385-d409-4777-abae-9c461a9fd442",
"result": {
"structured": "TRIGGER: When philips tv [media_player.philips_tv] changes from on to off OR When bedroom spotlight [light.slaapkamer_spot] turns off OR When bedroom ceiling light [light.slaapkamer_hoog] turns off OR When gphone focus [binary_sensor.gphone_focus] is on AND gphone bermuda tracker [device_tracker.gphone_bermuda] is home OR When mphone focus [binary_sensor.mphone_focus] is on AND mphone bermuda tracker [device_tracker.mphone_bermuda] is home. CONDITIONS: (kitchen mass speaker [media_player.mass_keuken] is NOT playing) AND (time is between 20:15:00 and 04:00:00) AND (ha alarm [alarm_control_panel.ha_alarm] is arming) AND (ha alarm [alarm_control_panel.ha_alarm] is armed_night) AND (philips tv [media_player.philips_tv] is on) AND ((martine tracker [device_tracker.martine_not_so_binary] is Thuis OR martine tracker [device_tracker.martine_not_so_binary] is Juist Aangekomen) OR (giel tracker [device_tracker.giel_not_so_binary] is Thuis OR giel tracker [device_tracker.giel_not_so_binary] is Juist Aangekomen) OR (fien tracker [device_tracker.fien_not_so_binary] is Thuis OR fien tracker [device_tracker.fien_not_so_binary] is Juist Aangekomen) OR (noor tracker [device_tracker.noor_not_so_binary] is Thuis OR noor tracker [device_tracker.noor_not_so_binary] is Juist Aangekomen)). ACTIONS: Turn on bedroom spotlight [light.slaapkamer_spot] with brightness 255 and warm white color, wait 5 seconds, arm ha alarm [alarm_control_panel.ha_alarm] to night mode with code, wait 20 minutes, then if bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] is on, unjoin bathroom mass speaker [media_player.mass_badkamer].",
"natural_language": {
"trigger": "The automation triggers when the Philips TV [media_player.philips_tv] turns off, or when either the bedroom spotlight [light.slaapkamer_spot] or bedroom ceiling light [light.slaapkamer_hoog] turns off. It can also trigger when a phone's focus mode is active and its owner is at home, specifically when gphone focus [binary_sensor.gphone_focus] is on and gphone bermuda tracker [device_tracker.gphone_bermuda] is home, or when mphone focus [binary_sensor.mphone_focus] is on and mphone bermuda tracker [device_tracker.mphone_bermuda] is home.",
"conditions": "The kitchen mass speaker [media_player.mass_keuken] must not be playing. The time must be between 8:15 PM and 4:00 AM. The home alarm [alarm_control_panel.ha_alarm] must be in the 'arming' state and also in the 'armed_night' state, and the Philips TV [media_player.philips_tv] must be on. Additionally, at least one of the family members must be home, indicated by their tracker being in the 'Thuis' or 'Juist Aangekomen' state. This includes martine tracker [device_tracker.martine_not_so_binary], giel tracker [device_tracker.giel_not_so_binary], fien tracker [device_tracker.fien_not_so_binary], or noor tracker [device_tracker.noor_not_so_binary].",
"action": "The automation first turns on the bedroom spotlight [light.slaapkamer_spot] with a warm white light at full brightness. After a 5-second delay, it arms the home alarm [alarm_control_panel.ha_alarm] to night mode using a secret code. It then waits for 20 minutes. Finally, it checks if the bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] is on, and if so, it unjoins the bathroom mass speaker [media_player.mass_badkamer] from any media group."
},
"human_like": "This automation arms the house alarm for the night when evening activities wind down, indicated by lights or the TV turning off, and ensures at least one person is home before proceeding.",
"complexity": "high"
}
},
{
"id": "94a4b642-8571-4080-8c7d-fed9b86375c1",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes to Juist Aangekomen OR when martine tracker [device_tracker.martine_not_so_binary] changes to Juist Aangekomen OR when fien tracker [device_tracker.fien_not_so_binary] changes to Juist Aangekomen OR when noor tracker [device_tracker.noor_not_so_binary] changes to Juist Aangekomen OR when kitchen mass speaker [media_player.mass_keuken] changes to playing OR when coffee maker switch [switch.koffiezet] changes from off to on. CONDITIONS: (giel tracker [device_tracker.giel_not_so_binary] is Thuis OR martine tracker [device_tracker.martine_not_so_binary] is Thuis OR giel tracker [device_tracker.giel_not_so_binary] is Juist Aangekomen OR martine tracker [device_tracker.martine_not_so_binary] is Juist Aangekomen OR fien tracker [device_tracker.fien_not_so_binary] is Thuis OR noor tracker [device_tracker.noor_not_so_binary] is Thuis OR fien tracker [device_tracker.fien_not_so_binary] is Juist Aangekomen OR noor tracker [device_tracker.noor_not_so_binary] is Juist Aangekomen). ACTIONS: Disarm ha alarm [alarm_control_panel.ha_alarm] using the secret alarm code.",
"natural_language": {
"trigger": "The automation triggers when any of the following events occur: giel tracker [device_tracker.giel_not_so_binary] arrives home (changes to 'Juist Aangekomen'), martine tracker [device_tracker.martine_not_so_binary] arrives home, fien tracker [device_tracker.fien_not_so_binary] arrives home, noor tracker [device_tracker.noor_not_so_binary] arrives home, the kitchen mass speaker [media_player.mass_keuken] starts playing, or the coffee maker switch [switch.koffiezet] is turned on from an off state.",
"conditions": "At least one of the tracked individuals must be at home or just arrived. Specifically, either giel tracker [device_tracker.giel_not_so_binary] or martine tracker [device_tracker.martine_not_so_binary] must be in the 'Thuis' (Home) or 'Juist Aangekomen' (Just Arrived) state, or fien tracker [device_tracker.fien_not_so_binary] or noor tracker [device_tracker.noor_not_so_binary] must be in the 'Thuis' or 'Juist Aangekomen' state.",
"action": "Disarms the home alarm system, ha alarm [alarm_control_panel.ha_alarm], by providing the secret alarm code."
},
"human_like": "Automatically disarms the home alarm when someone arrives home, starts playing music in the kitchen, or turns on the coffee maker, provided at least one resident is already home.",
"complexity": "medium"
}
},
{
"id": "4ced9dd8-0af2-40ff-914a-46016440a5c7",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes from arming to armed_away OR When ha alarm [alarm_control_panel.ha_alarm] changes to disarmed OR When ha alarm [alarm_control_panel.ha_alarm] changes from arming to armed_night OR When ha alarm [alarm_control_panel.ha_alarm] changes to armed_home. CONDITIONS: None. ACTIONS: Send a notification via notification service [notify.giel_en_martine] with a title 'Bericht van Home-Assistant.' and a message determined by the current state of ha alarm [alarm_control_panel.ha_alarm]: If the alarm state is armed_away, message is 'Niemand thuis, beveiliging ingeschakeld.'; If the alarm state is disarmed, message is 'Beveiliging uitgeschakeld.'; If the alarm state is armed_night and the current time is less than 600 seconds (10 minutes) after the last trigger time of automation.alarm_arm_night, message is 'Slaapwel, beveiliging ingeschakeld.'; If the alarm state is armed_home, message is 'Beveiliging ingeschakeld terwijl er iemand thuis is.'.",
"natural_language": {
"trigger": "The automation triggers when the ha alarm [alarm_control_panel.ha_alarm] changes its state. Specifically, it triggers when the alarm transitions from 'arming' to 'armed_away', when it changes to 'disarmed', when it transitions from 'arming' to 'armed_night', or when it changes to 'armed_home'.",
"conditions": "There are no conditions that must be met for the action to execute.",
"action": "Sends a notification to the user via the notification service [notify.giel_en_martine]. The content of the message depends on the current alarm state. If the alarm is set to 'armed_away', it sends 'Niemand thuis, beveiliging ingeschakeld.' (No one home, security enabled). If the alarm is 'disarmed', it sends 'Beveiliging uitgeschakeld.' (Security disabled). If the alarm is set to 'armed_night' and this change happened within 10 minutes of the 'alarm_arm_night' automation last triggering, it sends 'Slaapwel, beveiliging ingeschakeld.' (Sleep well, security enabled). If the alarm is set to 'armed_home', it sends 'Beveiliging ingeschakeld terwijl er iemand thuis is.' (Security enabled while someone is home)."
},
"human_like": "Sends a descriptive notification whenever the home alarm system is armed or disarmed, providing context like whether the house is empty or someone is home.",
"complexity": "medium"
}
},
{
"id": "a689d4e9-11e3-4dd6-ba59-a3c0a525c5f2",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes from armed_night to disarmed. CONDITIONS: (The current hour is 22, 23, 0, 1, 2, 3, 4, or 5) AND (people arrive count [sensor.people_arrive_count] is greater than 0). ACTIONS: Wait until people arrive count [sensor.people_arrive_count] equals 0, then delay for 10 minutes, then arm ha alarm [alarm_control_panel.ha_alarm] to night mode using the secret alarm code.",
"natural_language": {
"trigger": "When the ha alarm [alarm_control_panel.ha_alarm] is disarmed from the armed_night state.",
"conditions": "The automation only runs if the current time is between 10 PM and 5:59 AM, and the people arrive count [sensor.people_arrive_count] is greater than zero, indicating someone is home.",
"action": "It waits until the people arrive count [sensor.people_arrive_count] drops to zero, meaning everyone has left. After that, it waits an additional 10 minutes, and then automatically re-arms the ha alarm [alarm_control_panel.ha_alarm] to night mode using the secret alarm code."
},
"human_like": "Automatically re-arms the house alarm to night mode after everyone leaves during the night, with a 10-minute safety delay.",
"complexity": "medium"
}
},
{
"id": "128652ab-6a7c-44db-9cd4-820f7b0ff909",
"result": {
"structured": "TRIGGER: When alarm boolean [input_boolean.alarm] changes to off. CONDITIONS: None. ACTIONS: Turn off alarm lights 1 script [script.alarm_lights1] AND Turn off alarm lights 2 script [script.alarm_lights2] AND Turn off alarm sound script [script.alarm_sound]. Wait for 9 seconds. Turn off all garden lighting [light.alle_tuinverlichting] AND Turn off tv spotlights [light.spots_tv].",
"natural_language": {
"trigger": "When the alarm boolean [input_boolean.alarm] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "It first turns off the alarm lights 1 script [script.alarm_lights1], the alarm lights 2 script [script.alarm_lights2], and the alarm sound script [script.alarm_sound]. After a 9-second delay, it turns off all garden lighting [light.alle_tuinverlichting] and the tv spotlights [light.spots_tv]."
},
"human_like": "Turns off all alarm-related scripts and lights when the alarm is deactivated.",
"complexity": "low"
}
},
{
"id": "7b1a746e-2004-45b4-8d6f-2a20e3a4e2a8",
"result": {
"structured": "TRIGGER: When dark outside sensor [sensor.dark_outside] changes to false OR When dark inside sensor [sensor.dark_inside] changes to false and remains for 2 seconds. ACTIONS: (IF trigger is dark outside sensor [sensor.dark_outside] THEN turn off all garden lighting [light.alle_tuinverlichting], wait 2 seconds, then turn off canopy lighting [light.afdak_verlichting]) OR (IF trigger is dark inside sensor [sensor.dark_inside] THEN turn off noor light [light.noor], fien light [light.fien], bedroom spotlight [light.slaapkamer_spot], bedroom ceiling light [light.slaapkamer_hoog], dance hall chandelier [light.danszaal_luster], dance hall spots [light.danszaal_spots], kitchen entry light [light.keuken_inkom], kitchen ceiling light [light.keuken_luster], kitchen spotlights [light.keuken_spots], stairs light [light.trap], vogelpik light [light.vogelpik], garage ambient lighting [light.garage_sfeerverlichting], garage workbench light [light.garage_sjotterbak], then turn off tv spotlights [light.spots_tv], wait 5 seconds, then turn off tv spotlights [light.spots_tv] again).",
"natural_language": {
"trigger": "The automation triggers when the dark outside sensor [sensor.dark_outside] reports that it is no longer dark outside, or when the dark inside sensor [sensor.dark_inside] reports that it is no longer dark inside and that state persists for at least two seconds.",
"conditions": "There are no separate conditions; the action sequence is selected based on which trigger occurred.",
"action": "If the trigger was the outside sensor, it turns off all garden lighting [light.alle_tuinverlichting], waits two seconds, and then turns off the canopy lighting [light.afdak_verlichting]. If the trigger was the inside sensor, it turns off a long list of indoor lights (including lights in bedrooms, the kitchen, dance hall, stairs, and garage), turns off the tv spotlights [light.spots_tv], waits five seconds, and then turns off the tv spotlights [light.spots_tv] again."
},
"human_like": "Turns off all outdoor lights when it gets light outside, and turns off all indoor lights when it gets light inside, with a short delay for some fixtures.",
"complexity": "medium"
}
},
{
"id": "'1603382266087'",
"result": {
"structured": "TRIGGER: When the time is 17:59. CONDITIONS: None. ACTIONS: Start the profiler [profiler.start].",
"natural_language": {
"trigger": "The automation triggers daily at 5:59 PM.",
"conditions": "There are no conditions; the action will run whenever the trigger occurs.",
"action": "Starts the profiler [profiler.start]."
},
"human_like": "Starts a system profiler every day just before 6 PM.",
"complexity": "low"
}
},
{
"id": "'1617444794333'",
"result": {
"structured": "TRIGGER: When shelly bathroom ventilation restart [switch.shelly_badkamer_verluchting_herstarten] changes from unavailable to off. CONDITIONS: shelly bathroom ventilation status [binary_sensor.shelly_badkamer_verluchting_status] is off AND remains off for 5 minutes. ACTIONS: Turn on shelly bathroom ventilation restart [switch.shelly_badkamer_verluchting_herstarten].",
"natural_language": {
"trigger": "When the shelly bathroom ventilation restart [switch.shelly_badkamer_verluchting_herstarten] becomes available again, changing its state from unavailable to off.",
"conditions": "If the shelly bathroom ventilation status [binary_sensor.shelly_badkamer_verluchting_status] is off and has been off for at least five minutes.",
"action": "Turns the shelly bathroom ventilation restart [switch.shelly_badkamer_verluchting_herstarten] back on."
},
"human_like": "Automatically restarts the bathroom ventilation Shelly device if it has been offline and the ventilation status remains off for five minutes.",
"complexity": "low"
}
},
{
"id": "'1650959980916'",
"result": {
"structured": "TRIGGER: When dream machine tracker [device_tracker.droommachien] changes state from home to not_home and remains not_home for 5 minutes. CONDITIONS: None. ACTIONS: Send a notification to gphone mobile app [notify.mobile_app_gphone] with the message 'Unifi nazien!!!'.",
"natural_language": {
"trigger": "When the dream machine tracker [device_tracker.droommachien] leaves the 'home' state and stays away for a continuous period of 5 minutes.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a push notification to the mobile device registered as gphone mobile app [notify.mobile_app_gphone] with the message 'Unifi nazien!!!'."
},
"human_like": "Sends an urgent notification if the UniFi Dream Machine network device appears to be offline for five minutes.",
"complexity": "low"
}
},
{
"id": "'1675907714800'",
"result": {
"structured": "TRIGGER: When the system time matches the pattern: minutes = 15 (i.e., every hour at minute 15). CONDITIONS: (The time difference between now and the last change time of max peak 2 input [input_number.max_peak_2] is less than 900 seconds) AND (The time difference between now and the value of uptime sensor [sensor.uptime] is greater than 900 seconds). ACTIONS: Create a persistent notification with a message listing all sensor entities containing 'quarter' in their entity_id where the last_period attribute is greater than 0, showing their friendly name and last_period value in kWh (quarterly basis) and the same data multiplied by 4 for an hourly basis.",
"natural_language": {
"trigger": "The automation runs every hour at 15 minutes past the hour.",
"conditions": "It checks that the max peak 2 input [input_number.max_peak_2] was updated less than 15 minutes ago, and that the system uptime reported by uptime sensor [sensor.uptime] is more than 15 minutes.",
"action": "It creates a notification that lists all energy consumption sensors (with 'quarter' in their ID) that have recorded usage in the last period. For each, it shows the quarter-hour consumption in kWh and the estimated hourly consumption (multiplied by 4)."
},
"human_like": "Sends a periodic energy usage report every hour, showing recent quarter-hour and estimated hourly consumption for relevant sensors.",
"complexity": "medium"
}
},
{
"id": "'1685887833753'",
"result": {
"structured": "TRIGGER: When gate sensor [binary_sensor.poort] changes to on. CONDITIONS: None. ACTIONS: Send a notification via notification service [notify.giel_en_martine] with the message 'Beweging poort'.",
"natural_language": {
"trigger": "When the gate sensor [binary_sensor.poort] detects motion and changes its state to 'on'.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to the user via the notification service [notify.giel_en_martine] with the message 'Beweging poort'."
},
"human_like": "Sends a notification when motion is detected at the gate.",
"complexity": "low"
}
},
{
"id": "'1699040529160'",
"result": {
"structured": "TRIGGER: When gate sensor [binary_sensor.poort] changes state to on. CONDITIONS: None. ACTIONS: Send a notification to gphone mobile app [notify.mobile_app_gphone] with message 'Poort' and an action button titled 'Afzetten?' with action identifier 'POORT'.",
"natural_language": {
"trigger": "When the gate sensor [binary_sensor.poort] opens (changes to 'on').",
"conditions": "There are no conditions that must be met.",
"action": "Sends a push notification to the mobile device 'gphone' [notify.mobile_app_gphone] with the message 'Poort' and includes a button labeled 'Afzetten?' that, when pressed, sends the action 'POORT'."
},
"human_like": "Sends a notification to a phone when the gate opens, allowing the user to close it remotely.",
"complexity": "low"
}
},
{
"id": "'1741689014825'",
"result": {
"structured": "TRIGGER: When upstairs hallway pir [binary_sensor.gang_boven_pir] turns on OR When stairs aqara pir [binary_sensor.trap_aqara_pir] turns on. CONDITIONS: None. ACTIONS: If the trigger was upstairs hallway pir [binary_sensor.gang_boven_pir] turning on, then send a mobile notification to gphone mobile app [notify.mobile_app_gphone] with message 'Gang boven!' and an action button. If the trigger was stairs aqara pir [binary_sensor.trap_aqara_pir] turning on, then send a mobile notification to gphone mobile app [notify.mobile_app_gphone] with message 'Trap!!!' and then turn off Gang verklikker [automation.gang_verklikker].",
"natural_language": {
"trigger": "When motion is detected by the upstairs hallway pir [binary_sensor.gang_boven_pir] or by the stairs aqara pir [binary_sensor.trap_aqara_pir].",
"conditions": "There are no conditions that must be met.",
"action": "If motion is detected in the upstairs hallway, a notification is sent to the mobile phone with the message 'Gang boven!' and a button to open the upstairs dashboard. If motion is detected on the stairs, a notification is sent with the message 'Trap!!!' and then the automation itself is turned off to prevent further notifications."
},
"human_like": "Sends different mobile notifications for motion detected in the upstairs hallway versus the stairs, and can disable itself after a stairs alert.",
"complexity": "medium"
}
},
{
"id": "''",
"result": {
"structured": "TRIGGER: When any entity changes state from on to off OR when any entity changes state from on to off. CONDITIONS: (Time is within the specified range) AND (Template condition) AND (Template condition) AND (Template condition) AND (Entity is in state OR Entity is in state). ACTIONS: Perform action on entity, Perform action on entity with data, Perform action on entity, Perform action with data_template.",
"natural_language": {
"trigger": "When any entity changes its state from 'on' to 'off'.",
"conditions": "If the current time falls within a specific, unspecified range, and three separate template conditions are met, and either one of two unspecified entities is in a specific, unspecified state.",
"action": "Execute four actions: an unspecified action on an entity, another unspecified action on an entity with a code, a third unspecified action on an entity, and a final action using a data template."
},
"human_like": "This automation performs several actions when an entity turns off, but only if it's the right time and several other complex conditions are met.",
"complexity": "high"
}
},
{
"id": "83eacc0d-19be-46cc-9bdf-78dd96de73e9",
"result": {
"structured": "TRIGGER: Every 5 minutes when the minutes value is divisible by 5 (at seconds 0). CONDITIONS: NOT (bathroom switch [switch.badkamer] is on). ACTIONS: Publish MQTT message to topic 'verwarmingPi/output/badkamer/set' with payload 'OFF' and retain flag true.",
"natural_language": {
"trigger": "The automation runs every 5 minutes, precisely when the clock's seconds are at 0.",
"conditions": "The automation only runs if the bathroom switch [switch.badkamer] is not turned on.",
"action": "Sends an 'OFF' command via MQTT to the topic 'verwarmingPi/output/badkamer/set', ensuring the message is retained by the broker."
},
"human_like": "Turns off the bathroom heating via MQTT every 5 minutes, but only if the bathroom switch is off.",
"complexity": "low"
}
},
{
"id": "1154da8f-d6ff-4ad8-9cc3-ebe8501fcee7",
"result": {
"structured": "TRIGGER: When bathroom occupancy [binary_sensor.badkamer_bezetting] changes to occupied (on). CONDITIONS: (people home [sensor.people_home] is greater than 0 AND less than 2) AND (giel bayesian [binary_sensor.giel_bayesian] is on) AND (kitchen mass speaker [media_player.mass_keuken] is playing). ACTIONS: Add bathroom mass speaker [media_player.mass_badkamer] to the group of kitchen mass speaker [media_player.mass_keuken].",
"natural_language": {
"trigger": "When the bathroom occupancy sensor [binary_sensor.badkamer_bezetting] detects that the bathroom is occupied.",
"conditions": "The number of people home [sensor.people_home] is exactly one, the giel bayesian sensor [binary_sensor.giel_bayesian] is on, and the kitchen mass speaker [media_player.mass_keuken] is currently playing audio.",
"action": "Join the bathroom mass speaker [media_player.mass_badkamer] to the same audio group as the kitchen mass speaker [media_player.mass_keuken]."
},
"human_like": "Extends the music playing in the kitchen to the bathroom speaker when someone enters the bathroom, provided only one person is home and a specific condition is met.",
"complexity": "medium"
}
},
{
"id": "5d92af17-35b7-4191-b015-99d5644a0b39",
"result": {
"structured": "TRIGGER: When bathroom occupancy [binary_sensor.badkamer_bezetting] remains unoccupied (off) for 10 minutes. CONDITIONS: bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] is on OR bathroom mass speaker [media_player.mass_badkamer] is playing. ACTIONS: If bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] is on, then unjoin bathroom mass speaker [media_player.mass_badkamer], wait 5 seconds, and set its volume to 0.14. Otherwise, pause bathroom mass speaker [media_player.mass_badkamer], wait 5 seconds, and set its volume to 0.14.",
"natural_language": {
"trigger": "When the bathroom occupancy sensor [binary_sensor.badkamer_bezetting] reports the bathroom as unoccupied for a continuous period of 10 minutes.",
"conditions": "Either the bathroom grouped not master indicator [binary_sensor.badkamer_grouped_not_master] is active (on), or the bathroom mass speaker [media_player.mass_badkamer] is currently playing audio.",
"action": "If the bathroom grouped not master indicator is active, the automation will ungroup the bathroom mass speaker, wait for 5 seconds, and then set its volume to 14%. Otherwise, if the speaker is playing but not grouped, it will pause the playback, wait for 5 seconds, and then set the volume to 14%."
},
"human_like": "Adjusts the bathroom speaker after the room has been empty for 10 minutes, either ungrouping it or pausing playback and setting a low volume.",
"complexity": "medium"
}
},
{
"id": "'1594823233838'",
"result": {
"structured": "TRIGGER: When sleeproom noor switch power [sensor.schakelaar_slaapkamer_noor_power] falls below 5 OR when sleeproom fien switch power [sensor.schakelaar_slaapkamer_fien_power] falls below 5 OR when hallway smoke detector battery [sensor.gang_rookmelder_battery] falls below 5 OR when living smoke detector battery [sensor.living_rookmelder_battery] falls below 5 OR when laundry room smoke detector battery [sensor.waskot_rookmelder_battery] falls below 5 OR when basement smoke detector battery [sensor.kelder_rookmelder_batterij] falls below 5 OR when garage door battery [sensor.garage_deur_battery] falls below 5 OR when kitchen back door battery [sensor.keuken_achterdeur_battery] falls below 5. CONDITIONS: None. ACTIONS: Send a notification via notification service [notify.giel_en_martine] with a message indicating the battery of the triggering Zigbee sensor needs checking.",
"natural_language": {
"trigger": "The automation triggers when any of the following Zigbee device battery sensors report a value below 5: the sleeproom noor switch power, the sleeproom fien switch power, the hallway smoke detector battery, the living smoke detector battery, the laundry room smoke detector battery, the basement smoke detector battery, the garage door battery, or the kitchen back door battery.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "Sends a notification to Giel and Martine, stating that the batteries of the specific Zigbee sensor that triggered the automation need to be checked."
},
"human_like": "Sends a notification when the battery level of any monitored Zigbee sensor becomes low, so the batteries can be checked and replaced.",
"complexity": "medium"
}
},
{
"id": "eb295709-5c0f-4697-9aa2-76098ebb340f",
"result": {
"structured": "TRIGGER: When a mobile app notification action event with action RETURN occurs. CONDITIONS: None. ACTIONS: Send vacuum.return_to_base command to claptrap vacuum [vacuum.claptrap].",
"natural_language": {
"trigger": "When a notification action from the mobile app is received, specifically the action named 'RETURN'.",
"conditions": "There are no conditions that must be met.",
"action": "Commands the claptrap vacuum [vacuum.claptrap] to return to its charging dock."
},
"human_like": "Sends the vacuum cleaner back to its dock when the 'RETURN' action is tapped in a mobile notification.",
"complexity": "low"
}
},
{
"id": "ff824a13-ba8c-483b-ae54-9fe625410d90",
"result": {
"structured": "TRIGGER: When bathroom temperature setpoint [input_select.setpunt_badkamer] changes state OR When fien temperature setpoint [input_select.setpunt_fien] changes state OR When noor temperature setpoint [input_select.setpunt_noor] changes state OR When bedroom temperature setpoint [input_select.setpunt_slaapkamer] changes state. CONDITIONS: (IF the triggering entity is bathroom temperature setpoint [input_select.setpunt_badkamer] THEN bathroom climate [climate.badkamer] must be in heat mode) AND (IF the triggering entity is fien temperature setpoint [input_select.setpunt_fien] THEN fien climate [climate.fien] must be in heat mode) AND (IF the triggering entity is noor temperature setpoint [input_select.setpunt_noor] THEN noor climate [climate.noor] must be in heat mode) AND (IF the triggering entity is bedroom temperature setpoint [input_select.setpunt_slaapkamer] THEN bedroom climate [climate.slaapkamer] must be in heat mode). ACTIONS: Set the temperature of the corresponding climate entity to the new value of the triggering setpoint entity. Specifically: IF the triggering entity is bathroom temperature setpoint [input_select.setpunt_badkamer] THEN set bathroom climate [climate.badkamer] temperature to the state of bathroom temperature setpoint [input_select.setpunt_badkamer]; IF the triggering entity is fien temperature setpoint [input_select.setpunt_fien] THEN set fien climate [climate.fien] temperature to the state of fien temperature setpoint [input_select.setpunt_fien]; IF the triggering entity is noor temperature setpoint [input_select.setpunt_noor] THEN set noor climate [climate.noor] temperature to the state of noor temperature setpoint [input_select.setpunt_noor]; IF the triggering entity is bedroom temperature setpoint [input_select.setpunt_slaapkamer] THEN set bedroom climate [climate.slaapkamer] temperature to the state of bedroom temperature setpoint [input_select.setpunt_slaapkamer].",
"natural_language": {
"trigger": "This automation is triggered whenever the state of any of the four temperature setpoint selectors changes. These are: bathroom temperature setpoint [input_select.setpunt_badkamer], fien temperature setpoint [input_select.setpunt_fien], noor temperature setpoint [input_select.setpunt_noor], or bedroom temperature setpoint [input_select.setpunt_slaapkamer].",
"conditions": "The automation only proceeds if the climate device in the room corresponding to the changed setpoint is currently in heating mode. For example, if the bathroom setpoint changes, the bathroom climate [climate.badkamer] must be set to 'heat'. Similarly, a change in the fien setpoint requires fien climate [climate.fien] to be in 'heat' mode, and so on for the other rooms.",
"action": "The automation updates the target temperature of the corresponding climate device to match the newly selected value from the setpoint selector. It maps each setpoint entity to its paired climate entity, applying the new temperature setting only to the climate device in the same room as the changed setpoint."
},
"human_like": "Updates a room's thermostat temperature when its corresponding setpoint selector is changed, but only if the thermostat is currently in heating mode.",
"complexity": "medium"
}
},
{
"id": "3a44ad3f-7801-46c4-81f5-07b88ebed867",
"result": {
"structured": "TRIGGER: When giel button 2 click [binary_sensor.knop_giel_2_klik] turns on. ACTIONS: Execute delayed off script [script.vertraagd_uit].",
"natural_language": {
"trigger": "When the giel button 2 click [binary_sensor.knop_giel_2_klik] is pressed, triggering an 'on' state.",
"conditions": "There are no conditions for this automation.",
"action": "Runs the delayed off script [script.vertraagd_uit]."
},
"human_like": "When the Giel button is double-clicked, it runs a script that turns something off after a delay.",
"complexity": "low"
}
},
{
"id": "e045e4fa-7a6b-4180-86ce-5da8f74a9cbb",
"result": {
"structured": "TRIGGER: When giel button 3 click [binary_sensor.knop_giel_3_klik] turns on. CONDITIONS: None. ACTIONS: Turn on coffee maker switch [switch.koffiezet].",
"natural_language": {
"trigger": "When the giel button 3 click [binary_sensor.knop_giel_3_klik] is activated (turns on).",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the coffee maker switch [switch.koffiezet]."
},
"human_like": "Turns on the coffee maker when the Giel button is triple-clicked.",
"complexity": "low"
}
},
{
"id": "174aa54a-b41e-40a6-8080-5bf219235aa6",
"result": {
"structured": "TRIGGER: When giel button 4 click [binary_sensor.knop_giel_4_klik] turns on. CONDITIONS: None. ACTIONS: Turn on noor light [light.noor] AND fien light [light.fien] with brightness set to 255.",
"natural_language": {
"trigger": "When the giel button 4 click [binary_sensor.knop_giel_4_klik] is activated (turns on).",
"conditions": "There are no conditions that need to be met.",
"action": "Turns on the noor light [light.noor] and the fien light [light.fien] at full brightness."
},
"human_like": "Pressing the Giel 4 button turns on the Noor and Fien lights at full brightness.",
"complexity": "low"
}
},
{
"id": "2467cbf3-8621-4925-b41d-3f64cb5f81e7",
"result": {
"structured": "TRIGGER: When giel button click [binary_sensor.knop_giel_klik] turns on. CONDITIONS: None. ACTIONS: If bedroom spotlight [light.slaapkamer_spot] is on, then turn off bedroom spotlight [light.slaapkamer_spot]; otherwise, turn on bedroom spotlight [light.slaapkamer_spot] with brightness set to 255.",
"natural_language": {
"trigger": "When the giel button click [binary_sensor.knop_giel_klik] is pressed (turns on).",
"conditions": "There are no additional conditions that must be met.",
"action": "If the bedroom spotlight [light.slaapkamer_spot] is currently on, it will be turned off. If the bedroom spotlight [light.slaapkamer_spot] is off, it will be turned on at full brightness."
},
"human_like": "Toggles the bedroom spotlight on or off with a single button press, turning it on at full brightness when off.",
"complexity": "low"
}
},
{
"id": "597dd2e9-27bd-4aa5-8cad-a86891144375",
"result": {
"structured": "TRIGGER: When martine button 2 click [binary_sensor.knop_martine_2_klik] turns on. CONDITIONS: None. ACTIONS: Execute delayed off martine script [script.vertraagd_uit_martine].",
"natural_language": {
"trigger": "When the martine button 2 click [binary_sensor.knop_martine_2_klik] is activated (turns on).",
"conditions": "There are no conditions for this automation.",
"action": "Runs the delayed off martine script [script.vertraagd_uit_martine]."
},
"human_like": "When a specific button is double-clicked, it triggers a delayed turn-off routine for Martine's devices.",
"complexity": "low"
}
},
{
"id": "da9df8c8-6328-45af-a00a-e03394b9d30c",
"result": {
"structured": "TRIGGER: When martine button 3 click [binary_sensor.knop_martine_3_klik] turns on. CONDITIONS: None. ACTIONS: Turn on coffee maker switch [switch.koffiezet].",
"natural_language": {
"trigger": "When the martine button 3 click [binary_sensor.knop_martine_3_klik] is activated (turns on).",
"conditions": "There are no conditions that must be met.",
"action": "Turn on the coffee maker switch [switch.koffiezet]."
},
"human_like": "Turns on the coffee maker when the designated button is clicked three times.",
"complexity": "low"
}
},
{
"id": "e20e0b48-2f7e-4331-ad06-efa5f6589f7a",
"result": {
"structured": "TRIGGER: When martine button 4 click [binary_sensor.knop_martine_4_klik] turns on. CONDITIONS: None. ACTIONS: Turn on noor light [light.noor] and fien light [light.fien] with brightness set to 255.",
"natural_language": {
"trigger": "When the martine button 4 click [binary_sensor.knop_martine_4_klik] is activated (turns on).",
"conditions": "There are no conditions that must be met.",
"action": "Turn on both the noor light [light.noor] and the fien light [light.fien] at full brightness."
},
"human_like": "Turns on the Noor and Fien lights at full brightness when the Martine button 4 is clicked.",
"complexity": "low"
}
},
{
"id": "15355d61-2623-4100-a202-d2790ef8db66",
"result": {
"structured": "TRIGGER: When martine button click [binary_sensor.knop_martine_klik] turns on. CONDITIONS: None. ACTIONS: If bedroom spotlight [light.slaapkamer_spot] is on, then turn off bedroom spotlight [light.slaapkamer_spot]. Otherwise, turn on bedroom spotlight [light.slaapkamer_spot] with brightness set to 255.",
"natural_language": {
"trigger": "When the martine button click [binary_sensor.knop_martine_klik] is activated.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the bedroom spotlight [light.slaapkamer_spot] is currently on, it will be turned off. If the bedroom spotlight [light.slaapkamer_spot] is not on, it will be turned on at full brightness."
},
"human_like": "Toggles the bedroom spotlight on or off with a single button click, turning it on at full brightness when off.",
"complexity": "low"
}
},
{
"id": "6574f893-40a2-4393-83f7-d19801558678",
"result": {
"structured": "TRIGGER: When noor button 2 click [binary_sensor.knop_noor_2_klik] turns on. ACTIONS: If wled noor light [light.wled_noor] is on, then turn off wled noor light [light.wled_noor]. Otherwise, turn on wled noor light [light.wled_noor] with effect Solid, brightness 9, and RGB color (4, 0, 255).",
"natural_language": {
"trigger": "When the noor button 2 click [binary_sensor.knop_noor_2_klik] is activated.",
"conditions": "There are no explicit conditions outside the action choice.",
"action": "If the wled noor light [light.wled_noor] is currently on, it will be turned off. If it is off, it will be turned on with a solid blue effect, low brightness, and a specific color."
},
"human_like": "Toggles the Noor light on or off with a specific blue color when the Noor button is double-clicked.",
"complexity": "low"
}
},
{
"id": "816248a1-aaeb-4dcc-bdbf-35d6df291954",
"result": {
"structured": "TRIGGER: When noor button 3 click [binary_sensor.knop_noor_3_klik] turns on. CONDITIONS: None. ACTIONS: Turn on wled noor nightlight switch [switch.wled_noor_nightlight].",
"natural_language": {
"trigger": "When the noor button 3 click [binary_sensor.knop_noor_3_klik] is activated (turns on).",
"conditions": "There are no conditions; the action runs immediately after the trigger.",
"action": "Turns on the wled noor nightlight switch [switch.wled_noor_nightlight]."
},
"human_like": "Turns on the Noor nightlight when the Noor button is triple-clicked.",
"complexity": "low"
}
},
{
"id": "Knop Noor 4 klik",
"result": {
"structured": "TRIGGER: When noor button 4 click [binary_sensor.knop_noor_4_klik] turns on. CONDITIONS: None. ACTIONS: Turn on noor light [light.noor] with brightness set to 70%.",
"natural_language": {
"trigger": "When the noor button 4 click [binary_sensor.knop_noor_4_klik] is activated (turns on).",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the noor light [light.noor] and sets its brightness to 70%."
},
"human_like": "Turns on the Noor light at a preset brightness when the associated button is clicked four times.",
"complexity": "low"
}
},
{
"id": "40a60f6c-c147-4b72-b7c0-1eb0f85df9eb",
"result": {
"structured": "TRIGGER: When Knop Noor 5 klik [binary_sensor.knop_noor_5_klik] turns on OR when noor heating 1h button [input_button.verwarming_1u_noor] turns on OR when the current time reaches the value stored in noor heating end time [input_datetime.slaapkamer_noor_verwarming_end_time]. CONDITIONS: None. ACTIONS: If the trigger was Knop Noor 5 klik [binary_sensor.knop_noor_5_klik] turning on OR noor heating 1h button [input_button.verwarming_1u_noor] turning on, then set noor climate [climate.noor] to preset mode 'comfort' and update noor heating end time [input_datetime.slaapkamer_noor_verwarming_end_time] to the current time plus 1 hour. If the trigger was the time reaching noor heating end time [input_datetime.slaapkamer_noor_verwarming_end_time], then set noor climate [climate.noor] to preset mode 'away'.",
"natural_language": {
"trigger": "The automation is triggered in three ways: when the Knop Noor 5 klik [binary_sensor.knop_noor_5_klik] is activated, when the noor heating 1h button [input_button.verwarming_1u_noor] is pressed, or when the scheduled time stored in the noor heating end time [input_datetime.slaapkamer_noor_verwarming_end_time] arrives.",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "Depending on what triggered the automation, it performs one of two sequences. If the trigger was the button or switch being activated, it sets the noor climate [climate.noor] to 'comfort' mode and schedules the heating to end in one hour by updating the noor heating end time [input_datetime.slaapkamer_noor_verwarming_end_time]. If the trigger was the scheduled end time being reached, it sets the noor climate [climate.noor] to 'away' mode to turn the heating off."
},
"human_like": "This automation turns the heating to comfort mode for one hour when a button is pressed, and automatically switches it back to away mode when the scheduled time is up.",
"complexity": "medium"
}
},
{
"id": "41167ec0-0d4e-4d94-808a-ff94da618d3b",
"result": {
"structured": "TRIGGER: When noor button click [binary_sensor.knop_noor_klik] turns on. CONDITIONS: None. ACTIONS: If noor light [light.noor] is on, then turn off noor light [light.noor]. Otherwise, turn on noor light [light.noor] with brightness set to 255.",
"natural_language": {
"trigger": "When the noor button click [binary_sensor.knop_noor_klik] is activated.",
"conditions": "There are no conditions that must be met before the action runs.",
"action": "If the noor light [light.noor] is currently on, it will be turned off. If the noor light [light.noor] is not on, it will be turned on at full brightness."
},
"human_like": "Toggles the Noor light on or off when the Noor button is clicked, turning it on at full brightness if it was off.",
"complexity": "low"
}
},
{
"id": "73b8bdfe-8f03-480b-8827-54599586b3b3",
"result": {
"structured": "TRIGGER: When the time is 06:02 OR when the time is 00:30. ACTIONS: First, if the current hour is 6, turn on Verwarming bij aanwezigheid badkamer [automation.verwarming_bij_aanwezigheid_badkamer]; otherwise, turn it off. Second, if the current hour is not 6, set the temperature of bathroom climate [climate.badkamer] to 10°C.",
"natural_language": {
"trigger": "The automation runs at two specific times: 06:02 and 00:30.",
"conditions": "There are no explicit conditions defined in the automation.",
"action": "At the scheduled time, the automation performs two actions. First, it checks the current hour: if it is 6 AM, it turns on the 'Verwarming bij aanwezigheid badkamer' [automation.verwarming_bij_aanwezigheid_badkamer] automation; otherwise, it turns it off. Second, if the current hour is not 6 AM, it sets the temperature of the bathroom climate [climate.badkamer] to 10°C."
},
"human_like": "This automation manages the bathroom heating schedule, turning on a presence-based heating automation at 6 AM, turning it off at 12:30 AM, and setting a low temperature at night.",
"complexity": "medium"
}
},
{
"id": "98518b24-44a5-4878-839f-d23dd4e3390f",
"result": {
"structured": "TRIGGER: When the time is 06:02 OR when the time is 22:00. ACTIONS: Execute the following sequence: 1. If the current hour is 6, turn on Verwarming bij aanwezigheid Fien [automation.verwarming_bij_aanwezigheid_fien]. Otherwise, turn it off. 2. Condition: The current hour is not 6. 3. If the condition is true, set the temperature of fien climate [climate.fien] to 10°C.",
"natural_language": {
"trigger": "The automation runs at 6:02 AM and again at 10:00 PM.",
"conditions": "There is a condition that checks if the current hour is not 6. This condition is evaluated as part of the action sequence.",
"action": "At 6:02 AM, it turns on the 'Verwarming bij aanwezigheid Fien' [automation.verwarming_bij_aanwezigheid_fien] automation. At 10:00 PM, it turns that automation off. Additionally, at 10:00 PM (when the hour is not 6), it sets the temperature for the fien climate [climate.fien] to 10°C."
},
"human_like": "This automation manages the heating for Fien's room by enabling a presence-based heating schedule in the morning and turning it off while setting a low temperature at night.",
"complexity": "medium"
}
},
{
"id": "9d7c82a3-25c9-4fce-9ff0-d857ee188cb4",
"result": {
"structured": "TRIGGER: When the time is 06:02 OR When the time is 22:00. ACTIONS: If the current hour is 6, turn on Verwarming bij aanwezigheid Noor [automation.verwarming_bij_aanwezigheid_noor]. Otherwise, turn off Verwarming bij aanwezigheid Noor [automation.verwarming_bij_aanwezigheid_noor]. Then, if the current hour is not 6, set the temperature of noor climate [climate.noor] to 10 degrees.",
"natural_language": {
"trigger": "The automation runs at 06:02 in the morning and at 22:00 in the evening.",
"conditions": "There are no separate condition blocks. The logic for which actions to run is embedded within the actions themselves using a template.",
"action": "At 06:02, it turns on the 'Verwarming bij aanwezigheid Noor' [automation.verwarming_bij_aanwezigheid_noor] automation. At 22:00, it turns off that same automation and also sets the temperature for the noor climate [climate.noor] to 10 degrees."
},
"human_like": "Turns the presence-based heating for Noor's room on in the morning and off in the evening, while also setting a low nighttime temperature.",
"complexity": "medium"
}
},
{
"id": "4231743f-fe60-4208-96b7-fc82b9246691",
"result": {
"structured": "TRIGGER: When the time is 06:02 OR When the time is 00:30. ACTIONS: 1. If the current hour is 6, turn on Verwarming bij aanwezigheid slaapkamer [automation.verwarming_bij_aanwezigheid_slaapkamer]. Otherwise, turn it off. 2. Condition: The current hour is not 6. 3. Set the temperature of bedroom climate [climate.slaapkamer] to 10 degrees.",
"natural_language": {
"trigger": "The automation runs at two specific times: at 06:02 in the morning and at 00:30 at night.",
"conditions": "The second action, which sets the temperature, only runs if the current hour is not 6. This means it only executes when the automation is triggered at 00:30.",
"action": "At 06:02, it turns on the automation named 'Verwarming bij aanwezigheid slaapkamer' [automation.verwarming_bij_aanwezigheid_slaapkamer]. At 00:30, it turns that same automation off and sets the bedroom climate [climate.slaapkamer] to a temperature of 10 degrees."
},
"human_like": "This automation manages the bedroom heating schedule, turning on a presence-based heating routine in the morning and turning it off while setting a low temperature at night.",
"complexity": "medium"
}
},
{
"id": "ce345a61-9254-48d5-88ce-060b3a5bfcbc",
"result": {
"structured": "TRIGGER: When the current day is Friday (weekday 4) AND the current hour is 14 (2 PM) OR When the current day is Sunday (weekday 6) AND the current hour is 23 (11 PM). CONDITIONS: None. ACTIONS: If the current day is Friday (weekday 4), turn on Verwarming bij aanwezigheid garage [automation.verwarming_bij_aanwezigheid_garage]; otherwise, turn it off. Then, set garage climate [climate.garage] HVAC mode to off.",
"natural_language": {
"trigger": "The automation triggers every Friday at 2 PM or every Sunday at 11 PM.",
"conditions": "There are no conditions that need to be checked.",
"action": "If the trigger occurs on a Friday, it turns on the automation called Verwarming bij aanwezigheid garage [automation.verwarming_bij_aanwezigheid_garage]. If the trigger occurs on a Sunday, it turns that same automation off. Regardless of the day, it also turns off the heating in the garage by setting the garage climate [climate.garage] to off mode."
},
"human_like": "This automation turns the garage heating off and toggles a presence-based heating automation on Fridays and off on Sundays.",
"complexity": "medium"
}
},
{
"id": "169e30a6-8d76-4193-83db-a362b6ebca25",
"result": {
"structured": "TRIGGER: When upstairs hallway light [light.gang_boven] turns from on to off OR When upstairs hallway light [light.gang_boven] turns from off to on. ACTIONS: Choose based on trigger: IF trigger is uit THEN Turn off hallway landing light [light.gang_hal]. IF trigger is aan AND (giel home night [binary_sensor.giel_thuis_nacht] is on OR martine home night [binary_sensor.martine_thuis_nacht] is on) THEN Turn on hallway landing light [light.gang_hal] with brightness 1%. OTHERWISE (default) Turn on hallway landing light [light.gang_hal] with brightness 70%.",
"natural_language": {
"trigger": "When the upstairs hallway light [light.gang_boven] is turned off or turned on.",
"conditions": "No explicit conditions block. The action selection depends on which trigger fired and, in the case of the light turning on, whether either the giel home night [binary_sensor.giel_thuis_nacht] or martine home night [binary_sensor.martine_thuis_nacht] sensor is on.",
"action": "If the upstairs hallway light is turned off, the hallway landing light [light.gang_hal] is also turned off. If the upstairs hallway light is turned on and either the 'giel home night' or 'martine home night' sensor is active, the hallway landing light is turned on at a very low brightness (1%). Otherwise, when the upstairs hallway light is turned on and neither night sensor is active, the hallway landing light is turned on at a normal brightness (70%)."
},
"human_like": "Coordinates the hallway landing light with the upstairs hallway light, turning it off or on with different brightness levels depending on whether it's night time for specific people.",
"complexity": "medium"
}
},
{
"id": "ad40debe-bbaf-43a9-8181-168321d2fa25",
"result": {
"structured": "TRIGGER: When giel sleeps after night [input_boolean.giel_slaapt_na_nacht] changes state. CONDITIONS: None. ACTIONS: If giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off, then turn on doorbell active switch [switch.deurbel_actief]. Otherwise, turn off doorbell active switch [switch.deurbel_actief].",
"natural_language": {
"trigger": "Whenever the state of the input boolean 'giel sleeps after night' [input_boolean.giel_slaapt_na_nacht] changes.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "If 'giel sleeps after night' [input_boolean.giel_slaapt_na_nacht] is turned off, the automation will activate the doorbell by turning on the 'doorbell active switch' [switch.deurbel_actief]. If it is turned on, the automation will deactivate the doorbell by turning off the 'doorbell active switch' [switch.deurbel_actief]."
},
"human_like": "Controls the doorbell's active state based on whether Giel is sleeping after the night, disabling it when he is.",
"complexity": "low"
}
},
{
"id": "378bbd67-0626-492d-b091-7f18ae68b8f6",
"result": {
"structured": "TRIGGER: When dark inside sensor [sensor.dark_inside] changes state. CONDITIONS: None. ACTIONS: If dark inside sensor [sensor.dark_inside] state is 'true', turn on stairs light [light.trap], noor button led [light.led_knop_noor], fien button led [light.led_knop_fien], giel button led [light.led_knop_giel], and martine button led [light.led_knop_martine]. Otherwise, turn them off.",
"natural_language": {
"trigger": "Whenever the dark inside sensor [sensor.dark_inside] changes its state.",
"conditions": "There are no additional conditions.",
"action": "If the dark inside sensor [sensor.dark_inside] reports that it is dark inside (state is 'true'), the automation turns on the stairs light [light.trap] and the button LEDs for Noor [light.led_knop_noor], Fien [light.led_knop_fien], Giel [light.led_knop_giel], and Martine [light.led_knop_martine]. If the sensor reports it is not dark (state is not 'true'), it turns all these lights off."
},
"human_like": "Turns on specific lights and button LEDs when it gets dark inside, and turns them off when it's light again.",
"complexity": "low"
}
},
{
"id": "25632745-3abf-4ae9-a64e-181845b9dec6",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes to Juist Aangekomen OR martine tracker [device_tracker.martine_not_so_binary] changes to Juist Aangekomen OR noor tracker [device_tracker.noor_not_so_binary] changes to Juist Aangekomen OR fien tracker [device_tracker.fien_not_so_binary] changes to Juist Aangekomen OR kitchen back door [binary_sensor.keuken_achterdeur] changes to on OR garage door sensor [binary_sensor.garage_deur] changes state OR garden occupancy [binary_sensor.tuin_bezetting] changes to on OR gate sensor [binary_sensor.poort] changes to on. CONDITIONS: dark outside sensor [sensor.dark_outside] is true. ACTIONS: If the current time is between 00:00:00 and 07:00:00, turn on all garden lighting [light.alle_tuinverlichting] at 60% brightness, then: (IF garden occupancy [binary_sensor.tuin_bezetting] is on, set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 2 hours, wait until garden occupancy [binary_sensor.tuin_bezetting] changes from on to off, then set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 120 seconds) OR (IF the trigger was a just_arrived trigger, set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 120 seconds) OR (OTHERWISE set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 60 seconds). If the current time is NOT between 00:00:00 and 07:00:00, turn on all garden lighting [light.alle_tuinverlichting] at 100% brightness, then: (IF garden occupancy [binary_sensor.tuin_bezetting] is on, set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 2 hours, wait until garden occupancy [binary_sensor.tuin_bezetting] changes from on to off, then set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 120 seconds) OR (IF the trigger was a just_arrived trigger, set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 120 seconds) OR (OTHERWISE set all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] to now + 60 seconds).",
"natural_language": {
"trigger": "The automation triggers when any of the following occurs: a family member (giel tracker [device_tracker.giel_not_so_binary], martine tracker [device_tracker.martine_not_so_binary], noor tracker [device_tracker.noor_not_so_binary], or fien tracker [device_tracker.fien_not_so_binary]) arrives home (changes to 'Juist Aangekomen'), the kitchen back door [binary_sensor.keuken_achterdeur] opens, the garage door sensor [binary_sensor.garage_deur] changes state, the garden occupancy [binary_sensor.tuin_bezetting] detects someone, or the gate sensor [binary_sensor.poort] opens.",
"conditions": "The automation only runs if it is dark outside, as indicated by the dark outside sensor [sensor.dark_outside] being true.",
"action": "If the time is between midnight and 7 AM, the garden lights are turned on at 60% brightness. Otherwise, they are turned on at full brightness. After turning on the lights, the automation sets a timer for when they should turn off. If the garden is occupied, the lights are scheduled to stay on for 2 hours, but if the garden becomes unoccupied, the timer is shortened to 2 minutes. If the trigger was a family member arriving home, the lights are set to turn off after 2 minutes. In all other cases, the lights are set to turn off after 1 minute."
},
"human_like": "Turns on the garden lights when someone arrives home or opens a door/gate after dark, adjusting brightness based on the time of night and setting a smart timer based on whether the garden is occupied.",
"complexity": "high"
}
},
{
"id": "642ea33c-f454-4b4c-a4bb-12ecb35d6868",
"result": {
"structured": "TRIGGER: When doorbell switch [switch.deurbel] turns on. CONDITIONS: None. ACTIONS: Play a doorbell sound on multiple speakers (kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], mass move speaker [media_player.mass_move], living 2 mass speaker [media_player.mass_living_2]) at 65% volume with announcement enabled, then wait 10 seconds.",
"natural_language": {
"trigger": "When the doorbell switch [switch.deurbel] is activated (turns on).",
"conditions": "There are no conditions for this automation.",
"action": "Plays a doorbell sound on the kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], mass move speaker [media_player.mass_move], and living 2 mass speaker [media_player.mass_living_2]. The sound is played as an announcement at 65% volume. After playing the sound, the automation waits for 10 seconds before completing."
},
"human_like": "Plays a doorbell sound on all specified speakers when the doorbell is pressed.",
"complexity": "low"
}
},
{
"id": "e80c2c9b-06b3-45f0-b6c2-aac9fb531612",
"result": {
"structured": "TRIGGER: When (current yield [sensor.huidige_opbrengst] is less than 100 AND outside brightness [sensor.buiten_lichtsterkte] is less than 950) remains true for 5 minutes OR when (current yield [sensor.huidige_opbrengst] is less than 2 AND outside brightness [sensor.buiten_lichtsterkte] is less than 150) remains true for 15 minutes OR when outside brightness [sensor.buiten_lichtsterkte] is below 1100 for 5 minutes OR when outside brightness [sensor.buiten_lichtsterkte] is below 150 for 5 minutes OR when the sun elevation [sun.sun] is below 0.0. CONDITIONS: None. ACTIONS: If the trigger with id 'buiten' fired, turn on dark outside lowpass [input_boolean.donker_buiten_lowpass]. If the trigger with id 'binnen' fired, turn on dark inside lowpass [input_boolean.donker_binnen_lowpass]. Otherwise (default), turn on both dark outside lowpass [input_boolean.donker_buiten_lowpass] and dark inside lowpass [input_boolean.donker_binnen_lowpass].",
"natural_language": {
"trigger": "The automation can be triggered in five ways. First, if the current yield [sensor.huidige_opbrengst] is below 100 and the outside brightness [sensor.buiten_lichtsterkte] is below 950 for at least five minutes. Second, if the current yield [sensor.huidige_opbrengst] is below 2 and the outside brightness [sensor.buiten_lichtsterkte] is below 150 for at least fifteen minutes. Third, if the outside brightness [sensor.buiten_lichtsterkte] is below 1100 for five minutes. Fourth, if the outside brightness [sensor.buiten_lichtsterkte] is below 150 for five minutes. Finally, if the sun's elevation [sun.sun] drops below the horizon (0.0 degrees).",
"conditions": "There are no separate conditions to evaluate; the logic is handled by the choose action based on which trigger fired.",
"action": "Depending on which trigger activated the automation, different switches are turned on. If the 'buiten' trigger fired, it turns on the dark outside lowpass [input_boolean.donker_buiten_lowpass]. If the 'binnen' trigger fired, it turns on the dark inside lowpass [input_boolean.donker_binnen_lowpass]. If any other trigger fired (the default case), it turns on both the dark outside lowpass [input_boolean.donker_buiten_lowpass] and the dark inside lowpass [input_boolean.donker_binnen_lowpass]."
},
"human_like": "This automation determines if it's dark enough outside to turn on 'dark' indicators, using a combination of solar yield, light levels, and sun position.",
"complexity": "high"
}
},
{
"id": "ca57e527-62bd-4eb2-8a93-0e33fde89bde",
"result": {
"structured": "TRIGGER: When dryer switch [switch.droogkast] changes from on to off OR when dryer running [binary_sensor.droogkast_staat_op] changes to off. CONDITIONS: None. ACTIONS: Choose based on trigger: If dryer switch [switch.droogkast] is off AND the trigger was the switch change, then turn on dryer optimizer automation [automation.droogkast_optimizer]. If the trigger was dryer running [binary_sensor.droogkast_staat_op] changing to off, then turn off dryer optimizer automation [automation.droogkast_optimizer] without stopping its current actions.",
"natural_language": {
"trigger": "When the dryer switch [switch.droogkast] is turned off, or when the dryer running [binary_sensor.droogkast_staat_op] sensor indicates the dryer is no longer running.",
"conditions": "There are no conditions that must be met.",
"action": "If the dryer switch [switch.droogkast] is off and the trigger was the switch being turned off, then the dryer optimizer automation [automation.droogkast_optimizer] is turned on. If the trigger was the dryer running [binary_sensor.droogkast_staat_op] sensor turning off, then the dryer optimizer automation [automation.droogkast_optimizer] is turned off, but any actions it is currently performing are allowed to finish."
},
"human_like": "Manages the dryer optimizer automation, turning it on when the dryer is manually switched off and turning it off when the dryer finishes running.",
"complexity": "medium"
}
},
{
"id": "13c7e741-1dd2-4bd4-9c03-d6060176b9c6",
"result": {
"structured": "TRIGGER: When emhass dishwasher [sensor.emhass_afwasmachien] is above 1 OR when dishwasher running [binary_sensor.afwasmachien_staat_op] turns off. ACTIONS: CHOOSE: If dishwasher switch [switch.afwasmachien] is off AND emhass dishwasher [sensor.emhass_afwasmachien] is above 1, then turn on dishwasher switch [switch.afwasmachien] AND turn on emhass dishwasher boolean [input_boolean.emhass_afwasmachien]. OR If the trigger was dishwasher running [binary_sensor.afwasmachien_staat_op] turning off AND emhass dishwasher boolean [input_boolean.emhass_afwasmachien] is on, then turn off dishwasher start boolean [input_boolean.afwasmachien_starten] AND turn off emhass dishwasher boolean [input_boolean.emhass_afwasmachien] AND check the condition: emhass washer boolean [input_boolean.emhass_wasmachien] is off AND emhass dryer boolean [input_boolean.emhass_droogkast] is off AND emhass dishwasher boolean [input_boolean.emhass_afwasmachien] is off.",
"natural_language": {
"trigger": "When the emhass dishwasher [sensor.emhass_afwasmachien] sensor reports a value greater than 1, or when the dishwasher running [binary_sensor.afwasmachien_staat_op] sensor indicates the dishwasher has turned off.",
"conditions": "There are no global conditions. The automation uses a choose action with two distinct paths, each with its own set of conditions.",
"action": "The automation performs one of two sequences based on conditions. First, if the dishwasher switch [switch.afwasmachien] is off and the emhass dishwasher [sensor.emhass_afwasmachien] value is above 1, it turns on the dishwasher switch and sets the emhass dishwasher boolean [input_boolean.emhass_afwasmachien] to on. Second, if the trigger was the dishwasher turning off and the emhass dishwasher boolean is on, it turns off the dishwasher start boolean [input_boolean.afwasmachien_starten] and the emhass dishwasher boolean, and then checks if the emhass washer boolean [input_boolean.emhass_wasmachien], emhass dryer boolean [input_boolean.emhass_droogkast], and emhass dishwasher boolean are all off."
},
"human_like": "Manages the dishwasher based on energy availability and its operational status, turning it on when power is cheap and cleaning up status flags when it finishes.",
"complexity": "medium"
}
},
{
"id": "684e7c96-7eb8-41fa-b81c-e3c97e234b56",
"result": {
"structured": "TRIGGER: When time is 01:31:00 OR When time is 23:42:00 OR When time is 06:02:00 OR When time matches minutes pattern /5 (every 5 minutes) OR When time matches minutes pattern 29 (at minute 29 of every hour) OR When Home Assistant starts OR When time matches the value of emhass data time [input_datetime.emhass_data]. CONDITIONS: (Trigger ID is data) OR (Trigger ID is dayahead) OR (Trigger ID is night AND current hour is in [0, 1, 2, 3, 4, 5]) OR (Trigger ID is day AND current hour is in [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]) OR (Trigger ID is fit) OR (Trigger ID is start) OR (Trigger ID is prediction). ACTIONS: Based on the trigger, execute one of the following sequences: 1. For trigger data: Call service rest_command.publish_data, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.publish_data_test. 2. For trigger dayahead: Call service rest_command.dayahead_optim, delay 5 seconds, call service rest_command.publish_data with prefix 'dh_', then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.dayahead_optim_test, delay 5 seconds, call service rest_command.publish_data_test with prefix 'dh_'. 3. For trigger night: Delay 2 seconds, call service rest_command.naive_mpc_optim with payload from emhass mpc sensor [sensor.emhass_mpc] attribute 'mpc', call service input_datetime.set_datetime to set emhass data time [input_datetime.emhass_data] to now plus 5 seconds, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.naive_mpc_optim_test. 4. For trigger day: Delay 2 seconds, call service rest_command.naive_mpc_optim with payload from emhass mpc sensor [sensor.emhass_mpc] attribute 'mpc', call service input_datetime.set_datetime to set emhass data time [input_datetime.emhass_data] to now plus 5 seconds, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.naive_mpc_optim_test. 5. For trigger fit: Call service rest_command.forecast_model_fit_load_zonder_wp, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.forecast_model_fit_load_zonder_wp_test. 6. For trigger start: Call service rest_command.publish_data, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.publish_data_test. 7. For trigger prediction: Call service rest_command.fit_heating_hours, delay 14 seconds, call service rest_command.predict_heating_hours, delay 4 seconds, call service rest_command.fit_heating_hours_gradientboosting, delay 14 seconds, call service rest_command.predict_heating_hours_gradientboosting, delay 4 seconds, call service rest_command.fit_heating_hours_adaboost, delay 14 seconds, call service rest_command.predict_heating_hours_adaboost, then if emhass testing boolean [input_boolean.emhass_testen] is on, call service rest_command.fit_heating_hours_test, delay 14 seconds, call service rest_command.predict_heating_hours_test.",
"natural_language": {
"trigger": "The automation can be triggered at specific times: 01:31, 23:42, or 06:02. It can also trigger every 5 minutes, at minute 29 of every hour, when Home Assistant starts up, or when the current time matches the value set in the emhass data time [input_datetime.emhass_data] entity.",
"conditions": "Depending on which trigger activated the automation, different conditions apply to select the action sequence. For the 'night' trigger, the current hour must be between 0 and 5 (midnight to 5 AM). For the 'day' trigger, the current hour must be between 6 and 23 (6 AM to 11 PM). For all other triggers, no additional time-based conditions are required. Additionally, for most action sequences, a secondary check is performed on the state of the emhass testing boolean [input_boolean.emhass_testen] to determine if a secondary 'test' command should also be executed.",
"action": "The automation performs different sets of actions based on the trigger. These actions primarily involve calling various REST commands to manage and optimize energy data (EMHASS). This includes publishing data, running day-ahead optimizations, performing model predictive control (MPC) optimizations, fitting forecast models, and running heating hour predictions. If the emhass testing boolean [input_boolean.emhass_testen] is turned on, a parallel set of 'test' commands is executed alongside the main ones. Some actions include short delays between commands and one action updates the emhass data time [input_datetime.emhass_data] to schedule a future trigger."
},
"human_like": "This automation schedules and runs various EMHASS energy management tasks, such as data publishing, optimizations, and model training, at different times of day, with an option to run test commands.",
"complexity": "high"
}
},
{
"id": "ca1bfea1-3d3f-4082-a57a-2ad5db0cc6c6",
"result": {
"structured": "TRIGGER: When EMHASS droogkast [sensor.emhass_droogkast] is above 1 OR When dryer running [binary_sensor.droogkast_staat_op] turns off. ACTIONS: Choose based on conditions: IF (dryer switch [switch.droogkast] is off) AND (EMHASS droogkast [sensor.emhass_droogkast] is above 1) THEN turn on dryer switch [switch.droogkast] AND turn on emhass dryer boolean [input_boolean.emhass_droogkast]. IF (trigger id is turn_off) AND (emhass dryer boolean [input_boolean.emhass_droogkast] is on) THEN turn off dryer start boolean [input_boolean.droogkast_starten] AND turn off emhass dryer boolean [input_boolean.emhass_droogkast] AND check template condition (emhass washer boolean [input_boolean.emhass_wasmachien] is off AND emhass dryer boolean [input_boolean.emhass_droogkast] is off AND emhass dishwasher boolean [input_boolean.emhass_afwasmachien] is off).",
"natural_language": {
"trigger": "When the EMHASS droogkast [sensor.emhass_droogkast] sensor reports a value greater than 1, or when the dryer running [binary_sensor.droogkast_staat_op] sensor indicates the dryer has turned off.",
"conditions": "The automation uses a choose action with two possible branches. The first branch runs if the dryer switch [switch.droogkast] is off and the EMHASS droogkast [sensor.emhass_droogkast] value is above 1. The second branch runs if the trigger was the dryer turning off and the emhass dryer boolean [input_boolean.emhass_droogkast] is currently on.",
"action": "If the first branch conditions are met, the automation turns on the dryer switch [switch.droogkast] and marks the dryer as active by turning on the emhass dryer boolean [input_boolean.emhass_droogkast]. If the second branch conditions are met, it turns off the dryer start boolean [input_boolean.droogkast_starten] and the emhass dryer boolean [input_boolean.emhass_droogkast], and then evaluates a final template to check if the washer, dryer, and dishwasher are all off."
},
"human_like": "Automatically starts the dryer when an energy management system signals it's optimal, and manages the dryer's status flags when it finishes running.",
"complexity": "medium"
}
},
{
"id": "f4a344eb-a2df-4d4e-aa33-fbbeec23fa89",
"result": {
"structured": "TRIGGER: When a mobile app notification action event occurs with action value '16U' OR '7U' OR 'ASAP' OR 'NASAP' OR 'CHOOSE' OR 'VANDAAG' OR 'MORGEN'. CONDITIONS: None. ACTIONS: First, set variables: 'who' is set to notify.mobile_app_gphone if the triggering user ID is '14a0b456772941eda81466d1807619b7', else notify.mobile_app_mphone if the triggering user ID is 'db0ab875181d4af887c161d094fd9da4', else notify.iedereen. 'datetime' is set to input_datetime.emhass_wasmachien_end_time if washer button [input_button.wasmachien] was last changed most recently, else input_datetime.emhass_droogkast_end_time if dryer button [input_button.droogkast] was last changed most recently, else input_datetime.emhass_afwasmachien_end_time if dishwasher button [input_button.afwasmachien] was last changed most recently. 'boolean' is set to input_boolean.wasmachien_starten if washer button [input_button.wasmachien] was last changed most recently, else input_boolean.droogkast_starten if dryer button [input_button.droogkast] was last changed most recently, else input_boolean.afwasmachien_starten if dishwasher button [input_button.afwasmachien] was last changed most recently. Then, based on the trigger ID: If trigger is '16U', set the datetime entity [{{ datetime }}] to today's date at 16:00:00 if current hour is before 14, else tomorrow's date at 16:00:00, and turn on the boolean entity [{{ boolean }}]. If trigger is '7U', set the datetime entity [{{ datetime }}] to today's date at 07:00:00 if current hour is before 5, else tomorrow's date at 07:00:00, and turn on the boolean entity [{{ boolean }}]. If trigger is 'ASAP', set the datetime entity [{{ datetime }}] to a time calculated as: current time plus 9600 seconds (if the datetime entity is dishwasher end time [input_datetime.emhass_afwasmachien_end_time]) or plus 7800 seconds (otherwise), rounded up to the nearest 5-minute interval, and turn on the boolean entity [{{ boolean }}]. If trigger is 'NASAP', set the datetime entity [{{ datetime }}] to a time calculated as: current time plus 77400 seconds, rounded up to the nearest 5-minute interval, and turn on the boolean entity [{{ boolean }}]. If trigger is 'CHOOSE', send a notification to the entity [{{ who }}] with message 'Vandaag/morgen' and actions 'VANDAAG' and 'MORGEN', wait 20 seconds, then turn on the boolean entity [{{ boolean }}]. If trigger is 'VANDAAG', set the datetime entity [{{ datetime }}] to the current date and time with seconds set to 00, then send a notification to the entity [{{ who }}] with message 'Kies het juiste uur.' and a URL to /lovelace/eindtijden. If trigger is 'MORGEN', set the datetime entity [{{ datetime }}] to tomorrow's date at 06:00:00, then send a notification to the entity [{{ who }}] with message 'Kies het juiste uur.' and a URL to /lovelace/eindtijden.",
"natural_language": {
"trigger": "The automation is triggered by receiving a specific action from a mobile app notification. The possible actions are: 16U, 7U, ASAP, NASAP, CHOOSE, VANDAAG, and MORGEN.",
"conditions": "There are no conditions that must be met for the actions to execute.",
"action": "First, the automation determines which user triggered it and sets a notification target accordingly: it will notify gphone mobile app [notify.mobile_app_gphone] for user ID '14a0b456772941eda81466d1807619b7', mphone mobile app [notify.mobile_app_mphone] for user ID 'db0ab875181d4af887c161d094fd9da4', or everyone notification [notify.iedereen] for any other user. It also identifies the most recently used appliance based on the last changed time of washer button [input_button.wasmachien], dryer button [input_button.droogkast], and dishwasher button [input_button.afwasmachien]. This determines which datetime input (washer end time [input_datetime.emhass_wasmachien_end_time], dryer end time [input_datetime.emhass_droogkast_end_time], or dishwasher end time [input_datetime.emhass_afwasmachien_end_time]) and which boolean input (washer start boolean [input_boolean.wasmachien_starten], dryer start boolean [input_boolean.droogkast_starten], or dishwasher start boolean [input_boolean.afwasmachien_starten]) to use. Depending on the specific action received: For '16U', it sets the selected datetime to 4 PM today or tomorrow (depending on the current hour) and turns on the corresponding boolean. For '7U', it sets the selected datetime to 7 AM today or tomorrow (depending on the current hour) and turns on the corresponding boolean. For 'ASAP', it calculates a start time soon (adding 2 hours 40 minutes for the dishwasher, or 2 hours 10 minutes for others), rounds it to the next 5-minute mark, sets the datetime, and turns on the boolean. For 'NASAP', it calculates a start time far in the future (adding 21 hours 30 minutes), rounds it to the next 5-minute mark, sets the datetime, and turns on the boolean. For 'CHOOSE', it sends a notification asking 'Vandaag/morgen' with options for today or tomorrow, waits 20 seconds, and then turns on the boolean. For 'VANDAAG', it sets the selected datetime to the current time (rounded to the minute) and sends a notification with a link to choose the exact hour. For 'MORGEN', it sets the selected datetime to 6 AM tomorrow and sends a notification with a link to choose the exact hour."
},
"human_like": "This automation handles scheduling requests for laundry and dishwasher appliances via mobile notifications, allowing users to quickly set start times like 'ASAP', '7 AM', or '4 PM', and sends follow-up prompts if a specific time needs to be chosen.",
"complexity": "high"
}
},
{
"id": "e1b7948d-f045-4c61-8155-8d15b13bdc1a",
"result": {
"structured": "TRIGGER: When washer button [input_button.wasmachien] state changes OR When dryer button [input_button.droogkast] state changes OR When dishwasher button [input_button.afwasmachien] state changes. CONDITIONS: None. ACTIONS: First, set a variable 'who' based on the user ID from the trigger context: if user ID is '14a0b456772941eda81466d1807619b7', target is gphone mobile app [notify.mobile_app_gphone]; if user ID is 'db0ab875181d4af887c161d094fd9da4', target is mphone mobile app [notify.mobile_app_mphone]; otherwise, target is everyone notification [notify.iedereen]. Then, based on which trigger fired: IF trigger is washer button [input_button.wasmachien], THEN check if washer start boolean [input_boolean.wasmachien_starten] is on AND emhass washer boolean [input_boolean.emhass_wasmachien] is not on. IF true, turn on washer switch [switch.wasmachien] AND turn off washer start boolean [input_boolean.wasmachien_starten]. IF false (default), turn off Afwasmachien staat op [input_boolean.wasmachien_staat_op], wait 1 second, turn off washer switch [switch.wasmachien], AND send a notification to 'who' asking 'Wanneer moet het wasmachien klaar zijn?' with response options. IF trigger is dishwasher button [input_button.afwasmachien], THEN check if dishwasher start boolean [input_boolean.afwasmachien_starten] is on AND emhass dishwasher boolean [input_boolean.emhass_afwasmachien] is not on. IF true, turn on dishwasher switch [switch.afwasmachien] AND turn off dishwasher start boolean [input_boolean.afwasmachien_starten]. IF false (default), turn off Afwasmachien staat op [input_boolean.afwasmachien_staat_op], wait 1 second, turn off dishwasher switch [switch.afwasmachien], AND send a notification to 'who' asking 'Wanneer moet het afwasmachien klaar zijn?' with response options. IF trigger is dryer button [input_button.droogkast], THEN check if dryer start boolean [input_boolean.droogkast_starten] is on AND emhass dryer boolean [input_boolean.emhass_droogkast] is not on. IF true, turn on dryer switch [switch.droogkast] AND turn off dryer start boolean [input_boolean.droogkast_starten]. IF false (default), turn off Droogkast staat op [input_boolean.droogkast_staat_op], wait 1 second, turn off dryer switch [switch.droogkast], AND send a notification to 'who' asking 'Wanneer moet de droogkast klaar zijn?' with response options.",
"natural_language": {
"trigger": "The automation triggers whenever the state of the washer button [input_button.wasmachien], the dryer button [input_button.droogkast], or the dishwasher button [input_button.afwasmachien] changes.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "First, the automation determines who to notify based on the user who initiated the button press. If the user ID matches a specific user, it will notify their mobile app; otherwise, it notifies everyone. Then, depending on which button was pressed, it checks if the corresponding 'start' boolean is on and the corresponding 'emhass' boolean is off. If both are true, it turns on the appliance's switch and turns off the 'start' boolean. If not, it turns off a status boolean for that appliance, waits one second, turns off the appliance's switch, and sends a notification to the determined recipient asking when the appliance should be finished, providing several time options."
},
"human_like": "This automation manages the start of the washer, dryer, and dishwasher based on button presses, either turning them on immediately if scheduled or asking the user for a desired finish time.",
"complexity": "high"
}
},
{
"id": "c5057565-f78b-478b-b9db-d7659b3caf72",
"result": {
"structured": "TRIGGER: When emhass heat pump [sensor.emhass_warmtepomp] is above 1 OR When emhass heat pump [sensor.emhass_warmtepomp] is below 0.1 for 5 minutes and 30 seconds OR When the current time minus the uptime sensor [sensor.uptime] state is greater than 60 seconds OR When an automation_reloaded event occurs. ACTIONS: CHOOSE: IF emhass heat pump [sensor.emhass_warmtepomp] is above 1 THEN turn on heat pump boolean [input_boolean.emhass_warmtepomp] AND IF heat pump delay off [binary_sensor.warmtepomp_aan_delay_off] is off THEN turn on heating switch [switch.verwarming]. IF emhass heat pump [sensor.emhass_warmtepomp] is below 1 THEN turn off heat pump boolean [input_boolean.emhass_warmtepomp] AND turn off heating switch [switch.verwarming].",
"natural_language": {
"trigger": "The automation triggers when the emhass heat pump [sensor.emhass_warmtepomp] value rises above 1, or when it drops below 0.1 and stays there for 5 minutes and 30 seconds. It also triggers if the system uptime indicates more than 60 seconds have passed since the last update from the uptime sensor [sensor.uptime], or whenever automations are reloaded.",
"conditions": "The automation does not have separate conditions; instead, it uses a choose action with conditional sequences. The conditions are evaluated within the action block.",
"action": "When triggered, the automation checks the value of the emhass heat pump [sensor.emhass_warmtepomp]. If the value is above 1, it turns on the heat pump boolean [input_boolean.emhass_warmtepomp] and, provided the heat pump delay off [binary_sensor.warmtepomp_aan_delay_off] is off, also turns on the heating switch [switch.verwarming]. If the value is below 1, it turns off both the heat pump boolean [input_boolean.emhass_warmtepomp] and the heating switch [switch.verwarming]."
},
"human_like": "Controls the heating system based on the heat pump's energy forecast, turning it on when energy is predicted to be high and off when it's low, with a safety delay and uptime check.",
"complexity": "medium"
}
},
{
"id": "2dbe7701-5976-4ce8-aaad-0298d80cb019",
"result": {
"structured": "TRIGGER: When emhass heat pump boiler [sensor.emhass_warmtepompboiler] is above 1 OR When emhass heat pump boiler [sensor.emhass_warmtepompboiler] is below 0.1 for 4 minutes OR When the time elapsed since the last system start (uptime sensor [sensor.uptime]) is greater than 60 seconds OR When an automation_reloaded event occurs. ACTIONS: CHOOSE: If emhass heat pump boiler [sensor.emhass_warmtepompboiler] is above 1, THEN turn on heat pump boiler boolean [input_boolean.emhass_warmtepompboiler] AND turn on warm water switch [switch.warm_water] AND if heat pump boiler delay off [binary_sensor.warmtepompboiler_aan_delay_off] is off, THEN turn on quick warm water switch [switch.warm_water_snel]. If emhass heat pump boiler [sensor.emhass_warmtepompboiler] is below 1, THEN turn off heat pump boiler boolean [input_boolean.emhass_warmtepompboiler] AND turn off warm water switch [switch.warm_water] AND turn off quick warm water switch [switch.warm_water].",
"natural_language": {
"trigger": "The automation triggers when the emhass heat pump boiler [sensor.emhass_warmtepompboiler] value rises above 1, or when it drops below 0.1 and stays there for at least 4 minutes. It also triggers if more than 60 seconds have passed since the system uptime was recorded, or whenever automations are reloaded.",
"conditions": "There are no separate conditions block; the logic is embedded in the choose action.",
"action": "When triggered, the automation checks the current value of the emhass heat pump boiler [sensor.emhass_warmtepompboiler]. If the value is above 1, it turns on the heat pump boiler boolean [input_boolean.emhass_warmtepompboiler] and the warm water switch [switch.warm_water]. Additionally, if the heat pump boiler delay off [binary_sensor.warmtepompboiler_aan_delay_off] is off, it also turns on the quick warm water switch [switch.warm_water_snel]. If the value is below 1, it turns off the heat pump boiler boolean [input_boolean.emhass_warmtepompboiler], the warm water switch [switch.warm_water], and the quick warm water switch [switch.warm_water]."
},
"human_like": "Controls the heat pump boiler and associated water heating switches based on the energy forecast value, ensuring the system is activated when needed and deactivated when not.",
"complexity": "medium"
}
},
{
"id": "c5897903-93c6-4ca5-8235-4e7fac626b2e",
"result": {
"structured": "TRIGGER: When emhass washer [sensor.emhass_wasmachien] is above 1 OR When washer running [binary_sensor.wasmachien_staat_op] turns off. ACTIONS: Choose based on conditions: 1) IF washer switch [switch.wasmachien] is off AND emhass washer [sensor.emhass_wasmachien] is above 1 THEN turn on washer switch [switch.wasmachien] AND turn on emhass washer boolean [input_boolean.emhass_wasmachien]. 2) IF trigger is washer running [binary_sensor.wasmachien_staat_op] turning off AND emhass washer boolean [input_boolean.emhass_wasmachien] is on THEN turn off washer start boolean [input_boolean.wasmachien_starten] AND turn off emhass washer boolean [input_boolean.emhass_wasmachien] AND check template condition: emhass washer boolean [input_boolean.emhass_wasmachien] is off AND emhass dryer boolean [input_boolean.emhass_droogkast] is off AND emhass dishwasher boolean [input_boolean.emhass_afwasmachien] is off.",
"natural_language": {
"trigger": "The automation triggers either when the emhass washer [sensor.emhass_wasmachien] sensor reports a value greater than 1, or when the washer running [binary_sensor.wasmachien_staat_op] sensor indicates the washer has stopped (turns off).",
"conditions": "The automation uses a choose action with two distinct paths. The first path runs if the washer switch [switch.wasmachien] is currently off and the emhass washer [sensor.emhass_wasmachien] sensor value is above 1. The second path runs if the trigger was specifically the washer turning off and the emhass washer boolean [input_boolean.emhass_wasmachien] is currently on.",
"action": "If the conditions for the first path are met, the automation turns on the washer switch [switch.wasmachien] and also turns on the emhass washer boolean [input_boolean.emhass_wasmachien]. If the conditions for the second path are met, it turns off the washer start boolean [input_boolean.wasmachien_starten] and the emhass washer boolean [input_boolean.emhass_wasmachien], and then evaluates a template to check if all related appliance booleans (washer, dryer, and dishwasher) are off."
},
"human_like": "Automatically starts the washing machine when energy conditions are favorable and manages its status flags, turning them off when the machine finishes its cycle.",
"complexity": "medium"
}
},
{
"id": "2c771c0d-4d36-4678-bc2a-3b93c6d38ce5",
"result": {
"structured": "TRIGGER: When Home Assistant starts. ACTIONS: Wait for 60 seconds. Then, if living climate [climate.living] is unavailable OR unknown, reload the configuration entry for climate.living [climate.living]. Also, if unifi media power [sensor.unifi_media_vermogen] is unavailable OR unknown OR unifi laundry power [sensor.unifi_waskot_vermogen] is unavailable OR unknown, enable the entities unifi switch cpu [sensor.usw_24_poe_waskot_cpu_utilization] AND unifi lite 8 cpu [sensor.usw_lite_8_cpu_utilization].",
"natural_language": {
"trigger": "When Home Assistant starts up.",
"conditions": "There are no explicit conditions; the actions are performed after a delay and based on template checks.",
"action": "After a 60-second delay, the automation checks if the living climate [climate.living] is unavailable or unknown. If so, it reloads its configuration entry. It also checks if either the unifi media power [sensor.unifi_media_vermogen] or the unifi laundry power [sensor.unifi_waskot_vermogen] is unavailable or unknown. If either condition is met, it enables the CPU utilization sensors for the Unifi switches: unifi switch cpu [sensor.usw_24_poe_waskot_cpu_utilization] and unifi lite 8 cpu [sensor.usw_lite_8_cpu_utilization]."
},
"human_like": "This automation ensures that certain climate and network sensors are properly loaded and enabled shortly after Home Assistant starts, helping to maintain system stability.",
"complexity": "medium"
}
},
{
"id": "85d4b37a-ed73-4a55-8b71-99e3cb74f7ec",
"result": {
"structured": "TRIGGER: When the time reaches ventilation end time [input_datetime.verluchting_end_time] OR When the time reaches dehumidifier end time [input_datetime.luchtdroger_end_time] OR When the time reaches all garden lighting end time [input_datetime.alle_tuinverlichting_end_time] OR When the time reaches canopy lighting end time [input_datetime.afdak_verlichting_end_time] OR When the time reaches kitchen end time [input_datetime.keuken_end_time] OR When the time reaches noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] OR When the time reaches fien lighting end time [input_datetime.slaapkamer_fien_verlichting_end_time] OR When the time reaches wled noor end time [input_datetime.wled_noor_end_time] OR When the time reaches wled fien end time [input_datetime.wled_fien_end_time]. CONDITIONS: None. ACTIONS: If the trigger was ventilation end time [input_datetime.verluchting_end_time], then turn off ventilation switch [switch.verluchting], bathroom ventilation switch [switch.badkamer_verluchting], and attic ventilation switch [switch.zolder_verluchting]. If the trigger was dehumidifier end time [input_datetime.luchtdroger_end_time], then turn off dehumidifier switch [switch.luchtdroger]. If the trigger was all garden lighting end time [input_datetime.alle_tuinverlichting_end_time], then turn off all garden lighting [light.alle_tuinverlichting]. If the trigger was canopy lighting end time [input_datetime.afdak_verlichting_end_time], then turn off canopy lighting [light.afdak_verlichting]. If the trigger was kitchen end time [input_datetime.keuken_end_time], then turn off kitchen entry light [light.keuken_inkom], kitchen ceiling light [light.keuken_luster], and kitchen spotlights [light.keuken_spots]. If the trigger was noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time], then turn off noor light [light.noor]. If the trigger was fien lighting end time [input_datetime.slaapkamer_fien_verlichting_end_time], then turn off fien light [light.fien]. If the trigger was wled noor end time [input_datetime.wled_noor_end_time], then turn off wled noor light [light.wled_noor]. If the trigger was wled fien end time [input_datetime.wled_fien_end_time], then turn off wled fien light [light.wled_fien].",
"natural_language": {
"trigger": "The automation is triggered when the current time matches any of the nine configured end times: ventilation end time, dehumidifier end time, all garden lighting end time, canopy lighting end time, kitchen end time, noor lighting end time, fien lighting end time, wled noor end time, or wled fien end time.",
"conditions": "There are no conditions for this automation.",
"action": "Depending on which end time triggered the automation, a specific set of devices is turned off. If the ventilation end time is reached, the ventilation switch, bathroom ventilation switch, and attic ventilation switch are turned off. If the dehumidifier end time is reached, the dehumidifier switch is turned off. If the all garden lighting end time is reached, the all garden lighting is turned off. If the canopy lighting end time is reached, the canopy lighting is turned off. If the kitchen end time is reached, the kitchen entry light, kitchen ceiling light, and kitchen spotlights are turned off. If the noor lighting end time is reached, the noor light is turned off. If the fien lighting end time is reached, the fien light is turned off. If the wled noor end time is reached, the wled noor light is turned off. If the wled fien end time is reached, the wled fien light is turned off."
},
"human_like": "This automation turns off various lights, ventilation, and a dehumidifier at their scheduled end times, helping to manage energy use and maintain a schedule.",
"complexity": "medium"
}
},
{
"id": "d84866ff-f214-4b50-b521-6fadca16c6f9",
"result": {
"structured": "TRIGGER: When esphome restarts sensor [sensor.esphome_restarts] is above 0 and remains so for 65 seconds. CONDITIONS: None. ACTIONS: For each device in the list attribute of esphome restarts sensor [sensor.esphome_restarts], create a persistent notification with a message indicating the device name and that it is restarting because some ESPHome sensor entities (excluding energy sensors) are in an 'unknown' state, then turn on the switch corresponding to that device.",
"natural_language": {
"trigger": "When the esphome restarts sensor [sensor.esphome_restarts] reports a value greater than zero and stays that way for at least 65 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "For each device listed in the sensor's attribute, the automation will create a persistent notification. The message will state the device's name and explain it is restarting because certain ESPHome sensor entities (excluding energy sensors) were found to be in an 'unknown' state. After the notification, it will turn on the switch associated with that device."
},
"human_like": "Automatically restarts ESPHome devices and sends a notification when the system detects they have been offline, based on a sensor tracking restarts.",
"complexity": "medium"
}
},
{
"id": "5af77f99-0597-427c-881f-5f71adafd7e4",
"result": {
"structured": "TRIGGER: When the time matches a pattern of every 20 minutes (at minutes 0, 20, and 40 of each hour). CONDITIONS: None. ACTIONS: Fire the event refresh_20m.",
"natural_language": {
"trigger": "Every 20 minutes, on the hour, at 20 past, and at 40 past.",
"conditions": "There are no conditions that must be met.",
"action": "Fires a custom event named refresh_20m."
},
"human_like": "Fires a refresh event every 20 minutes.",
"complexity": "low"
}
},
{
"id": "enable_facebook",
"result": {
"structured": "TRIGGER: When allow facebook boolean [input_boolean.allowfacebook] turns on. CONDITIONS: None. ACTIONS: Call service adguard.remove_url with data: url = https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-facebook.txt.",
"natural_language": {
"trigger": "When the allow facebook boolean [input_boolean.allowfacebook] is turned on.",
"conditions": "There are no conditions that must be met.",
"action": "Removes a Facebook blocklist from the AdGuard service by calling the 'adguard.remove_url' action with the specific URL for the Facebook blocklist."
},
"human_like": "Removes the Facebook blocklist from AdGuard when the 'allow Facebook' switch is turned on.",
"complexity": "low"
}
},
{
"id": "disable_facebook",
"result": {
"structured": "TRIGGER: When allow facebook boolean [input_boolean.allowfacebook] changes to off. ACTIONS: Add a URL blocklist to AdGuard with name 'Facebook' using the source https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-facebook.txt.",
"natural_language": {
"trigger": "When the allow facebook boolean [input_boolean.allowfacebook] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a Facebook blocklist to the AdGuard service by fetching the list from a specified URL."
},
"human_like": "Automatically blocks Facebook by adding a blocklist to AdGuard when the Facebook allowance is turned off.",
"complexity": "low"
}
},
{
"id": "d40f8589-a6ec-43ab-a18d-2adf299d5e21",
"result": {
"structured": "TRIGGER: Every 5 minutes at minute 0, 5, 10, etc. (seconds: 0). CONDITIONS: NOT (fien switch [switch.fien] is on). ACTIONS: Turn off fien switch [switch.fien].",
"natural_language": {
"trigger": "The automation triggers every five minutes, precisely when the seconds read zero.",
"conditions": "It only proceeds if the fien switch [switch.fien] is not currently in the 'on' state.",
"action": "It turns off the fien switch [switch.fien]."
},
"human_like": "Ensures the fien switch is turned off by checking its state every five minutes.",
"complexity": "low"
}
},
{
"id": "fien_block",
"result": {
"structured": "TRIGGER: When fien blocker boolean [input_boolean.fien_blocker] turns on. CONDITIONS: None. ACTIONS: Add a URL block list to AdGuard with name 'Fien' from URL 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/fien.txt'.",
"natural_language": {
"trigger": "When the fien blocker boolean [input_boolean.fien_blocker] is turned on.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a block list named 'Fien' to AdGuard from the specified URL."
},
"human_like": "Activates a specific block list in AdGuard when the fien blocker is enabled.",
"complexity": "low"
}
},
{
"id": "fien_allow",
"result": {
"structured": "TRIGGER: When fien blocker boolean [input_boolean.fien_blocker] changes to off. CONDITIONS: None. ACTIONS: Remove the URL 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard/filters/block/fien.txt' from AdGuard.",
"natural_language": {
"trigger": "When the fien blocker boolean [input_boolean.fien_blocker] is turned off.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Removes a specific URL filter list from AdGuard, allowing previously blocked content for 'fien'."
},
"human_like": "Removes a content block for 'fien' when the blocker is disabled.",
"complexity": "low"
}
},
{
"id": "fien_block_all",
"result": {
"structured": "TRIGGER: When fien blocker all boolean [input_boolean.fien_blocker_all] turns on. CONDITIONS: None. ACTIONS: Execute the 'adguard.add_url' service with data: name 'Fien all', url 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/no_internet_fien.txt'.",
"natural_language": {
"trigger": "When the fien blocker all boolean [input_boolean.fien_blocker_all] is turned on.",
"conditions": "There are no conditions to check.",
"action": "Adds a block list to AdGuard by calling the 'adguard.add_url' service with the name 'Fien all' and the specified URL containing the filter rules."
},
"human_like": "Activates a comprehensive internet block list for Fien when the master blocker switch is turned on.",
"complexity": "low"
}
},
{
"id": "fien_allow_all",
"result": {
"structured": "TRIGGER: When fien blocker all boolean [input_boolean.fien_blocker_all] changes to off. CONDITIONS: None. ACTIONS: Call service adguard.remove_url with data url set to 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/no_internet_fien.txt'.",
"natural_language": {
"trigger": "When the fien blocker all boolean [input_boolean.fien_blocker_all] is turned off.",
"conditions": "There are no conditions that must be met.",
"action": "Removes a specific AdGuard filter list by calling the 'adguard.remove_url' service with the URL for the 'no_internet_fien.txt' block list."
},
"human_like": "Removes internet restrictions for Fien when the master blocker switch is turned off.",
"complexity": "low"
}
},
{
"id": "fien_block_snapchat",
"result": {
"structured": "TRIGGER: When fien snapchat blocker boolean [input_boolean.fien_snapchat_blocker] turns on. CONDITIONS: None. ACTIONS: Add a URL filter named 'Fien snapchat' to AdGuard using the specified URL.",
"natural_language": {
"trigger": "When the fien snapchat blocker boolean [input_boolean.fien_snapchat_blocker] is turned on.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a URL filter named 'Fien snapchat' to AdGuard, using the URL from the specified GitHub repository."
},
"human_like": "Blocks Snapchat for Fien by adding a filter to AdGuard when the blocker is enabled.",
"complexity": "low"
}
},
{
"id": "fien_allow_snapchat",
"result": {
"structured": "TRIGGER: When fien snapchat blocker boolean [input_boolean.fien_snapchat_blocker] changes to off. CONDITIONS: None. ACTIONS: Execute adguard.remove_url service with data: url = https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/fien_snapchat.txt.",
"natural_language": {
"trigger": "When the fien snapchat blocker boolean [input_boolean.fien_snapchat_blocker] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Removes a specific URL block list from AdGuard by calling the adguard.remove_url service with the URL for the 'fien_snapchat' filter."
},
"human_like": "Removes the Snapchat block from AdGuard when the corresponding control switch is turned off.",
"complexity": "low"
}
},
{
"id": "94bfe829-2f07-482d-b641-1b9cbfccc2e2",
"result": {
"structured": "TRIGGER: When gate sensor [binary_sensor.poort] changes state OR when gate status sensor [binary_sensor.poort_status] turns on. CONDITIONS: gate photocell error boolean [input_boolean.fotocel_poort_error] is on. ACTIONS: Turn off gate photocell error boolean [input_boolean.fotocel_poort_error].",
"natural_language": {
"trigger": "When the gate sensor [binary_sensor.poort] changes its state, or when the gate status sensor [binary_sensor.poort_status] turns on.",
"conditions": "The gate photocell error boolean [input_boolean.fotocel_poort_error] must be in the 'on' state.",
"action": "Turns off the gate photocell error boolean [input_boolean.fotocel_poort_error]."
},
"human_like": "Clears the gate photocell error flag when either the gate sensor changes or the gate status sensor reports 'on'.",
"complexity": "low"
}
},
{
"id": "18e1f3ce-b09b-4133-9cbb-deaf01ce38a4",
"result": {
"structured": "TRIGGER: When gate sensor [binary_sensor.poort] remains open (on) for 2 minutes OR when gate status sensor [binary_sensor.poort_status] remains off for 2 minutes. CONDITIONS: None. ACTIONS: Turn on gate photocell error boolean [input_boolean.fotocel_poort_error] AND turn off all garden lighting [light.alle_tuinverlichting] AND send a notification to gphone mobile app [notify.mobile_app_gphone] with title 'Melding van Home-Assistant' and message 'Fotocel poort geblokkeerd? En den trigger was {{ trigger.entity_id }}' AND wait for 10 seconds.",
"natural_language": {
"trigger": "When the gate sensor [binary_sensor.poort] stays open for at least two minutes, or when the gate status sensor [binary_sensor.poort_status] stays off for at least two minutes.",
"conditions": "There are no conditions for this automation.",
"action": "It turns on the gate photocell error boolean [input_boolean.fotocel_poort_error], turns off all garden lighting [light.alle_tuinverlichting], sends a notification to the gphone mobile app [notify.mobile_app_gphone] with a message asking if the gate photocell is blocked and stating which sensor triggered the event, and then waits for ten seconds."
},
"human_like": "Detects a potential gate sensor blockage by monitoring the gate and its status sensor, then flags an error, turns off the garden lights, and sends an alert.",
"complexity": "medium"
}
},
{
"id": "6b406fef-f5c4-4f5a-8c95-f907fb74d67b",
"result": {
"structured": "TRIGGER: When a mobile app notification action event occurs with action value GANG. CONDITIONS: None. ACTIONS: Turn off Gang verklikker [automation.gang_verklikker] and stop its currently running actions.",
"natural_language": {
"trigger": "When a specific action named 'GANG' is tapped on a notification sent to a mobile app.",
"conditions": "There are no conditions for this automation.",
"action": "Turns off the automation named Gang verklikker [automation.gang_verklikker] and stops any actions it is currently performing."
},
"human_like": "Stops the 'Gang verklikker' automation when a specific notification button is pressed.",
"complexity": "low"
}
},
{
"id": "9b86be0a-0d8e-4605-bfad-27f55017efd7",
"result": {
"structured": "TRIGGER: When garage door sensor [binary_sensor.garage_deur] changes from open (on) to closed (off) OR when garage door sensor [binary_sensor.garage_deur] changes from closed (off) to open (on). CONDITIONS: None. ACTIONS: Choose action based on conditions: If garage door sensor [binary_sensor.garage_deur] is closed (off) AND garage occupancy [binary_sensor.garage_bezetting] is not occupied (off) THEN turn off garage light [light.garage]. Else if garage door sensor [binary_sensor.garage_deur] is closed (off) AND garage occupancy [binary_sensor.garage_bezetting] is not occupied (off) AND garage light [light.garage] is off THEN turn off garage light [light.garage]. Else if garage door sensor [binary_sensor.garage_deur] is closed (off) AND garage occupancy [binary_sensor.garage_bezetting] is occupied (on) AND garage light [light.garage] is off THEN turn off garage light [light.garage]. Otherwise (default) turn on garage light [light.garage].",
"natural_language": {
"trigger": "When the garage door sensor [binary_sensor.garage_deur] changes state, either opening or closing.",
"conditions": "There are no separate conditions; the logic is embedded in the action's choose block.",
"action": "The automation checks several scenarios. If the garage door is closed and the garage is not occupied, it turns off the garage light. There are additional checks for when the door is closed, occupancy is off, and the light is already off, and another for when the door is closed, occupancy is on, and the light is off, both of which also turn off the light. In all other cases, it turns the garage light on."
},
"human_like": "Controls the garage light based on the door opening or closing and whether the garage is occupied, typically turning the light on when the door is used unless the garage is empty and the door is closed.",
"complexity": "medium"
}
},
{
"id": "enable_goplay",
"result": {
"structured": "TRIGGER: When allow goplay boolean [input_boolean.allowgoplay] turns on. CONDITIONS: None. ACTIONS: Remove the URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-goplay.txt' from the adguard service.",
"natural_language": {
"trigger": "When the allow goplay boolean [input_boolean.allowgoplay] is turned on.",
"conditions": "There are no conditions for this automation.",
"action": "Removes the specified URL from the adguard service, effectively allowing the 'goplay' service."
},
"human_like": "Allows the 'goplay' service by removing its blocklist entry when a specific switch is turned on.",
"complexity": "low"
}
},
{
"id": "disable_goplay",
"result": {
"structured": "TRIGGER: When allow goplay boolean [input_boolean.allowgoplay] turns off. CONDITIONS: None. ACTIONS: Add the URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-goplay.txt' to AdGuard with the name 'GoPlay'.",
"natural_language": {
"trigger": "When the allow goplay boolean [input_boolean.allowgoplay] is turned off.",
"conditions": "There are no additional conditions.",
"action": "Adds a blocklist URL for the service 'GoPlay' to AdGuard."
},
"human_like": "Automatically adds a GoPlay blocklist to AdGuard when the permission for GoPlay is disabled.",
"complexity": "low"
}
},
{
"id": "157b1d57-73d9-4f39-82c6-13ce0cf4288a",
"result": {
"structured": "TRIGGER: At 23:59:32 daily. CONDITIONS: None. ACTIONS: Send a notification to prediction notification [notify.prediction] containing a CSV-formatted message with the current timestamp and the following calculated values: degree day daily [sensor.degree_day_daily], today's solar yield (solar yield kwh [sensor.opbrengst_kwh] minus solar csv 2 [sensor.solar_csv_2]), today's non-heating consumption (today's total consumption (consumption kwh [sensor.verbruik_kwh] minus consumption csv [sensor.verbruik_csv]) minus today's heating consumption), hour per degree day daily [sensor.uur_per_degree_day_daily], average day temperature inside [sensor.gemiddelde_dagtemperatuur_binnen], average day temperature outside [sensor.gemiddelde_dagtemperatuur_buiten], heat pump running hours today [sensor.branduren_warmtepomp_vandaag], kwh per degree day daily [sensor.kwh_per_degree_day_daily], total solar yield kwh [sensor.opbrengst_kwh], total heat pump kwh [sensor.warmtepomp_kwh], today's heating consumption (heat pump kwh [sensor.warmtepomp_kwh] minus heating csv [sensor.verwarming_csv]), total consumption kwh [sensor.verbruik_kwh], and today's total consumption (consumption kwh [sensor.verbruik_kwh] minus consumption csv [sensor.verbruik_csv]). Send an identical notification to prediction share notification [notify.prediction_share].",
"natural_language": {
"trigger": "Every day at 23:59:32.",
"conditions": "There are no conditions; the action runs immediately after the trigger.",
"action": "Sends two notifications. The first is sent to the prediction notification [notify.prediction] service, and the second is sent to the prediction share notification [notify.prediction_share] service. Both notifications contain a CSV-formatted data line. This data includes the current time and a series of calculated values for the day, such as the degree days, solar energy produced, energy consumption with and without heating, indoor and outdoor average temperatures, heat pump running time, and efficiency metrics (kWh and hours per degree day). The calculations derive today's values by subtracting yesterday's stored totals (from sensors like solar csv 2 [sensor.solar_csv_2], heating csv [sensor.verwarming_csv], and consumption csv [sensor.verbruik_csv]) from the current cumulative totals."
},
"human_like": "Sends a daily summary of heating, solar, and energy consumption data in CSV format just before midnight for logging or analysis.",
"complexity": "medium"
}
},
{
"id": "b4140539-7c19-420e-ac35-2ead8e6e75aa",
"result": {
"structured": "TRIGGER: When current yield [sensor.huidige_opbrengst] is above 600 OR at 21:03:00. ACTIONS: If the current hour is 21, turn off garage fridge switch [switch.garage_ijskast]; otherwise, turn on garage fridge switch [switch.garage_ijskast].",
"natural_language": {
"trigger": "The automation triggers either when the current yield [sensor.huidige_opbrengst] exceeds 600, or at exactly 21:03:00 each day.",
"conditions": "There are no separate conditions defined in this automation.",
"action": "If the current time is within the 21st hour (9 PM), the garage fridge switch [switch.garage_ijskast] is turned off. At any other time of day, the switch is turned on."
},
"human_like": "Turns the garage fridge on or off based on solar power production or a scheduled time, turning it off only in the evening.",
"complexity": "medium"
}
},
{
"id": "enable_instagram",
"result": {
"structured": "TRIGGER: When allow instagram boolean [input_boolean.allowinstagram] turns on. CONDITIONS: None. ACTIONS: Call service adguard.remove_url with data: url = https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-instagram.txt.",
"natural_language": {
"trigger": "When the allow instagram boolean [input_boolean.allowinstagram] is switched to the 'on' state.",
"conditions": "There are no conditions that need to be met.",
"action": "Removes a specific Instagram blocklist from the AdGuard service by calling the 'adguard.remove_url' action with the URL for the Instagram blocklist."
},
"human_like": "Removes the Instagram blocklist from AdGuard when the Instagram allowance is turned on.",
"complexity": "low"
}
},
{
"id": "disable_instagram",
"result": {
"structured": "TRIGGER: When allow instagram boolean [input_boolean.allowinstagram] changes to off. ACTIONS: Add a DNS blocklist for Instagram via the adguard.add_url service, using the specified URL and name.",
"natural_language": {
"trigger": "When the allow instagram boolean [input_boolean.allowinstagram] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a DNS blocklist for Instagram by calling the adguard.add_url service with a predefined URL and the name 'Instagram'."
},
"human_like": "Automatically blocks Instagram by adding a DNS blocklist when the Instagram permission is turned off.",
"complexity": "low"
}
},
{
"id": "cf9b58c3-421c-4798-95d0-86cd44799e4b",
"result": {
"structured": "TRIGGER: When a mobile app notification action event with action 'ALARM' is received. CONDITIONS: None. ACTIONS: Turn on alarm boolean [input_boolean.alarm].",
"natural_language": {
"trigger": "When a notification action named 'ALARM' is received from the mobile app.",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the alarm boolean [input_boolean.alarm]."
},
"human_like": "Turns on the alarm when the 'ALARM' action is tapped in a mobile app notification.",
"complexity": "low"
}
},
{
"id": "5a8189fa-2338-4df0-9531-58207186427e",
"result": {
"structured": "TRIGGER: When a mobile app notification action event occurs with action VERLOF_AAN OR When a mobile app notification action event occurs with action VERLOF_UIT. CONDITIONS: None. ACTIONS: If the trigger was VERLOF_AAN, then turn on on vacation boolean [input_boolean.op_verlof]; otherwise, turn off on vacation boolean [input_boolean.op_verlof].",
"natural_language": {
"trigger": "When a notification action from the mobile app is received, specifically either the 'VERLOF_AAN' action or the 'VERLOF_UIT' action.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the notification action was 'VERLOF_AAN', the automation turns on the on vacation boolean [input_boolean.op_verlof]. If the notification action was 'VERLOF_UIT' (or any other action), it turns off the on vacation boolean [input_boolean.op_verlof]."
},
"human_like": "Toggles a vacation mode switch on or off based on a quick action tapped in a mobile notification.",
"complexity": "low"
}
},
{
"id": "876bfadf-2974-45b4-ab29-35ce58d604be",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes to triggered. CONDITIONS: None. ACTIONS: If bompa tracker [device_tracker.bompa] is home OR oma 2 tracker [device_tracker.oma_2] is home, then turn on script.melding. Otherwise, turn on alarm frigate script [script.alarm_frigate].",
"natural_language": {
"trigger": "When the home alarm system, ha alarm [alarm_control_panel.ha_alarm], is triggered.",
"conditions": "There are no additional conditions that must be met.",
"action": "The automation checks if either bompa tracker [device_tracker.bompa] or oma 2 tracker [device_tracker.oma_2] is at home. If at least one of them is home, it runs the script 'melding'. If neither is home, it runs the alarm frigate script [script.alarm_frigate]."
},
"human_like": "When the alarm is triggered, it sends a specific notification or alarm script depending on whether certain family members are home.",
"complexity": "medium"
}
},
{
"id": "cae5ef81-fe21-499b-8827-734f6a99130c",
"result": {
"structured": "TRIGGER: When gphone tracker 2 [device_tracker.gphone_2] remains not_home for 4 hours OR when mphone tracker 2 [device_tracker.mphone_2] remains not_home for 4 hours. CONDITIONS: ha alarm [alarm_control_panel.ha_alarm] is armed_away AND gphone tracker 2 [device_tracker.gphone_2] is not_home AND mphone tracker 2 [device_tracker.mphone_2] is not_home AND on vacation boolean [input_boolean.op_verlof] is off. ACTIONS: Send a notification via notification service [notify.giel_en_martine] with the message 'Zijn jullie op vakantie vertrokken? Zet dan Vakantie-modus aan.' and two action buttons: 'Vakantie-modus aan.' (action VERLOF_AAN) and 'Vakantie-modus uit.' (action VERLOF_UIT). Then wait for 5 minutes (300 seconds).",
"natural_language": {
"trigger": "When either the gphone tracker 2 [device_tracker.gphone_2] or the mphone tracker 2 [device_tracker.mphone_2] has been away from home for at least four hours.",
"conditions": "The home alarm system [alarm_control_panel.ha_alarm] must be set to 'armed away', both the gphone tracker 2 [device_tracker.gphone_2] and mphone tracker 2 [device_tracker.mphone_2] must currently be away from home, and the vacation mode switch [input_boolean.op_verlof] must be turned off.",
"action": "Sends a notification to Giel and Martine [notify.giel_en_martine] asking if they have left for vacation and to turn on vacation mode, providing buttons to enable or disable vacation mode. After sending the notification, the automation waits for five minutes."
},
"human_like": "Asks the users if they are on vacation when both phones have been away for four hours and the alarm is set to away, but vacation mode is still off.",
"complexity": "medium"
}
},
{
"id": "9e7e888f-8087-4e62-8fb6-2e7173c48b53",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes state from 'Langdurig Afwezig' to 'Juist Aangekomen' OR when martine tracker [device_tracker.martine_not_so_binary] changes state from 'Langdurig Afwezig' to 'Juist Aangekomen'. CONDITIONS: on vacation boolean [input_boolean.op_verlof] is on. ACTIONS: Send a notification via notification service [notify.giel_en_martine] with the message 'Zijn jullie terug thuis van vakantie? Zet dan Vakantie-modus uit.' and two action buttons: 'Vakantie-modus aan.' (action VERLOF_AAN) and 'Vakantie-modus uit.' (action VERLOF_UIT). Then wait for 5 minutes (300 seconds).",
"natural_language": {
"trigger": "When either Giel's tracker [device_tracker.giel_not_so_binary] or Martine's tracker [device_tracker.martine_not_so_binary] changes from being 'Long-term Absent' to 'Just Arrived'.",
"conditions": "The automation only runs if the vacation mode is currently active, meaning the on vacation boolean [input_boolean.op_verlof] is set to 'on'.",
"action": "Sends a notification to Giel and Martine [notify.giel_en_martine] asking if they have returned home from vacation and to turn off vacation mode. The notification includes two buttons: one to keep vacation mode on and one to turn it off. After sending the notification, the automation waits for five minutes."
},
"human_like": "Asks Giel and Martine if they have returned from vacation when their trackers show they've just arrived, but only if vacation mode is currently active.",
"complexity": "medium"
}
},
{
"id": "8100710d-1003-447e-81f9-fba8541bb5dd",
"result": {
"structured": "TRIGGER: When the time is 06:00:00 OR when the time is 23:02:00. CONDITIONS: (The current day is Monday OR Tuesday OR Wednesday OR Thursday OR Friday OR Saturday OR Sunday) AND (The current month is December OR January). ACTIONS: If the current hour is 23, turn off christmas lights fan switch [switch.ventilator_kerstverlichting]; otherwise, turn on christmas lights fan switch [switch.ventilator_kerstverlichting].",
"natural_language": {
"trigger": "The automation triggers daily at 6:00 AM and again at 11:02 PM.",
"conditions": "The automation only runs if the current day is any day of the week (Monday through Sunday) and the current month is either December or January.",
"action": "At the 11:02 PM trigger, it turns off the christmas lights fan switch [switch.ventilator_kerstverlichting]. At the 6:00 AM trigger, it turns the same switch on."
},
"human_like": "Automatically turns the Christmas lights on in the morning and off at night during the holiday months of December and January.",
"complexity": "medium"
}
},
{
"id": "c2162024-4f52-40f8-b703-150ff505bc2c",
"result": {
"structured": "TRIGGER: When kitchen aqara pir [binary_sensor.keuken_aqara_pir] changes from off to on OR When kitchen pir [binary_sensor.keuken_pir] changes from off to on OR When kitchen presence [binary_sensor.keuken_presence] changes from off to on OR When kitchen entry light [light.keuken_inkom] changes from off to on OR When kitchen ceiling light [light.keuken_luster] changes from off to on OR When kitchen spotlights [light.keuken_spots] changes from off to on OR When dark inside sensor [sensor.dark_inside] changes from off to on. ACTIONS: After a 200 millisecond delay, evaluate the following choices: CHOICE 1: IF kitchen occupancy [binary_sensor.keuken_bezetting] is on AND dark inside sensor [sensor.dark_inside] is true AND kitchen spotlights [light.keuken_spots] is off THEN turn on kitchen ceiling light [light.keuken_luster], set kitchen end time [input_datetime.keuken_end_time] to 2 hours from now, wait for kitchen occupancy [binary_sensor.keuken_bezetting] to change from on to off, then set kitchen end time [input_datetime.keuken_end_time] to 120 seconds from now. CHOICE 2: IF kitchen occupancy [binary_sensor.keuken_bezetting] is on THEN set kitchen end time [input_datetime.keuken_end_time] to 2 hours from now, wait for kitchen occupancy [binary_sensor.keuken_bezetting] to change from on to off, then set kitchen end time [input_datetime.keuken_end_time] to 120 seconds from now. DEFAULT (if no choice conditions are met): Set kitchen end time [input_datetime.keuken_end_time] to 120 seconds from now.",
"natural_language": {
"trigger": "The automation triggers when any of the following events occur: motion is detected by the kitchen aqara pir [binary_sensor.keuken_aqara_pir], the kitchen pir [binary_sensor.keuken_pir], or the kitchen presence [binary_sensor.keuken_presence] sensors; or when any of the kitchen lights (kitchen entry light [light.keuken_inkom], kitchen ceiling light [light.keuken_luster], or kitchen spotlights [light.keuken_spots]) are turned on; or when the dark inside sensor [sensor.dark_inside] indicates it has become dark inside.",
"conditions": "There are no global conditions. The actions are determined by a set of conditional choices. The first choice checks if the kitchen is occupied, it is dark inside, and the kitchen spotlights are off. The second choice checks only if the kitchen is occupied.",
"action": "After a brief 200-millisecond delay, the automation performs one of three sequences. If the kitchen is occupied, it's dark inside, and the spotlights are off, it turns on the kitchen ceiling light, sets a timer for the kitchen end time to two hours from now, waits for the kitchen to become unoccupied, and then resets the end time to two minutes from now. If the kitchen is occupied but the other conditions aren't met, it sets the end time to two hours from now, waits for the kitchen to become unoccupied, and then resets the end time to two minutes from now. In all other cases, it simply sets the kitchen end time to two minutes from now."
},
"human_like": "This automation manages kitchen lighting and occupancy timers, turning on the main light when it's dark and the room is occupied, and always setting a countdown timer when activity is detected.",
"complexity": "high"
}
},
{
"id": "893a1783-31af-4dba-9b86-94731c222952",
"result": {
"structured": "TRIGGER: At 15:59:59. CONDITIONS: (kitchen mass speaker [media_player.mass_keuken] is NOT playing media with album name \"KINK DISTORTION\") AND (current day is Monday OR Tuesday OR Wednesday OR Thursday OR Friday) AND (kitchen not playing [binary_sensor.keuken_not_playing] is off OR (philips tv [media_player.philips_tv] is off AND (giel person [person.giel] is home OR martine person [person.martine] is home))). ACTIONS: Play radio station \"KINK DISTORTION\" on kitchen mass speaker [media_player.mass_keuken], wait 3 seconds, then play radio station \"KINK DISTORTION\" on kitchen mass speaker [media_player.mass_keuken] again.",
"natural_language": {
"trigger": "At exactly 3:59:59 PM.",
"conditions": "If the kitchen mass speaker [media_player.mass_keuken] is not currently playing the radio station \"KINK DISTORTION\", and if it's a weekday (Monday through Friday). Additionally, either the kitchen not playing [binary_sensor.keuken_not_playing] sensor indicates the kitchen is not in a 'not playing' state, or the Philips TV [media_player.philips_tv] is off and at least one person, either Giel [person.giel] or Martine [person.martine], is at home.",
"action": "Starts playing the \"KINK DISTORTION\" radio station on the kitchen mass speaker [media_player.mass_keuken], waits for 3 seconds, and then sends the play command a second time to ensure it starts."
},
"human_like": "Automatically starts the KINK DISTORTION radio show in the kitchen on weekday afternoons, but only if it's not already playing and certain conditions about TV status and who is home are met.",
"complexity": "medium"
}
},
{
"id": "9742a76c-726a-4f71-8eea-f61edcbf6812",
"result": {
"structured": "TRIGGER: When fien button 2 click [binary_sensor.knop_fien_2_klik] turns on OR when the current time reaches the value set in fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time]. CONDITIONS: None. ACTIONS: If the trigger was fien button 2 click turning on, then set fien climate [climate.fien] to comfort preset mode and set fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time] to the current time plus one hour. If the trigger was the scheduled time from fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time], then set fien climate [climate.fien] to away preset mode.",
"natural_language": {
"trigger": "The automation is triggered either when the fien button 2 click [binary_sensor.knop_fien_2_klik] is pressed (turns on), or at a specific time of day that is set in the fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time].",
"conditions": "There are no conditions that must be checked before the actions run.",
"action": "If the trigger was the button press, the automation sets the fien climate [climate.fien] to comfort mode and schedules the heating to end in one hour by updating the fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time]. If the trigger was the scheduled end time, the automation sets the fien climate [climate.fien] to away mode."
},
"human_like": "Turns on the heating for one hour when a button is pressed, and automatically turns it off at the scheduled end time.",
"complexity": "medium"
}
},
{
"id": "15be0ec1-1733-4118-ba33-b729ee182926",
"result": {
"structured": "TRIGGER: When fien button 3 click [binary_sensor.knop_fien_3_klik] turns on. CONDITIONS: None. ACTIONS: Turn on fien light [light.fien] with brightness set to 70%.",
"natural_language": {
"trigger": "When the fien button 3 click [binary_sensor.knop_fien_3_klik] is activated.",
"conditions": "There are no conditions for this automation.",
"action": "Turns on the fien light [light.fien] at 70% brightness."
},
"human_like": "Turns on the fien light at a preset brightness when its button is triple-clicked.",
"complexity": "low"
}
},
{
"id": "b0876a7a-d4f7-4627-984c-1d1eeb9cbc0a",
"result": {
"structured": "TRIGGER: When fien button 4 click [binary_sensor.knop_fien_4_klik] turns on OR when fien heating 1h button [input_button.verwarming_1u_fien] turns on OR when the time reaches the value of fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time]. CONDITIONS: None. ACTIONS: If the trigger was fien heating 1h button [input_button.verwarming_1u_fien] turning on, then set fien climate [climate.fien] preset mode to comfort AND set fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time] to the current time plus one hour. If the trigger was the time reaching fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time], then set fien climate [climate.fien] preset mode to away.",
"natural_language": {
"trigger": "This automation can be triggered in three ways: when the fien button 4 click [binary_sensor.knop_fien_4_klik] is pressed, when the fien heating 1h button [input_button.verwarming_1u_fien] is pressed, or when the scheduled time stored in fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time] arrives.",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "The action depends on which trigger started the automation. If it was triggered by pressing the fien heating 1h button [input_button.verwarming_1u_fien], the system will set the fien climate [climate.fien] to 'comfort' mode and schedule the heating to turn off by updating the fien heating end time [input_datetime.slaapkamer_fien_verwarming_end_time] to one hour from now. If the automation was triggered by the scheduled end time, it will set the fien climate [climate.fien] to 'away' mode. If it was triggered by the fien button 4 click [binary_sensor.knop_fien_4_klik], no specific action is defined, so nothing happens."
},
"human_like": "Controls the heating in Fien's room, allowing you to start a one-hour comfort period with a button press or automatically switch it off at a scheduled time.",
"complexity": "medium"
}
},
{
"id": "0bce1b77-c946-4acb-aee3-c41d919b9e7d",
"result": {
"structured": "TRIGGER: When giel button 5 click [binary_sensor.knop_giel_5_klik] turns on. CONDITIONS: None. ACTIONS: Turn on tv spotlights [light.spots_tv] at full brightness. Turn on all garden lighting [light.alle_tuinverlichting], dance hall spots [light.danszaal_spots], kitchen spotlights [light.keuken_spots], dance hall chandelier [light.danszaal_luster], kitchen ceiling light [light.keuken_luster], seating area chandelier [light.zithoek_luster], and kitchen entry light [light.keuken_inkom]. Wait for 5 minutes. Turn off all garden lighting [light.alle_tuinverlichting], dance hall spots [light.danszaal_spots], kitchen spotlights [light.keuken_spots], tv spotlights [light.spots_tv], dance hall chandelier [light.danszaal_luster], kitchen ceiling light [light.keuken_luster], seating area chandelier [light.zithoek_luster], and kitchen entry light [light.keuken_inkom].",
"natural_language": {
"trigger": "When the giel button 5 click [binary_sensor.knop_giel_5_klik] is activated.",
"conditions": "There are no conditions for this automation.",
"action": "First, the tv spotlights [light.spots_tv] are turned on at maximum brightness. Then, a group of lights including all garden lighting [light.alle_tuinverlichting], dance hall spots [light.danszaal_spots], kitchen spotlights [light.keuken_spots], dance hall chandelier [light.danszaal_luster], kitchen ceiling light [light.keuken_luster], seating area chandelier [light.zithoek_luster], and kitchen entry light [light.keuken_inkom] are turned on. After a five-minute delay, all of these lights are turned off."
},
"human_like": "Turns on a set of indoor and garden lights for five minutes when a specific button is pressed.",
"complexity": "low"
}
},
{
"id": "a53e7d6b-3e8a-4b90-834b-29be302b84c9",
"result": {
"structured": "TRIGGER: When fien button click [binary_sensor.knop_fien_klik] turns on. CONDITIONS: None. ACTIONS: If fien light [light.fien] is on, then turn off fien light [light.fien]. Otherwise, turn on fien light [light.fien] with brightness 255 and RGB color (255, 236, 182).",
"natural_language": {
"trigger": "When the fien button click [binary_sensor.knop_fien_klik] is pressed (changes to 'on').",
"conditions": "There are no additional conditions that must be met.",
"action": "The automation checks if the fien light [light.fien] is currently on. If it is, the light is turned off. If the light is off, it is turned on to a specific warm white color with full brightness."
},
"human_like": "Toggles the Fien light on or off with a single button click, turning it on to a warm white color when off.",
"complexity": "low"
}
},
{
"id": "0d8ad9a0-1ef5-4ebe-a8c4-1739872a5690",
"result": {
"structured": "TRIGGER: When ambient button [binary_sensor.knop_sfeer] turns on. CONDITIONS: None. ACTIONS: If garage ambient lighting [light.garage_sfeerverlichting] is on, then turn it off; otherwise, turn it on.",
"natural_language": {
"trigger": "When the ambient button [binary_sensor.knop_sfeer] is pressed and turns on.",
"conditions": "There are no additional conditions that must be met.",
"action": "If the garage ambient lighting [light.garage_sfeerverlichting] is currently on, it will be turned off. If it is off, it will be turned on."
},
"human_like": "Toggles the garage ambient lighting on or off when the dedicated button is pressed.",
"complexity": "low"
}
},
{
"id": "4da0d527-a14e-4ede-a5d7-3877b62a1b70",
"result": {
"structured": "TRIGGER: When workbench button [binary_sensor.knop_sjotterbak] turns on. CONDITIONS: None. ACTIONS: If garage workbench light [light.garage_sjotterbak] is on, then turn it off. Otherwise, turn on garage workbench light [light.garage_sjotterbak].",
"natural_language": {
"trigger": "When the workbench button [binary_sensor.knop_sjotterbak] is pressed (changes to the 'on' state).",
"conditions": "There are no additional conditions that must be met.",
"action": "If the garage workbench light [light.garage_sjotterbak] is already on, it will be turned off. If the light is off, it will be turned on."
},
"human_like": "Toggles the garage workbench light on or off when the workbench button is pressed.",
"complexity": "low"
}
},
{
"id": "e1ea94ff-f30a-4310-bac7-9c70ce63c8dd",
"result": {
"structured": "TRIGGER: When vogelpik button [binary_sensor.knop_vogelpik] turns on. CONDITIONS: None. ACTIONS: If vogelpik light [light.vogelpik] is on, then turn off vogelpik light [light.vogelpik]. Otherwise, turn on vogelpik light [light.vogelpik].",
"natural_language": {
"trigger": "When the vogelpik button [binary_sensor.knop_vogelpik] is pressed (turns on).",
"conditions": "There are no additional conditions that must be met.",
"action": "The automation checks the current state of the vogelpik light [light.vogelpik]. If the light is already on, it turns the light off. If the light is off, it turns the light on."
},
"human_like": "Toggles the garage light on or off when the associated button is pressed.",
"complexity": "low"
}
},
{
"id": "b41e0a5b-d342-4117-9bab-ea98d025dda3",
"result": {
"structured": "TRIGGER: When the time is 19:00 OR when the time is 21:00. CONDITIONS: The current weekday is Monday OR Tuesday OR Wednesday OR Thursday OR Friday OR Saturday OR Sunday. ACTIONS: Turn off coffee maker switch [switch.koffiezet], terrace outlets switch [switch.stopcontacten_terras], gate socket switch [switch.pries_poort], and garage outlets switch [switch.stopcontacten_garage].",
"natural_language": {
"trigger": "The automation triggers at either 7:00 PM or 9:00 PM.",
"conditions": "The automation only runs if the current day is a weekday or weekend day (i.e., it runs every day of the week).",
"action": "It turns off the coffee maker switch [switch.koffiezet], the terrace outlets switch [switch.stopcontacten_terras], the gate socket switch [switch.pries_poort], and the garage outlets switch [switch.stopcontacten_garage]."
},
"human_like": "Turns off the coffee maker and several outdoor and garage power outlets every evening at 7 PM and 9 PM.",
"complexity": "low"
}
},
{
"id": "827c4b46-d0b8-460a-9436-747dee073906",
"result": {
"structured": "TRIGGER: When current yield [sensor.huidige_opbrengst] is greater than 100 AND remains so for 5 minutes (id: binnen) OR When current yield [sensor.huidige_opbrengst] is greater than 0 AND remains so for 5 minutes (id: buiten) OR When outside brightness [sensor.buiten_lichtsterkte] is above 1350 AND remains so for 5 minutes (id: binnen) OR When outside brightness [sensor.buiten_lichtsterkte] is above 150 AND remains so for 5 minutes (id: buiten). CONDITIONS: None (conditions are part of the choose action). ACTIONS: Choose action based on trigger ID. If trigger ID is buiten, turn off dark outside lowpass [input_boolean.donker_buiten_lowpass]. If trigger ID is binnen AND the current time is before 17:00:00, turn off dark inside lowpass [input_boolean.donker_binnen_lowpass].",
"natural_language": {
"trigger": "The automation triggers when any of four conditions are met and remain stable for five minutes: when the current yield [sensor.huidige_opbrengst] exceeds 100, when the current yield [sensor.huidige_opbrengst] exceeds 0, when the outside brightness [sensor.buiten_lichtsterkte] rises above 1350, or when the outside brightness [sensor.buiten_lichtsterkte] rises above 150.",
"conditions": "The actions have specific conditions. To turn off the 'dark outside' indicator, the automation checks which trigger fired. To turn off the 'dark inside' indicator, it additionally requires that the current time is before 5:00 PM.",
"action": "Depending on which trigger fired, the automation will either turn off the 'dark outside lowpass' [input_boolean.donker_buiten_lowpass] indicator, or, if it's before 5:00 PM, turn off the 'dark inside lowpass' [input_boolean.donker_binnen_lowpass] indicator."
},
"human_like": "This automation uses solar yield and outdoor light levels to determine when it's bright enough to turn off 'dark' indicators, with different thresholds for inside and outside.",
"complexity": "medium"
}
},
{
"id": "6bf93324-4d08-4291-b6e0-d35c8b88b9b8",
"result": {
"structured": "TRIGGER: When gate photocell error sensor [binary_sensor.fotocel_poort_error] changes to on. CONDITIONS: None. ACTIONS: Turn off all garden lighting [light.alle_tuinverlichting].",
"natural_language": {
"trigger": "When the gate photocell error sensor [binary_sensor.fotocel_poort_error] reports an error by turning on.",
"conditions": "There are no conditions for this automation.",
"action": "Turns off all garden lighting [light.alle_tuinverlichting]."
},
"human_like": "Turns off all garden lights when an error is detected with the gate's photocell sensor.",
"complexity": "low"
}
},
{
"id": "ac072b45-25fa-44af-b15e-62c1c57bb35b",
"result": {
"structured": "TRIGGER: When giel bayesian [binary_sensor.giel_bayesian] changes from off to on OR When martine bayesian [binary_sensor.martine_bayesian] changes from off to on OR When noor bayesian [binary_sensor.noor_bayesian] changes from off to on OR When fien bayesian [binary_sensor.fien_bayesian] changes from off to on OR When gphone bermuda tracker [device_tracker.gphone_bermuda] changes to home OR When mphone bermuda tracker [device_tracker.mphone_bermuda] changes to home OR When nphone bermuda tracker [device_tracker.nphone_bermuda] changes to home OR When fphone bermuda tracker [device_tracker.fphone_bermuda] changes to home. CONDITIONS: (The system uptime from uptime sensor [sensor.uptime] is greater than 0.03 hours) AND (If the trigger ID is 'giel' then giel status dropdown [input_select.giel_status_dropdown] is not 'Thuis' AND not 'Juist Aangekomen', OR if the trigger ID is 'martine' then martine status dropdown [input_select.martine_status_dropdown] is not 'Thuis' AND not 'Juist Aangekomen', OR if the trigger ID is 'noor' then noor status dropdown [input_select.noor_status_dropdown] is not 'Thuis' AND not 'Juist Aangekomen', OR if the trigger ID is 'fien' then fien status dropdown [input_select.fien_status_dropdown] is not 'Thuis' AND not 'Juist Aangekomen'). ACTIONS: If the trigger ID is 'giel' then execute request gphone update script [script.request_gphone_update], OR if the trigger ID is 'martine' then execute request mphone update script [script.request_mphone_update], OR if the trigger ID is 'noor' then execute request nphone update script [script.request_nphone_update], OR if the trigger ID is 'fien' then execute request fphone update script [script.request_fphone_update]; AND set the corresponding person's status dropdown to 'Juist Aangekomen'.",
"natural_language": {
"trigger": "The automation triggers when any of the four family members (Giel, Martine, Noor, or Fien) is detected as arriving. This detection happens either when their Bayesian presence sensor turns on, or when their phone's device tracker reports they have arrived home.",
"conditions": "Two conditions must be met. First, the Home Assistant system must have been running for more than approximately 0.03 hours (about 1.8 minutes). Second, the person who triggered the automation must not already have their status set to 'Thuis' (Home) or 'Juist Aangekomen' (Just Arrived). This check is specific to the person who triggered the event.",
"action": "Two actions are performed. First, a script is called to request an update from the specific person's phone. Second, the person's status dropdown is set to 'Juist Aangekomen' (Just Arrived) to indicate they have recently arrived."
},
"human_like": "This automation marks a person as 'Just Arrived' when they are first detected coming home, but only if they weren't already marked as being home.",
"complexity": "high"
}
},
{
"id": "4aad449c-e8a5-43e0-9d16-be8f3b5c846d",
"result": {
"structured": "TRIGGER: When giel status dropdown [input_select.giel_status_dropdown] remains set to 'Juist Weg' for 5 minutes OR When martine status dropdown [input_select.martine_status_dropdown] remains set to 'Juist Weg' for 5 minutes OR When noor status dropdown [input_select.noor_status_dropdown] remains set to 'Juist Weg' for 5 minutes OR When fien status dropdown [input_select.fien_status_dropdown] remains set to 'Juist Weg' for 5 minutes. CONDITIONS: None. ACTIONS: Set the triggering dropdown (giel status dropdown [input_select.giel_status_dropdown], martine status dropdown [input_select.martine_status_dropdown], noor status dropdown [input_select.noor_status_dropdown], or fien status dropdown [input_select.fien_status_dropdown]) to the option 'Afwezig'.",
"natural_language": {
"trigger": "When any of the status dropdowns for a person (giel, martine, noor, or fien) remains set to 'Juist Weg' for at least five minutes.",
"conditions": "There are no additional conditions.",
"action": "The automation changes the status of the specific dropdown that triggered the automation from 'Juist Weg' to 'Afwezig'."
},
"human_like": "Automatically updates a person's status to 'Afwezig' (Away) if their status has been 'Juist Weg' (Just Left) for five minutes.",
"complexity": "medium"
}
},
{
"id": "10f5bbf2-11d1-4c72-a597-241255a479d4",
"result": {
"structured": "TRIGGER: When giel status dropdown [input_select.giel_status_dropdown] remains set to Afwezig for 12 hours OR When martine status dropdown [input_select.martine_status_dropdown] remains set to Afwezig for 12 hours OR When noor status dropdown [input_select.noor_status_dropdown] remains set to Afwezig for 12 hours OR When fien status dropdown [input_select.fien_status_dropdown] remains set to Afwezig for 12 hours. CONDITIONS: None. ACTIONS: Set the triggering dropdown (giel status dropdown [input_select.giel_status_dropdown], martine status dropdown [input_select.martine_status_dropdown], noor status dropdown [input_select.noor_status_dropdown], or fien status dropdown [input_select.fien_status_dropdown]) to Langdurig Afwezig.",
"natural_language": {
"trigger": "When any of the four person status dropdowns (giel status dropdown [input_select.giel_status_dropdown], martine status dropdown [input_select.martine_status_dropdown], noor status dropdown [input_select.noor_status_dropdown], or fien status dropdown [input_select.fien_status_dropdown]) remains set to 'Afwezig' for 12 consecutive hours.",
"conditions": "There are no additional conditions.",
"action": "The automation updates the specific dropdown that triggered the automation, changing its selected option from 'Afwezig' to 'Langdurig Afwezig'."
},
"human_like": "Updates a person's status to 'Langdurig Afwezig' (Extended Away) if their status has been 'Afwezig' (Away) for 12 hours.",
"complexity": "medium"
}
},
{
"id": "fa603b89-15d6-47b9-909c-1bd93e5768ae",
"result": {
"structured": "TRIGGER: When giel status dropdown [input_select.giel_status_dropdown] changes to 'Juist Aangekomen' AND remains for 5 minutes OR When martine status dropdown [input_select.martine_status_dropdown] changes to 'Juist Aangekomen' AND remains for 5 minutes OR When noor status dropdown [input_select.noor_status_dropdown] changes to 'Juist Aangekomen' AND remains for 5 minutes OR When fien status dropdown [input_select.fien_status_dropdown] changes to 'Juist Aangekomen' AND remains for 5 minutes. CONDITIONS: None. ACTIONS: Set the triggering dropdown (giel status dropdown [input_select.giel_status_dropdown] OR martine status dropdown [input_select.martine_status_dropdown] OR noor status dropdown [input_select.noor_status_dropdown] OR fien status dropdown [input_select.fien_status_dropdown]) to 'Thuis'.",
"natural_language": {
"trigger": "When any of the four status dropdowns for Giel, Martine, Noor, or Fien changes to the 'Juist Aangekomen' (Just Arrived) state and stays in that state for five minutes.",
"conditions": "There are no additional conditions; the automation runs based solely on the trigger.",
"action": "Sets the specific dropdown that triggered the automation to the 'Thuis' (Home) option."
},
"human_like": "Automatically updates a person's status to 'Home' if their status has been 'Just Arrived' for five minutes.",
"complexity": "medium"
}
},
{
"id": "47e2d373-ee0f-4650-9338-996019fcee5b",
"result": {
"structured": "TRIGGER: When giel bayesian [binary_sensor.giel_bayesian] remains off for 15 seconds after being on OR When martine bayesian [binary_sensor.martine_bayesian] remains off for 15 seconds after being on OR When noor bayesian [binary_sensor.noor_bayesian] remains off for 15 seconds after being on OR When fien bayesian [binary_sensor.fien_bayesian] remains off for 15 seconds after being on. CONDITIONS: (The system uptime from uptime sensor [sensor.uptime] is greater than 0.03 hours) AND (If the trigger is giel bayesian [binary_sensor.giel_bayesian] then giel home night [binary_sensor.giel_thuis_nacht] is off, else if the trigger is martine bayesian [binary_sensor.martine_bayesian] then martine home night [binary_sensor.martine_thuis_nacht] is off, else if the trigger is noor bayesian [binary_sensor.noor_bayesian] then noor home night [binary_sensor.noor_thuis_nacht] is off, else if the trigger is fien bayesian [binary_sensor.fien_bayesian] then fien home night [binary_sensor.fien_thuis_nacht] is off). ACTIONS: Set the corresponding person's status dropdown to 'Juist Weg' (If the trigger is giel bayesian [binary_sensor.giel_bayesian] then set giel status dropdown [input_select.giel_status_dropdown], else if the trigger is martine bayesian [binary_sensor.martine_bayesian] then set martine status dropdown [input_select.martine_status_dropdown], else if the trigger is noor bayesian [binary_sensor.noor_bayesian] then set noor status dropdown [input_select.noor_status_dropdown], else if the trigger is fien bayesian [binary_sensor.fien_bayesian] then set fien status dropdown [input_select.fien_status_dropdown]).",
"natural_language": {
"trigger": "The automation triggers when any of the four person presence sensors (giel bayesian [binary_sensor.giel_bayesian], martine bayesian [binary_sensor.martine_bayesian], noor bayesian [binary_sensor.noor_bayesian], or fien bayesian [binary_sensor.fien_bayesian]) changes from 'on' to 'off' and remains off for 15 seconds.",
"conditions": "Two conditions must be met. First, the system must have been running for more than approximately 0.03 hours (about 1.8 minutes). Second, depending on which person's sensor triggered, a specific 'home night' sensor must be off. For example, if giel's sensor triggered, then the giel home night [binary_sensor.giel_thuis_nacht] sensor must be off. This pattern is repeated for martine, noor, and fien.",
"action": "The automation updates the status of the person who triggered it. It sets their corresponding status dropdown (e.g., giel status dropdown [input_select.giel_status_dropdown]) to the option 'Juist Weg' (meaning 'Just Left')."
},
"human_like": "Marks a person as having 'just left' when their presence sensor turns off for a short time, provided they are not in a 'home night' mode.",
"complexity": "medium"
}
},
{
"id": "029f8e22-a953-4b4e-b0ba-1acdb414ee68",
"result": {
"structured": "TRIGGER: When the current day of the month is the 1st. CONDITIONS: None. ACTIONS: Choose based on the current month: IF month is 2 (February) AND max peak sensor [sensor.max_peak] > january peak input [input_number.january_peak] THEN set january peak input [input_number.january_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set february peak input [input_number.february_peak] to 2500. IF month is 3 (March) AND max peak sensor [sensor.max_peak] > february peak input [input_number.february_peak] THEN set february peak input [input_number.february_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set march peak input [input_number.march_peak] to 2500. IF month is 4 (April) AND max peak sensor [sensor.max_peak] > march peak input [input_number.march_peak] THEN set march peak input [input_number.march_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set april peak input [input_number.april_peak] to 2500. IF month is 5 (May) AND max peak sensor [sensor.max_peak] > april peak input [input_number.april_peak] THEN set april peak input [input_number.april_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set may peak input [input_number.may_peak] to 2500. IF month is 6 (June) AND max peak sensor [sensor.max_peak] > may peak input [input_number.may_peak] THEN set may peak input [input_number.may_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set june peak input [input_number.june_peak] to 2500. IF month is 7 (July) AND max peak sensor [sensor.max_peak] > june peak input [input_number.june_peak] THEN set june peak input [input_number.june_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set july peak input [input_number.july_peak] to 2500. IF month is 8 (August) AND max peak sensor [sensor.max_peak] > july peak input [input_number.july_peak] THEN set july peak input [input_number.july_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set august peak input [input_number.august_peak] to 2500. IF month is 9 (September) AND max peak sensor [sensor.max_peak] > august peak input [input_number.august_peak] THEN set august peak input [input_number.august_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set september peak input [input_number.september_peak] to 2500. IF month is 10 (October) AND max peak sensor [sensor.max_peak] > september peak input [input_number.september_peak] THEN set september peak input [input_number.september_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set october peak input [input_number.october_peak] to 2500. IF month is 11 (November) AND max peak sensor [sensor.max_peak] > october peak input [input_number.october_peak] THEN set october peak input [input_number.october_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set november peak input [input_number.november_peak] to 2500. IF month is 12 (December) AND max peak sensor [sensor.max_peak] > november peak input [input_number.november_peak] THEN set november peak input [input_number.november_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set december peak input [input_number.december_peak] to 2500. OTHERWISE (default): IF max peak sensor [sensor.max_peak] > december peak input [input_number.december_peak] THEN set december peak input [input_number.december_peak] to max peak sensor [sensor.max_peak], delay 5 seconds, set max peak input [input_number.max_peak] to 100, delay 1 minute, set january peak input [input_number.january_peak] to 2500.",
"natural_language": {
"trigger": "The automation runs on the first day of every month.",
"conditions": "There are no global conditions. The specific actions taken depend on the current month and a comparison of sensor values.",
"action": "On the first day of the month, the system checks which month it is. For each month from February to December, if the current max peak sensor [sensor.max_peak] value is higher than the stored peak value for the previous month, it updates the previous month's peak with the new value. It then resets the max peak input [input_number.max_peak] to 100 after a 5-second delay and sets the current month's peak placeholder to 2500 after a further 1-minute delay. For example, on February 1st, it checks if the max peak is greater than the January peak and updates it if so. If the month is January (handled by the default case), it checks against the December peak, updates it if needed, and then sets the January peak placeholder to 2500."
},
"human_like": "This automation manages monthly peak values, updating the record for the previous month and resetting counters on the first day of each month.",
"complexity": "high"
}
},
{
"id": "fevefvdvfzsvf",
"result": {
"structured": "TRIGGER: When the current day of the month is the 1st. CONDITIONS: None. ACTIONS: Based on the current month, execute one of the following sequences: IF month is February THEN set january peak 2 input [input_number.january_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set february peak 2 input [input_number.february_peak_2] to 2.5. IF month is March THEN set february peak 2 input [input_number.february_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set march peak 2 input [input_number.march_peak_2] to 2.5. IF month is April THEN set march peak 2 input [input_number.march_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set april peak 2 input [input_number.april_peak_2] to 2.5. IF month is May THEN set april peak 2 input [input_number.april_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set may peak 2 input [input_number.may_peak_2] to 2.5. IF month is June THEN set may peak 2 input [input_number.may_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set june peak 2 input [input_number.june_peak_2] to 2.5. IF month is July THEN set june peak 2 input [input_number.june_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set july peak 2 input [input_number.july_peak_2] to 2.5. IF month is August THEN set july peak 2 input [input_number.july_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set august peak 2 input [input_number.august_peak_2] to 2.5. IF month is September THEN set august peak 2 input [input_number.august_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set september peak 2 input [input_number.september_peak_2] to 2.5. IF month is October THEN set september peak 2 input [input_number.september_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set october peak 2 input [input_number.october_peak_2] to 2.5. IF month is November THEN set october peak 2 input [input_number.october_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set november peak 2 input [input_number.november_peak_2] to 2.5. IF month is December THEN set november peak 2 input [input_number.november_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set december peak 2 input [input_number.december_peak_2] to 2.5. OTHERWISE (default, for month January) set december peak 2 input [input_number.december_peak_2] to the greater of max peak 2 sensor [sensor.max_peak_2] or 2.5, wait 5 seconds, set max peak 2 input [input_number.max_peak_2] to 0.1, wait 1 minute, set january peak 2 input [input_number.january_peak_2] to 2.5.",
"natural_language": {
"trigger": "The automation triggers on the first day of every month.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "Depending on the current month, the automation performs a specific sequence of actions. For each month from February to December, it first saves the highest recorded peak value from the max peak 2 sensor [sensor.max_peak_2] for the previous month (if it's greater than the existing stored value, otherwise it uses 2.5), then resets the current peak tracker max peak 2 input [input_number.max_peak_2] to a low value of 0.1, and finally sets the initial value for the upcoming month's peak tracker to 2.5. For example, in February, it saves the January peak, resets the current tracker, and sets the February baseline. In January (the default case), it saves the December peak, resets the tracker, and sets the January baseline. Each sequence includes short delays between the actions."
},
"human_like": "This automation manages monthly peak values, saving the previous month's high reading and resetting the tracker on the first day of each month.",
"complexity": "medium"
}
},
{
"id": "cfa1b69b-abe9-44de-9bbe-44c5be09ea9d",
"result": {
"structured": "TRIGGER: When max peak sensor [sensor.max_peak] changes state. CONDITIONS: The numeric value of max peak sensor [sensor.max_peak] is greater than the numeric value of max peak input [input_number.max_peak]. ACTIONS: Set the value of max peak input [input_number.max_peak] to the numeric value of max peak sensor [sensor.max_peak].",
"natural_language": {
"trigger": "Whenever the value from the max peak sensor [sensor.max_peak] changes.",
"conditions": "The new value from the sensor must be greater than the current value stored in the max peak input [input_number.max_peak].",
"action": "Updates the stored maximum peak value by setting the max peak input [input_number.max_peak] to the new, higher sensor reading."
},
"human_like": "Keeps track of the highest recorded peak value by updating a stored number whenever a new, higher reading is detected.",
"complexity": "low"
}
},
{
"id": "546462125er",
"result": {
"structured": "TRIGGER: When max peak 2 sensor [sensor.max_peak_2] changes state. CONDITIONS: The numeric value of max peak 2 sensor [sensor.max_peak_2] is greater than the numeric value of max peak 2 input [input_number.max_peak_2]. ACTIONS: Set the value of max peak 2 input [input_number.max_peak_2] to the numeric value of max peak 2 sensor [sensor.max_peak_2].",
"natural_language": {
"trigger": "Whenever the state of the max peak 2 sensor [sensor.max_peak_2] changes.",
"conditions": "If the current numeric value reported by the max peak 2 sensor [sensor.max_peak_2] is higher than the current value stored in the max peak 2 input [input_number.max_peak_2].",
"action": "Updates the max peak 2 input [input_number.max_peak_2] to match the new, higher value from the sensor."
},
"human_like": "Keeps track of the highest recorded value from the 'max peak 2' sensor by updating a helper input when a new maximum is detected.",
"complexity": "low"
}
},
{
"id": "b070f06f-a9e1-4e05-94b2-8e6e7c2d1372",
"result": {
"structured": "TRIGGER: When (front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on OR kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on) AND (kitchen aqara pir [binary_sensor.keuken_aqara_pir] is on OR kitchen presence [binary_sensor.keuken_presence] is on OR kitchen pir [binary_sensor.keuken_pir] is on). CONDITIONS: (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on OR front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on) AND (kitchen not playing [binary_sensor.keuken_not_playing] is on) AND (people arrive count [sensor.people_arrive_count] is greater than 1) AND (more than 310 seconds have passed since the last trigger of automation welkom_sonos_playing AND more than 310 seconds have passed since the last trigger of automation welkom_allemaal_sonos_paused AND more than 310 seconds have passed since the last trigger of automation welkom_allemaal_sonos_playing AND more than 310 seconds have passed since the last trigger of automation welkom_sonos_paused). ACTIONS: Play a TTS announcement from welcome 2 sensor [sensor.welkom_2] on kitchen mass speaker [media_player.mass_keuken] with volume 60. Wait 5 seconds. If philips tv [media_player.philips_tv] is off AND (time is after 15:55:00 OR (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off)), then join living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move] to kitchen mass speaker [media_player.mass_keuken]. Wait 5 seconds. Set volume to 0.14 on kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], living 2 mass speaker [media_player.mass_living_2], and mass move speaker [media_player.mass_move]. Wait 5 seconds. Start playback on kitchen mass speaker [media_player.mass_keuken].",
"natural_language": {
"trigger": "When either the front door or the kitchen back door has been used in the last five minutes, and at the same time, motion or presence is detected in the kitchen by one of the sensors.",
"conditions": "The automation only runs if Giel is not sleeping after the night, and either the front door or the kitchen back door has been used recently. The kitchen speaker must not be playing music, and the count of arriving people must be greater than one. Additionally, it must have been more than 310 seconds since any of the related 'welkom' automations were last triggered.",
"action": "First, a welcome message from the welcome 2 sensor is announced on the kitchen speaker. After a short delay, if the TV is off and it's either after 15:55 or Giel is not sleeping, the kitchen speaker is grouped with other speakers in the living area. Another delay follows, then the volume is set to a low level on all grouped speakers. After a final delay, playback is started on the kitchen speaker."
},
"human_like": "Plays a welcome announcement and music on the kitchen speaker when someone arrives home and is detected in the kitchen, provided certain conditions about sleeping times, TV status, and recent automation triggers are met.",
"complexity": "high"
}
},
{
"id": "943b0e04-920d-4874-a5a2-27798ac7c36a",
"result": {
"structured": "TRIGGER: When (front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on OR kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on) AND (kitchen aqara pir [binary_sensor.keuken_aqara_pir] is on OR kitchen presence [binary_sensor.keuken_presence] is on OR kitchen pir [binary_sensor.keuken_pir] is on). CONDITIONS: (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on OR front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on) AND (kitchen mass speaker [media_player.mass_keuken] is playing) AND (people arrive count [sensor.people_arrive_count] is greater than 1) AND (more than 310 seconds have passed since Welkom sonos playing [automation.welkom_sonos_playing] last triggered AND more than 310 seconds have passed since Welkom allemaal sonos paused [automation.welkom_allemaal_sonos_paused] last triggered AND more than 310 seconds have passed since Welkom allemaal sonos playing [automation.welkom_allemaal_sonos_playing] last triggered AND more than 310 seconds have passed since Welkom sonos paused [automation.welkom_sonos_paused] last triggered). ACTIONS: Play an announcement on kitchen mass speaker [media_player.mass_keuken] with volume 60, using the text from welcome 2 sensor [sensor.welkom_2].",
"natural_language": {
"trigger": "When either the front door or the kitchen back door has been used in the last five minutes, and at the same time, there is motion or presence detected in the kitchen by one of the sensors.",
"conditions": "The automation requires that the 'giel sleeps after night' mode is off, that at least one of the doors (front or kitchen back) has been used recently, that the kitchen speaker is currently playing music, that the 'people arrive count' is greater than one, and that none of the related 'welkom' automations have been triggered in the last 310 seconds.",
"action": "Plays a welcome announcement on the kitchen speaker at 60% volume, using the text stored in the 'welcome 2' sensor."
},
"human_like": "Plays a welcome announcement when someone arrives home and there is activity in the kitchen, but only if it's not during a sleep period and other similar announcements haven't played recently.",
"complexity": "high"
}
},
{
"id": "430dfacf-b512-4d9f-93eb-8311fdc81035",
"result": {
"structured": "TRIGGER: Every 5 minutes at minute intervals (minutes: /5, seconds: 0). CONDITIONS: NOT (noor switch [switch.noor] is on). ACTIONS: Turn off noor switch [switch.noor].",
"natural_language": {
"trigger": "The automation triggers every five minutes, precisely at the start of each five-minute interval.",
"conditions": "The automation only runs if the noor switch [switch.noor] is not currently turned on.",
"action": "Turns off the noor switch [switch.noor]."
},
"human_like": "Turns off the Noor switch every five minutes, but only if it's currently on.",
"complexity": "low"
}
},
{
"id": "noor_block",
"result": {
"structured": "TRIGGER: When noor blocker boolean [input_boolean.noor_blocker] turns on. CONDITIONS: None. ACTIONS: Add a DNS block list named 'Noor' from the URL 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard/filters/block/noor.txt' using the AdGuard service.",
"natural_language": {
"trigger": "When the noor blocker boolean [input_boolean.noor_blocker] is turned on.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a DNS block list named 'Noor' to AdGuard by fetching the list from a specified online URL."
},
"human_like": "Activates a DNS block list for Noor when the corresponding switch is turned on.",
"complexity": "low"
}
},
{
"id": "noor_allow",
"result": {
"structured": "TRIGGER: When noor blocker boolean [input_boolean.noor_blocker] changes to off. CONDITIONS: None. ACTIONS: Remove the URL filter list from AdGuard.",
"natural_language": {
"trigger": "When the noor blocker boolean [input_boolean.noor_blocker] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Removes the specific URL filter list (https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard/filters/block/noor.txt) from the AdGuard service."
},
"human_like": "Allows content for Noor by removing a blocklist from AdGuard when a specific switch is turned off.",
"complexity": "low"
}
},
{
"id": "noor_block_all",
"result": {
"structured": "TRIGGER: When noor blocker all boolean [input_boolean.noor_blocker_all] turns on. CONDITIONS: None. ACTIONS: Add a URL filter named 'Noor all' from 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard/filters/block/no_internet_noor.txt' using the adguard.add_url service.",
"natural_language": {
"trigger": "When the noor blocker all boolean [input_boolean.noor_blocker_all] is switched on.",
"conditions": "There are no conditions that must be met.",
"action": "Adds a URL filter list named 'Noor all' from the specified GitHub repository to the AdGuard service, which blocks internet access for the entity 'noor'."
},
"human_like": "When the 'block all' switch for Noor is turned on, it adds a filter list to AdGuard to block internet access for Noor.",
"complexity": "low"
}
},
{
"id": "noor_allow_all",
"result": {
"structured": "TRIGGER: When noor blocker all boolean [input_boolean.noor_blocker_all] changes to off. ACTIONS: Remove the AdGuard block list from the URL https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/no_internet_noor.txt.",
"natural_language": {
"trigger": "When the noor blocker all boolean [input_boolean.noor_blocker_all] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Removes the AdGuard block list located at the specified URL, effectively allowing all internet access for the associated device or user."
},
"human_like": "Removes internet restrictions for Noor when the 'block all' switch is turned off.",
"complexity": "low"
}
},
{
"id": "noor_block_snapchat",
"result": {
"structured": "TRIGGER: When noor snapchat blocker boolean [input_boolean.noor_snapchat_blocker] turns on. CONDITIONS: None. ACTIONS: Add a URL filter named 'Noor snapchat' from 'https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/noor_snapchat.txt' using the adguard.add_url service.",
"natural_language": {
"trigger": "When the noor snapchat blocker boolean [input_boolean.noor_snapchat_blocker] is switched on.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a URL filter list named 'Noor snapchat' to AdGuard from the specified GitHub URL, which blocks Snapchat."
},
"human_like": "Activates a Snapchat block for Noor by adding a filter list to AdGuard when the blocker is turned on.",
"complexity": "low"
}
},
{
"id": "noor_allow_snapchat",
"result": {
"structured": "TRIGGER: When noor snapchat blocker boolean [input_boolean.noor_snapchat_blocker] changes to off. ACTIONS: Remove a URL block list from AdGuard using the service adguard.remove_url with the URL https://raw.githubusercontent.com/gieljnssns/My-Hassio-config/master/documentation/adguard filters/block/noor_snapchat.txt.",
"natural_language": {
"trigger": "When the noor snapchat blocker boolean [input_boolean.noor_snapchat_blocker] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Removes a specific URL block list for Snapchat from the AdGuard service."
},
"human_like": "Allows Snapchat access for Noor by removing a block list from AdGuard when a control switch is turned off.",
"complexity": "low"
}
},
{
"id": "862d6268-71cb-472b-b6fd-dcebe484af14",
"result": {
"structured": "TRIGGER: When seating area occupancy [binary_sensor.zithoek_bezetting] remains off for 3 minutes OR When dance hall occupancy [binary_sensor.danszaal_bezetting] remains off for 3 minutes OR When bedroom occupancy [binary_sensor.slaapkamer_bezetting] remains off for 2 minutes OR When fien room occupancy [binary_sensor.slaapkamer_fien_bezetting] remains off for 2 minutes OR When garage occupancy [binary_sensor.garage_bezetting] remains off for 5 minutes. CONDITIONS: None. ACTIONS: Turn off lights based on which trigger fired: If seating area occupancy [binary_sensor.zithoek_bezetting] triggered, turn off seating area chandelier [light.zithoek_luster]. If dance hall occupancy [binary_sensor.danszaal_bezetting] triggered, turn off dance hall chandelier [light.danszaal_luster] AND dance hall spots [light.danszaal_spots]. If fien room occupancy [binary_sensor.slaapkamer_fien_bezetting] triggered, turn off fien light [light.fien]. If garage occupancy [binary_sensor.garage_bezetting] triggered, turn off garage light [light.garage] AND garage workbench light 2 [light.garage_werkbank] AND vogelpik light [light.vogelpik] AND garage workbench light [light.garage_sjotterbak] AND garage ambient lighting [light.garage_sfeerverlichting]. For any other trigger (bedroom occupancy [binary_sensor.slaapkamer_bezetting]), turn off bedroom ceiling light [light.slaapkamer_hoog] AND bedroom spotlight [light.slaapkamer_spot].",
"natural_language": {
"trigger": "The automation triggers when any of the occupancy sensors for a specific area reports no occupancy for a set duration: the seating area for 3 minutes, the dance hall for 3 minutes, the bedroom for 2 minutes, the fien room for 2 minutes, or the garage for 5 minutes.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "Depending on which room's occupancy sensor triggered, a specific set of lights in that room is turned off. For the seating area, the chandelier is turned off. For the dance hall, the chandelier and spots are turned off. For the fien room, the fien light is turned off. For the garage, the main light, workbench lights, vogelpik light, and ambient lighting are all turned off. For the bedroom, the ceiling light and spotlight are turned off."
},
"human_like": "Automatically turns off the lights in a room a few minutes after it becomes unoccupied, with different delay times for different rooms.",
"complexity": "medium"
}
},
{
"id": "a2617079-d1a8-4289-abeb-f094121eda24",
"result": {
"structured": "TRIGGER: When (front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on OR kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on) AND (kitchen aqara pir [binary_sensor.keuken_aqara_pir] is on OR kitchen presence [binary_sensor.keuken_presence] is on OR kitchen pir [binary_sensor.keuken_pir] is on). CONDITIONS: (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on OR front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on) AND (kitchen not playing [binary_sensor.keuken_not_playing] is on) AND (people arrive count [sensor.people_arrive_count] is 1) AND (more than 310 seconds have passed since welkom_sonos_playing [automation.welkom_sonos_playing] was last triggered AND more than 310 seconds have passed since welkom_allemaal_sonos_paused [automation.welkom_allemaal_sonos_paused] was last triggered AND more than 310 seconds have passed since welkom_allemaal_sonos_playing [automation.welkom_allemaal_sonos_playing] was last triggered AND more than 310 seconds have passed since welkom_sonos_paused [automation.welkom_sonos_paused] was last triggered). ACTIONS: Play a TTS announcement using the message from welcome 1 sensor [sensor.welkom_1] on kitchen mass speaker [media_player.mass_keuken] with volume 60. Wait 5 seconds. If philips tv [media_player.philips_tv] is off AND (the time is after 15:55:00 OR (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off)), then join kitchen mass speaker [media_player.mass_keuken] with living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move]. Wait 5 seconds. Set volume to 0.14 on kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], living 2 mass speaker [media_player.mass_living_2], and mass move speaker [media_player.mass_move]. Wait 5 seconds. Execute random music script [script.random_music] with sonos_entity set to kitchen mass speaker [media_player.mass_keuken].",
"natural_language": {
"trigger": "When either the front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] or the kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] has been active in the last 5 minutes, and at the same time, there is motion or presence detected in the kitchen by either the kitchen aqara pir [binary_sensor.keuken_aqara_pir], kitchen presence [binary_sensor.keuken_presence], or kitchen pir [binary_sensor.keuken_pir].",
"conditions": "The automation checks that the giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off, and that at least one of the door sensors (front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] or kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min]) is still active. It also requires that the kitchen not playing [binary_sensor.keuken_not_playing] is on, indicating the kitchen speaker is not currently playing audio, and that the people arrive count [sensor.people_arrive_count] is exactly 1. Finally, it ensures that a set of other 'welcome' automations (welkom_sonos_playing, welkom_allemaal_sonos_paused, welkom_allemaal_sonos_playing, welkom_sonos_paused) have not been triggered in the last 310 seconds.",
"action": "First, it plays a text-to-speech welcome announcement using the message from the welcome 1 sensor [sensor.welkom_1] on the kitchen mass speaker [media_player.mass_keuken] at 60% volume. After a 5-second delay, if the philips tv [media_player.philips_tv] is off and it's either after 15:55 or the giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off, it groups the kitchen speaker with other speakers (living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move]). After another 5-second delay, it sets the volume of all these grouped speakers to 14%. After a final 5-second delay, it starts playing random music on the kitchen speaker via the random music script [script.random_music]."
},
"human_like": "Plays a welcome announcement and starts music when someone arrives home and is detected in the kitchen, provided it's not during a sleep period and other welcome automations haven't recently run.",
"complexity": "high"
}
},
{
"id": "e842f573-e463-40b3-af63-305d1be0e346",
"result": {
"structured": "TRIGGER: When (front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on OR kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on) AND (kitchen aqara pir [binary_sensor.keuken_aqara_pir] is on OR kitchen presence [binary_sensor.keuken_presence] is on OR kitchen pir [binary_sensor.keuken_pir] is on). CONDITIONS: (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (kitchen back door last 5 minutes [binary_sensor.keuken_achterdeur_last_5_min] is on OR front door last 5 minutes [binary_sensor.gang_voordeur_last_5_min] is on) AND (kitchen mass speaker [media_player.mass_keuken] is playing) AND (people arrive count [sensor.people_arrive_count] is 1) AND (more than 310 seconds have passed since welkom, sonos playing [automation.welkom_sonos_playing] was last triggered AND more than 310 seconds have passed since welkom allemaal sonos paused [automation.welkom_allemaal_sonos_paused] was last triggered AND more than 310 seconds have passed since welkom allemaal sonos playing [automation.welkom_allemaal_sonos_playing] was last triggered AND more than 310 seconds have passed since welkom sonos paused [automation.welkom_sonos_paused] was last triggered). ACTIONS: Play an announcement on kitchen mass speaker [media_player.mass_keuken] at 60% volume using the text from welcome 1 sensor [sensor.welkom_1].",
"natural_language": {
"trigger": "The automation triggers when either the front door or the kitchen back door has been used in the last five minutes, and at the same time, motion or presence is detected in the kitchen by any of the three sensors: kitchen aqara pir, kitchen presence, or kitchen pir.",
"conditions": "All of the following conditions must be met: the 'giel sleeps after night' mode is off; either the kitchen back door or the front door has been used in the last five minutes; the kitchen mass speaker is currently playing music; the 'people arrive count' sensor shows exactly one person; and it has been more than 310 seconds since any of the related 'welkom' automations (welkom, sonos playing; welkom allemaal sonos paused; welkom allemaal sonos playing; welkom sonos paused) were last triggered.",
"action": "The kitchen mass speaker will play a spoken announcement at 60% volume. The text for the announcement is taken from the 'welcome 1 sensor'."
},
"human_like": "Plays a welcome announcement in the kitchen when someone arrives home and motion is detected, but only if music is already playing and certain other conditions are met to avoid repeated announcements.",
"complexity": "high"
}
},
{
"id": "c8dc7693-df59-44e3-8a60-b6d7160c5c3f",
"result": {
"structured": "TRIGGER: At 14:02:00 OR When noor status dropdown [input_select.noor_status_dropdown] changes to Juist Aangekomen AND remains for 2 minutes OR When fien status dropdown [input_select.fien_status_dropdown] changes to Juist Aangekomen AND remains for 2 minutes OR When ha alarm [alarm_control_panel.ha_alarm] changes to armed_night AND remains for 210 minutes OR When garage charger power [sensor.garage_oplader_vermogen] is above 1 AND below 10 AND remains for 60 minutes OR When upstairs socket power [sensor.pries_boven_vermogen] is above 1 AND below 10 AND remains for 60 minutes OR When downstairs socket power [sensor.pries_onder_vermogen] is above 1 AND below 10 AND remains for 60 minutes. CONDITIONS: The current day is Monday OR Tuesday OR Wednesday OR Thursday OR Friday OR Saturday OR Sunday (i.e., any day of the week). ACTIONS: Choose based on the trigger: If triggered by noor status dropdown [input_select.noor_status_dropdown], turn on upstairs socket switch [switch.pries_boven] AND downstairs socket switch [switch.pries_onder]. If triggered by fien status dropdown [input_select.fien_status_dropdown], turn on upstairs socket switch [switch.pries_boven] AND downstairs socket switch [switch.pries_onder]. If triggered by time at 14:02:00 AND the current hour is 14, turn on garage charger switch [switch.garage_oplader] AND upstairs socket switch [switch.pries_boven] AND downstairs socket switch [switch.pries_onder]. If triggered by garage charger power [sensor.garage_oplader_vermogen], turn off garage charger switch [switch.garage_oplader]. If triggered by upstairs socket power [sensor.pries_boven_vermogen], turn off upstairs socket switch [switch.pries_boven]. If triggered by downstairs socket power [sensor.pries_onder_vermogen], turn off downstairs socket switch [switch.pries_onder]. If triggered by ha alarm [alarm_control_panel.ha_alarm], turn off garage charger switch [switch.garage_oplader] AND upstairs socket switch [switch.pries_boven] AND downstairs socket switch [switch.pries_onder].",
"natural_language": {
"trigger": "The automation can be triggered at 14:02:00, when the noor status dropdown [input_select.noor_status_dropdown] changes to 'Juist Aangekomen' and stays that way for 2 minutes, when the fien status dropdown [input_select.fien_status_dropdown] changes to 'Juist Aangekomen' and stays that way for 2 minutes, when the ha alarm [alarm_control_panel.ha_alarm] is set to 'armed_night' for 210 minutes, or when the power readings for the garage charger [sensor.garage_oplader_vermogen], the upstairs socket [sensor.pries_boven_vermogen], or the downstairs socket [sensor.pries_onder_vermogen] are between 1 and 10 watts for 60 minutes.",
"conditions": "The automation only runs on any day of the week (Monday through Sunday).",
"action": "Depending on what triggered the automation, different switches are turned on or off. If triggered by Noor's or Fien's status changing to 'Juist Aangekomen', the upstairs and downstairs socket switches are turned on. If triggered by the 14:02 time trigger and the current hour is 14, the garage charger, upstairs socket, and downstairs socket switches are all turned on. If triggered by a low power reading on the garage charger, its switch is turned off. Similarly, low power on the upstairs or downstairs sockets turns off their respective switches. If the alarm is set to 'armed_night', all three switches (garage charger, upstairs socket, downstairs socket) are turned off."
},
"human_like": "Manages electric bike chargers by turning them on when someone arrives home or at a scheduled time, and turning them off when charging is complete or the house alarm is armed for the night.",
"complexity": "high"
}
},
{
"id": "eb2a783e-d902-4fca-804a-9289e40cc729",
"result": {
"structured": "TRIGGER: When on vacation boolean [input_boolean.op_verlof] changes state. CONDITIONS: None. ACTIONS: If on vacation boolean [input_boolean.op_verlof] is on, then turn off automation.kerstverlichting_aan_uit, automation.oplader_electrische_fiets_aan_uit, automation.verluchting_afkoeling, automation.achterdeur_sluiten_warm_buiten. Otherwise, turn them on.",
"natural_language": {
"trigger": "Whenever the state of the on vacation boolean [input_boolean.op_verlof] changes.",
"conditions": "There are no conditions for this automation.",
"action": "If the on vacation boolean [input_boolean.op_verlof] is turned on, it will disable the automations for Christmas lights, electric bike charger, ventilation cooling, and closing the back door when it's warm outside. If the on vacation boolean [input_boolean.op_verlof] is turned off, it will re-enable those same automations."
},
"human_like": "Toggles a group of other automations on or off based on whether the vacation mode is active.",
"complexity": "medium"
}
},
{
"id": "175fe341-f1a1-4a3a-b86f-4c28f57e3e80",
"result": {
"structured": "TRIGGER: When on vacation boolean [input_boolean.op_verlof] changes state. CONDITIONS: None. ACTIONS: If on vacation boolean [input_boolean.op_verlof] is turned on, set living climate [climate.living] preset mode to 'away' AND set fien climate [climate.fien], bathroom climate [climate.badkamer], noor climate [climate.noor], bedroom climate [climate.slaapkamer], and garage climate [climate.garage] HVAC mode to 'off'. If on vacation boolean [input_boolean.op_verlof] is turned off, set living climate [climate.living] preset mode to 'schedule' AND set fien climate [climate.fien], bathroom climate [climate.badkamer], noor climate [climate.noor], bedroom climate [climate.slaapkamer], and garage climate [climate.garage] HVAC mode to 'heat'.",
"natural_language": {
"trigger": "Whenever the on vacation boolean [input_boolean.op_verlof] changes its state, either from off to on or from on to off.",
"conditions": "There are no conditions that must be checked.",
"action": "Depending on the new state of the vacation switch: if it is turned on, it sets the living climate [climate.living] to 'away' preset mode and turns off the heating (sets HVAC mode to 'off') for the climate entities in the rooms fien, bathroom, noor, bedroom, and garage. If the vacation switch is turned off, it sets the living climate [climate.living] back to 'schedule' preset mode and turns the heating back on (sets HVAC mode to 'heat') for those same climate entities."
},
"human_like": "Adjusts the heating settings for the entire house when the vacation mode is turned on or off, saving energy while away.",
"complexity": "low"
}
},
{
"id": "85099f39-8613-4f06-a709-6aa69841b719",
"result": {
"structured": "TRIGGER: When kitchen occupancy [binary_sensor.keuken_bezetting] becomes occupied (on) OR when living occupancy [binary_sensor.living_bezetting] becomes occupied (on) OR when WC Aqara PIR [binary_sensor.wc_aqara_pir] becomes occupied (on) OR when Waskot Aqara PIR [binary_sensor.waskot_aqara_pir] becomes occupied (on) OR when downstairs hallway pir [binary_sensor.gang_beneden_pir] becomes occupied (on). CONDITIONS: (The time since clean trash script [script.bitch_prullenbak] was last triggered is greater than 90 seconds) AND (At least one of the persons (giel person [person.giel], martine person [person.martine], noor [person.noor], fien [person.fien]) is at home) AND (NOT (claptrap vacuum [vacuum.claptrap] is docked OR claptrap vacuum [vacuum.claptrap] is returning OR claptrap vacuum [vacuum.claptrap] is cleaning)) AND (claptrap vacuum [vacuum.claptrap] is in an error state). ACTIONS: Send a locate command to claptrap vacuum [vacuum.claptrap].",
"natural_language": {
"trigger": "When motion is detected in any of the following areas: the kitchen [binary_sensor.keuken_bezetting], the living room [binary_sensor.living_bezetting], the WC [binary_sensor.wc_aqara_pir], the Waskot [binary_sensor.waskot_aqara_pir], or the downstairs hallway [binary_sensor.gang_beneden_pir].",
"conditions": "If the clean trash script [script.bitch_prullenbak] has not been triggered in the last 90 seconds, at least one of the tracked people (Giel, Martine, Noor, or Fien) is at home, the claptrap vacuum [vacuum.claptrap] is not currently docked, returning, or cleaning, and the vacuum is in an error state.",
"action": "Make the vacuum play a sound to help locate it."
},
"human_like": "Helps find the vacuum cleaner when it's stuck in an error state and someone is home and moving around, but only if the trash script hasn't run recently.",
"complexity": "medium"
}
},
{
"id": "58ffbfbe-21b0-417d-a6fc-fa051379a5df",
"result": {
"structured": "TRIGGER: When people home [sensor.people_home] changes state. CONDITIONS: None. ACTIONS: Send a notification to gphone mobile app [notify.mobile_app_gphone] with a message 'delete_alert' and data containing a push badge value set to the current state of people home [sensor.people_home].",
"natural_language": {
"trigger": "Whenever the sensor tracking the number of people home [sensor.people_home] changes its value.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to the mobile phone app [notify.mobile_app_gphone] to update the app's badge icon. The notification instructs the app to delete an alert and sets the badge number to the current count of people home."
},
"human_like": "Updates the phone's app badge to show the current number of people home whenever that number changes.",
"complexity": "low"
}
},
{
"id": "19651013-1164-44e7-a2b9-361ab2c437e4",
"result": {
"structured": "TRIGGER: When heat pump running [binary_sensor.warmtepomp_aan] turns on OR When the floor heating return [sensor.vloerverwarming_terug] temperature is less than the living climate [climate.living] current temperature AND remains so for 5 minutes. CONDITIONS: None. ACTIONS: If heat pump running [binary_sensor.warmtepomp_aan] is off, turn off floor heating switch [switch.vloerverwarming]. Otherwise, turn on floor heating switch [switch.vloerverwarming].",
"natural_language": {
"trigger": "The automation triggers when the heat pump running [binary_sensor.warmtepomp_aan] starts, or when the floor heating return [sensor.vloerverwarming_terug] temperature stays below the current temperature of the living climate [climate.living] for at least five minutes.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "The automation checks if the heat pump running [binary_sensor.warmtepomp_aan] is off. If it is, it turns off the floor heating switch [switch.vloerverwarming]. In all other cases, it turns the floor heating switch [switch.vloerverwarming] on."
},
"human_like": "Controls the floor heating pump to run when the heat pump is active or when the return water is cooler than the room, ensuring it keeps running for a while after the heat pump stops.",
"complexity": "medium"
}
},
{
"id": "33235461-2f5e-4189-8e3c-1c13df040758",
"result": {
"structured": "TRIGGER: When a mobile app notification action event with action 'POORT' occurs. CONDITIONS: None. ACTIONS: Turn off incognito switch [switch.incognito].",
"natural_language": {
"trigger": "When a notification action named 'POORT' is received from the mobile app.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off the incognito switch [switch.incognito]."
},
"human_like": "Turns off the incognito switch when a specific notification action is pressed on a mobile device.",
"complexity": "low"
}
},
{
"id": "b81cb250-5e2b-46e0-984b-f09c1a4eec92",
"result": {
"structured": "TRIGGER: When predicted hours sensor [sensor.voorspelde_uren] changes state OR when predicted hours adaboost sensor [sensor.voorspelde_uren_adaboost] changes state OR when predicted hours gradientboosting sensor [sensor.voorspelde_uren_gradientboosting] changes state. CONDITIONS: None. ACTIONS: Choose one sequence based on which trigger fired: IF the trigger is predicted hours sensor [sensor.voorspelde_uren] AND predicted hours sensor [sensor.voorspelde_uren] has a valid value, THEN set predicted hours input [input_number.voorspelde_uren] to the value of predicted hours sensor [sensor.voorspelde_uren] rounded to 2 decimal places, but if that value is less than 0, set it to 0. IF the trigger is predicted hours adaboost sensor [sensor.voorspelde_uren_adaboost] AND predicted hours adaboost sensor [sensor.voorspelde_uren_adaboost] has a valid value, THEN set predicted hours adaboost input [input_number.voorspelde_uren_adaboost] to the value of predicted hours adaboost sensor [sensor.voorspelde_uren_adaboost] rounded to 2 decimal places, but if that value is less than 0, set it to 0. IF the trigger is predicted hours gradientboosting sensor [sensor.voorspelde_uren_gradientboosting] AND predicted hours gradientboosting sensor [sensor.voorspelde_uren_gradientboosting] has a valid value, THEN set predicted hours gradientboosting input [input_number.voorspelde_uren_gradientboosting] to the value of predicted hours gradientboosting sensor [sensor.voorspelde_uren_gradientboosting] rounded to 2 decimal places, but if that value is less than 0, set it to 0.",
"natural_language": {
"trigger": "The automation triggers whenever the state of the predicted hours sensor [sensor.voorspelde_uren], the predicted hours adaboost sensor [sensor.voorspelde_uren_adaboost], or the predicted hours gradientboosting sensor [sensor.voorspelde_uren_gradientboosting] changes.",
"conditions": "There are no separate conditions that must be met for the automation to run.",
"action": "Depending on which sensor triggered the automation, the corresponding input number is updated. If the predicted hours sensor [sensor.voorspelde_uren] triggered and has a valid value, the predicted hours input [input_number.voorspelde_uren] is set to its value, rounded to two decimal places, ensuring it is never set to a negative number (setting it to 0 instead). The same logic applies to the adaboost and gradientboosting sensors and their respective input numbers."
},
"human_like": "Updates three different input number fields with the latest predicted hour values from their corresponding sensors, ensuring the values are rounded and never negative.",
"complexity": "medium"
}
},
{
"id": "ca43a372-7850-436b-94e5-5024377653be",
"result": {
"structured": "TRIGGER: At 03:12:00 OR At 04:12:00. CONDITIONS: None. ACTIONS: If the current hour is 3, then for each batch of entities to purge (defined by the purge_batches variable), call the service recorder.purge_entities with keep_days set to 7 on the batch, and wait 30 seconds between batches. If the current hour is 4, then call the service recorder.purge with repack set to true and keep_days set to 365.",
"natural_language": {
"trigger": "The automation runs at two specific times: 3:12 AM and 4:12 AM.",
"conditions": "There are no explicit conditions; the action logic depends on the time of day.",
"action": "If it is 3 AM, the automation purges historical data for a specific list of entities, keeping only the last 7 days. It processes the entities in batches, waiting 30 seconds between each batch to avoid overloading the system. If it is 4 AM, the automation performs a full database purge and repack, keeping data for the last 365 days."
},
"human_like": "This automation manages the Home Assistant database by purging old data at night, using different retention policies and methods depending on the hour.",
"complexity": "high"
}
},
{
"id": "2624a6a7-b817-41f3-bb22-904957508255",
"result": {
"structured": "TRIGGER: When wc light [light.wc] changes state OR When laundry room light [light.waskot] changes state OR When bathroom ceiling light [light.badkamer_hoog] changes state OR When basement light [light.kelder] changes state. CONDITIONS: (The current system uptime minus the uptime sensor [sensor.uptime] value is greater than 30 seconds). ACTIONS: If the triggering light turned on, turn on the corresponding LED switch; if the triggering light turned off, turn off the corresponding LED switch. The mapping is: wc light [light.wc] controls wc led switch [switch.led_wc]; laundry room light [light.waskot] controls laundry room led switch [switch.led_waskot]; basement light [light.kelder] controls basement led switch [switch.led_kelder]; bathroom ceiling light [light.badkamer_hoog] controls bathroom led switch [switch.led_badkamer].",
"natural_language": {
"trigger": "Whenever the state of any of the following lights changes: the wc light [light.wc], the laundry room light [light.waskot], the bathroom ceiling light [light.badkamer_hoog], or the basement light [light.kelder].",
"conditions": "The automation only runs if the system has been running for more than 30 seconds after the last recorded uptime value from the uptime sensor [sensor.uptime]. This prevents the automation from running immediately after a system restart.",
"action": "Depending on which light changed state, the corresponding LED switch is turned on or off to match. If the light turned on, its LED switch is turned on. If the light turned off, its LED switch is turned off. The wc light controls the wc led switch [switch.led_wc], the laundry room light controls the laundry room led switch [switch.led_waskot], the basement light controls the basement led switch [switch.led_kelder], and the bathroom ceiling light controls the bathroom led switch [switch.led_badkamer]."
},
"human_like": "Syncs the state of LED switches to match their corresponding main lights in the WC, laundry room, bathroom, and basement, but only after the system has been up for a short while.",
"complexity": "medium"
}
},
{
"id": "881fc702-28a1-4616-8fe4-7490e60db9ed",
"result": {
"structured": "TRIGGER: When rafc calendar [calendar.rafc] changes to on. CONDITIONS: None. ACTIONS: Turn on tv spotlights [light.spots_tv] with RGB color (206, 21, 55) and brightness 255 AND Turn on rafc2 1 script [script.rafc2_1].",
"natural_language": {
"trigger": "When the rafc calendar [calendar.rafc] indicates an event is starting (changes its state to on).",
"conditions": "There are no conditions that need to be met.",
"action": "Turns on the tv spotlights [light.spots_tv] to a specific red color and full brightness, and also starts the rafc2 1 script [script.rafc2_1]."
},
"human_like": "Turns on special red lighting and runs a script when a specific calendar event begins.",
"complexity": "low"
}
},
{
"id": "143a2976-c385-4039-bcfb-e9779b484e9f",
"result": {
"structured": "TRIGGER: When rafc calendar [calendar.rafc] remains off for 20 minutes. ACTIONS: Turn off rafc2 1 script [script.rafc2_1] AND Turn off rafc2 2 script [script.rafc2_2]. Then, if dark inside sensor [sensor.dark_inside] is true, turn on tv spotlights [light.spots_tv]; else if dark inside sensor [sensor.dark_inside] is false, turn off tv spotlights [light.spots_tv]. Finally, if dark inside sensor [sensor.dark_inside] is true, turn on tv spotlights [light.spots_tv] with profile 'reading'.",
"natural_language": {
"trigger": "When the rafc calendar [calendar.rafc] has been in the 'off' state for 20 minutes.",
"conditions": "There are no explicit conditions in the automation; however, the second action includes a conditional check based on the dark inside sensor [sensor.dark_inside] state, and the third action is only performed if the dark inside sensor [sensor.dark_inside] is 'true'.",
"action": "First, turn off both the rafc2 1 script [script.rafc2_1] and rafc2 2 script [script.rafc2_2]. Then, check the dark inside sensor [sensor.dark_inside]: if it's 'true', turn on the tv spotlights [light.spots_tv]; if it's 'false', turn them off. Finally, if the dark inside sensor [sensor.dark_inside] is 'true', turn on the tv spotlights [light.spots_tv] with the 'reading' profile."
},
"human_like": "Turns off related scripts and adjusts the TV spotlights based on indoor darkness when the calendar event ends, ensuring appropriate lighting for reading if it's dark.",
"complexity": "medium"
}
},
{
"id": "10a371eb-8dfd-44c3-90cd-46519ae531de",
"result": {
"structured": "TRIGGER: When average downstairs temperature [sensor.gemiddelde_temp_beneden] is greater than (outside temperature [sensor.buiten_temperatuur] minus 1) for 5 minutes OR When average downstairs temperature [sensor.gemiddelde_temp_beneden] is less than outside temperature [sensor.buiten_temperatuur] for 5 minutes. CONDITIONS: (outside temperature [sensor.buiten_temperatuur] is not 'unknown' AND outside temperature [sensor.buiten_temperatuur] is not 'unavailable') AND (max outside temperature forecast 12h [sensor.max_temperatuur_buiten_voorspelling_12u] is greater than 22) AND (the time since the automation 'Ramen openen/sluiten' was last triggered is greater than 600 seconds) AND (the time since the system uptime [sensor.uptime] started is greater than 900 seconds). ACTIONS: Wait until at least one person is home (people home [sensor.people_home] > 0). Then, if the trigger was 'open', send a notification to everyone at home with title 'Verluchten kan.' and a message containing the indoor and outdoor temperatures. If the trigger was 'close', send a notification to everyone at home with title 'Gelieve de warmte buiten te houden.' and a message containing the indoor and outdoor temperatures.",
"natural_language": {
"trigger": "The automation triggers when the average downstairs temperature [sensor.gemiddelde_temp_beneden] is more than one degree warmer than the outside temperature [sensor.buiten_temperatuur] for five consecutive minutes, or when the average downstairs temperature [sensor.gemiddelde_temp_beneden] is cooler than the outside temperature [sensor.buiten_temperatuur] for five consecutive minutes.",
"conditions": "Several conditions must be met: the outside temperature [sensor.buiten_temperatuur] must be a valid reading (not 'unknown' or 'unavailable'). The forecasted maximum outside temperature for the next 12 hours [sensor.max_temperatuur_buiten_voorspelling_12u] must be above 22 degrees. The automation itself must not have been triggered in the last 10 minutes (600 seconds). Finally, the Home Assistant system must have been running for at least 15 minutes (900 seconds) since the last restart, as indicated by the uptime sensor [sensor.uptime].",
"action": "The automation first waits until at least one person is detected at home, as reported by the people home [sensor.people_home] sensor. Once someone is home, it checks which condition triggered it. If it was triggered because it's warmer inside, it sends a notification to everyone at home suggesting they can open the windows for ventilation, including the current indoor and outdoor temperatures. If it was triggered because it's warmer outside, it sends a notification asking everyone to close the windows to keep the heat out, again including the temperature readings."
},
"human_like": "This automation suggests when to open or close windows for optimal temperature control, based on indoor and outdoor temperatures, but only notifies people when someone is actually home.",
"complexity": "high"
}
},
{
"id": "57abe3da-cb31-43f9-bea8-a3d73f4d3b5c",
"result": {
"structured": "TRIGGER: When living climate [climate.living] remains unavailable OR unknown for 2 minutes (id: netatmo) OR When huawai active power sensor [sensor.huawei_active_power] remains unavailable OR unknown for 2 minutes (id: huawei) OR When energy production today sensor [sensor.energy_production_today] remains unavailable OR unknown for 2 minutes (id: open_meteo) OR When energy production tomorrow sensor [sensor.energy_production_tomorrow] remains unavailable OR unknown for 2 minutes (id: open_meteo) OR When energy production today 2 sensor [sensor.energy_production_today_2] remains unavailable OR unknown for 2 minutes (id: open_meteo_2) OR When energy production tomorrow 2 sensor [sensor.energy_production_tomorrow_2] remains unavailable OR unknown for 2 minutes (id: open_meteo_2) OR When energy production today 3 sensor [sensor.energy_production_today_3] remains unavailable OR unknown for 2 minutes (id: open_meteo_3) OR When energy production tomorrow 3 sensor [sensor.energy_production_tomorrow_3] remains unavailable OR unknown for 2 minutes (id: open_meteo_3) OR When solaredge inverter watts [sensor.solaredge_inverter_watts] remains unavailable OR unknown for 2 minutes (id: solaredge) OR When claptrap vacuum [vacuum.claptrap] remains unavailable OR unknown for 2 minutes (id: claptrap) OR When garden camera [camera.tuin] remains unavailable OR unknown for 2 minutes (id: camera_tuin). CONDITIONS: None (choose action block uses trigger IDs as conditions). ACTIONS: Choose based on which trigger fired: If huawei trigger fired, reload config entry for huawai active power sensor [sensor.huawei_active_power]. If open_meteo trigger fired, reload config entry for power production now sensor [sensor.power_production_now]. If open_meteo_2 trigger fired, reload config entry for power production now 2 sensor [sensor.power_production_now_2]. If netatmo trigger fired, reload config entry for living climate [climate.living]. If open_meteo_3 trigger fired, reload config entry for power production now 3 sensor [sensor.power_production_now_3]. If solaredge trigger fired, send notification 'SolarEdge problemen!' via gphone mobile app [notify.mobile_app_gphone], press usw lite 8 restart button [button.usw_lite_8_restart], wait 5 minutes, then reload config entry for solaredge i1 ac power [sensor.solaredge_i1_ac_power]. If claptrap trigger fired, send notification 'Claptrap reload' via gphone mobile app [notify.mobile_app_gphone], reconnect UniFi Device Claptrap [device_id: 898240675928a9586b500febb0f72316], wait 2 minutes, then reload config entry for claptrap vacuum [vacuum.claptrap]. If camera_tuin trigger fired, send notification 'Camera tuin reload' via gphone mobile app [notify.mobile_app_gphone], press usw lite 8 dahua power cycle button [button.usw_lite_8_dahua_power_cycle].",
"natural_language": {
"trigger": "The automation triggers when any of the following entities remain in an 'unavailable' or 'unknown' state for at least two minutes: the living climate [climate.living], the huawai active power sensor [sensor.huawei_active_power], the energy production today sensor [sensor.energy_production_today], the energy production tomorrow sensor [sensor.energy_production_tomorrow], the energy production today 2 sensor [sensor.energy_production_today_2], the energy production tomorrow 2 sensor [sensor.energy_production_tomorrow_2], the energy production today 3 sensor [sensor.energy_production_today_3], the energy production tomorrow 3 sensor [sensor.energy_production_tomorrow_3], the solaredge inverter watts [sensor.solaredge_inverter_watts], the claptrap vacuum [vacuum.claptrap], or the garden camera [camera.tuin].",
"conditions": "The automation does not have separate global conditions. Instead, it uses a choose action which selects a specific sequence based on which specific trigger caused the automation to run.",
"action": "Depending on which entity triggered the automation, a specific recovery sequence is executed. For the Huawei power sensor, its configuration is reloaded. For the Open Meteo energy production sensors, the corresponding 'power production now' sensor's configuration is reloaded. For the living climate, its configuration is reloaded. For the SolarEdge inverter, a notification is sent, a network switch is restarted, and after a delay, the inverter power sensor's configuration is reloaded. For the Claptrap vacuum, a notification is sent, the UniFi client is reconnected, and after a delay, its configuration is reloaded. For the garden camera, a notification is sent and a power cycle button for the camera is pressed."
},
"human_like": "Automatically attempts to recover various smart home integrations when they become unresponsive by reloading their configurations or performing targeted restarts.",
"complexity": "high"
}
},
{
"id": "enable_roblox",
"result": {
"structured": "TRIGGER: When allow roblox boolean [input_boolean.allowroblox] turns on. ACTIONS: Remove the URL https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-roblox.txt from the AdGuard blocklist.",
"natural_language": {
"trigger": "When the allow roblox boolean [input_boolean.allowroblox] is switched to the 'on' state.",
"conditions": "There are no conditions for this automation.",
"action": "Removes a specific Roblox-related blocklist URL from the AdGuard service."
},
"human_like": "Allows Roblox by removing its blocklist from AdGuard when the permission switch is turned on.",
"complexity": "low"
}
},
{
"id": "disable_roblox",
"result": {
"structured": "TRIGGER: When allow roblox boolean [input_boolean.allowroblox] changes to off. CONDITIONS: None. ACTIONS: Add a URL blocklist to AdGuard using the URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-roblox.txt' with the name 'Roblox'.",
"natural_language": {
"trigger": "When the allow roblox boolean [input_boolean.allowroblox] is turned off.",
"conditions": "There are no conditions.",
"action": "Adds a blocklist for Roblox to AdGuard by fetching the list from a specified URL."
},
"human_like": "Automatically blocks Roblox by adding a blocklist to AdGuard when the 'allow roblox' switch is turned off.",
"complexity": "low"
}
},
{
"id": "2e8185f1-1dda-4a1d-96af-06e61fa7dfb3",
"result": {
"structured": "TRIGGER: When hallway smoke detector [binary_sensor.gang_rookmelder] turns on OR when living smoke detector [binary_sensor.living_rookmelder] turns on OR when laundry room smoke detector [binary_sensor.waskot_rookmelder] turns on OR when basement smoke detector [binary_sensor.kelder_rookmelder] turns on. CONDITIONS: None. ACTIONS: Send a notification via everyone notification [notify.iedereen] with a title 'Alarm Home-Assistant.' and a message indicating the location of the smoke detection based on which sensor is on, then activate alarm lights 1 script [script.alarm_lights1] and alarm sound script [script.alarm_sound].",
"natural_language": {
"trigger": "When any of the smoke detectors in the home are triggered, specifically when the hallway smoke detector [binary_sensor.gang_rookmelder], the living smoke detector [binary_sensor.living_rookmelder], the laundry room smoke detector [binary_sensor.waskot_rookmelder], or the basement smoke detector [binary_sensor.kelder_rookmelder] changes its state to 'on'.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "The automation sends a push notification to everyone [notify.iedereen] with the title 'Alarm Home-Assistant.' and a message specifying the room where smoke was detected. It then activates two scripts: alarm lights 1 script [script.alarm_lights1] and alarm sound script [script.alarm_sound] to provide visual and audible alarms."
},
"human_like": "Triggers a smoke alarm notification and activates alarm lights and sounds when any smoke detector in the house is activated.",
"complexity": "medium"
}
},
{
"id": "f5b872a7-e61d-4a78-ae81-30ab1817511a",
"result": {
"structured": "TRIGGER: When bthome window sensor [binary_sensor.bthome_sensor_969c_window] changes to open (on). CONDITIONS: gphone area sensor [sensor.gphone_area] is NOT in state Garage. ACTIONS: Send a notification to gphone mobile app [notify.mobile_app_gphone] with a title and a message. The message is generated by a template that checks if mphone area sensor [sensor.mphone_area], fphone area sensor [sensor.fphone_area], or nphone area sensor [sensor.nphone_area] are in the Garage area. It compiles a list of the first names (from the friendly_name attribute) of those sensors that are in Garage and outputs them joined by 'of'.",
"natural_language": {
"trigger": "When the bthome window sensor [binary_sensor.bthome_sensor_969c_window] is opened.",
"conditions": "The gphone area sensor [sensor.gphone_area] must not be reporting its location as 'Garage'.",
"action": "Sends a notification to the gphone mobile app [notify.mobile_app_gphone] asking who is at the window. The message dynamically lists the first names of the people (based on their phone area sensors: mphone area sensor [sensor.mphone_area], fphone area sensor [sensor.fphone_area], nphone area sensor [sensor.nphone_area]) who are currently in the Garage, presenting them as suspects."
},
"human_like": "Sends a playful notification to a specific phone when a window is opened, but only if that phone's owner is not in the garage, and it tries to guess who might have opened it based on who is in the garage.",
"complexity": "medium"
}
},
{
"id": "fa8245b7-3a4e-44f2-91d0-84a86ff5d978",
"result": {
"structured": "TRIGGER: When giel status sensor [sensor.giel_status] changes state OR When martine status sensor [sensor.martine_status] changes state OR When noor status sensor [sensor.noor_status] changes state OR When fien status sensor [sensor.fien_status] changes state. CONDITIONS: None. ACTIONS: Update device tracker location for the corresponding person. If the trigger is from giel status sensor [sensor.giel_status], set device 'giel_not_so_binary' to the state of giel status sensor [sensor.giel_status]. If the trigger is from martine status sensor [sensor.martine_status], set device 'martine_not_so_binary' to the state of martine status sensor [sensor.martine_status]. If the trigger is from noor status sensor [sensor.noor_status], set device 'noor_not_so_binary' to the state of noor status sensor [sensor.noor_status]. If the trigger is from fien status sensor [sensor.fien_status], set device 'fien_not_so_binary' to the state of fien status sensor [sensor.fien_status]. The source type is 'router'.",
"natural_language": {
"trigger": "Whenever the state of any of the four status sensors changes: giel status sensor [sensor.giel_status], martine status sensor [sensor.martine_status], noor status sensor [sensor.noor_status], or fien status sensor [sensor.fien_status].",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "Updates the location of a person's device tracker based on which sensor triggered. It maps each sensor to a specific device tracker ID (like 'giel_not_so_binary') and sets its location name to the current state of the triggering sensor. The update is marked as coming from a router."
},
"human_like": "Keeps the device tracker locations for Giel, Martine, Noor, and Fien in sync with their respective status sensors.",
"complexity": "medium"
}
},
{
"id": "0fc12bf6-5c1b-4da3-a5e5-0516efc2f616",
"result": {
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Wait 15 seconds, then update the location of device tracker giel_not_so_binary to the current state of giel status sensor [sensor.giel_status], update the location of device tracker martine_not_so_binary to the current state of martine status sensor [sensor.martine_status], update the location of device tracker noor_not_so_binary to the current state of noor status sensor [sensor.noor_status], and update the location of device tracker fien_not_so_binary to the current state of fien status sensor [sensor.fien_status]. All updates use source_type: router.",
"natural_language": {
"trigger": "When Home Assistant finishes starting up.",
"conditions": "There are no conditions for this automation.",
"action": "After waiting 15 seconds, the automation updates the location of four device trackers. It sets the location of the tracker 'giel_not_so_binary' to match the current state of the giel status sensor [sensor.giel_status]. It does the same for 'martine_not_so_binary' using the martine status sensor [sensor.martine_status], for 'noor_not_so_binary' using the noor status sensor [sensor.noor_status], and for 'fien_not_so_binary' using the fien status sensor [sensor.fien_status]. All updates are marked as coming from a router source."
},
"human_like": "Restores the location of family members' device trackers shortly after Home Assistant restarts, using the latest status from their sensors.",
"complexity": "low"
}
},
{
"id": "eb3f7fb4-1b87-457f-b0ce-da040bb7a3e4",
"result": {
"structured": "TRIGGER: When kitchen not playing [binary_sensor.keuken_not_playing] changes to on. ACTIONS: Set shuffle to false for kitchen mass speaker [media_player.mass_keuken]. THEN, IF bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] is on, unjoin bathroom mass speaker [media_player.mass_badkamer] and set its volume to 0.14.",
"natural_language": {
"trigger": "When the kitchen not playing [binary_sensor.keuken_not_playing] sensor indicates that the kitchen speaker is no longer playing.",
"conditions": "There are no global conditions for the automation. However, the second and third actions are only performed if the bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] sensor is on.",
"action": "First, it disables shuffle mode on the kitchen mass speaker [media_player.mass_keuken]. Then, if the bathroom grouped not master [binary_sensor.badkamer_grouped_not_master] sensor is active, it unjoins the bathroom mass speaker [media_player.mass_badkamer] from any media group and sets its volume to 14%."
},
"human_like": "Disables shuffle on the kitchen speaker when it stops playing, and if the bathroom speaker is in a specific grouped state, it unjoins it and sets a low volume.",
"complexity": "medium"
}
},
{
"id": "fe68544f-dca9-4560-9871-91818b485703",
"result": {
"structured": "TRIGGER: Every 5 minutes (at minutes divisible by 5, seconds 0). CONDITIONS: NOT (bedroom switch [switch.slaapkamer] is on). ACTIONS: Turn off bedroom switch [switch.slaapkamer].",
"natural_language": {
"trigger": "The automation runs every 5 minutes, precisely when the clock's minutes are divisible by 5 and the seconds are at 0.",
"conditions": "The automation only runs if the bedroom switch [switch.slaapkamer] is not currently turned on.",
"action": "Turns off the bedroom switch [switch.slaapkamer]."
},
"human_like": "Turns off the bedroom switch every 5 minutes, but only if it's not already off.",
"complexity": "low"
}
},
{
"id": "Drukknop slaapkamer Fien",
"result": {
"structured": "TRIGGER: When ZHA Device Fien Switch [device_id:162587af4294487a9b128a96f1666500] sends a remote_button_short_press event. CONDITIONS: None. ACTIONS: If fien light [light.fien] is on, then turn off fien light [light.fien]. Otherwise, turn on fien light [light.fien] with brightness 255 and RGB color (255, 236, 182).",
"natural_language": {
"trigger": "When the ZHA Device Fien Switch [device_id:162587af4294487a9b128a96f1666500] button is pressed.",
"conditions": "There are no conditions that must be met.",
"action": "If the fien light [light.fien] is currently on, it will be turned off. If it is off, it will be turned on to a warm white color with full brightness."
},
"human_like": "Toggles the light in Fien's room on or off with a single button press, turning it on to a warm white setting if it was off.",
"complexity": "low"
}
},
{
"id": "d0467a85-0e2b-4b05-9255-c1fe15316291",
"result": {
"structured": "TRIGGER: When noor room aqara pir [binary_sensor.slaapkamer_noor_aqara_pir] changes from off to on OR When noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] changes from off to on OR When ZHA Device Noor Switch [device_id: 33d2050e6c144c54beb87dd3f12e8b92] sends a remote_button_short_press event OR When noor light [light.noor] changes from off to on OR When nphone focus sensor [binary_sensor.nphone_focus] changes from off to on. CONDITIONS AND ACTIONS: After a 200ms delay, choose the first matching path: 1) IF trigger is presence AND noor occupancy [binary_sensor.noor_bezetting] is on AND nphone bermuda tracker [device_tracker.nphone_bermuda] is not_home AND dark inside sensor [sensor.dark_inside] is on THEN turn on noor light [light.noor] AND set noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] to now + 2 hours AND wait until noor occupancy [binary_sensor.noor_bezetting] changes from on to off THEN set noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] to now + 120 seconds. 2) IF trigger is presence AND noor occupancy [binary_sensor.noor_bezetting] is on AND nphone focus sensor [binary_sensor.nphone_focus] is off AND nphone bermuda tracker [device_tracker.nphone_bermuda] is home AND dark inside sensor [sensor.dark_inside] is on THEN turn on noor light [light.noor] AND set noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] to now + 2 hours AND wait until noor occupancy [binary_sensor.noor_bezetting] changes from on to off THEN set noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] to now + 120 seconds. 3) IF trigger is focus_on AND noor occupancy [binary_sensor.noor_bezetting] is on THEN turn off noor light [light.noor] with a 120-second transition. 4) IF trigger is zha THEN IF noor light [light.noor] is on THEN turn off noor light [light.noor] ELSE turn on noor light [light.noor] with brightness 255 and RGB color [255, 236, 182]. DEFAULT: IF no other path matches THEN set noor lighting end time [input_datetime.slaapkamer_noor_verlichting_end_time] to now + 120 seconds.",
"natural_language": {
"trigger": "The automation can be triggered by several events: motion is detected by the noor room aqara pir [binary_sensor.slaapkamer_noor_aqara_pir] or the noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] changes to occupied, a short press is detected on the ZHA Device Noor Switch [device_id: 33d2050e6c144c54beb87dd3f12e8b92], the noor light [light.noor] is turned on, or the nphone focus sensor [binary_sensor.nphone_focus] indicates focus mode is activated.",
"conditions": "After a brief 200-millisecond delay, the automation evaluates a series of conditional paths. The first path requires the trigger to be a presence event, the noor occupancy [binary_sensor.noor_bezetting] to be on, the nphone bermuda tracker [device_tracker.nphone_bermuda] to be away from home, and the dark inside sensor [sensor.dark_inside] to indicate it is dark. The second path also requires a presence trigger and the noor occupancy [binary_sensor.noor_bezetting] to be on, but instead checks that the nphone focus sensor [binary_sensor.nphone_focus] is off, the nphone bermuda tracker [device_tracker.nphone_bermuda] is home, and it is dark. The third path requires the trigger to be the focus mode turning on and the noor occupancy [binary_sensor.noor_bezetting] to be on. The fourth path only requires the trigger to be the ZHA switch press. If none of these specific conditions are met, a default action is taken.",
"action": "Depending on the matched path, the actions are: For the first two paths, the noor light [light.noor] is turned on, a lighting end timer is set for two hours, and then the automation waits for the room to become unoccupied before shortening the timer to 120 seconds. For the third path, the light is turned off with a slow 120-second fade. For the fourth path, the ZHA switch acts as a toggle: if the light is on, it turns it off; if it's off, it turns it on to a warm white preset. If no other path matches, the default action simply sets the lighting end timer to 120 seconds from now."
},
"human_like": "This automation controls the light in Noor's room, turning it on automatically when presence is detected and it's dark, or turning it off when focus mode is activated, with manual override via a switch.",
"complexity": "high"
}
},
{
"id": "7e9cc1fa-4db2-433a-a372-043d538d13a9",
"result": {
"structured": "TRIGGER: At 16:00:13 daily OR When night calendar [calendar.de_nacht] changes from on to off OR When weekend night calendar [calendar.weekend_nacht] changes from on to off. CONDITIONS: None. ACTIONS: If (time is after 16:00:00) OR (time is after 12:00:00 AND night sensor [binary_sensor.v_nacht] is off AND weekend night sensor [binary_sensor.v_w_nacht] is off) THEN turn off giel sleeps after night [input_boolean.giel_slaapt_na_nacht]; OTHERWISE turn on giel sleeps after night [input_boolean.giel_slaapt_na_nacht].",
"natural_language": {
"trigger": "The automation triggers at 4:00:13 PM every day, or when the night calendar [calendar.de_nacht] ends (changes from on to off), or when the weekend night calendar [calendar.weekend_nacht] ends (changes from on to off).",
"conditions": "There are no global conditions; the decision logic is handled within the action sequence.",
"action": "After triggering, the automation checks specific conditions to decide what to do. If it is after 4:00 PM, or if it is after 12:00 PM and both the night sensor [binary_sensor.v_nacht] and the weekend night sensor [binary_sensor.v_w_nacht] are off, then it turns off the 'giel sleeps after night' [input_boolean.giel_slaapt_na_nacht] indicator. If neither of those sets of conditions is met, it turns on the 'giel sleeps after night' [input_boolean.giel_slaapt_na_nacht] indicator."
},
"human_like": "Manages an indicator for whether someone is sleeping after a night event, turning it off in the afternoon or when night sensors are inactive, and turning it on otherwise.",
"complexity": "medium"
}
},
{
"id": "0f92f6c0-97b8-48f3-81f3-a67f84644b06",
"result": {
"structured": "TRIGGER: When l3 sensor [sensor.l3] remains in state unknown for 1 minute OR When v3 sensor [sensor.v3] remains in state unknown for 1 minute OR When l2 sensor [sensor.l2] remains in state unknown for 1 minute OR When v2 sensor [sensor.v2] remains in state unknown for 1 minute OR When l1 sensor [sensor.l1] remains in state unknown for 1 minute OR When v1 sensor [sensor.v1] remains in state unknown for 1 minute. CONDITIONS: None. ACTIONS: Choose based on the trigger ID: IF trigger ID is L1 THEN turn on smappee l1 restart switch [switch.smappee_l1_herstarten] AND create a persistent notification with message 'Smappee L1 is herstart omdat er iets onbekend was'. IF trigger ID is L2 THEN turn on smappee l2 restart switch [switch.smappee_l2_herstarten] AND create a persistent notification with message 'Smappee L3 is herstart omdat er iets onbekend was'. IF trigger ID is L3 THEN turn on smappee l3 restart switch [switch.smappee_l3_herstarten] AND create a persistent notification with message 'Smappee L3 is herstart omdat er iets onbekend was'.",
"natural_language": {
"trigger": "When any of the six sensors (l3 sensor [sensor.l3], v3 sensor [sensor.v3], l2 sensor [sensor.l2], v2 sensor [sensor.v2], l1 sensor [sensor.l1], or v1 sensor [sensor.v1]) remains in an 'unknown' state for at least one minute.",
"conditions": "There are no additional conditions that must be met.",
"action": "Depending on which sensor triggered the automation, a specific restart switch is turned on and a notification is created. If the trigger came from the L1 group (l1 sensor or v1 sensor), the smappee l1 restart switch [switch.smappee_l1_herstarten] is turned on and a notification states 'Smappee L1 is herstart omdat er iets onbekend was'. If the trigger came from the L2 group (l2 sensor or v2 sensor), the smappee l2 restart switch [switch.smappee_l2_herstarten] is turned on, but the notification incorrectly mentions 'Smappee L3'. If the trigger came from the L3 group (l3 sensor or v3 sensor), the smappee l3 restart switch [switch.smappee_l3_herstarten] is turned on and a notification states 'Smappee L3 is herstart omdat er iets onbekend was'."
},
"human_like": "Automatically restarts the appropriate Smappee DIY circuit when its associated sensors report an 'unknown' state for a minute, and sends a notification about the restart.",
"complexity": "medium"
}
},
{
"id": "enable_snapchat",
"result": {
"structured": "TRIGGER: When allow snapchat boolean [input_boolean.allowsnapchat] turns on. CONDITIONS: None. ACTIONS: Remove the URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-snapchat.txt' using the adguard.remove_url service.",
"natural_language": {
"trigger": "When the allow snapchat boolean [input_boolean.allowsnapchat] is switched to the 'on' state.",
"conditions": "There are no conditions for this automation.",
"action": "Removes a specific Snapchat blocklist URL from the AdGuard service."
},
"human_like": "Allows Snapchat by removing its blocklist from AdGuard when the corresponding switch is turned on.",
"complexity": "low"
}
},
{
"id": "disable_snapchat",
"result": {
"structured": "TRIGGER: When allow snapchat boolean [input_boolean.allowsnapchat] changes to off. CONDITIONS: None. ACTIONS: Add the URL list 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-snapchat.txt' to the AdGuard service with the name 'Snapchat'.",
"natural_language": {
"trigger": "When the allow snapchat boolean [input_boolean.allowsnapchat] is turned off.",
"conditions": "There are no conditions that must be met.",
"action": "Adds a blocklist for Snapchat to the AdGuard service by submitting the specified URL."
},
"human_like": "Blocks Snapchat by adding a blocklist to AdGuard when the user turns off the 'allow snapchat' setting.",
"complexity": "low"
}
},
{
"id": "f611af53-ed00-44e7-a8f2-f1fcbaf6f78e",
"result": {
"structured": "TRIGGER: When the time matches the pattern where minutes are 0 (i.e., at the start of every hour). CONDITIONS: (solar evaluation active boolean [input_boolean.solar_evaluation_active] is on) AND (solar evaluation period sensor [binary_sensor.solar_evaluation_period] is on). ACTIONS: Call service recorder.get_statistics to retrieve 5-minute mean statistics for current yield filtered [sensor.huidige_opbrengst_gefilterd] from midnight of the current day until the current time, storing the result in variable 'daily_stats'. Then call service python_script.precise_solar_evaluation, passing the retrieved statistics data and the current ISO-formatted timestamp.",
"natural_language": {
"trigger": "This automation runs at the start of every hour (when the clock shows 0 minutes).",
"conditions": "It only proceeds if the solar evaluation active boolean [input_boolean.solar_evaluation_active] is turned on, and the solar evaluation period sensor [binary_sensor.solar_evaluation_period] is also reporting as on.",
"action": "First, it fetches the historical 5-minute average data for the current yield filtered [sensor.huidige_opbrengst_gefilterd] sensor, from midnight today up to the current time. This data is then passed, along with the current timestamp, to a custom Python script named 'precise_solar_evaluation' for analysis."
},
"human_like": "Every hour, it checks if solar evaluation is active and, if so, analyzes the day's solar production data to evaluate prediction performance.",
"complexity": "medium"
}
},
{
"id": "0860fc90-a420-4fe3-97c8-5819100f2e6c",
"result": {
"structured": "TRIGGER: When best solar predictor text [input_text.best_solar_predictor] changes state. CONDITIONS: (The previous state of best solar predictor text [input_text.best_solar_predictor] is different from the new state) AND (The previous state of best solar predictor text [input_text.best_solar_predictor] is not 'unknown' AND is not 'unavailable'). ACTIONS: Send a notification via gphone mobile app [notify.mobile_app_gphone] with title '🌞 Solar Voorspeller Gewijzigd' and a message containing the old and new predictor names, and the current MSE scores for Solcast, Solcast 10%, Solcast 90%, and OpenMeteo.",
"natural_language": {
"trigger": "Whenever the value of the best solar predictor text [input_text.best_solar_predictor] changes.",
"conditions": "The change must be a real change, meaning the old value is different from the new value, and the old value was not 'unknown' or 'unavailable'.",
"action": "Sends a notification to a mobile phone [notify.mobile_app_gphone] announcing that the best solar predictor has changed, showing the old and new predictor names, and listing the current Mean Squared Error scores for the Solcast, Solcast 10%, Solcast 90%, and OpenMeteo prediction models."
},
"human_like": "Sends a phone notification when the system's best solar energy predictor changes, including the latest accuracy scores.",
"complexity": "medium"
}
},
{
"id": "a87af4e7-855e-4ed6-81ee-864052d6352c",
"result": {
"structured": "TRIGGER: When the time is 04:34:51 OR 05:58:51 OR 06:44:51 OR 07:34:51 OR 08:14:51 OR 09:04:51 OR 09:24:51 OR 09:44:51 OR 10:04:51 OR 10:24:51 OR 11:44:51 OR 12:04:51 OR 12:24:51 OR 12:44:51 OR 13:04:51 OR 13:24:51 OR 13:44:51 OR 14:04:51 OR 14:24:51 OR 14:44:51 OR 15:04:51 OR 15:24:51 OR 15:44:51 OR 16:04:51 OR 16:24:51 OR 16:44:51 OR 17:04:51 OR 17:24:51 OR 17:44:51 OR 18:04:51 OR 18:24:51 OR 18:44:51 OR 19:04:51 OR 19:24:51 OR 19:44:51 OR 20:04:51 OR 20:24:51 OR 20:44:51 OR 21:04:51 OR 21:24:51 OR 21:44:51 OR 23:44:51. CONDITIONS: None. ACTIONS: Call the service solcast_solar.update_forecasts.",
"natural_language": {
"trigger": "The automation runs at many specific times throughout the day, starting at 04:34:51 and continuing at various intervals until 23:44:51.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "It triggers an update of solar forecasts by calling the service solcast_solar.update_forecasts."
},
"human_like": "Updates solar forecast data from Solcast at scheduled times throughout the day.",
"complexity": "low"
}
},
{
"id": "ad8189b2-9488-4f1d-9390-a2baaa8009bd",
"result": {
"structured": "TRIGGER: When philips tv [media_player.philips_tv] turns on OR When living 2 mass speaker [media_player.mass_living_2] attribute app_id changes to TV OR When living 2 mass speaker [media_player.mass_living_2] attribute app_id equals x-sonos-htastream OR When philips tv [media_player.philips_tv] attribute app_name is in list [\"TV VLAANDEREN\", \"Netflix\", \"VRT MAX\", \"Streamz\", \"YouTube\", \"VTM GO\"]. CONDITIONS: For the default action path, the automation checks if the time is between 11:30:00 and 23:00:00 AND kitchen mass speaker [media_player.mass_keuken] is playing AND ps5 sensor [sensor.ps5] is not on. ACTIONS: If the trigger with id music_off is activated, then pause kitchen mass speaker [media_player.mass_keuken]. Otherwise (default), update ps5 sensor [sensor.ps5], set philips tv [media_player.philips_tv] volume to 0, wait 5 seconds, and if the time is between 11:30 and 23:00, kitchen mass speaker [media_player.mass_keuken] is playing, and ps5 sensor [sensor.ps5] is off, then pause kitchen mass speaker [media_player.mass_keuken].",
"natural_language": {
"trigger": "The automation triggers when the Philips TV [media_player.philips_tv] is turned on, when the living 2 mass speaker [media_player.mass_living_2] app changes to TV, when the living 2 mass speaker [media_player.mass_living_2] app is set to x-sonos-htastream, or when the Philips TV [media_player.philips_tv] is running an app from a specific list including TV VLAANDEREN, Netflix, VRT MAX, Streamz, YouTube, or VTM GO.",
"conditions": "For the main action sequence, it checks that the current time is between 11:30 AM and 11:00 PM, that the kitchen mass speaker [media_player.mass_keuken] is currently playing, and that the PS5 sensor [sensor.ps5] is not on.",
"action": "If the trigger is specifically from the TV app list, it immediately pauses the kitchen mass speaker [media_player.mass_keuken]. Otherwise, it first updates the PS5 sensor [sensor.ps5], sets the Philips TV [media_player.philips_tv] volume to zero, waits five seconds, and then, if the time and media conditions are met, pauses the kitchen mass speaker [media_player.mass_keuken]."
},
"human_like": "This automation manages audio when the TV is used, pausing the kitchen speaker for TV viewing or specific apps, and adjusting volume and checking the PS5 status for other TV activities.",
"complexity": "medium"
}
},
{
"id": "03fdc5b9-1fd1-41b8-aaf4-9def5e30760e",
"result": {
"structured": "TRIGGER: When noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] becomes occupied (on) OR When noor bayesian [binary_sensor.noor_bayesian] becomes unoccupied (from on to off). CONDITIONS: For the first action branch: The trigger is the occupancy sensor turning on AND nphone bermuda tracker [device_tracker.nphone_bermuda] is at home AND noor sonos boolean [input_boolean.sonos_noor] is off. For the second action branch: The trigger is the bayesian sensor turning off. ACTIONS: If the first condition set is met, turn on noor sonos boolean [input_boolean.sonos_noor], set the volume of noor bedroom mass speaker [media_player.mass_slaapkamer_noor] to 4%, wait 2 seconds, and then start playback. If the second condition set is met, pause playback on noor bedroom mass speaker [media_player.mass_slaapkamer_noor] and turn off noor sonos boolean [input_boolean.sonos_noor].",
"natural_language": {
"trigger": "The automation is triggered either when the noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] sensor detects the room has become occupied, or when the noor bayesian [binary_sensor.noor_bayesian] sensor changes from occupied to unoccupied.",
"conditions": "If the trigger was the room becoming occupied, the automation also checks that the nphone bermuda tracker [device_tracker.nphone_bermuda] is at home and that the noor sonos boolean [input_boolean.sonos_noor] is currently off. If the trigger was the bayesian sensor turning off, there are no additional conditions.",
"action": "When the room becomes occupied and the conditions are met, the automation turns on the Sonos control flag, sets the volume of the noor bedroom mass speaker [media_player.mass_slaapkamer_noor] to a low level, waits briefly, and starts playing music. When the bayesian sensor indicates the room is unoccupied, the automation pauses the music and turns off the Sonos control flag."
},
"human_like": "Automatically starts playing soft music in Noor's bedroom when she enters and her phone is home, and pauses the music when she leaves.",
"complexity": "medium"
}
},
{
"id": "845eafa5-a0f1-4c17-93d0-a7b84d5a5e9a",
"result": {
"structured": "TRIGGER: When kitchen aqara pir [binary_sensor.keuken_aqara_pir] changes from off to on OR When kitchen presence [binary_sensor.keuken_presence] changes from off to on OR When kitchen pir [binary_sensor.keuken_pir] changes from off to on. CONDITIONS: (Time is between 08:00:00 and 16:00:00) AND (kitchen not playing [binary_sensor.keuken_not_playing] is on AND remains on for 5 hours) AND (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (philips tv [media_player.philips_tv] is off) AND (giel tracker [device_tracker.giel_not_so_binary] is Thuis OR martine tracker [device_tracker.martine_not_so_binary] is Thuis). ACTIONS: 1. Group kitchen mass speaker [media_player.mass_keuken] with living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move]. 2. Wait 5 seconds. 3. Set volume to 0.14 for kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], living 2 mass speaker [media_player.mass_living_2], and mass move speaker [media_player.mass_move]. 4. Wait 5 seconds. 5. Execute random music script [script.random_music] with kitchen mass speaker [media_player.mass_keuken] as the target.",
"natural_language": {
"trigger": "When motion or presence is detected in the kitchen, specifically when the kitchen aqara pir [binary_sensor.keuken_aqara_pir], kitchen presence [binary_sensor.keuken_presence], or kitchen pir [binary_sensor.keuken_pir] changes from an inactive (off) to an active (on) state.",
"conditions": "The automation only runs if it is between 8:00 AM and 4:00 PM, the kitchen not playing [binary_sensor.keuken_not_playing] sensor has been on for at least 5 hours, the giel sleeps after night [input_boolean.giel_slaapt_na_nacht] switch is off, the philips tv [media_player.philips_tv] is off, and at least one of the residents, giel tracker [device_tracker.giel_not_so_binary] or martine tracker [device_tracker.martine_not_so_binary], is at home (Thuis).",
"action": "First, the kitchen mass speaker [media_player.mass_keuken] is grouped with the living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move] to play audio together. After a 5-second delay, the volume for all these speakers is set to 14%. Following another 5-second delay, the random music script [script.random_music] is started, using the kitchen mass speaker [media_player.mass_keuken] as the primary device."
},
"human_like": "Plays random music on the kitchen and other speakers when motion is detected in the kitchen during the day, provided no one is sleeping late, the TV is off, and the speakers haven't been playing for several hours.",
"complexity": "medium"
}
},
{
"id": "aad758d7-6bf2-415d-a445-f2b049948091",
"result": {
"structured": "TRIGGER: When random music button [input_button.random_muziek] is pressed. CONDITIONS: None. ACTIONS: First, join kitchen mass speaker [media_player.mass_keuken] with the group members: living 2 mass speaker [media_player.mass_living_2], mass 2c speaker [media_player.mass_2c], and mass move speaker [media_player.mass_move]. Then, wait 2 seconds. Then, set the volume level to 0.14 for kitchen mass speaker [media_player.mass_keuken], mass 2c speaker [media_player.mass_2c], living 2 mass speaker [media_player.mass_living_2], and mass move speaker [media_player.mass_move]. Then, wait 2 seconds. Then, execute the random music script [script.random_music] with the parameter sonos_entity set to kitchen mass speaker [media_player.mass_keuken].",
"natural_language": {
"trigger": "When the random music button [input_button.random_muziek] is pressed.",
"conditions": "There are no conditions for this automation.",
"action": "The automation will first create a speaker group by joining the kitchen mass speaker [media_player.mass_keuken] with the living 2 mass speaker [media_player.mass_living_2], the mass 2c speaker [media_player.mass_2c], and the mass move speaker [media_player.mass_move]. After a 2-second delay, it sets the volume to 14% for all the speakers in the group. Following another 2-second delay, it runs the random music script [script.random_music], specifying the kitchen mass speaker as the primary Sonos entity."
},
"human_like": "When you press the random music button, it groups several speakers together, sets their volume, and starts playing random music.",
"complexity": "low"
}
},
{
"id": "fc07bb5e-9a2e-4a53-8252-f8ce84560057",
"result": {
"structured": "TRIGGER: When dark inside sensor [sensor.dark_inside] changes to true. CONDITIONS: ha alarm [alarm_control_panel.ha_alarm] is disarmed. ACTIONS: Turn on tv spotlights [light.spots_tv] with the 'reading' profile and a 1800-second transition.",
"natural_language": {
"trigger": "When the dark inside sensor [sensor.dark_inside] indicates it has become dark inside.",
"conditions": "The home alarm system, ha alarm [alarm_control_panel.ha_alarm], must be disarmed.",
"action": "Turn on the tv spotlights [light.spots_tv] using the 'reading' light profile, fading them on over a period of 30 minutes (1800 seconds)."
},
"human_like": "Turns on the TV spotlights with a gentle fade when it gets dark inside, but only if the alarm is off.",
"complexity": "low"
}
},
{
"id": "acb79edb-f9f7-40c0-8e3d-d3e8fcdde011",
"result": {
"structured": "TRIGGER: When living occupancy [binary_sensor.living_bezetting] becomes occupied (on). CONDITIONS: martine leaves for work [binary_sensor.martine_vertrekt_naart_werk] is on AND tv spotlights [light.spots_tv] is off AND monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND monnikenheide calendar [calendar.monnikenheide] is off AND dark inside sensor [sensor.dark_inside] is true. ACTIONS: Turn on tv spotlights [light.spots_tv] with the 'reading' light profile.",
"natural_language": {
"trigger": "When the living occupancy sensor [binary_sensor.living_bezetting] detects that the living room is occupied.",
"conditions": "If martine leaves for work [binary_sensor.martine_vertrekt_naart_werk] is active, the tv spotlights [light.spots_tv] are currently off, the monnikenheide sensor [binary_sensor.v_monnikenheide] is on, the monnikenheide calendar [calendar.monnikenheide] shows no event, and the dark inside sensor [sensor.dark_inside] reports that it is dark inside.",
"action": "Turn on the tv spotlights [light.spots_tv] using the 'reading' light profile."
},
"human_like": "Turns on the TV spotlights for reading when the living room is occupied, but only if Martine has left for work, it's dark inside, and there's no conflicting calendar event.",
"complexity": "medium"
}
},
{
"id": "463b0a9c-0f70-4ccf-b095-52f8496c4361",
"result": {
"structured": "TRIGGER: When living occupancy [binary_sensor.living_bezetting] becomes occupied (on). CONDITIONS: (Time is between 06:30:00 and 11:00:00) AND (tv spotlights [light.spots_tv] is off) AND (dark inside sensor [sensor.dark_inside] is true) AND (school day sensor [binary_sensor.schooldag] is on OR late sensor [binary_sensor.v_late] is on). ACTIONS: Turn on tv spotlights [light.spots_tv] with the 'reading' light profile.",
"natural_language": {
"trigger": "When the living occupancy [binary_sensor.living_bezetting] detects someone in the room.",
"conditions": "The time must be between 6:30 AM and 11:00 AM, the tv spotlights [light.spots_tv] must be off, the dark inside sensor [sensor.dark_inside] must report it is dark, and it must be either a school day (school day sensor [binary_sensor.schooldag] is on) or a late day (late sensor [binary_sensor.v_late] is on).",
"action": "Turns on the tv spotlights [light.spots_tv] using the 'reading' light profile."
},
"human_like": "Turns on the TV spotlights for reading light in the morning on school days or late days when it's dark and someone is in the living room.",
"complexity": "medium"
}
},
{
"id": "88c47c95-cc75-4934-b670-71c94940ece1",
"result": {
"structured": "TRIGGER: When living occupancy [binary_sensor.living_bezetting] becomes occupied (on). CONDITIONS: (Time is between 04:00:00 and 11:00:00) AND (tv spotlights [light.spots_tv] is off) AND (early calendar [calendar.de_vroege] is off) AND (dark inside sensor [sensor.dark_inside] is true) AND (giel tracker [device_tracker.giel_not_so_binary] is Thuis) AND (day sensor [binary_sensor.v_w_dag] is on OR early sensor [binary_sensor.v_vroege] is on). ACTIONS: Turn on tv spotlights [light.spots_tv] with the 'reading' light profile.",
"natural_language": {
"trigger": "When the living occupancy sensor [binary_sensor.living_bezetting] detects that the living room is occupied.",
"conditions": "The automation only runs if the current time is between 4:00 AM and 11:00 AM, the tv spotlights [light.spots_tv] are currently off, the early calendar [calendar.de_vroege] is not active, the dark inside sensor [sensor.dark_inside] reports it is dark indoors, giel tracker [device_tracker.giel_not_so_binary] is at home, and either the day sensor [binary_sensor.v_w_dag] or the early sensor [binary_sensor.v_vroege] is active.",
"action": "Turns on the tv spotlights [light.spots_tv] using the 'reading' light profile."
},
"human_like": "Turns on the TV spotlights for reading in the morning when the living room is occupied, but only if it's dark and Giel is home.",
"complexity": "medium"
}
},
{
"id": "f57aadf0-5e1c-4729-b8df-a7bee6e0c159",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes to armed_away. CONDITIONS: tv spotlights [light.spots_tv] is on. ACTIONS: Turn on tv spotlights [light.spots_tv] with effect random and brightness 250, wait 1 minute, then turn on tv spotlights [light.spots_tv] with effect colorloop.",
"natural_language": {
"trigger": "When the ha alarm [alarm_control_panel.ha_alarm] is set to armed_away.",
"conditions": "The tv spotlights [light.spots_tv] must be currently turned on.",
"action": "Sets the tv spotlights [light.spots_tv] to a random effect at full brightness, waits for one minute, and then changes the effect to a continuous color loop."
},
"human_like": "When the alarm is set to away and the TV spotlights are on, it starts a disco light show with changing colors.",
"complexity": "low"
}
},
{
"id": "5bee2606-cd1d-4c67-9e56-e743dac7f63d",
"result": {
"structured": "TRIGGER: When dark inside sensor [sensor.dark_inside] changes to true. CONDITIONS: (on vacation boolean [input_boolean.op_verlof] is off) AND (ha alarm [alarm_control_panel.ha_alarm] is armed_home OR ha alarm [alarm_control_panel.ha_alarm] is armed_away). ACTIONS: Turn on tv spotlights [light.spots_tv] with effect random and brightness 250, then after a 1 minute delay, turn on tv spotlights [light.spots_tv] with effect colorloop.",
"natural_language": {
"trigger": "When the dark inside sensor [sensor.dark_inside] indicates it has become dark inside the house.",
"conditions": "The automation only runs if the on vacation boolean [input_boolean.op_verlof] is off, and the house alarm [alarm_control_panel.ha_alarm] is set to either armed_home or armed_away mode.",
"action": "It turns on the tv spotlights [light.spots_tv] with a random color effect at a brightness of 250. After a one-minute delay, it changes the light effect to a continuous color loop."
},
"human_like": "Turns on the TV spotlights with a colorful, dynamic effect when it gets dark inside and the house is occupied but not on vacation.",
"complexity": "medium"
}
},
{
"id": "68d49e49-8043-4c48-8eb6-a223b58524c6",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes state to Juist Weg. CONDITIONS: The current time is between 04:00:00 and 06:00:00. ACTIONS: Turn off tv spotlights [light.spots_tv].",
"natural_language": {
"trigger": "When the giel tracker [device_tracker.giel_not_so_binary] reports that the tracked person is 'Juist Weg' (Just Away).",
"conditions": "The automation only runs if the current time is between 4:00 AM and 6:00 AM.",
"action": "Turns off the tv spotlights [light.spots_tv]."
},
"human_like": "Turns off the TV spotlights early in the morning when a specific person leaves home.",
"complexity": "low"
}
},
{
"id": "f94efe62-f119-4763-aa2c-50c34edff73e",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes to disarmed. CONDITIONS: tv spotlights [light.spots_tv] is on AND dark inside sensor [sensor.dark_inside] is true. ACTIONS: Turn on tv spotlights [light.spots_tv] with effect set to none, then turn on tv spotlights [light.spots_tv] with profile set to reading.",
"natural_language": {
"trigger": "When the home alarm system [alarm_control_panel.ha_alarm] is disarmed.",
"conditions": "The tv spotlights [light.spots_tv] must already be on, and the dark inside sensor [sensor.dark_inside] must report that it is dark inside.",
"action": "First, it ensures the tv spotlights [light.spots_tv] are turned on with the 'none' effect, and then it sets the same lights to the 'reading' profile."
},
"human_like": "Turns on the TV spotlights to a reading profile when you arrive home and disarm the alarm, but only if it's dark inside and the lights are already on.",
"complexity": "low"
}
},
{
"id": "a0e8b297-6861-4b6a-a901-2a5ccda2d68c",
"result": {
"structured": "TRIGGER: At 2:00:00 daily. CONDITIONS: claptrap vacuum [vacuum.claptrap] is docked AND on vacation boolean [input_boolean.op_verlof] is off AND vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on. ACTIONS: IF vacuum counter [counter.stofzuiger] is 2 OR vacuum counter [counter.stofzuiger] is 6 THEN set claptrap vacuum [vacuum.claptrap] fan speed to Full Speed, set claptrap water level select [select.claptrap_water_level] to Off, start claptrap vacuum [vacuum.claptrap], and increment vacuum counter [counter.stofzuiger]. OTHERWISE (default) set claptrap vacuum [vacuum.claptrap] fan speed to Basic, set claptrap water level select [select.claptrap_water_level] to Off, start claptrap vacuum [vacuum.claptrap], and increment vacuum counter [counter.stofzuiger].",
"natural_language": {
"trigger": "Every day at 2:00 AM.",
"conditions": "The claptrap vacuum [vacuum.claptrap] must be docked, the on vacation boolean [input_boolean.op_verlof] must be off, and the vacuum downstairs boolean [input_boolean.stofzuiger_beneden] must be on.",
"action": "If the vacuum counter [counter.stofzuiger] is either 2 or 6, the vacuum will start with the fan speed set to 'Full Speed' and the water level set to 'Off'. In all other cases, the vacuum will start with the fan speed set to 'Basic' and the water level set to 'Off'. In both scenarios, the vacuum counter [counter.stofzuiger] is incremented after starting the vacuum."
},
"human_like": "Automatically starts the downstairs vacuum at 2 AM, adjusting its power based on a cleaning cycle counter, provided the home is not on vacation and the vacuum is ready.",
"complexity": "medium"
}
},
{
"id": "54032012-43dd-44f3-8892-1cccfc462929",
"result": {
"structured": "TRIGGER: At 3:15:00 daily. CONDITIONS: claptrap vacuum [vacuum.claptrap] is docked AND (water_box_status attribute of claptrap vacuum [vacuum.claptrap] is not 0) AND (water_box_carriage_status attribute of claptrap vacuum [vacuum.claptrap] is not 0) AND on vacation boolean [input_boolean.op_verlof] is off AND vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on AND vacuum counter [counter.stofzuiger] is 5. ACTIONS: Set fan speed of claptrap vacuum [vacuum.claptrap] to Silent, set claptrap water level select [select.claptrap_water_level] to Level3, set claptrap mop mode select [select.claptrap_mop_mode] to Deep, start cleaning for claptrap vacuum [vacuum.claptrap], and increment vacuum counter [counter.stofzuiger].",
"natural_language": {
"trigger": "The automation triggers every day at 3:15 AM.",
"conditions": "The claptrap vacuum [vacuum.claptrap] must be docked, its water box status and water box carriage status must both be non-zero (indicating the mop attachments are present and ready), the on vacation boolean [input_boolean.op_verlof] must be off, the vacuum downstairs boolean [input_boolean.stofzuiger_beneden] must be on, and the vacuum counter [counter.stofzuiger] must be exactly at 5.",
"action": "It configures the vacuum for a deep mop cleaning by setting its fan speed to Silent, selecting the water level to Level3, and setting the mop mode to Deep. Then, it starts the vacuum cleaning and increments the vacuum counter [counter.stofzuiger]."
},
"human_like": "Automatically starts a deep mopping session with the downstairs vacuum at 3:15 AM, provided the vacuum is ready, the house is not on vacation, and the cleaning counter is at a specific value.",
"complexity": "medium"
}
},
{
"id": "1083e0fb-e5d5-44c6-8362-eec574d7d480",
"result": {
"structured": "TRIGGER: At 5:30:00. CONDITIONS: on vacation boolean [input_boolean.op_verlof] is off AND vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on AND vacuum counter [counter.stofzuiger] is 6. ACTIONS: Set claptrap vacuum [vacuum.claptrap] fan speed to Basic, set claptrap water level select [select.claptrap_water_level] to Off, set claptrap mop mode select [select.claptrap_mop_mode] to Standard, increment vacuum counter [counter.stofzuiger].",
"natural_language": {
"trigger": "The automation triggers every day at 5:30 AM.",
"conditions": "The automation will only run if the on vacation boolean [input_boolean.op_verlof] is off, the vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on, and the vacuum counter [counter.stofzuiger] is set to 6.",
"action": "It will configure the claptrap vacuum [vacuum.claptrap] by setting its fan speed to 'Basic', setting the claptrap water level select [select.claptrap_water_level] to 'Off', and setting the claptrap mop mode select [select.claptrap_mop_mode] to 'Standard'. Finally, it will increase the vacuum counter [counter.stofzuiger] by one."
},
"human_like": "At 5:30 AM, if not on vacation and the downstairs vacuum is scheduled, it configures the robot vacuum for a dry cleaning run and increments a usage counter.",
"complexity": "low"
}
},
{
"id": "6f7dcf00-cbe3-44c5-accf-ef71310d97c2",
"result": {
"structured": "TRIGGER: When claptrap vacuum [vacuum.claptrap] changes state from cleaning to error. CONDITIONS: (vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on) AND ((automation.stofzuiger_beneden last_triggered less than 10800 seconds ago) OR (automation.stofzuiger_dweilen_beneden last_triggered less than 10800 seconds ago)). ACTIONS: If vacuum counter [counter.stofzuiger] value is 5 OR 6, then set vacuum counter [counter.stofzuiger] to 3 AND set claptrap mop mode select [select.claptrap_mop_mode] to Standard; otherwise decrement vacuum counter [counter.stofzuiger].",
"natural_language": {
"trigger": "When the claptrap vacuum [vacuum.claptrap] reports an error while transitioning from a cleaning state.",
"conditions": "The vacuum downstairs boolean [input_boolean.stofzuiger_beneden] must be turned on. Additionally, either the automation 'stofzuiger_beneden' or the automation 'stofzuiger_dweilen_beneden' must have been triggered within the last three hours (10800 seconds).",
"action": "If the vacuum counter [counter.stofzuiger] currently shows a value of 5 or 6, the automation will reset the counter to 3 and change the claptrap mop mode select [select.claptrap_mop_mode] to Standard. Otherwise, it will simply decrease the vacuum counter by one."
},
"human_like": "Handles vacuum cleaner errors by adjusting a counter and mop mode, but only if the downstairs vacuum automation is active and a related automation has run recently.",
"complexity": "medium"
}
},
{
"id": "e1f88cd0-3704-4d86-9b89-4a229e234a06",
"result": {
"structured": "TRIGGER: At 06:50:00 daily. CONDITIONS: (vacuum counter [counter.stofzuiger] is 1 OR vacuum counter [counter.stofzuiger] is 7) AND vacuum clean notification boolean [input_boolean.stofzuiger_leegmaken_melding] is on AND claptrap vacuum [vacuum.claptrap] is docked AND on vacation boolean [input_boolean.op_verlof] is off. ACTIONS: If vacuum counter [counter.stofzuiger] is 1, then send a notification to everyone notification [notify.iedereen] with title 'Claptrap' and message 'De stofzuiger mag weer leeggemaakt worden.', run clean trash script [script.bitch_prullenbak], and increment vacuum counter [counter.stofzuiger]. Otherwise, send a notification to everyone notification [notify.iedereen] with title 'Claptrap' and message 'De stofzuiger mag weer leeggemaakt worden. Water eruit en dweil eraf!', run clean trash script [script.bitch_prullenbak], and reset vacuum counter [counter.stofzuiger] to 0.",
"natural_language": {
"trigger": "The automation runs every day at 6:50 AM.",
"conditions": "The vacuum counter [counter.stofzuiger] must be set to either 1 or 7. The vacuum clean notification boolean [input_boolean.stofzuiger_leegmaken_melding] must be turned on. The claptrap vacuum [vacuum.claptrap] must be docked. Finally, the on vacation boolean [input_boolean.op_verlof] must be off, indicating the user is not on vacation.",
"action": "If the vacuum counter [counter.stofzuiger] is exactly 1, it sends a notification to everyone [notify.iedereen] reminding them to empty the vacuum, runs the clean trash script [script.bitch_prullenbak], and increments the counter by one. If the counter is 7, it sends a similar notification with an extra instruction to remove water and the mop, runs the same script, and resets the counter back to zero."
},
"human_like": "Sends a morning reminder to empty the robot vacuum when it's due for maintenance, with different messages for the first and seventh cleaning cycles.",
"complexity": "medium"
}
},
{
"id": "3a1e8a85-3c1a-42ae-97c3-83f9b0b32d26",
"result": {
"structured": "TRIGGER: At 16:00:00 daily. CONDITIONS: on vacation boolean [input_boolean.op_verlof] is off AND vacuum counter [counter.stofzuiger] is 3 AND claptrap vacuum [vacuum.claptrap] is docked AND vacuum clean notification boolean [input_boolean.stofzuiger_leegmaken_melding] is on. ACTIONS: Send a notification via everyone notification [notify.iedereen] with title 'Claptrap' and message 'Onze Claptrap leegmaken. Proper water en ne nieuwe dweil geven.', including an action button 'Leeggemaakt. Terug in uw kot.' that triggers RETURN. Then, turn on clean trash script [script.bitch_prullenbak]. Finally, increment vacuum counter [counter.stofzuiger].",
"natural_language": {
"trigger": "Every day at 4:00 PM.",
"conditions": "If the on vacation boolean [input_boolean.op_verlof] is off, the vacuum counter [counter.stofzuiger] is set to 3, the claptrap vacuum [vacuum.claptrap] is docked, and the vacuum clean notification boolean [input_boolean.stofzuiger_leegmaken_melding] is turned on.",
"action": "Sends a notification to everyone via everyone notification [notify.iedereen] with the title 'Claptrap' and a message prompting to empty the vacuum, provide clean water, and a new mop, including a button to confirm completion. It then runs the clean trash script [script.bitch_prullenbak] and increases the vacuum counter [counter.stofzuiger] by one."
},
"human_like": "At 4 PM, if conditions are met, it sends a reminder to empty the vacuum and prepare for mopping, then runs a cleaning script and updates the usage counter.",
"complexity": "medium"
}
},
{
"id": "33d24a7e-0c62-4802-aac4-ffa4bba81d11",
"result": {
"structured": "TRIGGER: When giel tracker [device_tracker.giel_not_so_binary] changes from 'Juist Weg' to 'Afwezig' AND remains for 10 minutes OR when martine tracker [device_tracker.martine_not_so_binary] changes from 'Juist Weg' to 'Afwezig' AND remains for 10 minutes. CONDITIONS: claptrap vacuum [vacuum.claptrap] is docked AND on vacation boolean [input_boolean.op_verlof] is off AND vacuum downstairs boolean [input_boolean.stofzuiger_beneden] is on. ACTIONS: IF (time is after 07:00:00 AND before 09:00:00 AND weekday is Monday, Tuesday, Wednesday, Thursday, or Friday) THEN set claptrap vacuum [vacuum.claptrap] fan speed to Strong, set claptrap water level select [select.claptrap_water_level] to 'Off', set vacuum room target select [input_select.vacuum_target_room] to 'Keuken', and run vacuum clean room script [script.vacuum_clean_room]. OTHERWISE (default) IF (time is after 10:00:00 AND before 14:00:00 AND (giel tracker [device_tracker.giel_not_so_binary] is not 'Thuis' OR martine tracker [device_tracker.martine_not_so_binary] is not 'Thuis')) THEN set claptrap vacuum [vacuum.claptrap] fan speed to Full Speed, set claptrap water level select [select.claptrap_water_level] to 'Off', set vacuum room target select [input_select.vacuum_target_room] to a random room from the list ['Keuken', 'Inkom', 'Danszaal', 'Zithoek'], and run vacuum clean room script [script.vacuum_clean_room].",
"natural_language": {
"trigger": "When either giel tracker [device_tracker.giel_not_so_binary] or martine tracker [device_tracker.martine_not_so_binary] changes from the state 'Juist Weg' to 'Afwezig' and stays in that new state for at least 10 minutes.",
"conditions": "The claptrap vacuum [vacuum.claptrap] must be docked, the on vacation boolean [input_boolean.op_verlof] must be off, and the vacuum downstairs boolean [input_boolean.stofzuiger_beneden] must be on.",
"action": "If the trigger fires between 7 AM and 9 AM on a weekday (Monday to Friday), the automation sets the vacuum's fan speed to Strong, turns its water level off, sets the target room to Keuken, and starts the vacuum clean room script. Otherwise, if it's between 10 AM and 2 PM and neither giel tracker [device_tracker.giel_not_so_binary] nor martine tracker [device_tracker.martine_not_so_binary] are at 'Thuis', it sets the fan speed to Full Speed, turns the water level off, picks a random target room from a list, and starts the cleaning script."
},
"human_like": "Automatically starts the robot vacuum when both residents have been away for a while, choosing a specific room in the morning or a random room in the afternoon, depending on the time and their presence.",
"complexity": "medium"
}
},
{
"id": "enable_streamz",
"result": {
"structured": "TRIGGER: When allow streamz boolean [input_boolean.allowstreamz] changes to on. CONDITIONS: None. ACTIONS: Execute AdGuard service 'remove_url' with the parameter url set to 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-streamz.txt'.",
"natural_language": {
"trigger": "When the allow streamz boolean [input_boolean.allowstreamz] is turned on.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Removes a specific URL blocklist from AdGuard by calling the 'remove_url' service with the URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-streamz.txt'."
},
"human_like": "Removes the Streamz blocklist from AdGuard when the user enables Streamz.",
"complexity": "low"
}
},
{
"id": "59165b2c-f8ed-4a14-a95e-73b61f3fc4e6",
"result": {
"structured": "TRIGGER: At 23:02 OR at 08:30. CONDITIONS: None. ACTIONS: If the current hour is 23, turn off the automations: welkom_allemaal_sonos_paused [automation.welkom_allemaal_sonos_paused], welkom_allemaal_sonos_playing [automation.welkom_allemaal_sonos_playing], welkom_sonos_paused [automation.welkom_sonos_paused], welkom_sonos_playing [automation.welkom_sonos_playing]. Otherwise, turn them on.",
"natural_language": {
"trigger": "The automation triggers at 23:02 and at 08:30 every day.",
"conditions": "There are no conditions that need to be met.",
"action": "At 23:02, it turns off the four specified welcome automations. At 08:30, it turns them back on."
},
"human_like": "This automation disables the welcome automations at night and re-enables them in the morning.",
"complexity": "medium"
}
},
{
"id": "enable_tiktok",
"result": {
"structured": "TRIGGER: When allow tiktok boolean [input_boolean.allowtiktok] turns on. CONDITIONS: None. ACTIONS: Execute the 'adguard.remove_url' service with the URL parameter set to 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-tiktok.txt'.",
"natural_language": {
"trigger": "When the allow tiktok boolean [input_boolean.allowtiktok] is turned on.",
"conditions": "There are no conditions that must be met.",
"action": "Removes the TikTok blocklist from the AdGuard service by calling the 'adguard.remove_url' action with the specific blocklist URL."
},
"human_like": "Removes the TikTok blocklist from AdGuard when the user enables TikTok access.",
"complexity": "low"
}
},
{
"id": "disable_tiktok",
"result": {
"structured": "TRIGGER: When allow tiktok boolean [input_boolean.allowtiktok] changes to off. ACTIONS: Add a URL filter to AdGuard using the service adguard.add_url with the URL https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-tiktok.txt and the name TikTok.",
"natural_language": {
"trigger": "When the allow tiktok boolean [input_boolean.allowtiktok] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a TikTok blocklist to the AdGuard service by calling the adguard.add_url action with the specified URL and name."
},
"human_like": "Automatically adds a TikTok blocklist to AdGuard when the 'allow TikTok' switch is turned off.",
"complexity": "low"
}
},
{
"id": "2caba416-4d71-4f30-9ba6-071395f6224c",
"result": {
"structured": "TRIGGER: When kitchen fridge switch [switch.keuken_ijskast] remains off for 10 minutes OR when basement heat pump boiler switch [switch.kelder_warmtepompboiler] remains off for 10 minutes. CONDITIONS: None. ACTIONS: If the trigger was kitchen fridge switch [switch.keuken_ijskast] turning off, then send a notification to gphone mobile app [notify.mobile_app_gphone] with message 'De ijskast staat al 10min uit.' and turn on kitchen fridge switch [switch.keuken_ijskast]. If the trigger was basement heat pump boiler switch [switch.kelder_warmtepompboiler] turning off, then send a notification to gphone mobile app [notify.mobile_app_gphone] with message 'De boiler staat al 10min uit.' and turn on basement heat pump boiler switch [switch.kelder_warmtepompboiler]. (Note: The automation includes a third choose condition referencing a trigger id 'warmtepomp', but no corresponding trigger is defined in the YAML. This condition will never be met and is omitted from the logical description.)",
"natural_language": {
"trigger": "The automation triggers if the kitchen fridge switch [switch.keuken_ijskast] stays off for 10 minutes, or if the basement heat pump boiler switch [switch.kelder_warmtepompboiler] stays off for 10 minutes.",
"conditions": "There are no additional conditions that must be met after the trigger.",
"action": "Depending on which device triggered the automation, it will send a specific notification to the mobile phone and attempt to turn the device back on. If the fridge switch was off, it sends a message saying 'De ijskast staat al 10min uit.' and turns the fridge switch on. If the heat pump boiler switch was off, it sends a message saying 'De boiler staat al 10min uit.' and turns the boiler switch on. The automation also contains a rule for a 'warmtepomp' trigger, but since no such trigger is defined, this part will not run."
},
"human_like": "This automation monitors the fridge and heat pump boiler, sending an alert and trying to turn them back on if they have been off for 10 minutes.",
"complexity": "medium"
}
},
{
"id": "b089d944-00eb-4e69-8be4-18be18af8759",
"result": {
"structured": "TRIGGER: When garden occupancy [binary_sensor.tuin_bezetting] becomes on and remains for 15 seconds. CONDITIONS: (martine leaves for work [binary_sensor.martine_vertrekt_naart_werk] is off) AND (giel leaves for work [binary_sensor.giel_vertrekt_naart_werk] is off) AND (ha alarm [alarm_control_panel.ha_alarm] is armed_away OR armed_home OR armed_night). ACTIONS: Trigger ha alarm [alarm_control_panel.ha_alarm].",
"natural_language": {
"trigger": "When the garden occupancy [binary_sensor.tuin_bezetting] sensor detects occupancy and remains in that state for at least 15 seconds.",
"conditions": "Both the martine leaves for work [binary_sensor.martine_vertrekt_naart_werk] and giel leaves for work [binary_sensor.giel_vertrekt_naart_werk] sensors must be off, indicating neither person is leaving for work. Additionally, the ha alarm [alarm_control_panel.ha_alarm] must be in an armed state, either armed_away, armed_home, or armed_night.",
"action": "Triggers the ha alarm [alarm_control_panel.ha_alarm]."
},
"human_like": "Triggers the alarm if someone is detected in the garden while the alarm is armed and no one is scheduled to leave for work.",
"complexity": "medium"
}
},
{
"id": "3daca03e-26d2-4665-a060-d655025496df",
"result": {
"structured": "TRIGGER: When washer running [binary_sensor.wasmachien_staat_op] turns off OR When dryer running [binary_sensor.droogkast_staat_op] turns off OR When dishwasher running [binary_sensor.afwasmachien_staat_op] turns off. CONDITIONS: None. ACTIONS: If the trigger was washer running [binary_sensor.wasmachien_staat_op] turning off, then turn off washer optimizer automation [automation.wasmachien_optimizer]. If the trigger was dishwasher running [binary_sensor.afwasmachien_staat_op] turning off, then turn off dishwasher optimizer automation [automation.afwasmachien_optimizer]. If the trigger was dryer running [binary_sensor.droogkast_staat_op] turning off, then turn off dryer optimizer automation [automation.droogkast_optimizer].",
"natural_language": {
"trigger": "When the washer running [binary_sensor.wasmachien_staat_op] stops running, or when the dryer running [binary_sensor.droogkast_staat_op] stops running, or when the dishwasher running [binary_sensor.afwasmachien_staat_op] stops running.",
"conditions": "There are no conditions for this automation.",
"action": "Depending on which appliance stopped, the corresponding optimizer automation is turned off. If the washer stopped, the washer optimizer automation [automation.wasmachien_optimizer] is turned off. If the dishwasher stopped, the dishwasher optimizer automation [automation.afwasmachien_optimizer] is turned off. If the dryer stopped, the dryer optimizer automation [automation.droogkast_optimizer] is turned off."
},
"human_like": "Turns off the energy optimizer automation for a washing machine, dryer, or dishwasher when that appliance finishes its cycle.",
"complexity": "medium"
}
},
{
"id": "960f664c-f0c0-4800-881c-06bf2dc945ad",
"result": {
"structured": "TRIGGER: When washer button [input_button.wasmachien] changes state OR When dryer button [input_button.droogkast] changes state OR When dishwasher button [input_button.afwasmachien] changes state. CONDITIONS: None. ACTIONS: If the trigger was washer button [input_button.wasmachien], then turn off washer switch [switch.wasmachien] AND turn on washer optimizer automation [automation.wasmachien_optimizer]. If the trigger was dishwasher button [input_button.afwasmachien], then turn off dishwasher switch [switch.afwasmachien] AND turn on dishwasher optimizer automation [automation.afwasmachien_optimizer]. If the trigger was dryer button [input_button.droogkast], then turn off dryer switch [switch.droogkast] AND turn on dryer optimizer automation [automation.droogkast_optimizer].",
"natural_language": {
"trigger": "When the washer button [input_button.wasmachien], dryer button [input_button.droogkast], or dishwasher button [input_button.afwasmachien] is pressed (i.e., its state changes).",
"conditions": "There are no conditions for this automation.",
"action": "Depending on which button was pressed, the corresponding appliance switch is turned off and its associated optimizer automation is turned on. Pressing the washer button turns off the washer switch and enables the washer optimizer automation. Pressing the dishwasher button turns off the dishwasher switch and enables the dishwasher optimizer automation. Pressing the dryer button turns off the dryer switch and enables the dryer optimizer automation."
},
"human_like": "Starts the energy optimization for a selected appliance (washer, dryer, or dishwasher) by turning it off and activating its optimizer when its corresponding button is pressed.",
"complexity": "medium"
}
},
{
"id": "'1588617733442'",
"result": {
"structured": "TRIGGER: At 22:30 OR at 22:00. CONDITIONS: kids tv [media_player.tv_der_kinders] is on. ACTIONS: If (time is before 22:10:00 AND (school day sensor [binary_sensor.schooldag] is on OR (today is Sunday AND belgium holiday calendar [calendar.belgie_verlof] is off))) THEN turn off kids tv [media_player.tv_der_kinders]. OTHERWISE, turn off kids tv [media_player.tv_der_kinders].",
"natural_language": {
"trigger": "The automation triggers at either 10:00 PM or 10:30 PM.",
"conditions": "It only runs if the kids tv [media_player.tv_der_kinders] is currently turned on.",
"action": "If the time is before 10:10 PM and it is either a school day, or it is Sunday and there is no Belgian holiday, then the TV is turned off. In all other cases (including after 10:10 PM or if the earlier conditions are not met), the TV is also turned off."
},
"human_like": "Turns off the kids' TV at a set bedtime, with an earlier cutoff on school nights and non-holiday Sundays.",
"complexity": "medium"
}
},
{
"id": "c4175e45-eb8f-44e3-a0b5-0c41d861cbdf",
"result": {
"structured": "TRIGGER: Every 10 seconds (time pattern). CONDITIONS: philips tv [media_player.philips_tv] is on. ACTIONS: First, update the state of philips tv [media_player.philips_tv]. Then, wait 2 seconds. Then, if the volume level of philips tv [media_player.philips_tv] is greater than 0, set the volume of philips tv [media_player.philips_tv] to 0.",
"natural_language": {
"trigger": "The automation triggers every 10 seconds.",
"conditions": "The philips tv [media_player.philips_tv] must be in the 'on' state.",
"action": "It first refreshes the state of the philips tv [media_player.philips_tv], waits for 2 seconds, and then, if the TV's volume level is above 0, it sets the volume to 0."
},
"human_like": "Keeps the Philips TV volume at zero by checking and adjusting it every 10 seconds while the TV is on.",
"complexity": "medium"
}
},
{
"id": "'1596733904625'",
"result": {
"structured": "TRIGGER: Every 33 minutes (time_pattern). CONDITIONS: The difference between the current time and the last update time of uptime sensor [sensor.uptime] is greater than 0.05 hours. ACTIONS: Execute the python_script.unavailable script.",
"natural_language": {
"trigger": "The automation triggers every 33 minutes.",
"conditions": "It checks if the system has been running for more than 0.05 hours since the uptime sensor [sensor.uptime] was last updated.",
"action": "It runs a Python script called 'unavailable'."
},
"human_like": "Runs a script to update unavailable and battery entities periodically, but only if the system has been up for a short while.",
"complexity": "low"
}
},
{
"id": "a9254cf1-0d4e-436b-b2d5-23a42b4f71b7",
"result": {
"structured": "TRIGGER: When playlists todo [todo.playlists] has 0 items OR radio stations todo [todo.radio_stations] has 0 items. ACTIONS: Execute uncheck media todo script [script.uncheck_media_todo].",
"natural_language": {
"trigger": "When either the playlists todo [todo.playlists] list or the radio stations todo [todo.radio_stations] list becomes empty (has zero items).",
"conditions": "There are no conditions specified for this automation.",
"action": "Runs the uncheck media todo script [script.uncheck_media_todo]."
},
"human_like": "Automatically runs a script to handle media todo items when either the playlists or radio stations list is empty.",
"complexity": "low"
}
},
{
"id": "a76736f6-a5c1-40a6-b764-2f4c3786c04b",
"result": {
"structured": "TRIGGER: Every 50 minutes (at minutes matching the pattern /50). CONDITIONS: The elevation attribute of sun [sun.sun] is above 10 degrees. ACTIONS: Update the current uv index sensor [sensor.current_uv_index], then wait 1 minute, then check if current uv level sensor [sensor.current_uv_level] is unavailable, then wait 1 minute, then update the current uv index sensor [sensor.current_uv_index] again.",
"natural_language": {
"trigger": "The automation runs every 50 minutes, at times when the minutes of the hour are divisible by 50 (e.g., 0, 50).",
"conditions": "The sun [sun.sun] must be at least 10 degrees above the horizon, as determined by its elevation attribute.",
"action": "First, it refreshes the data for the current uv index sensor [sensor.current_uv_index]. After a one-minute delay, it checks whether the current uv level sensor [sensor.current_uv_level] is unavailable. Following another one-minute delay, it refreshes the current uv index sensor [sensor.current_uv_index] once more."
},
"human_like": "Updates the UV index sensor regularly during daylight hours when the sun is high enough, with retry logic if the UV level sensor is unavailable.",
"complexity": "medium"
}
},
{
"id": "32aa0181-1e81-4446-8bdd-ad60b9b65e8f",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes from arming to armed_night. CONDITIONS: None. ACTIONS: Wait 3 minutes, then turn off all garden lighting [light.alle_tuinverlichting], wait 1 minute, then turn off tv spotlights [light.spots_tv], then turn off laundry room light [light.waskot], then turn off wc light [light.wc], then turn off dance hall chandelier [light.danszaal_luster], then turn off kitchen ceiling light [light.keuken_luster], then turn off seating area chandelier [light.zithoek_luster], then turn off kitchen entry light [light.keuken_inkom], then turn off kitchen spotlights [light.keuken_spots], then turn off dance hall spots [light.danszaal_spots].",
"natural_language": {
"trigger": "When the home alarm system [alarm_control_panel.ha_alarm] transitions from the 'arming' state to the 'armed_night' state.",
"conditions": "There are no conditions for this automation.",
"action": "After a 3-minute delay, it turns off the all garden lighting [light.alle_tuinverlichting]. After another 1-minute delay, it turns off a series of indoor lights in sequence: the tv spotlights [light.spots_tv], the laundry room light [light.waskot], the wc light [light.wc], the dance hall chandelier [light.danszaal_luster], the kitchen ceiling light [light.keuken_luster], the seating area chandelier [light.zithoek_luster], the kitchen entry light [light.keuken_inkom], the kitchen spotlights [light.keuken_spots], and finally the dance hall spots [light.danszaal_spots]."
},
"human_like": "Turns off all outdoor and indoor lights in a timed sequence when the night alarm is armed, creating a gradual shutdown for the evening.",
"complexity": "medium"
}
},
{
"id": "fadfb85b-2200-498e-aea4-e8eecfa09957",
"result": {
"structured": "TRIGGER: When festival calendar [calendar.festivallekes] changes to off. CONDITIONS: on vacation boolean [input_boolean.op_verlof] is on. ACTIONS: Wait until the current hour is 9 (9:00 AM), then send a notification via notification service [notify.giel_en_martine] with the message 'Gaan jullie naar huis vertrekken? Zet dan Vakantie-modus uit.' and two actionable buttons: one to turn on Vakantie-modus (VERLOF_AAN) and one to turn it off (VERLOF_UIT).",
"natural_language": {
"trigger": "When the festival calendar [calendar.festivallekes] indicates that the festival event has ended (state changes to off).",
"conditions": "The automation only proceeds if the on vacation boolean [input_boolean.op_verlof] is currently set to on.",
"action": "The automation waits until 9:00 AM, then sends a notification to Giel and Martine [notify.giel_en_martine] asking if they are heading home and to turn off Vakantie-modus, providing buttons to either turn the mode on or off."
},
"human_like": "Sends a reminder notification at 9 AM after a festival ends, asking if vacation mode should be turned off, but only if vacation mode is currently active.",
"complexity": "medium"
}
},
{
"id": "c9229ffd-c000-42c0-b499-9c4a3a300927",
"result": {
"structured": "TRIGGER: At 01:00. CONDITIONS: (outside fresh enough sensor [binary_sensor.buiten_fris_genoeg] is on) AND (filtered outside temperature [sensor.buitentemperatuur_gefilterd] is above 10) AND (ventilation cooling boolean [input_boolean.verluchting_afkoeling] is off). ACTIONS: Start ventilation 1 hour script [script.verluchting_1_uur].",
"natural_language": {
"trigger": "The automation triggers at 1:00 AM.",
"conditions": "The outside fresh enough sensor [binary_sensor.buiten_fris_genoeg] must be on, the filtered outside temperature [sensor.buitentemperatuur_gefilterd] must be above 10 degrees, and the ventilation cooling boolean [input_boolean.verluchting_afkoeling] must be off.",
"action": "It starts the ventilation 1 hour script [script.verluchting_1_uur]."
},
"human_like": "Starts a one-hour ventilation cycle at 1 AM if the outside air is fresh and cool enough, and cooling ventilation is not already active.",
"complexity": "low"
}
},
{
"id": "cec7e5ad-31f9-4207-b256-f9cb5f4affb0",
"result": {
"structured": "TRIGGER: At 11:00 OR At 16:00 OR At 01:00. CONDITIONS: (outside fresh enough sensor [binary_sensor.buiten_fris_genoeg] is on) AND (ventilation cooling boolean [input_boolean.verluchting_afkoeling] is off). ACTIONS: Start ventilation 2 hour script [script.verluchting_2_uur].",
"natural_language": {
"trigger": "The automation triggers at three specific times: 11:00, 16:00, and 01:00.",
"conditions": "Both conditions must be true: the outside fresh enough sensor [binary_sensor.buiten_fris_genoeg] must be on, and the ventilation cooling boolean [input_boolean.verluchting_afkoeling] must be off.",
"action": "It starts the ventilation 2 hour script [script.verluchting_2_uur]."
},
"human_like": "Turns on ventilation for two hours at scheduled times, but only if the outside air is fresh enough and a separate cooling mode is not active.",
"complexity": "low"
}
},
{
"id": "b7bc2700-3167-44bd-8a11-b75dcbc50dd0",
"result": {
"structured": "TRIGGER: When cooling desired sensor [binary_sensor.afkoeling_gewenst] changes from off to on. CONDITIONS: cooling desired sensor [binary_sensor.afkoeling_gewenst] is on. ACTIONS: Turn on bathroom ventilation switch [switch.badkamer_verluchting] AND Turn on attic ventilation switch [switch.zolder_verluchting] AND Turn on ventilation cooling boolean [input_boolean.verluchting_afkoeling].",
"natural_language": {
"trigger": "When the cooling desired sensor [binary_sensor.afkoeling_gewenst] indicates that cooling is desired by changing its state from off to on.",
"conditions": "The automation only proceeds if the cooling desired sensor [binary_sensor.afkoeling_gewenst] is still in the 'on' state at the moment of evaluation.",
"action": "It turns on the bathroom ventilation switch [switch.badkamer_verluchting] and the attic ventilation switch [switch.zolder_verluchting] to start ventilation for cooling. It also turns on the ventilation cooling boolean [input_boolean.verluchting_afkoeling] to track that this cooling ventilation mode is active."
},
"human_like": "Turns on bathroom and attic ventilation when cooling is desired.",
"complexity": "low"
}
},
{
"id": "3730dffd-c23d-40ac-bca8-d84821652fc4",
"result": {
"structured": "TRIGGER: When cooling desired sensor [binary_sensor.afkoeling_gewenst] changes from on to off. CONDITIONS: cooling desired sensor [binary_sensor.afkoeling_gewenst] is off. ACTIONS: Turn off bathroom ventilation switch [switch.badkamer_verluchting] AND Turn off attic ventilation switch [switch.zolder_verluchting] AND Turn off ventilation cooling boolean [input_boolean.verluchting_afkoeling].",
"natural_language": {
"trigger": "When the cooling desired sensor [binary_sensor.afkoeling_gewenst] changes state from on to off.",
"conditions": "The cooling desired sensor [binary_sensor.afkoeling_gewenst] must be in the off state.",
"action": "Turns off the bathroom ventilation switch [switch.badkamer_verluchting], the attic ventilation switch [switch.zolder_verluchting], and the ventilation cooling boolean [input_boolean.verluchting_afkoeling]."
},
"human_like": "Turns off the bathroom and attic ventilation when cooling is no longer desired.",
"complexity": "low"
}
},
{
"id": "0ac1bc1f-98e8-4d13-8626-3a71c4bfe7f5",
"result": {
"structured": "TRIGGER: When kitchen humidity sensor [sensor.keuken_luchtvochtigheid] remains above 95% for 60 seconds OR When bathroom trend up sensor [binary_sensor.badkamer_trend_up] turns on. CONDITIONS: (bathroom humidity sensor [sensor.badkamer_luchtvochtigheid] is below 101%) AND (kitchen humidity sensor [sensor.keuken_luchtvochtigheid] is below 101%) AND ((bathroom trend down sensor [binary_sensor.badkamer_trend_down] remains off for 10 minutes) OR (bathroom humidity sensor [sensor.badkamer_luchtvochtigheid] is above 70%)). ACTIONS: Start ventilation 1 hour script [script.verluchting_1_uur].",
"natural_language": {
"trigger": "When the kitchen humidity sensor [sensor.keuken_luchtvochtigheid] stays above 95% for at least one minute, or when the bathroom trend up sensor [binary_sensor.badkamer_trend_up] indicates an upward trend by turning on.",
"conditions": "The bathroom humidity sensor [sensor.badkamer_luchtvochtigheid] must read below 101%, and the kitchen humidity sensor [sensor.keuken_luchtvochtigheid] must also read below 101%. Additionally, either the bathroom trend down sensor [binary_sensor.badkamer_trend_down] has been off for at least ten minutes, or the bathroom humidity sensor [sensor.badkamer_luchtvochtigheid] is currently above 70%.",
"action": "Activates the ventilation system for one hour by starting the ventilation 1 hour script [script.verluchting_1_uur]."
},
"human_like": "Turns on ventilation for an hour when humidity in the kitchen is too high or the bathroom humidity is trending up, provided certain humidity limits and trend conditions are met.",
"complexity": "medium"
}
},
{
"id": "faac69de-f54b-4ac5-82c1-4de36624c400",
"result": {
"structured": "TRIGGER: When ha alarm [alarm_control_panel.ha_alarm] changes to armed_night OR When ha alarm [alarm_control_panel.ha_alarm] changes from armed_night to disarmed OR When gphone focus [binary_sensor.gphone_focus] is off AND gphone bermuda tracker [device_tracker.gphone_bermuda] is home OR When mphone focus [binary_sensor.mphone_focus] is off AND mphone bermuda tracker [device_tracker.mphone_bermuda] is home OR When nphone focus sensor [binary_sensor.nphone_focus] is off AND nphone bermuda tracker [device_tracker.nphone_bermuda] is home. CONDITIONS: None (conditions are embedded within the choose action). ACTIONS: Choose based on trigger: IF trigger is 'uit', then wait 15 minutes, then set bedroom climate [climate.slaapkamer], fien climate [climate.fien], and noor climate [climate.noor] to preset mode 'away', and turn off (with stop actions) Verwarming bij aanwezigheid Fien [automation.verwarming_bij_aanwezigheid_fien], Verwarming bij aanwezigheid Noor [automation.verwarming_bij_aanwezigheid_noor], and Verwarming bij aanwezigheid slaapkamer [automation.verwarming_bij_aanwezigheid_slaapkamer]. IF trigger is 'aan', then turn on Verwarming bij aanwezigheid Fien [automation.verwarming_bij_aanwezigheid_fien]. IF trigger is 'aan_slaapkamer' AND gphone focus [binary_sensor.gphone_focus] is off AND mphone focus [binary_sensor.mphone_focus] is off, then turn on Verwarming bij aanwezigheid slaapkamer [automation.verwarming_bij_aanwezigheid_slaapkamer]. IF trigger is 'aan_slaapkamer_noor', then turn on Verwarming bij aanwezigheid Noor [automation.verwarming_bij_aanwezigheid_noor].",
"natural_language": {
"trigger": "The automation can be triggered in five ways: when the house alarm [alarm_control_panel.ha_alarm] is set to 'armed_night'; when the alarm changes from 'armed_night' to 'disarmed'; when the gphone focus [binary_sensor.gphone_focus] is off and the gphone bermuda tracker [device_tracker.gphone_bermuda] is home; when the mphone focus [binary_sensor.mphone_focus] is off and the mphone bermuda tracker [device_tracker.mphone_bermuda] is home; or when the nphone focus sensor [binary_sensor.nphone_focus] is off and the nphone bermuda tracker [device_tracker.nphone_bermuda] is home.",
"conditions": "There are no global conditions. Specific conditions are checked within the action sequence for certain triggers. For the trigger identified as 'aan_slaapkamer', an additional condition requires that both the gphone focus [binary_sensor.gphone_focus] and the mphone focus [binary_sensor.mphone_focus] are off.",
"action": "The action taken depends on which trigger fired. If the alarm is set to night mode, after a 15-minute delay, the heating in the bedroom, Fien's room, and Noor's room is set to 'away' mode and three related presence-based heating automations are turned off. If the alarm is disarmed from night mode, a heating automation for Fien's room is turned on. If a specific phone is not in focus and is home, and a second condition about other phones is met, a heating automation for the main bedroom is turned on. Finally, if a different phone is not in focus and is home, a heating automation for Noor's room is turned on."
},
"human_like": "Manages home heating based on alarm status and phone presence, setting temperatures to away when the night alarm is armed and enabling room-specific heating when people are home and their phones are idle.",
"complexity": "high"
}
},
{
"id": "b57adf81-739a-4fa1-befa-993d097b3946",
"result": {
"structured": "TRIGGER: When bathroom occupancy [binary_sensor.badkamer_bezetting] becomes occupied (on) OR When bathroom occupancy [binary_sensor.badkamer_bezetting] becomes unoccupied (off) OR When bathroom ceiling button [binary_sensor.badkamer_hoog_drukknop] changes state. CONDITIONS: None. ACTIONS: If the trigger was bathroom occupancy [binary_sensor.badkamer_bezetting] becoming occupied (on), set bathroom climate [climate.badkamer] preset mode to home. If the trigger was bathroom occupancy [binary_sensor.badkamer_bezetting] becoming unoccupied (off), set bathroom climate [climate.badkamer] preset mode to away.",
"natural_language": {
"trigger": "The automation triggers when the bathroom occupancy [binary_sensor.badkamer_bezetting] sensor detects someone entering (turns on) or leaving (turns off), or when the bathroom ceiling button [binary_sensor.badkamer_hoog_drukknop] is pressed (changes state).",
"conditions": "There are no additional conditions that must be met.",
"action": "Depending on which trigger occurred: if the bathroom becomes occupied, the bathroom climate [climate.badkamer] is set to 'home' preset mode. If the bathroom becomes unoccupied, the bathroom climate [climate.badkamer] is set to 'away' preset mode. The trigger from the ceiling button does not have a defined action in this automation."
},
"human_like": "Adjusts the bathroom heating to a comfortable 'home' mode when someone enters, and switches to an energy-saving 'away' mode when the bathroom is empty.",
"complexity": "medium"
}
},
{
"id": "c56835b5-85a0-48b1-b41d-781033aa6b04",
"result": {
"structured": "TRIGGER: When fien room occupancy [binary_sensor.slaapkamer_fien_bezetting] becomes occupied (on) OR When fien room occupancy [binary_sensor.slaapkamer_fien_bezetting] becomes unoccupied (off). ACTIONS: Choose based on conditions: 1. IF (trigger is 'aan') AND (giel sleeps after night [input_boolean.giel_slaapt_na_nacht] is off) AND (ha alarm [alarm_control_panel.ha_alarm] is NOT armed_night) THEN set fien climate [climate.fien] preset to home. 2. IF (trigger is 'uit') AND (ha alarm [alarm_control_panel.ha_alarm] is NOT armed_night) THEN set fien climate [climate.fien] preset to away. 3. IF (trigger is 'sleep') AND (fphone bermuda tracker [device_tracker.fphone_bermuda] is home) AND (time is after 20:00:00) THEN set fien climate [climate.fien] preset to sleep. 4. DEFAULT (if no previous conditions match): set fien climate [climate.fien] preset to away.",
"natural_language": {
"trigger": "The automation triggers when the occupancy sensor for Fien's room [binary_sensor.slaapkamer_fien_bezetting] detects that the room becomes occupied or unoccupied.",
"conditions": "The automation uses a choose action with three distinct condition blocks and a default fallback. The first block runs if the room becomes occupied, the 'giel sleeps after night' switch [input_boolean.giel_slaapt_na_nacht] is off, and the house alarm [alarm_control_panel.ha_alarm] is not in 'armed_night' mode. The second block runs if the room becomes unoccupied and the alarm is not in 'armed_night' mode. The third block runs if the trigger is 'sleep' (note: this trigger is not defined in the provided YAML, so this path will not execute), Fien's phone [device_tracker.fphone_bermuda] is home, and the time is after 8:00 PM. If none of these specific condition blocks match, the default action is taken.",
"action": "Sets the heating preset for Fien's room [climate.fien] to 'home', 'away', or 'sleep' based on the matched condition block, or to 'away' by default."
},
"human_like": "Adjusts the heating in Fien's room based on occupancy and other factors like the alarm state and time of day to save energy and ensure comfort.",
"complexity": "medium"
}
},
{
"id": "ea3527a0-1e19-4aeb-9dde-dee3140ef424",
"result": {
"structured": "TRIGGER: When garage occupancy [binary_sensor.garage_bezetting] changes to on OR When garage occupancy [binary_sensor.garage_bezetting] changes to off. CONDITIONS: None. ACTIONS: Set garage climate [climate.garage] HVAC mode to heat if garage occupancy [binary_sensor.garage_bezetting] is on, or to off if garage occupancy [binary_sensor.garage_bezetting] is off.",
"natural_language": {
"trigger": "When the garage occupancy [binary_sensor.garage_bezetting] sensor detects that the garage becomes occupied or becomes unoccupied.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sets the garage climate [climate.garage] heating mode to 'heat' when the garage is occupied, and turns it 'off' when the garage is unoccupied."
},
"human_like": "Turns the garage heating on when someone is present and off when it's empty.",
"complexity": "low"
}
},
{
"id": "ed0fdef6-d669-4850-b375-86fb3b4c19f1",
"result": {
"structured": "TRIGGER: When garage occupancy [binary_sensor.garage_bezetting] changes to off. CONDITIONS: None. ACTIONS: Turn off garage climate [climate.garage].",
"natural_language": {
"trigger": "When the garage occupancy sensor [binary_sensor.garage_bezetting] reports that the garage is no longer occupied (changes to 'off').",
"conditions": "There are no additional conditions that must be met.",
"action": "Turns off the garage climate control [climate.garage]."
},
"human_like": "Turns off the garage heating or cooling when the garage is no longer occupied.",
"complexity": "low"
}
},
{
"id": "3d5f6875-5f9c-4d6e-b219-5bcb27d79681",
"result": {
"structured": "TRIGGER: When noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] becomes occupied (on) OR When noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] becomes unoccupied (off). ACTIONS: If TRIGGER is 'aan' AND ha alarm [alarm_control_panel.ha_alarm] is NOT armed_night, then set noor climate [climate.noor] preset mode to home. Else if TRIGGER is 'uit' AND ha alarm [alarm_control_panel.ha_alarm] is NOT armed_night, then set noor climate [climate.noor] preset mode to away. Else if TRIGGER is 'sleep' AND nphone bermuda tracker [device_tracker.nphone_bermuda] is home AND current time is after 20:00:00, then set noor climate [climate.noor] preset mode to sleep. Otherwise (default), set noor climate [climate.noor] preset mode to away.",
"natural_language": {
"trigger": "When the noor room occupancy [binary_sensor.slaapkamer_noor_bezetting] sensor detects that the room becomes occupied or unoccupied.",
"conditions": "The automation uses a choose action with three possible branches. The first branch runs if the room becomes occupied and the ha alarm [alarm_control_panel.ha_alarm] is not set to 'armed_night'. The second branch runs if the room becomes unoccupied and the alarm is not set to 'armed_night'. The third branch runs if the trigger is 'sleep', the nphone bermuda tracker [device_tracker.nphone_bermuda] is at home, and the current time is after 8:00 PM. If none of these branches match, the default action runs.",
"action": "Depending on the conditions, the automation sets the noor climate [climate.noor] to a specific preset mode: 'home' when the room is occupied, 'away' when unoccupied or by default, or 'sleep' when specific evening conditions are met."
},
"human_like": "Adjusts the heating in Noor's room based on occupancy and the alarm state, setting it to 'home' when occupied, 'away' when not, or 'sleep' in the evening if the phone is home.",
"complexity": "medium"
}
},
{
"id": "a31ca706-795a-4098-97e9-e70b2085daf5",
"result": {
"structured": "TRIGGER: When bedroom occupancy [binary_sensor.slaapkamer_bezetting] changes to on OR When bedroom occupancy [binary_sensor.slaapkamer_bezetting] changes to off. ACTIONS: (CHOOSE 1: IF (trigger is 'aan' AND ha alarm [alarm_control_panel.ha_alarm] is NOT 'armed_night') THEN set bedroom climate [climate.slaapkamer] preset to 'home') OR (CHOOSE 2: IF (trigger is 'uit' AND ha alarm [alarm_control_panel.ha_alarm] is NOT 'armed_night') THEN set bedroom climate [climate.slaapkamer] preset to 'away') OR (CHOOSE 3: IF (trigger is 'sleep' AND (gphone bermuda tracker [device_tracker.gphone_bermuda] is 'home' OR mphone bermuda tracker [device_tracker.mphone_bermuda] is 'home') AND time is after 20:00:00) THEN set bedroom climate [climate.slaapkamer] preset to 'sleep') OR (DEFAULT: set bedroom climate [climate.slaapkamer] preset to 'away').",
"natural_language": {
"trigger": "When the bedroom occupancy sensor [binary_sensor.slaapkamer_bezetting] detects that the room becomes occupied (changes to 'on') or becomes unoccupied (changes to 'off').",
"conditions": "The actions are chosen based on which trigger fired and additional conditions. If the room becomes occupied and the house alarm [alarm_control_panel.ha_alarm] is not set to 'armed_night', the heating is set to 'home' mode. If the room becomes unoccupied and the alarm is not set to 'armed_night', the heating is set to 'away' mode. A special 'sleep' mode is activated if a 'sleep' trigger occurs (note: the automation YAML defines a 'sleep' trigger ID, but no corresponding trigger platform is shown in the provided snippet, so this path may not be reachable), provided that either the gphone bermuda tracker [device_tracker.gphone_bermuda] or the mphone bermuda tracker [device_tracker.mphone_bermuda] is at home, and the time is after 8:00 PM. If none of these specific conditions are met, the heating defaults to 'away' mode.",
"action": "Adjusts the bedroom climate [climate.slaapkamer] preset mode to 'home', 'away', or 'sleep' based on occupancy, alarm state, device presence, and time."
},
"human_like": "Adjusts the bedroom heating based on whether the room is occupied, the alarm mode, and the time of day, setting it to a comfortable 'home' or 'sleep' mode when needed, and saving energy with 'away' mode otherwise.",
"complexity": "medium"
}
},
{
"id": "2f446421-a602-42cf-9445-000080ac913b",
"result": {
"structured": "TRIGGER: When front door sensor [binary_sensor.gang_voordeur] opens (turns on). CONDITIONS: (upstairs hallway light [light.gang_boven] is off) AND (downstairs hallway light [light.gang_beneden] is off) AND (dark inside sensor [sensor.dark_inside] is true). ACTIONS: Turn on downstairs hallway light [light.gang_beneden].",
"natural_language": {
"trigger": "When the front door sensor [binary_sensor.gang_voordeur] detects the door opening.",
"conditions": "If the upstairs hallway light [light.gang_boven] is off, the downstairs hallway light [light.gang_beneden] is off, and the dark inside sensor [sensor.dark_inside] indicates it is dark inside.",
"action": "Turns on the downstairs hallway light [light.gang_beneden]."
},
"human_like": "Turns on the downstairs hallway light when the front door opens, but only if it's dark inside and the other hallway lights are off.",
"complexity": "low"
}
},
{
"id": "69a5766a-bde3-4a53-aca6-6ca47a28ce78",
"result": {
"structured": "TRIGGER: When heat pump boolean [input_boolean.emhass_warmtepomp] turns on OR When heat pump boolean [input_boolean.emhass_warmtepomp] turns off OR When heating switch [switch.verwarming] turns on OR When heating switch [switch.verwarming] turns off OR When living climate [climate.living] attribute hvac_action changes to heating OR When living climate [climate.living] attribute hvac_action changes to idle. CONDITIONS: None. ACTIONS: If the triggering entity's id is 'aan', then turn on basement heat pump switch [switch.kelder_warmtepomp]. Otherwise, wait 30 seconds and then turn off basement heat pump switch [switch.kelder_warmtepomp].",
"natural_language": {
"trigger": "The automation is triggered when the heat pump boolean [input_boolean.emhass_warmtepomp] is turned on or off, when the heating switch [switch.verwarming] is turned on or off, or when the living climate [climate.living] system's hvac_action attribute changes to heating or idle.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "If the trigger that activated the automation has the id 'aan', the basement heat pump switch [switch.kelder_warmtepomp] is turned on immediately. If the trigger has the id 'uit', the automation waits for 30 seconds before turning off the basement heat pump switch [switch.kelder_warmtepomp]."
},
"human_like": "Controls the basement heat pump based on heating requests, turning it on when heating is needed and off after a short delay when it's not.",
"complexity": "medium"
}
},
{
"id": "c0faeb7f-244b-4f74-b7b6-4288383b56e0",
"result": {
"structured": "TRIGGER: When washer switch [switch.wasmachien] changes from on to off OR when washer running [binary_sensor.wasmachien_staat_op] changes to off. CONDITIONS: None. ACTIONS: If washer switch [switch.wasmachien] is off AND the trigger was the switch change, then turn on washer optimizer automation [automation.wasmachien_optimizer]. If the trigger was washer running [binary_sensor.wasmachien_staat_op] changing to off, then turn off washer optimizer automation [automation.wasmachien_optimizer] with stop_actions set to false.",
"natural_language": {
"trigger": "The automation triggers when the washer switch [switch.wasmachien] is turned off from an on state, or when the washer running [binary_sensor.wasmachien_staat_op] sensor reports that the washer is no longer running (changes to off).",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "Depending on what triggered the automation, it will either turn on or turn off the washer optimizer automation [automation.wasmachien_optimizer]. If it was triggered by the washer switch being turned off, it will turn the optimizer automation on. If it was triggered by the washer running sensor turning off, it will turn the optimizer automation off, but will not stop any actions that are currently running."
},
"human_like": "Manages the washer optimizer automation, turning it on when the washer is manually switched off and turning it off when the washer finishes its cycle.",
"complexity": "medium"
}
},
{
"id": "e0250f04-7ade-43e7-8f30-ea8c00370d08",
"result": {
"structured": "TRIGGER: Every 5 minutes (when minutes are divisible by 5). CONDITIONS: NOT (wc switch [switch.wc] is on). ACTIONS: Turn off wc switch [switch.wc].",
"natural_language": {
"trigger": "The automation triggers every five minutes, precisely when the clock's minutes are a multiple of five (e.g., 0, 5, 10, etc.).",
"conditions": "The automation only runs if the wc switch [switch.wc] is not currently turned on.",
"action": "Turns off the wc switch [switch.wc]."
},
"human_like": "Turns off the WC switch every five minutes, but only if it's currently on.",
"complexity": "low"
}
},
{
"id": "45a4e1d5-aa55-4c81-b15e-337eed05db82",
"result": {
"structured": "TRIGGER: At 07:00:00. CONDITIONS: bad weather sensor [sensor.bad_weather] is clear. ACTIONS: First, compute variables: 'direction' (a compass direction derived from weather.home [weather.home] wind_bearing) and 'fiets' (a cycling-related wind comment based on 'direction'). Then, choose an action sequence based on the following conditions: IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is on) THEN send a notification to mphone mobile app [notify.mobile_app_mphone] AND to noor and fien notification [notify.noor_en_fien] with a message containing filtered outside temperature [sensor.buitentemperatuur_gefilterd], weather home [weather.home] condition, wind speed [sensor.windsnelheid], and the computed wind direction and comment. ELSE IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is off) THEN send the same notification only to mphone mobile app [notify.mobile_app_mphone]. ELSE IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is off AND school day sensor [binary_sensor.schooldag] is on) THEN send the same notification only to noor and fien notification [notify.noor_en_fien].",
"natural_language": {
"trigger": "The automation triggers every day at 7:00 AM.",
"conditions": "It only runs if the bad weather sensor [sensor.bad_weather] reports a 'clear' state.",
"action": "First, it calculates the wind direction from the weather home [weather.home] entity and generates a short text comment about whether the wind is favorable for cycling. Then, depending on the states of two sensors, it sends a weather notification to different recipients. If both the monnikenheide sensor [binary_sensor.v_monnikenheide] and the school day sensor [binary_sensor.schooldag] are on, it sends the notification to both the mphone mobile app [notify.mobile_app_mphone] and the noor and fien notification [notify.noor_en_fien]. If only the monnikenheide sensor is on, it sends the notification just to the mphone mobile app. If only the school day sensor is on, it sends the notification just to noor and fien notification. The message includes the current filtered outside temperature [sensor.buitentemperatuur_gefilterd], the weather condition from weather home, the wind speed [sensor.windsnelheid], and the calculated wind direction and cycling comment."
},
"human_like": "Sends a morning weather report at 7 AM when the weather is clear, with wind details and a cycling note, to different family members based on whether it's a school day or a specific activity day.",
"complexity": "medium"
}
},
{
"id": "177426d9-8cd4-47fa-852b-ba466e36bfb9",
"result": {
"structured": "TRIGGER: At 07:00:00. CONDITIONS: bad weather sensor [sensor.bad_weather] state is frost. ACTIONS: First, compute variables: 'direction' (wind direction as a compass point from weather home [weather.home] wind_bearing) and 'fiets' (a cycling-related suffix based on direction). Then, choose from the following sequences: 1) IF monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is on THEN send a notification to mphone mobile app [notify.mobile_app_mphone] AND to noor and fien notification [notify.noor_en_fien] with a message containing filtered outside temperature [sensor.buitentemperatuur_gefilterd], weather home [weather.home] condition, wind speed [sensor.windsnelheid], and the computed direction and cycling suffix. 2) IF monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is off THEN send a notification only to mphone mobile app [notify.mobile_app_mphone] with the same message. 3) IF monnikenheide sensor [binary_sensor.v_monnikenheide] is off AND school day sensor [binary_sensor.schooldag] is on THEN send a notification only to noor and fien notification [notify.noor_en_fien] with the same message.",
"natural_language": {
"trigger": "The automation triggers daily at 7:00 AM.",
"conditions": "It checks if the bad weather sensor [sensor.bad_weather] reports a state of 'frost'.",
"action": "First, it calculates the wind direction as a compass point and a cycling-related note based on that direction. Then, depending on the status of two sensors, it sends a frost warning notification. If both the monnikenheide sensor [binary_sensor.v_monnikenheide] and the school day sensor [binary_sensor.schooldag] are on, it sends the notification to both a mobile phone and another notification service. If only the monnikenheide sensor is on, it sends the notification just to the mobile phone. If only the school day sensor is on, it sends the notification just to the other notification service. The message includes the current filtered outside temperature [sensor.buitentemperatuur_gefilterd], the weather condition from weather home [weather.home], the wind speed [sensor.windsnelheid], and the computed wind direction and cycling note."
},
"human_like": "Sends a frost warning notification at 7 AM, tailored to who is at home and whether it's a school day, including weather details and wind direction for cycling.",
"complexity": "medium"
}
},
{
"id": "616a6577-504c-4c5f-a85e-f17d4737561c",
"result": {
"structured": "TRIGGER: At 07:00:00. CONDITIONS: bad weather sensor [sensor.bad_weather] state is heavy_rain. ACTIONS: Set variable 'direction' to a compass direction derived from weather home [weather.home] wind_bearing. Set variable 'fiets' to a cycling wind comment based on 'direction'. Then, choose from the following sequences: IF monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is on THEN send a notification to mphone mobile app [notify.mobile_app_mphone] and to noor and fien notification [notify.noor_en_fien]. OR IF monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is off THEN send a notification to mphone mobile app [notify.mobile_app_mphone]. OR IF monnikenheide sensor [binary_sensor.v_monnikenheide] is off AND school day sensor [binary_sensor.schooldag] is on THEN send a notification to noor and fien notification [notify.noor_en_fien]. All notifications include a message with the filtered outside temperature [sensor.buitentemperatuur_gefilterd], weather home [weather.home] condition, wind speed [sensor.windsnelheid], and the computed wind direction and cycling comment.",
"natural_language": {
"trigger": "The automation triggers every day at 7:00 AM.",
"conditions": "It checks if the bad weather sensor [sensor.bad_weather] is reporting 'heavy_rain'.",
"action": "First, it calculates the wind direction from the weather home [weather.home] entity and determines a cycling-related comment based on that direction. Then, depending on the states of the monnikenheide sensor [binary_sensor.v_monnikenheide] and the school day sensor [binary_sensor.schooldag], it sends a notification. If both sensors are on, it sends a notification to both the mphone mobile app [notify.mobile_app_mphone] and the noor and fien notification [notify.noor_en_fien]. If only the monnikenheide sensor is on, it sends a notification only to the mphone mobile app. If only the school day sensor is on, it sends a notification only to the noor and fien notification. The notification message includes the current filtered outside temperature [sensor.buitentemperatuur_gefilterd], the weather condition from weather home [weather.home], the wind speed [sensor.windsnelheid], and the calculated wind direction and cycling advice."
},
"human_like": "Sends a morning heavy rain alert with weather details and wind direction advice to specific recipients based on whether it's a school day and if a certain location is active.",
"complexity": "medium"
}
},
{
"id": "5925a607-92b1-4a00-887d-5088af2069f2",
"result": {
"structured": "TRIGGER: At 07:00:00. CONDITIONS: bad weather sensor [sensor.bad_weather] state is snow. ACTIONS: First, set variables: 'direction' to the cardinal direction derived from weather.home [weather.home] wind_bearing, and 'fiets' to a string describing if the wind is favorable for cycling. Then, based on conditions, send a notification: IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is on) THEN send a notification to mphone mobile app [notify.mobile_app_mphone] AND to noor and fien notification [notify.noor_en_fien]. IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is on AND school day sensor [binary_sensor.schooldag] is off) THEN send a notification to mphone mobile app [notify.mobile_app_mphone]. IF (monnikenheide sensor [binary_sensor.v_monnikenheide] is off AND school day sensor [binary_sensor.schooldag] is on) THEN send a notification to noor and fien notification [notify.noor_en_fien]. The notification message includes the filtered outside temperature [sensor.buitentemperatuur_gefilterd], the weather state from weather.home [weather.home], the wind speed [sensor.windsnelheid], and the computed wind direction and cycling advice.",
"natural_language": {
"trigger": "The automation triggers daily at 7:00 AM.",
"conditions": "It checks if the bad weather sensor [sensor.bad_weather] reports a state of 'snow'.",
"action": "First, it calculates the wind direction from the weather.home [weather.home] entity and determines if that direction is favorable for cycling (headwind, tailwind, or neutral). Then, depending on the status of the monnikenheide sensor [binary_sensor.v_monnikenheide] and the school day sensor [binary_sensor.schooldag], it sends a notification. If both sensors are on, it sends a snow warning message to both the mphone mobile app [notify.mobile_app_mphone] and the noor and fien notification [notify.noor_en_fien]. If only the monnikenheide sensor is on, it sends the message only to the mphone mobile app. If only the school day sensor is on, it sends the message only to the noor and fien notification. The message includes the current filtered outside temperature [sensor.buitentemperatuur_gefilterd], the weather condition, the wind speed [sensor.windsnelheid], the wind direction, and the cycling advice."
},
"human_like": "Sends a morning snow alert with weather details and wind direction advice, targeting different recipients based on whether it's a school day or a specific activity day.",
"complexity": "medium"
}
},
{
"id": "enable_whatsapp",
"result": {
"structured": "TRIGGER: When allow whatsapp boolean [input_boolean.allowwhatsapp] turns on. ACTIONS: Execute the AdGuard service to remove the URL blocklist for WhatsApp.",
"natural_language": {
"trigger": "When the allow whatsapp boolean [input_boolean.allowwhatsapp] is switched to the 'on' state.",
"conditions": "There are no conditions specified for this automation.",
"action": "Calls the AdGuard service to remove the blocklist for WhatsApp, allowing its traffic."
},
"human_like": "Unblocks WhatsApp by removing its AdGuard blocklist when the user enables the corresponding switch.",
"complexity": "low"
}
},
{
"id": "disable_whatsapp",
"result": {
"structured": "TRIGGER: When allow whatsapp boolean [input_boolean.allowwhatsapp] changes to off. CONDITIONS: None. ACTIONS: Add a URL filter to AdGuard with name 'Whatsapp' from the specified source.",
"natural_language": {
"trigger": "When the allow whatsapp boolean [input_boolean.allowwhatsapp] is turned off.",
"conditions": "There are no additional conditions that must be met.",
"action": "Adds a blocklist URL for WhatsApp to the AdGuard service, using the list from the specified GitHub repository."
},
"human_like": "Automatically adds a WhatsApp blocklist to AdGuard when the WhatsApp permission is turned off.",
"complexity": "low"
}
},
{
"id": "12930512-2ad9-43f8-a711-1538e0d1fb47",
"result": {
"structured": "TRIGGER: When dark inside sensor [sensor.dark_inside] becomes true and remains for 5 minutes (id: sluiten) OR When wind speed [sensor.windsnelheid] is greater than 40 (id: openen) OR When wind gust [sensor.windvlaag] is greater than 60 (id: openen) OR When rain next 10 minutes [sensor.regen_komende_10_minuten] is not unknown/unavailable and is greater than 0, otherwise when average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is greater than 0 (id: openen) OR When zandhoven precipitation [sensor.neerslag_zandhoven] is not unknown/unavailable and is greater than 0, otherwise when precipitation intensity [sensor.neerslagintensiteit] is greater than 0 (id: openen) OR When dark inside sensor [sensor.dark_inside] becomes false (id: openen) OR When freezing chance sensor [binary_sensor.kans_op_aanvriezen] becomes on (id: openen). CONDITIONS: For the first action branch (closing covers): Trigger id is sluiten AND min outside temperature forecast 12h [sensor.min_temperatuur_buiten_voorspelling_12u] is below 10 AND time is after 15:00:00 AND max precipitation next 12h [sensor.max_neerslag_volgende_12u] is below 10 AND current month is September through April (inclusive) AND freezing chance sensor [binary_sensor.kans_op_aanvriezen] is off AND wind speed [sensor.windsnelheid] is less than 40 AND wind gust [sensor.windvlaag] is less than 60. For the second action branch (opening covers): Trigger id is openen AND min outside temperature forecast 12h [sensor.min_temperatuur_buiten_voorspelling_12u] is below 12 AND (kitchen cover 1 [cover.keuken_1] is not open OR kitchen cover 2 [cover.keuken_2] is not open OR living cover [cover.living] is not open OR bedroom cover [cover.slaapkamer] is not open OR noor room cover [cover.slaapkamer_noor] is not open). ACTIONS: If the first condition set is met, close kitchen cover 1 [cover.keuken_1], kitchen cover 2 [cover.keuken_2], living cover [cover.living], bedroom cover [cover.slaapkamer], and noor room cover [cover.slaapkamer_noor], and turn on night closed [input_boolean.nacht_closed]. If the second condition set is met, open the same set of covers and turn off night closed [input_boolean.nacht_closed].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when it becomes dark inside for at least five minutes; when the wind speed exceeds 40; when wind gusts exceed 60; when rain is expected in the next 10 minutes or, if that data is unavailable, when the average precipitation forecast is greater than zero; when precipitation is detected in Zandhoven or, if that data is unavailable, when the precipitation intensity is greater than zero; when it becomes light inside again; or when there is a chance of freezing.",
"conditions": "To close the covers, the trigger must be the dark inside sensor, and all of the following must be true: the minimum outside temperature forecast for the next 12 hours is below 10 degrees, the time is after 3:00 PM, the maximum precipitation forecast for the next 12 hours is below 10, the current month is between September and April (inclusive), there is no chance of freezing, the wind speed is below 40, and wind gusts are below 60. To open the covers, the trigger must be one of the 'openen' triggers, the minimum outside temperature forecast for the next 12 hours must be below 12 degrees, and at least one of the covers (kitchen 1, kitchen 2, living, bedroom, or Noor's room) is not already open.",
"action": "If the conditions for closing are met, the automation will close all the specified window covers and turn on a status indicator. If the conditions for opening are met, it will open all the specified window covers and turn off the status indicator."
},
"human_like": "This automation manages window covers during winter, closing them in the evening for insulation when weather conditions are calm and dry, and opening them during the day or in response to adverse weather like high wind or rain.",
"complexity": "high"
}
},
{
"id": "4d3f1b01-64fa-4c2b-ab81-9dfd2b3d2875",
"result": {
"structured": "TRIGGER: When wled fien light [light.wled_fien] turns on OR when wled noor light [light.wled_noor] turns on. CONDITIONS: None. ACTIONS: If the trigger was wled fien light [light.wled_fien] turning on, press wled fien nightlight button [input_button.wled_fien_nightlight]. If the trigger was wled noor light [light.wled_noor] turning on, press wled noor nightlight button [input_button.wled_noor_nightlight].",
"natural_language": {
"trigger": "When the wled fien light [light.wled_fien] or the wled noor light [light.wled_noor] is turned on.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Depending on which light was turned on, the corresponding nightlight button is pressed. If it was the wled fien light, the wled fien nightlight button [input_button.wled_fien_nightlight] is pressed. If it was the wled noor light, the wled noor nightlight button [input_button.wled_noor_nightlight] is pressed."
},
"human_like": "When a specific WLED light is turned on, it automatically triggers its associated nightlight button.",
"complexity": "medium"
}
},
{
"id": "0885f397-d620-4085-80cc-8700c94c5bf1",
"result": {
"structured": "TRIGGER: When wled noor nightlight button [input_button.wled_noor_nightlight] state changes OR When wled fien nightlight button [input_button.wled_fien_nightlight] state changes. CONDITIONS: None. ACTIONS: IF trigger is wled noor nightlight button [input_button.wled_noor_nightlight] THEN set wled noor end time [input_datetime.wled_noor_end_time] to current time plus 10800 seconds. IF trigger is wled fien nightlight button [input_button.wled_fien_nightlight] THEN set wled fien end time [input_datetime.wled_fien_end_time] to current time plus 10800 seconds.",
"natural_language": {
"trigger": "When the wled noor nightlight button [input_button.wled_noor_nightlight] is pressed, or when the wled fien nightlight button [input_button.wled_fien_nightlight] is pressed.",
"conditions": "There are no conditions that must be met for the automation to run.",
"action": "If the wled noor nightlight button [input_button.wled_noor_nightlight] was pressed, the automation sets the wled noor end time [input_datetime.wled_noor_end_time] to three hours from now. If the wled fien nightlight button [input_button.wled_fien_nightlight] was pressed, it sets the wled fien end time [input_datetime.wled_fien_end_time] to three hours from now."
},
"human_like": "Sets a three-hour nightlight timer for the corresponding room when its nightlight button is pressed.",
"complexity": "medium"
}
},
{
"id": "enable_youtube",
"result": {
"structured": "TRIGGER: When allow youtube boolean [input_boolean.allowyoutube] turns on. CONDITIONS: None. ACTIONS: Execute the adguard.remove_url service with the URL parameter set to 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-youtube.txt'.",
"natural_language": {
"trigger": "When the allow youtube boolean [input_boolean.allowyoutube] is turned on.",
"conditions": "There are no conditions for this automation.",
"action": "Removes a YouTube-specific blocklist from the AdGuard service by calling the 'adguard.remove_url' action with the specific URL."
},
"human_like": "When YouTube access is allowed, it removes a YouTube blocklist from the network filter.",
"complexity": "low"
}
},
{
"id": "disable_youtube",
"result": {
"structured": "TRIGGER: When allow youtube boolean [input_boolean.allowyoutube] changes to off. ACTIONS: Add a URL blocklist to AdGuard with name 'Youtube' and URL 'https://raw.githubusercontent.com/gieljnssns/Social-media-Blocklists/master/adguard-youtube.txt'.",
"natural_language": {
"trigger": "When the allow youtube boolean [input_boolean.allowyoutube] is turned off.",
"conditions": "There are no conditions for this automation.",
"action": "Adds a blocklist to AdGuard named 'Youtube' from the specified URL, which will block YouTube content."
},
"human_like": "Automatically blocks YouTube by adding a blocklist to AdGuard when the 'allow youtube' switch is turned off.",
"complexity": "low"
}
},
{
"id": "20cf3eda-0ede-4c90-b0b8-33e1853f7114",
"result": {
"structured": "TRIGGER: When sun azimuth [sensor.sun_azimut] is greater than 330 AND outside temperature [sensor.buiten_temperatuur] is greater than 10 OR When sun elevation [sensor.sun_elevation] is less than -10 AND outside temperature [sensor.buiten_temperatuur] is greater than 10 OR When dark inside sensor [sensor.dark_inside] is true for 5 minutes OR When outside brightness [sensor.buiten_lichtsterkte] is below 10000 for 5 minutes OR When wind speed [sensor.windsnelheid] is greater than 40 OR When wind gust [sensor.windvlaag] is greater than 60 OR When rain next 10 minutes [sensor.regen_komende_10_minuten] is greater than 0.80 (or if unavailable/unknown, average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is greater than 0.80) OR When zandhoven precipitation [sensor.neerslag_zandhoven] is greater than 0.40 (or if unavailable/unknown, precipitation intensity [sensor.neerslagintensiteit] is greater than 0.40). CONDITIONS: (side facade closed boolean [input_boolean.zijgevel_closed] is on OR living cover [cover.living] current_position is less than 50 OR noor room cover [cover.slaapkamer_noor] current_position is less than 50) AND night closed [input_boolean.nacht_closed] is off. ACTIONS: Run script.zijgevel_openen, wait 5 minutes, then run script.zijgevel_openen again.",
"natural_language": {
"trigger": "The automation can be triggered by several environmental conditions: when the sun's azimuth is past 330 degrees and the outside temperature is above 10 degrees, or when the sun's elevation is below -10 degrees and the temperature is above 10 degrees. It also triggers if it has been dark inside for 5 minutes, or if the outside brightness has been below 10,000 lux for 5 minutes. High wind conditions (wind speed over 40 or gusts over 60) will also trigger it. Finally, it triggers if significant rain is expected (rain in the next 10 minutes over 0.80 mm, or a high average forecast if that data is unavailable) or if current precipitation is high (Zandhoven precipitation over 0.40 mm, or general precipitation intensity over 0.40 mm if that data is unavailable).",
"conditions": "For the automation to run, at least one of the following must be true: the side facade is marked as closed, the living room cover is less than 50% open, or the Noor bedroom cover is less than 50% open. Additionally, the night mode must be off.",
"action": "The automation runs the 'zijgevel_openen' script, waits for 5 minutes, and then runs the same script again."
},
"human_like": "Automatically opens the side facade covers when weather and light conditions are favorable and the covers are not already open, ensuring the house is not in night mode.",
"complexity": "high"
}
},
{
"id": "609710ab-bc42-47f6-a4bf-b70cce8b88a7",
"result": {
"structured": "TRIGGER: When outside brightness [sensor.buiten_lichtsterkte] remains above 15000 for 5 minutes OR every 12 minutes at second 0. CONDITIONS: (sun azimuth [sensor.sun_azimut] is above 110 AND below 290) AND (sun [sun.sun] elevation is above 10) AND (filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] is above 650) AND (outside brightness [sensor.buiten_lichtsterkte] is above 15000) AND (wind speed [sensor.windsnelheid] is less than 40) AND (wind gust [sensor.windvlaag] is less than 60) AND ((rain next 10 minutes [sensor.regen_komende_10_minuten] is not unknown AND not unavailable AND is less than 0.15) OR (average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is less than 0.15)) AND ((zandhoven precipitation [sensor.neerslag_zandhoven] is not unknown AND not unavailable AND is less than 0.15) OR (precipitation intensity [sensor.neerslagintensiteit] is less than 0.15)) AND (max uv index [sensor.max_uv_index] is above 3) AND (filtered outside temperature [sensor.buitentemperatuur_gefilterd] is above 19) AND (average downstairs temperature [sensor.gemiddelde_temp_beneden] is above 22) AND (max outside temperature forecast 12h [sensor.max_temperatuur_buiten_voorspelling_12u] is greater than average downstairs temperature [sensor.gemiddelde_temp_beneden] minus 2) AND (current month is greater than 3) AND (current month is less than 10) AND (Achtergevel sluiten [script.achtergevel_sluiten] is off) AND (side facade closed boolean [input_boolean.zijgevel_closed] is off) AND (living cover [cover.living] current_position is greater than 50) AND (noor room cover [cover.slaapkamer_noor] current_position is greater than 50). ACTIONS: Execute side facade close script [script.zijgevel_sluiten].",
"natural_language": {
"trigger": "The automation triggers when the outside brightness [sensor.buiten_lichtsterkte] has been above 15000 for at least 5 minutes, or it runs automatically every 12 minutes at the start of the minute.",
"conditions": "All of the following conditions must be met: The sun's azimuth [sensor.sun_azimut] must be between 110 and 290 degrees, and the sun's elevation [sun.sun] must be above 10 degrees. The filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] must be above 650, and the outside brightness [sensor.buiten_lichtsterkte] must be above 15000. The wind speed [sensor.windsnelheid] must be below 40, and wind gusts [sensor.windvlaag] must be below 60. There must be little to no rain expected: either the rain next 10 minutes [sensor.regen_komende_10_minuten] is available and below 0.15, or the average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is below 0.15. Similarly, current precipitation must be low: either the zandhoven precipitation [sensor.neerslag_zandhoven] is available and below 0.15, or the precipitation intensity [sensor.neerslagintensiteit] is below 0.15. The maximum UV index [sensor.max_uv_index] must be above 3. The filtered outside temperature [sensor.buitentemperatuur_gefilterd] must be above 19°C, and the average downstairs temperature [sensor.gemiddelde_temp_beneden] must be above 22°C. The forecasted maximum outside temperature for the next 12 hours [sensor.max_temperatuur_buiten_voorspelling_12u] must be greater than the average downstairs temperature minus 2 degrees. The current month must be between April and September (greater than 3 and less than 10). The script for closing the rear facade, Achtergevel sluiten [script.achtergevel_sluiten], must not be running (state 'off'). The side facade closed boolean [input_boolean.zijgevel_closed] must be off, indicating the side facade is not already closed. Finally, the living room cover [cover.living] and the Noor bedroom cover [cover.slaapkamer_noor] must both be more than 50% open.",
"action": "Runs the script to close the side facade, zijgevel_sluiten [script.zijgevel_sluiten]."
},
"human_like": "Automatically closes the side facade blinds during sunny, warm, and calm weather conditions to help manage indoor temperature and sunlight, but only during the warmer months.",
"complexity": "high"
}
},
{
"id": "48a786d1-0219-4da1-825b-b67e5a770a8d",
"result": {
"structured": "TRIGGER: When sun azimuth [sensor.sun_azimut] is above 330 OR sun elevation [sensor.sun_elevation] is below -10 OR dark inside sensor [sensor.dark_inside] becomes true AND remains for 5 minutes OR outside brightness [sensor.buiten_lichtsterkte] is below 10000 AND remains for 5 minutes OR wind speed [sensor.windsnelheid] is greater than 26 OR wind gust [sensor.windvlaag] is greater than 40 OR (if rain next 10 minutes [sensor.regen_komende_10_minuten] is not unknown AND not unavailable, then rain next 10 minutes [sensor.regen_komende_10_minuten] is greater than 0.4; otherwise average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is greater than 0.4) OR (if zandhoven precipitation [sensor.neerslag_zandhoven] is not unknown AND not unavailable, then zandhoven precipitation [sensor.neerslag_zandhoven] is greater than 0.15; otherwise precipitation intensity [sensor.neerslagintensiteit] is greater than 0.15) OR sun tent vibration sensor [binary_sensor.zonnetent_vibratie] becomes on. CONDITIONS: sun tent cover [cover.zonnetent] current_position is greater than 10. ACTIONS: Close sun tent cover [cover.zonnetent], wait 3 minutes, then close sun tent cover [cover.zonnetent] again.",
"natural_language": {
"trigger": "The automation triggers if any of the following occurs: the sun azimuth [sensor.sun_azimut] is above 330; the sun elevation [sensor.sun_elevation] drops below -10; the dark inside sensor [sensor.dark_inside] reports 'true' for at least five minutes; the outside brightness [sensor.buiten_lichtsterkte] falls below 10000 for at least five minutes; the wind speed [sensor.windsnelheid] exceeds 26; the wind gust [sensor.windvlaag] exceeds 40; if the rain next 10 minutes [sensor.regen_komende_10_minuten] sensor is available, then if its value is greater than 0.4, otherwise if the average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is greater than 0.4; if the zandhoven precipitation [sensor.neerslag_zandhoven] sensor is available, then if its value is greater than 0.15, otherwise if the precipitation intensity [sensor.neerslagintensiteit] is greater than 0.15; or the sun tent vibration sensor [binary_sensor.zonnetent_vibratie] detects vibration (turns on).",
"conditions": "The sun tent cover [cover.zonnetent] must be more than 10% open.",
"action": "The automation will close the sun tent cover [cover.zonnetent], wait for three minutes, and then send another command to close the sun tent cover [cover.zonnetent] again."
},
"human_like": "Automatically retracts the sun tent cover when conditions like darkness, bad weather, high wind, or vibration are detected, provided the cover is not already fully closed.",
"complexity": "high"
}
},
{
"id": "bd69f161-08bf-4d31-aef5-19cef0dee2ab",
"result": {
"structured": "TRIGGER: When the time pattern matches minutes divisible by 14 (e.g., 0, 14, 28, 42, 56) and seconds are 0 OR When outside brightness [sensor.buiten_lichtsterkte] is above 17000 for 5 minutes. CONDITIONS: (sun azimuth [sensor.sun_azimut] is between 105 and 270) AND (sun elevation [sun.sun] is above 10) AND (filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] is above 1500) AND (outside brightness [sensor.buiten_lichtsterkte] is above 17000) AND (wind speed [sensor.windsnelheid] is less than 20) AND (wind gust [sensor.windvlaag] is less than 40) AND (IF rain next 10 minutes [sensor.regen_komende_10_minuten] is known, it is less than 0.15, OTHERWISE average precipitation forecast [sensor.neerslagverwachting_gemiddeld] is less than 0.15) AND (IF zandhoven precipitation [sensor.neerslag_zandhoven] is known, it is less than 0.15, OTHERWISE precipitation intensity [sensor.neerslagintensiteit] is less than 0.15) AND (max uv index [sensor.max_uv_index] is above 3) AND (filtered outside temperature [sensor.buitentemperatuur_gefilterd] is above 20) AND (average downstairs temperature [sensor.gemiddelde_temp_beneden] is above 22) AND (max outside temperature forecast 12h [sensor.max_temperatuur_buiten_voorspelling_12u] is greater than (average downstairs temperature [sensor.gemiddelde_temp_beneden] minus 1)) AND (current month is after March) AND (current month is before October) AND (sun tent cover [cover.zonnetent] current position is less than 50) AND (side facade close script [script.zijgevel_sluiten] is off) AND (Achtergevel sluiten [script.achtergevel_sluiten] is off). ACTIONS: Stop the sun tent cover [cover.zonnetent].",
"natural_language": {
"trigger": "The automation triggers either at regular intervals (every 14 minutes, on the minute) or when the outside brightness [sensor.buiten_lichtsterkte] has been above 17000 lux for a continuous period of 5 minutes.",
"conditions": "All of the following conditions must be met: The sun's azimuth [sensor.sun_azimut] is between 105 and 270 degrees, and the sun's elevation [sun.sun] is above 10 degrees. The filtered solar energy [sensor.zonne_energie_gefilterd_lowpass] is above 1500, and the outside brightness [sensor.buiten_lichtsterkte] is above 17000 lux. The wind speed [sensor.windsnelheid] must be below 20, and wind gusts [sensor.windvlaag] must be below 40. Precipitation must be low: if the rain next 10 minutes [sensor.regen_komende_10_minuten] sensor is available, its value must be below 0.15; otherwise, the average precipitation forecast [sensor.neerslagverwachting_gemiddeld] must be below 0.15. Similarly, if the zandhoven precipitation [sensor.neerslag_zandhoven] sensor is available, its value must be below 0.15; otherwise, the precipitation intensity [sensor.neerslagintensiteit] must be below 0.15. The maximum UV index [sensor.max_uv_index] must be above 3. The filtered outside temperature [sensor.buitentemperatuur_gefilterd] must be above 20°C, and the average downstairs temperature [sensor.gemiddelde_temp_beneden] must be above 22°C. The forecasted maximum outside temperature for the next 12 hours [sensor.max_temperatuur_buiten_voorspelling_12u] must be greater than the current average downstairs temperature minus one degree. The current month must be between April and September (inclusive). The sun tent cover [cover.zonnetent] must be less than 50% extended. Finally, the scripts for closing the side facade [script.zijgevel_sluiten] and the rear facade [script.achtergevel_sluiten] must both be off.",
"action": "Stops the sun tent cover [cover.zonnetent] from moving."
},
"human_like": "Automatically stops the sun tent from extending when weather and solar conditions are suitable for sun exposure, ensuring it only operates during warm, sunny, and calm periods.",
"complexity": "high"
}
},
{
"id": "c3214453-f469-4d01-93db-bc91d57b0eb5",
"result": {
"structured": "TRIGGER: When l1 net feedback [sensor.l1_net_terugsturen] remains above 2000 for 15 minutes. CONDITIONS: on vacation boolean [input_boolean.op_verlof] is off AND school day sensor [binary_sensor.schooldag] is off AND pool switch [switch.zwembad] is on AND current month is between May and September inclusive AND current time is between 12:00:00 and 17:00:00 AND pool temperature sensor [sensor.in] is below 30 AND the forecasted temperature for today from weatherbit zandhoven weather [weather.weatherbit_zandhoven] is greater than 23 AND more than 10 hours (36000 seconds) have passed since the automation zwembadverwarming [automation.zwembadverwarming] was last triggered. ACTIONS: Choose based on conditions: IF (solcast solaredge forecast remaining today [sensor.solcast_solaredge_forecast_remaining_today] + solcast huawei forecast [sensor.solcast_huawei_forecast] > 50) AND (pool warm water 2h boolean [input_boolean.zwembad_warm_water_2u], pool warm water 3h boolean [input_boolean.zwembad_warm_water_3u], pool warm water 4h boolean [input_boolean.zwembad_warm_water_4u], pool warm water 5h boolean [input_boolean.zwembad_warm_water_5u] are all off) THEN turn on pool warm water 5h boolean [input_boolean.zwembad_warm_water_5u]. ELSE IF (solcast solaredge forecast remaining today [sensor.solcast_solaredge_forecast_remaining_today] + solcast huawei forecast [sensor.solcast_huawei_forecast] > 40) AND (pool warm water 2h boolean [input_boolean.zwembad_warm_water_2u], pool warm water 3h boolean [input_boolean.zwembad_warm_water_3u], pool warm water 4h boolean [input_boolean.zwembad_warm_water_4u], pool warm water 5h boolean [input_boolean.zwembad_warm_water_5u] are all off) THEN turn on pool warm water 4h boolean [input_boolean.zwembad_warm_water_4u]. ELSE IF (solcast solaredge forecast remaining today [sensor.solcast_solaredge_forecast_remaining_today] + solcast huawei forecast [sensor.solcast_huawei_forecast] > 30) AND (pool warm water 2h boolean [input_boolean.zwembad_warm_water_2u], pool warm water 3h boolean [input_boolean.zwembad_warm_water_3u], pool warm water 4h boolean [input_boolean.zwembad_warm_water_4u], pool warm water 5h boolean [input_boolean.zwembad_warm_water_5u] are all off) THEN turn on pool warm water 3h boolean [input_boolean.zwembad_warm_water_3u]. ELSE (default) IF current time is before 19:00:00 AND (pool warm water 2h boolean [input_boolean.zwembad_warm_water_2u], pool warm water 3h boolean [input_boolean.zwembad_warm_water_3u], pool warm water 4h boolean [input_boolean.zwembad_warm_water_4u], pool warm water 5h boolean [input_boolean.zwembad_warm_water_5u] are all off) THEN turn on pool warm water 2h boolean [input_boolean.zwembad_warm_water_2u].",
"natural_language": {
"trigger": "When the l1 net feedback [sensor.l1_net_terugsturen] sensor reports a value consistently above 2000 for a continuous period of 15 minutes.",
"conditions": "The automation runs only if the following are all true: the on vacation boolean [input_boolean.op_verlof] is off, the school day sensor [binary_sensor.schooldag] is off, the pool switch [switch.zwembad] is on, the current month is between May and September, the current time is between 12:00 and 17:00, the pool temperature sensor [sensor.in] reads below 30, the forecasted temperature for today from weatherbit zandhoven weather [weather.weatherbit_zandhoven] is above 23 degrees, and at least 10 hours have passed since this automation was last triggered.",
"action": "Based on the amount of forecasted solar energy remaining today, the automation selects a heating duration. If the combined forecast from solcast solaredge forecast remaining today [sensor.solcast_solaredge_forecast_remaining_today] and solcast huawei forecast [sensor.solcast_huawei_forecast] is over 50, and none of the pool warm water booleans are on, it turns on the 5-hour heating option. If the forecast is over 40, it turns on the 4-hour option. If over 30, it turns on the 3-hour option. As a default, if it's before 19:00 and no heating is active, it turns on the 2-hour heating option."
},
"human_like": "Automatically schedules pool heating during the day when there is excess solar power, ensuring it only runs in warm months, on non-school days, and when the pool is cool enough.",
"complexity": "high"
}
}
]