AutomationDataset/kodi1/automation-descriptions.json

1406 lines
227 KiB
JSON

[
{
"id": "event_android_alarm",
"result": {
"structured": "TRIGGER: When an event of type android_alarm occurs. CONDITIONS: None. ACTIONS: Start post android alarm timer [timer.post_android_alarm] for a duration equal to the current numeric state of post android alarm input number [input_number.post_android_alarm] (in seconds) AND log an entry to the logbook with name 'ha_alarm' and message 'timer arm X seconds', where X is the numeric state of post android alarm input number [input_number.post_android_alarm].",
"natural_language": {
"trigger": "When an event named 'android_alarm' is received by Home Assistant.",
"conditions": "There are no conditions that must be met for the automation to run.",
"action": "Starts a timer named post android alarm timer [timer.post_android_alarm] for a specific number of seconds. The duration is taken from the current value of the post android alarm input number [input_number.post_android_alarm]. It also creates a logbook entry with the name 'ha_alarm' and a message stating how many seconds the timer was set for."
},
"human_like": "Starts a timer for a configurable duration when an Android alarm event is received.",
"complexity": "low"
}
},
{
"id": "post_android_alarm",
"result": {
"structured": "TRIGGER: When timer post android alarm [timer.post_android_alarm] finishes. CONDITIONS: (bedroom speaker [media_player.bedroom_speaker] is NOT playing). ACTIONS: Execute script android_post_alarm.",
"natural_language": {
"trigger": "When the post android alarm timer [timer.post_android_alarm] finishes.",
"conditions": "If the bedroom speaker [media_player.bedroom_speaker] is not currently playing any media.",
"action": "Runs the script named android_post_alarm."
},
"human_like": "Runs a post-alarm cleanup script after a timer ends, but only if the bedroom speaker isn't playing anything.",
"complexity": "low"
}
},
{
"id": "bed_light",
"result": {
"structured": "TRIGGER: When bed motion sensor [binary_sensor.bed_motion] turns on OR When bed occupancy sensor [binary_sensor.bed_occupancy] remains off for 60 seconds OR When living motion sensor [binary_sensor.living_motion] turns on OR When office motion sensor [binary_sensor.office_motion] turns on OR When a custom event 'lights_check' with event_data.light equal to 'turn_off' occurs. CONDITIONS: For the first action branch: (Trigger ID is light_on) AND (bed light [light.bed] is off) AND (day sensor [binary_sensor.day] is off). For the second action branch: (Trigger ID is light_off) AND (bed light [light.bed] is on) AND (bed occupancy sensor [binary_sensor.bed_occupancy] is off). ACTIONS: If the first condition set is met, call script.lights_on with parameters derived from a configuration variable (cfg) that depends on night mode sensor [binary_sensor.night_mode] being off. If the second condition set is met, call script.lights_off with a transition parameter from the same configuration variable.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when motion is detected in the bedroom, when the bedroom occupancy sensor reports the room is unoccupied for a full minute, when motion is detected in the living room, when motion is detected in the office, or when a specific system event named 'lights_check' with the command to turn off lights is received.",
"conditions": "To turn the light on, the trigger must be the bedroom motion sensor, the bed light must currently be off, and the day sensor must be off (indicating it's not daytime). To turn the light off, the trigger must be one of the 'light_off' triggers (occupancy, motion in other rooms, or the system event), the bed light must currently be on, and the bedroom occupancy sensor must confirm the room is unoccupied.",
"action": "Depending on which trigger and conditions are met, the automation will either run a script to turn the bedroom light on with specific brightness, color temperature, and transition settings (which vary based on whether night mode is active), or run a script to turn the bedroom light off with a specific transition time."
},
"human_like": "Automatically turns the bedroom light on when motion is detected at night, and turns it off when the room is empty or activity is detected in other parts of the home.",
"complexity": "high"
}
},
{
"id": "other_bed_light",
"result": {
"structured": "TRIGGER: When bed motion sensor [binary_sensor.bed_motion] OR night mode control sensor [binary_sensor.night_mode_ctrl] turns on OR When bed occupancy sensor [binary_sensor.bed_occupancy] turns off and remains off for 120 seconds OR When night mode control sensor [binary_sensor.night_mode_ctrl] turns off OR When a custom event 'lights_check' with data 'light: turn_off' occurs. CONDITIONS AND ACTIONS: The automation uses a choose block with two independent sets of rules. First choose block for shutter bed light [light.shutter_bed]: IF (Trigger is bed motion sensor OR night mode control sensor turning on) AND bed occupancy sensor [binary_sensor.bed_occupancy] is on AND night mode control sensor [binary_sensor.night_mode_ctrl] is on AND shutter bed light [light.shutter_bed] is off THEN turn on shutter bed light [light.shutter_bed]. OR IF (Trigger is bed occupancy sensor turning off for 120 seconds) AND bed occupancy sensor [binary_sensor.bed_occupancy] is off AND shutter bed light [light.shutter_bed] is on THEN turn off shutter bed light [light.shutter_bed]. OR IF (Trigger is night mode control sensor turning off OR the 'lights_check' event) AND shutter bed light [light.shutter_bed] is on THEN turn off shutter bed light [light.shutter_bed]. Second choose block for bed wardrobe light [light.bed_wardrobe]: IF (Trigger is bed motion sensor OR night mode control sensor turning on) AND bed occupancy sensor [binary_sensor.bed_occupancy] is on AND in bed dummy switch [input_boolean.in_bed_dummy_switch] is off AND bed wardrobe light [light.bed_wardrobe] is off THEN turn on bed wardrobe light [light.bed_wardrobe]. OR IF (Trigger is bed occupancy sensor turning off for 120 seconds) AND bed occupancy sensor [binary_sensor.bed_occupancy] is off AND bed wardrobe light [light.bed_wardrobe] is on THEN turn off bed wardrobe light [light.bed_wardrobe]. OR IF (Trigger is night mode control sensor turning off OR the 'lights_check' event) AND bed wardrobe light [light.bed_wardrobe] is on THEN turn off bed wardrobe light [light.bed_wardrobe].",
"natural_language": {
"trigger": "The automation can be triggered in four ways: when motion is detected by the bed motion sensor [binary_sensor.bed_motion] or when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned on; when the bed occupancy sensor [binary_sensor.bed_occupancy] reports the bed is unoccupied for a continuous period of 120 seconds; when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned off; or when a specific system event named 'lights_check' with the instruction to turn off lights is received.",
"conditions": "The automation's actions are split into two independent sets of rules for two different lights. For the shutter bed light [light.shutter_bed], it will turn on only if triggered by motion or night mode activation, the bed is occupied, night mode is active, and the light is currently off. It will turn off if triggered by the bed being unoccupied for two minutes and the light is on, or if triggered by night mode deactivation or the lights_check event and the light is on. For the bed wardrobe light [light.bed_wardrobe], it will turn on only if triggered by motion or night mode activation, the bed is occupied, the in bed dummy switch [input_boolean.in_bed_dummy_switch] is off, and the wardrobe light is currently off. It will turn off under the same conditions as the shutter light: if the bed is unoccupied for two minutes and the light is on, or if night mode is deactivated/the lights_check event occurs and the light is on.",
"action": "The automation controls two lights based on occupancy, motion, and night mode status. It can turn the shutter bed light [light.shutter_bed] and the bed wardrobe light [light.bed_wardrobe] on or off depending on which trigger occurred and the current state of related sensors and switches."
},
"human_like": "This automation controls the bedroom lights, turning them on when motion is detected at night if the bed is occupied, and turning them off when the bed is empty for a while or when night mode is disabled.",
"complexity": "high"
}
},
{
"id": "motion_light_extend",
"result": {
"structured": "TRIGGER: When home light extend sensor [binary_sensor.home_light_extend] turns on and remains on for 5 seconds. CONDITIONS: None. ACTIONS: Turn on Lumi Double Switch On [script.lumi_double_switch_on].",
"natural_language": {
"trigger": "When the home light extend sensor [binary_sensor.home_light_extend] detects activity (turns on) and stays on for at least 5 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "Activates the Lumi Double Switch On [script.lumi_double_switch_on] script."
},
"human_like": "Extends the lighting by running a switch script when motion is detected for a short period.",
"complexity": "low"
}
},
{
"id": "change_pressure",
"result": {
"structured": "TRIGGER: When change pressure sensor [sensor.change_pressure] changes state. CONDITIONS: (The absolute value of change pressure sensor [sensor.change_pressure] is greater than pressure speed input number [input_number.pressure_speed]) AND (The automation change_pressure [automation.change_pressure] has never been triggered OR it has been more than 1 hour since its last trigger). ACTIONS: Execute script.all_notify with parameters: icon_notify derived from the icon attribute of change pressure sensor [sensor.change_pressure], title 'pressure change', and message containing the state of change pressure sensor [sensor.change_pressure].",
"natural_language": {
"trigger": "Whenever the change pressure sensor [sensor.change_pressure] reports a new state.",
"conditions": "The absolute value of the pressure change reading must exceed the threshold set by the pressure speed input number [input_number.pressure_speed]. Additionally, this automation can only run if it has never been triggered before, or if more than one hour has passed since it was last triggered.",
"action": "Sends a notification via the script.all_notify, using an icon extracted from the sensor's attributes, with the title 'pressure change' and the current pressure change value as the message."
},
"human_like": "Sends an alert when the pressure change is significant and at least an hour has passed since the last alert.",
"complexity": "medium"
}
},
{
"id": "weather_alert",
"result": {
"structured": "TRIGGER: When weather alert sensor [binary_sensor.w_alert] changes state. CONDITIONS: The previous state of weather alert sensor [binary_sensor.w_alert] is equal to its new state (trigger.from_state.state = trigger.to_state.state). ACTIONS: Execute script.all_notify with a data template. The template sets icon_notify to 'weather-cloudy-alert', tit to 'weather', and msg to: if weather alert sensor [binary_sensor.w_alert] is 'on', then display the second part of the 'awareness_type' attribute, a hyphen, the second part of the 'awareness_level' attribute, and the 'expires' attribute; otherwise, display 'alert expired'.",
"natural_language": {
"trigger": "Whenever the weather alert sensor [binary_sensor.w_alert] changes its state.",
"conditions": "The automation only runs if the state change is from a value to the same value (for example, from 'on' to 'on' or 'off' to 'off').",
"action": "It triggers a notification script called 'script.all_notify'. The notification will have a weather cloud alert icon and the title 'weather'. The message content depends on the alert status: if the alert is active ('on'), it will show details from the sensor's attributes including the type, level, and expiration time of the alert. If the alert is not active, it will simply state 'alert expired'."
},
"human_like": "Sends a notification with details whenever the weather alert status changes, including when an alert expires.",
"complexity": "medium"
}
},
{
"id": "temp_vent_notify",
"result": {
"structured": "TRIGGER: When temperature ventilation sensor [binary_sensor.temp_ventilaton] changes state. CONDITIONS: None. ACTIONS: Set variable 'tit' to the state of temperature outside sensor [sensor.temp_out] with its unit appended. Set variable 'msg' to 'open window' if temperature ventilation sensor [binary_sensor.temp_ventilaton] is 'on', else 'close window'. Log an entry in the logbook with title 'tit' and message 'msg'. Create a persistent notification with title 'tit' and message 'msg'. If living TV [media_player.livingtv] is playing, send a notification to Kodi with title 'tit', message 'msg', an info icon, and a display time of 15000 milliseconds. Otherwise, send a notification via Gmail with title 'tit' and message 'msg'.",
"natural_language": {
"trigger": "Whenever the state of the temperature ventilation sensor [binary_sensor.temp_ventilaton] changes.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "The automation first creates two variables. The title variable is set to the current outside temperature reading from temperature outside sensor [sensor.temp_out], including its unit. The message variable is set to 'open window' if the ventilation sensor is on, or 'close window' if it is off. It then logs this information to the Home Assistant logbook and creates a persistent notification. Finally, it checks if the living TV [media_player.livingtv] is currently playing. If it is, it sends a notification to the Kodi media player. If the TV is not playing, it sends the notification via Gmail instead."
},
"human_like": "Sends a notification to open or close the window based on the ventilation sensor status, and displays it on the TV if it's on, or sends an email otherwise.",
"complexity": "medium"
}
},
{
"id": "hall_light",
"result": {
"structured": "TRIGGER: When hall motion sensor [binary_sensor.hall_motion] turns on OR When hall occupancy sensor [binary_sensor.hall_occupancy] turns off and remains off for a duration determined by hall counter [counter.hall_motion] (if counter > 6 then 90 seconds, else if counter > 3 then 45 seconds, else 30 seconds) OR When an event 'lights_check' with data {'light': 'turn_off'} occurs. CONDITIONS: For the first choose block: (Trigger is light_on AND hall light [light.hall] is off) OR (Trigger is light_off AND hall light [light.hall] is on). For the second choose block: (Trigger is light_on) OR (Trigger is light_off). ACTIONS: If conditions are met for the first choose block, then turn on hall light [light.hall] and run script.lights_on with parameters ctrl_light: light.hall and ctrl_all: true if night mode sensor [binary_sensor.night_mode] is off, else false. OR if conditions are met for the first choose block, then run script.lights_off with parameter ctrl_light: light.hall. For the second choose block, if trigger is light_on, increment hall counter [counter.hall_motion]. If trigger is light_off, reset hall counter [counter.hall_motion].",
"natural_language": {
"trigger": "The automation can be triggered in three ways: when motion is detected by the hall motion sensor [binary_sensor.hall_motion], when the hall occupancy sensor [binary_sensor.hall_occupancy] reports the hall is unoccupied for a variable amount of time (which depends on the value of a motion counter), or when a specific system event named 'lights_check' with the instruction to turn off lights is received.",
"conditions": "For turning the light on, the automation checks that the trigger was motion detection and that the hall light [light.hall] is currently off. For turning the light off, it checks that the trigger was either the occupancy sensor becoming unoccupied or the system event, and that the hall light [light.hall] is currently on. Separate from the light control, the automation also manages a counter, incrementing it on motion triggers and resetting it on triggers that would turn the light off.",
"action": "If motion is detected and the light is off, the hall light [light.hall] is turned on and a script (lights_on) is executed, which may control other lights if night mode is not active. If the hall is unoccupied or a turn-off event is received and the light is on, a script (lights_off) is executed for the hall light. Additionally, a motion counter [counter.hall_motion] is incremented on motion detection and reset when the light is turned off."
},
"human_like": "Automatically turns the hall light on when motion is detected and off when the hall is unoccupied, using a smart delay that adapts based on recent activity, and manages a counter to track motion events.",
"complexity": "high"
}
},
{
"id": "home_motion_detect",
"result": {
"structured": "TRIGGER: When bed motion sensor [binary_sensor.bed_motion] turns on OR living motion sensor [binary_sensor.living_motion] turns on OR hall motion sensor [binary_sensor.hall_motion] turns on OR office motion sensor [binary_sensor.office_motion] turns on OR home motion boolean [input_boolean.home_motion] turns off. CONDITIONS: device tracker root [device_tracker.root] is NOT home AND device tracker root [device_tracker.root] is NOT None. ACTIONS: Turn on home motion boolean [input_boolean.home_motion].",
"natural_language": {
"trigger": "When motion is detected by any of the following sensors: bed motion sensor [binary_sensor.bed_motion], living motion sensor [binary_sensor.living_motion], hall motion sensor [binary_sensor.hall_motion], or office motion sensor [binary_sensor.office_motion], or when the home motion boolean [input_boolean.home_motion] is turned off.",
"conditions": "The device tracker root [device_tracker.root] must not be at home and must not be in an unknown state.",
"action": "Turns on the home motion boolean [input_boolean.home_motion] to indicate motion has been detected."
},
"human_like": "Sets a home motion indicator when motion is detected in key rooms, but only when a specific person is not at home.",
"complexity": "medium"
}
},
{
"id": "notify_record",
"result": {
"structured": "TRIGGER: When video recording sensor [sensor.video_rec] changes state. CONDITIONS: None. ACTIONS: Execute script.all_notify with a data template. The template sets icon_notify to 'record-rec', tit to 'video rec', and msg to a conditional string. If video recording sensor [sensor.video_rec] exists, the message includes the duration, size, edl, name, and date attributes. Otherwise, the message is 'err record'.",
"natural_language": {
"trigger": "Whenever the state of the video recording sensor [sensor.video_rec] changes.",
"conditions": "There are no conditions for this automation.",
"action": "It runs a notification script called 'script.all_notify'. The notification will have a specific icon and title, and the message content depends on the sensor's state. If the sensor is available, the message will show the recording's duration, file size, EDL list, filename, and date. If the sensor is not available, the message will simply say 'err record'."
},
"human_like": "Sends a detailed notification about a video recording whenever the recording sensor updates, or an error message if the sensor data is missing.",
"complexity": "medium"
}
},
{
"id": "in_call",
"result": {
"structured": "TRIGGER: When in call sensor [binary_sensor.in_call] changes state. CONDITIONS: None. ACTIONS: Execute the script 'script.in_call_on' if the new state is 'on', or execute the script 'script.in_call_off' if the new state is 'off'.",
"natural_language": {
"trigger": "Whenever the in call sensor [binary_sensor.in_call] changes its state.",
"conditions": "There are no conditions that must be met.",
"action": "Depending on the new state of the sensor, it will run a specific script. If the sensor turns on, it runs the 'script.in_call_on' script. If the sensor turns off, it runs the 'script.in_call_off' script."
},
"human_like": "Runs a specific script when the call status changes, turning on or off related actions.",
"complexity": "low"
}
},
{
"id": "kitchen_light",
"result": {
"structured": "TRIGGER: When kitchen motion sensor [binary_sensor.kitchen_motion] turns on OR When kitchen occupancy sensor [binary_sensor.kitchen_occupancy] turns off AND remains off for a dynamic duration (120 seconds if kitchen counter [counter.kitchen_motion] > 14, else 90 seconds if > 10, else 60 seconds if > 6, else 15 seconds) OR When office motion sensor [binary_sensor.office_motion] turns on OR When bed motion sensor [binary_sensor.bed_motion] turns on OR When a 'lights_check' event with data light: turn_off occurs. CONDITIONS: (Triggered by kitchen motion sensor [binary_sensor.kitchen_motion] turning on AND kitchen LED light [light.kitchen_led] is off) OR (Triggered by kitchen occupancy sensor [binary_sensor.kitchen_occupancy] turning off after dynamic duration OR office motion sensor [binary_sensor.office_motion] turning on OR bed motion sensor [binary_sensor.bed_motion] turning on OR 'lights_check' event AND kitchen LED light [light.kitchen_led] is on AND (kitchen occupancy sensor [binary_sensor.kitchen_occupancy] is off OR kitchen kodi active sensor [binary_sensor.kodi_active] is on)). ACTIONS: Set variable brightness_pct to a random value between 80-90 if night mode sensor [binary_sensor.night_mode] is off, else random between 30-40. IF trigger is kitchen motion sensor [binary_sensor.kitchen_motion] turning on AND kitchen LED light [light.kitchen_led] is off THEN turn on kitchen LED light [light.kitchen_led], delay for control delay input number [input_number.ctrl_delay] milliseconds, then turn on kitchen LED light [light.kitchen_led] with brightness_pct. IF trigger is kitchen occupancy sensor [binary_sensor.kitchen_occupancy] turning off after dynamic duration OR office motion sensor [binary_sensor.office_motion] turning on OR bed motion sensor [binary_sensor.bed_motion] turning on OR 'lights_check' event AND kitchen LED light [light.kitchen_led] is on AND (kitchen occupancy sensor [binary_sensor.kitchen_occupancy] is off OR kitchen kodi active sensor [binary_sensor.kodi_active] is on) THEN turn on kitchen LED light [light.kitchen_led] at 15% brightness, delay for control delay input number [input_number.ctrl_delay] milliseconds, then turn off kitchen LED light [light.kitchen_led]. IF trigger is kitchen motion sensor [binary_sensor.kitchen_motion] turning on THEN increment kitchen counter [counter.kitchen_motion]. IF trigger is kitchen occupancy sensor [binary_sensor.kitchen_occupancy] turning off after dynamic duration OR office motion sensor [binary_sensor.office_motion] turning on OR bed motion sensor [binary_sensor.bed_motion] turning on OR 'lights_check' event AND kitchen occupancy sensor [binary_sensor.kitchen_occupancy] is off THEN reset kitchen counter [counter.kitchen_motion]. IF trigger is kitchen motion sensor [binary_sensor.kitchen_motion] turning on AND kitchen kodi active sensor [binary_sensor.kodi_active] is off THEN fire event 'kitchen_light_1' with data ctrl: kitchen_on, brightness_pct: random 85-95, temp: 4000, transition: 1. IF trigger is kitchen occupancy sensor [binary_sensor.kitchen_occupancy] turning off after dynamic duration THEN fire event 'kitchen_light_1' with data ctrl: kitchen_off, transition: 1.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when motion is detected by the kitchen motion sensor [binary_sensor.kitchen_motion]; when the kitchen occupancy sensor [binary_sensor.kitchen_occupancy] reports the kitchen is unoccupied and stays that way for a variable amount of time (the delay depends on the value of a motion counter); when motion is detected in the office by the office motion sensor [binary_sensor.office_motion]; when motion is detected in the bedroom by the bed motion sensor [binary_sensor.bed_motion]; or when a specific system event named 'lights_check' with the instruction to turn off lights is received.",
"conditions": "The actions taken depend on which trigger occurred and the current state of the lights and sensors. For turning the light on, the automation checks if the trigger was motion in the kitchen and if the kitchen LED light [light.kitchen_led] is currently off. For turning the light off or dimming it, the automation checks if the trigger was one of the 'off' conditions, if the kitchen LED light [light.kitchen_led] is on, and if either the kitchen is unoccupied according to the kitchen occupancy sensor [binary_sensor.kitchen_occupancy] or the kitchen kodi active sensor [binary_sensor.kodi_active] indicates media playback is active.",
"action": "The automation manages the kitchen LED light [light.kitchen_led] with several possible actions. It can turn the light on to a random brightness level (higher during the day, lower at night), turn it off via a dimming step, increment or reset a motion counter [counter.kitchen_motion], and send custom events to control other lights. A short delay from the control delay input number [input_number.ctrl_delay] is used between some light commands."
},
"human_like": "This automation intelligently controls the kitchen light based on motion in the kitchen and adjacent rooms, occupancy status, and time of day, using a counter to adjust timeouts and sending commands to other lighting systems.",
"complexity": "high"
}
},
{
"id": "kitchen_light_1",
"result": {
"structured": "TRIGGER: When event 'kitchen_light_1' occurs OR When event 'lights_check' occurs with event_data.light equal to 'turn_off'. CONDITIONS: (Triggered by event 'kitchen_light_1' AND event_data.ctrl is 'kitchen_on' AND living window lux sensor [sensor.living_window_lux] lux value is below 30 AND night mode sensor [binary_sensor.night_mode] is off AND kitchen light [light.kitchen] color temperature is not 4000K) OR (Triggered by event 'kitchen_light_1' AND event_data.ctrl is 'living_on' AND living window lux sensor [sensor.living_window_lux] lux value is below 20 AND night mode sensor [binary_sensor.night_mode] is off AND kitchen light [light.kitchen] is off AND kitchen kodi active sensor [binary_sensor.kodi_active] is off) OR (Triggered by event 'kitchen_light_1' AND event_data.ctrl is 'kitchen_off' AND living light [light.living] is on AND kitchen kodi active sensor [binary_sensor.kodi_active] is off AND living window lux sensor [sensor.living_window_lux] lux value is below 30) OR ((Triggered by event 'kitchen_light_1' AND event_data.ctrl is 'kitchen_off' OR event_data.ctrl is 'living_off') OR (Triggered by event 'lights_check' with id 'light_off') AND kitchen light [light.kitchen] is on AND ((living occupancy sensor [binary_sensor.living_occupancy] is not on AND kitchen counter [counter.kitchen_motion] count is below 1) OR kitchen kodi active sensor [binary_sensor.kodi_active] is on)). ACTIONS: If first condition set matches, delay for control delay input number [input_number.ctrl_delay] milliseconds, turn on kitchen light [light.kitchen] to 1% brightness with 0 transition and color_temp_kelvin from event, delay again, then set brightness_pct and transition from event. If second condition set matches, delay for control delay input number [input_number.ctrl_delay] milliseconds, turn on kitchen light [light.kitchen] to 1% brightness with 0 transition and color_temp_kelvin from event, delay again, then set brightness_pct and transition from event. If third condition set matches, turn on kitchen light [light.kitchen] with 3 second transition, brightness matching living light [light.living] (default 220), and color_temp_kelvin matching living light [light.living] (default 3000K). If fourth condition set matches, turn off kitchen light [light.kitchen] with 5 second transition.",
"natural_language": {
"trigger": "The automation is triggered either by a custom event named 'kitchen_light_1' or by a 'lights_check' event that includes data specifying the light should be turned off.",
"conditions": "The automation selects one of four possible action sequences based on the trigger and conditions. If the 'kitchen_light_1' event occurs with the control command 'kitchen_on', it requires the living room to be relatively dark (below 30 lux), night mode to be off, and the kitchen light not to be set to 4000K. If the event has the command 'living_on', it requires even lower light levels (below 20 lux), night mode off, the kitchen light to be off, and the Kodi media player to be inactive. If the command is 'kitchen_off', it requires the living room light to be on, the Kodi player to be off, and the living room to be dark (below 30 lux). Finally, if the command is 'kitchen_off', 'living_off', or the trigger is the specific 'lights_check' event to turn off lights, it requires the kitchen light to be on and either that there is no occupancy in the living room and minimal motion in the kitchen, or that the Kodi player is active.",
"action": "Depending on which set of conditions is met, the automation will either turn on the kitchen light with specific brightness and color settings (with initial and final delays for some commands), adjust the kitchen light to match the living room light's state, or turn off the kitchen light with a slow fade."
},
"human_like": "This automation intelligently controls the kitchen light based on custom commands, ambient light levels, room occupancy, and media player activity, ensuring appropriate lighting for different scenarios.",
"complexity": "high"
}
},
{
"id": "kodi_sleep_timer",
"result": {
"structured": "TRIGGER: When a kodi_sleep_timer event occurs. CONDITIONS: Kodi sleep timer switch [switch.tv_cec] is on. ACTIONS: Turn off Kodi sleep timer switch [switch.tv_cec], wait for 100 seconds, set the volume of living TV [media_player.livingtv] to 100%, then execute the script all_notify with parameters icon_notify: kodi, tit: kodi, msg: restore volume.",
"natural_language": {
"trigger": "When a custom event named 'kodi_sleep_timer' is received.",
"conditions": "The Kodi sleep timer switch [switch.tv_cec] must be in the 'on' state.",
"action": "First, turn off the Kodi sleep timer switch [switch.tv_cec]. After a 100-second delay, set the volume of the living TV [media_player.livingtv] to maximum (100%). Finally, run the notification script 'all_notify' with the title 'kodi', icon 'kodi', and message 'restore volume'."
},
"human_like": "When a Kodi sleep timer event occurs, it turns off the TV, waits a moment, restores the volume to full, and sends a notification.",
"complexity": "medium"
}
},
{
"id": "tv_ctrl",
"result": {
"structured": "TRIGGER: When Kodi screen saver sensor [binary_sensor.kodi_screen_saver] turns off (to 'off') for 1 second OR When Kodi screen saver sensor [binary_sensor.kodi_screen_saver] turns on (to 'on') for 30 seconds OR When living TV [media_player.livingtv] starts playing (to 'playing') for 1 second OR When living TV [media_player.livingtv] stops playing (from 'playing') for 1 second OR When living TV [media_player.livingtv] is paused (to 'paused') for 3 seconds OR When an event 'tv_ctrl' with data 'tv_off' occurs. CONDITIONS: (None at the top level; conditions are embedded within each choose block). ACTIONS: A series of conditional actions executed based on the trigger and state conditions: 1) If trigger is tv_on OR tv_off, call Kodi method XBMC.GetInfoBooleans and delay 500ms. 2) If trigger is tv_on AND living TV [media_player.livingtv] is idle AND Kodi sleep timer switch [switch.tv_cec] is off, set hyperion select effect input select [input_select.hyperion_select_effect] to 'Sparks'. 3) If trigger is tv_on AND Kodi idle sensor [binary_sensor.kodi_idle] is off, then if sound bar media player [media_player.ht_mt500_501_b34d6a] is playing, turn it off, else run shell_command.sound_bar_on; then delay 5 seconds. 4) If trigger is tv_on AND living TV [media_player.livingtv] is idle AND Kodi sleep timer switch [switch.tv_cec] is off, then if Kodi idle sensor [binary_sensor.kodi_idle] is off, turn on Kodi sleep timer switch [switch.tv_cec], wait for it to be on (timeout 30s), then execute a sequence of delays and scripts (is_hdmi1, as_hdmi1, tv_hdmi1_audio, state_kodi), turn on Light Extend Clear [script.light_extend_clear], configure soundbar media player [media_player.soundbar] settings (subwooferLevel 6, voice type2, volume 0.24), send a notification, and fire event tv_cec_control_done; else run script.all_notify with skip message. 5) If trigger is tv_off AND living TV [media_player.livingtv] is idle AND Kodi sleep timer switch [switch.tv_cec] is on, turn off Kodi sleep timer switch [switch.tv_cec], wait for it to be off (timeout 20s), then if switch is still on, set hyperion effect to 'Police Lights Solid', notify, delay 30s, and run script.living_tv_reboot; else delay 5s, run Radio On [script.radio_on], set hyperion effect to 'Matrix', and fire event tv_cec_control_done. 6) If trigger is pause, set hyperion effect to 'Lights'. 7) If trigger is play, turn on Light Extend Clear [script.light_extend_clear] and set hyperion effect to 'None'. 8) If trigger is pause_long, run script.state_kodi and call Kodi method to execute addon for VolumeDown and VolumeUp with a 1s delay.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when the Kodi screen saver sensor [binary_sensor.kodi_screen_saver] turns off for at least one second, when it turns on for at least thirty seconds, when the living TV [media_player.livingtv] starts playing for one second, when it stops playing for one second, when it is paused for three seconds, or when a custom event named 'tv_ctrl' with the data 'tv_off' is received.",
"conditions": "There are no global conditions. Instead, each action sequence has its own set of conditions that must be met for that specific sequence to run. These conditions check the specific trigger that fired and the current state of various entities like the living TV [media_player.livingtv], the Kodi sleep timer switch [switch.tv_cec], and the Kodi idle sensor [binary_sensor.kodi_idle].",
"action": "The actions are complex and depend on which trigger occurred and the state of the system. They include: checking Kodi idle time, selecting different visual effects for a hyperion system, controlling a sound bar and other media players, turning a CEC switch on or off with waiting and retry logic, running a series of scripts to configure HDMI and audio settings, adjusting soundbar audio settings, sending notifications, and firing completion events. Specific sequences are dedicated to turning the TV system on, turning it off, and handling playback states like play, pause, and a long pause."
},
"human_like": "This automation manages the living room TV and entertainment system, turning devices on or off and adjusting settings based on screen saver status, playback state, and custom commands.",
"complexity": "high"
}
},
{
"id": "kodi_clear_tv_db",
"result": {
"structured": "TRIGGER: When event tv_cec_control_done occurs with event data cec: 'off'. CONDITIONS: living TV [media_player.livingtv] is idle. ACTIONS: Call Kodi method Addons.SetAddonEnabled on living TV [media_player.livingtv] to disable addon pvr.hts, wait 5 seconds, execute shell command tv_cleardb, wait 5 seconds, call Kodi method Addons.SetAddonEnabled on living TV [media_player.livingtv] to enable addon pvr.hts, wait 10 seconds, call Kodi method VideoLibrary.Clean on living TV [media_player.livingtv].",
"natural_language": {
"trigger": "When a specific event named 'tv_cec_control_done' is received, indicating the CEC control is done and the 'cec' data is set to 'off'.",
"conditions": "The living TV [media_player.livingtv] must be in an idle state.",
"action": "It first disables the PVR addon (pvr.hts) on the Kodi instance running on the living TV [media_player.livingtv]. After a 5-second delay, it runs a shell command named 'tv_cleardb'. Following another 5-second delay, it re-enables the PVR addon. Finally, after a 10-second delay, it instructs Kodi to clean its video library."
},
"human_like": "Cleans the Kodi TV database and video library after the TV is turned off via CEC and the player is idle.",
"complexity": "medium"
}
},
{
"id": "update_video_db",
"result": {
"structured": "TRIGGER: When a tv_cec_control_done event occurs with cec data 'on' OR When living TV [media_player.livingtv] state becomes idle and remains for 10 seconds OR When living TV [media_player.livingtv] state becomes paused and remains for 10 seconds. CONDITIONS: None. ACTIONS: Execute script.update_video_db, Log an entry in the logbook with name 'videodb' and message 'trigger update', Turn off Update Video DB [automation.update_video_db].",
"natural_language": {
"trigger": "The automation triggers in one of three ways: when a specific CEC control event (tv_cec_control_done) signals the TV is turned on, when the living TV [media_player.livingtv] is idle for 10 seconds, or when the living TV [media_player.livingtv] is paused for 10 seconds.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "The automation runs a script to update a video database, logs a custom entry to the logbook, and then turns itself off to prevent further runs."
},
"human_like": "Updates the video database and logs the event when the TV is turned on via CEC, becomes idle, or is paused for a short time.",
"complexity": "medium"
}
},
{
"id": "sonarr_radarr_db",
"result": {
"structured": "TRIGGER: When an event of type update_video_db occurs. CONDITIONS: None. ACTIONS: First, run script.all_notify with icon_notify set to download-outline, tit set to the name from the event data, and msg set to the eventtype from the event data. Second, if the eventtype from the event data is either 'Download' OR 'Rename', then turn on Update Video DB [automation.update_video_db].",
"natural_language": {
"trigger": "When a custom event named 'update_video_db' is received.",
"conditions": "There are no specific conditions that must be met for the actions to run.",
"action": "First, it sends a notification using the script.all_notify, with the title set to the name from the event and the message set to the event type. Then, it checks the event type; if it is 'Download' or 'Rename', it turns on the Update Video DB [automation.update_video_db] automation."
},
"human_like": "Sends a notification for video database update events and, for specific event types, triggers another automation to update the video database.",
"complexity": "medium"
}
},
{
"id": "bazarr_subs",
"result": {
"structured": "TRIGGER: When a Home Assistant event of type 'bazarr_subs' occurs. CONDITIONS: None. ACTIONS: Execute script.all_notify with data: icon_notify = subtitles-outline, tit = bazarr, msg = the 'message' data from the triggering event.",
"natural_language": {
"trigger": "When the Home Assistant system receives an event named 'bazarr_subs'.",
"conditions": "There are no conditions that must be met.",
"action": "Runs the script 'all_notify' [script.all_notify], setting the notification icon to 'subtitles-outline', the title to 'bazarr', and the message to the content provided in the triggering event's data."
},
"human_like": "Sends a notification when Bazarr reports a subtitle-related event.",
"complexity": "low"
}
},
{
"id": "living_light",
"result": {
"structured": "TRIGGER: When living motion sensor [binary_sensor.living_motion] turns on OR when living occupancy sensor [binary_sensor.living_occupancy] turns off and remains off for 60 seconds OR when bed motion sensor [binary_sensor.bed_motion] turns on OR when office motion sensor [binary_sensor.office_motion] turns on OR when light video pause sensor [binary_sensor.light_video_pause] turns on OR when light video pause sensor [binary_sensor.light_video_pause] turns off OR when a custom event 'lights_check' occurs with event_data containing 'light: turn_off'. CONDITIONS: (Evaluated within the action's choose blocks). ACTIONS: First, set a variable 'cfg' based on a template that checks if night mode sensor [binary_sensor.night_mode] is off AND light video pause sensor [binary_sensor.light_video_pause] is off. Then, execute one of three possible action sequences based on the trigger and conditions: 1. If the trigger ID is 'light_on' AND living light [light.living] is off AND kitchen kodi active sensor [binary_sensor.kodi_active] is off AND day sensor [binary_sensor.day] is off AND the value from sensor.living_lux [sensor.living_lux] is below 40, then run script.lights_on with parameters derived from 'cfg'. 2. If the trigger ID is 'light_off' AND living light [light.living] is on AND light video pause sensor [binary_sensor.light_video_pause] is off AND (living occupancy sensor [binary_sensor.living_occupancy] is off OR kitchen kodi active sensor [binary_sensor.kodi_active] is on), then run script.lights_off with a transition parameter from 'cfg'. 3. If the trigger ID is 'light_off_video' AND living light [light.living] is on, then run script.lights_off with a transition parameter from 'cfg'. Finally, send a custom event 'kitchen_light_1' with data if the trigger ID was 'light_on' or 'light_off'.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when motion is detected in the living room, when the living room occupancy sensor reports no occupancy for a full minute, when motion is detected in the bedroom or office, when the video pause sensor is turned on or off, or when a specific system event named 'lights_check' with the command to turn off lights is received.",
"conditions": "The actions taken depend on which trigger fired and the current state of several devices. To turn the living room light on, the light must be off, the Kodi system must be inactive, it must not be daytime, and the ambient light level in the living room must be below 40 lux. To turn the light off, it must be on, the video pause must not be active, and either the living room must be unoccupied or the Kodi system must be active. A special case for turning the light off occurs if the video pause sensor is turned off, which only requires the light to be on.",
"action": "Based on the trigger and conditions, the automation will either turn the living room light on or off using specific scripts, adjusting brightness, color temperature, and transition time based on a configuration variable. It also sends a custom event to coordinate with the kitchen light, passing along relevant settings like brightness or an off command."
},
"human_like": "Automatically controls the living room light based on motion, occupancy, time of day, and media activity, and coordinates with the kitchen lighting.",
"complexity": "high"
}
},
{
"id": "other_living_light",
"result": {
"structured": "TRIGGER: When living motion sensor [binary_sensor.living_motion] OR night mode control sensor [binary_sensor.night_mode_ctrl] turns on OR When living occupancy sensor [binary_sensor.living_occupancy] becomes unoccupied (off) for 120 seconds OR When night mode control sensor [binary_sensor.night_mode_ctrl] turns off OR When a custom event 'lights_check' with data 'light: turn_off' occurs. CONDITIONS AND ACTIONS (Choose Block): 1. IF (Trigger is light_on) AND (living occupancy sensor [binary_sensor.living_occupancy] is on) AND (night mode control sensor [binary_sensor.night_mode_ctrl] is on) AND (shutter living light [light.shutter_living] is off) THEN Turn on shutter living light [light.shutter_living]. 2. IF (Trigger is light_off) AND (living occupancy sensor [binary_sensor.living_occupancy] is off) AND (shutter living light [light.shutter_living] is on) THEN Turn off shutter living light [light.shutter_living]. 3. IF (Trigger is light_ctrl_off) AND (shutter living light [light.shutter_living] is on) THEN Turn off shutter living light [light.shutter_living].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when the living motion sensor [binary_sensor.living_motion] detects motion, when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned on, when the living occupancy sensor [binary_sensor.living_occupancy] reports no occupancy for two minutes, when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned off, or when a specific system event called 'lights_check' is received with the instruction to turn off a light.",
"conditions": "The automation uses a set of rules to decide what to do. If the trigger was motion or night mode turning on, it checks if the living room is occupied, if night mode is active, and if the living room light is off. If all are true, it turns the light on. If the trigger was the room being unoccupied for two minutes, it checks if the room is indeed unoccupied and if the light is on. If true, it turns the light off. Finally, if the trigger was night mode turning off or the 'lights_check' event, it simply checks if the light is on and turns it off.",
"action": "Depending on which trigger fired and the state of the room, the automation will either turn on the shutter living light [light.shutter_living] when conditions for occupancy and night mode are met, or turn it off when the room is empty or when a manual control or system event requests it."
},
"human_like": "Automatically turns the living room light on when motion is detected and night mode is active, and turns it off when the room is empty or when night mode is deactivated.",
"complexity": "medium"
}
},
{
"id": "n0ll_not_home",
"result": {
"structured": "TRIGGER: When device tracker n0ll [device_tracker.n0ll] remains not_home for 90 seconds. CONDITIONS: None. ACTIONS: Execute script.sound_bar_go_sleep.",
"natural_language": {
"trigger": "When the device tracker n0ll [device_tracker.n0ll] reports that the person is not home and this state persists for 90 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "Runs the script named 'sound_bar_go_sleep'."
},
"human_like": "Turns off the sound bar when the user has been away from home for a minute and a half.",
"complexity": "low"
}
},
{
"id": "root_not_home",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] leaves zone.home. CONDITIONS: None. ACTIONS: Turn on Light Extend Clear [script.light_extend_clear], turn off sound bar media player [media_player.ht_mt500_501_b34d6a] AND bedroom speaker [media_player.bedroom_speaker], execute script.kodi_turn_off, AND turn off Just Home [automation.just_home].",
"natural_language": {
"trigger": "When the device tracker root [device_tracker.root] leaves the home zone.",
"conditions": "There are no conditions for this automation.",
"action": "Runs the Light Extend Clear [script.light_extend_clear] script, turns off the sound bar media player [media_player.ht_mt500_501_b34d6a] and the bedroom speaker [media_player.bedroom_speaker], executes the kodi_turn_off script, and turns off the Just Home [automation.just_home] automation."
},
"human_like": "When you leave home, this automation turns off media players, clears lights, and disables the 'Just Home' automation.",
"complexity": "low"
}
},
{
"id": "home_away",
"result": {
"structured": "TRIGGER: When home root distance sensor [sensor.home_root_distance] is above 15 OR when away skip boolean [input_boolean.away_skip] changes state and remains stable for 3 seconds. CONDITIONS: (Trigger is away OR (Trigger is away_skip AND away skip boolean [input_boolean.away_skip] is off AND home root distance sensor [sensor.home_root_distance] is above 15)). ACTIONS: If away skip boolean [input_boolean.away_skip] is off, then send a notification via Gmail with title 'hass' and message 'home away trigger', run the script Doors Full Lock [script.doors_full_lock], turn off living TV switch [switch.living_tv] and bed switch 1 [switch.bed_switch_1], turn on automation Home Near [automation.home_near], and turn off automation Home Away [automation.home_away]. Otherwise, if away skip boolean [input_boolean.away_skip] is on, run script.all_notify with title 'home_away' and message 'skip'. Additionally, if the trigger is away_skip, run script.all_notify with title 'home_away' and a message indicating whether the away skip is 'disabled' (if on) or 'enabled' (if off).",
"natural_language": {
"trigger": "The automation triggers when the home root distance sensor [sensor.home_root_distance] reports a value greater than 15, or when the away skip boolean [input_boolean.away_skip] changes state and remains stable for 3 seconds.",
"conditions": "The automation proceeds if the trigger was the distance sensor being above 15, or if the trigger was the away skip boolean and it is currently off while the distance sensor is also above 15.",
"action": "If the away skip boolean [input_boolean.away_skip] is off, the system sends a Gmail notification titled 'hass' with the message 'home away trigger', activates the Doors Full Lock [script.doors_full_lock] script, turns off the living TV switch [switch.living_tv] and bed switch 1 [switch.bed_switch_1], enables the Home Near [automation.home_near] automation, and disables itself (Home Away [automation.home_away]). If the away skip boolean is on, it sends a notification with the title 'home_away' and message 'skip'. Additionally, whenever the away skip boolean triggers the automation, it sends a notification stating whether the away skip feature is currently disabled or enabled."
},
"human_like": "This automation puts the home into 'away' mode when you leave a certain distance from home, locking doors and turning off devices, unless an 'away skip' feature is active.",
"complexity": "medium"
}
},
{
"id": "office_light",
"result": {
"structured": "TRIGGER: When office motion sensor [binary_sensor.office_motion] turns on OR When office occupancy sensor [binary_sensor.office_occupancy] remains off for 60 seconds OR When living motion sensor [binary_sensor.living_motion] turns on OR When bed motion sensor [binary_sensor.bed_motion] turns on OR When a custom event 'lights_check' with event_data light: turn_off occurs. CONDITIONS: For the first action branch: (Trigger is office motion sensor [binary_sensor.office_motion] turning on) AND (office light [light.office] is off) AND (day sensor [binary_sensor.day] is off). For the second action branch: (Trigger is office occupancy sensor [binary_sensor.office_occupancy] off, living motion sensor [binary_sensor.living_motion] on, bed motion sensor [binary_sensor.bed_motion] on, or the 'lights_check' event) AND (office light [light.office] is on) AND (office occupancy sensor [binary_sensor.office_occupancy] is off). ACTIONS: If the first branch conditions are met: If office enter dummy boolean [input_boolean.office_enter_dummy] is off, then run script.lights_on on office light [light.office] with config from a template (using night mode sensor [binary_sensor.night_mode] state). Otherwise, run script.lights_on on office desk light [light.office_desk] with fixed parameters and turn off office enter dummy boolean [input_boolean.office_enter_dummy]. If the second branch conditions are met: Run script.lights_off on office light [light.office] with a transition time from the template config.",
"natural_language": {
"trigger": "The automation can be triggered by several events: motion is detected by the office motion sensor [binary_sensor.office_motion], the office occupancy sensor [binary_sensor.office_occupancy] reports the room is unoccupied for a full minute, motion is detected by the living motion sensor [binary_sensor.living_motion], motion is detected by the bed motion sensor [binary_sensor.bed_motion], or a custom 'lights_check' event is received with the instruction to turn off a light.",
"conditions": "The automation has two distinct sets of conditions leading to different actions. For turning the light on, it requires the trigger to be motion in the office, the main office light [light.office] to be off, and the day sensor [binary_sensor.day] to be off (indicating it's not daytime). For turning the light off, it requires the trigger to be one of the 'off' triggers (occupancy off, motion elsewhere, or the event), the main office light [light.office] to be on, and the office occupancy sensor [binary_sensor.office_occupancy] to confirm the room is unoccupied.",
"action": "If conditions for turning the light on are met, it checks the state of the office enter dummy boolean [input_boolean.office_enter_dummy]. If it's off, it turns on the main office light [light.office] using a script with brightness, color, and transition settings that depend on whether night mode is active. If the dummy boolean is on, it instead turns on only the office desk light [light.office_desk] with specific settings and then turns off the dummy boolean. If conditions for turning the light off are met, it turns off the main office light [light.office] using a script with a configurable transition time."
},
"human_like": "Automatically controls the office lights, turning them on when motion is detected at night and off when the room is unoccupied or motion is detected in other rooms.",
"complexity": "high"
}
},
{
"id": "other_office_light",
"result": {
"structured": "TRIGGER: When office motion sensor [binary_sensor.office_motion] OR night mode control sensor [binary_sensor.night_mode_ctrl] turns on OR When office occupancy sensor [binary_sensor.office_occupancy] turns off and remains off for 120 seconds OR When night mode control sensor [binary_sensor.night_mode_ctrl] turns off OR When a 'lights_check' event with data 'light: turn_off' occurs. CONDITIONS AND ACTIONS (Choose Blocks): BLOCK 1 (Shutter Office Light): IF (Trigger is light_on) AND (office occupancy sensor [binary_sensor.office_occupancy] is on) AND (night mode control sensor [binary_sensor.night_mode_ctrl] is on) AND (shutter office light [light.shutter_office] is off) THEN Turn on shutter office light [light.shutter_office] AND IF office enter dummy boolean [input_boolean.office_enter_dummy] is on THEN Turn off office enter dummy boolean [input_boolean.office_enter_dummy]. OR IF (Trigger is light_off) AND (office occupancy sensor [binary_sensor.office_occupancy] is off) AND (shutter office light [light.shutter_office] is on) THEN Turn off shutter office light [light.shutter_office]. OR IF (Trigger is light_ctrl_off) AND (shutter office light [light.shutter_office] is on) THEN Turn off shutter office light [light.shutter_office]. BLOCK 2 (Office Wardrobe Light): IF (Trigger is light_on) AND (office occupancy sensor [binary_sensor.office_occupancy] is on) AND (in bed dummy switch [input_boolean.in_bed_dummy_switch] is off) AND (office wardrobe light [light.office_wardrobe] is off) THEN Turn on office wardrobe light [light.office_wardrobe]. OR IF (Trigger is light_off) AND (office occupancy sensor [binary_sensor.office_occupancy] is off) AND (office wardrobe light [light.office_wardrobe] is on) THEN Turn off office wardrobe light [light.office_wardrobe]. OR IF (Trigger is light_ctrl_off) AND (office wardrobe light [light.office_wardrobe] is on) THEN Turn off office wardrobe light [light.office_wardrobe].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when motion is detected by the office motion sensor [binary_sensor.office_motion] or when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned on; when the office occupancy sensor [binary_sensor.office_occupancy] reports the room is empty for two minutes; when the night mode control sensor [binary_sensor.night_mode_ctrl] is turned off; or when a specific system event called 'lights_check' with the instruction to turn off lights is received.",
"conditions": "The automation uses two separate sets of rules (choose blocks) to control different lights. For the shutter office light [light.shutter_office], it will turn on only if the trigger was motion or night mode turning on, the office is occupied, night mode is active, and the light is currently off. If those conditions are met, it also turns off the office enter dummy boolean [input_boolean.office_enter_dummy] if it was on. The shutter light will turn off if the trigger was the office being empty for two minutes and the light is on, or if the trigger was night mode turning off or the lights_check event and the light is on. For the office wardrobe light [light.office_wardrobe], it will turn on if the trigger was motion or night mode turning on, the office is occupied, the in bed dummy switch [input_boolean.in_bed_dummy_switch] is off, and the wardrobe light is off. It will turn off if the trigger was the office being empty for two minutes and the light is on, or if the trigger was night mode turning off or the lights_check event and the light is on.",
"action": "Controls the shutter office light [light.shutter_office] and the office wardrobe light [light.office_wardrobe] based on occupancy, motion, and night mode status, turning them on or off as described."
},
"human_like": "Automatically turns the office lights on when someone is present and night mode is active, and turns them off when the room is empty or night mode is deactivated.",
"complexity": "high"
}
},
{
"id": "bath_heating",
"result": {
"structured": "TRIGGER: When climate control switch [switch.climate_control] remains in any state for 3 minutes OR when in bed dummy switch [input_boolean.in_bed_dummy_switch] turns on and remains on for 3 minutes OR at 06:30:00 OR at 00:15:00. CONDITIONS AND ACTIONS: The automation uses a choose block with multiple conditional sequences. Sequence 1: IF trigger is time_on AND device tracker root [device_tracker.root] is home AND bath TVR climate [climate.bath_tvr] is in heat mode THEN set bath TVR climate [climate.bath_tvr] to heat mode, wait 3 seconds, set preset to manual, wait 3 seconds, set temperature to 22.5, wait 3 seconds, turn on bath TVR boost switch [switch.bath_tvr_boost]. Sequence 2: IF trigger is time_off OR bed_off AND bath TVR climate [climate.bath_tvr] is in heat mode THEN set bath TVR climate [climate.bath_tvr] temperature to 19.5. Sequence 3: IF trigger is on_off AND climate control switch [switch.climate_control] is on AND operation mode select [select.operation_mode] is heating AND bath TVR climate [climate.bath_tvr] is off THEN set bath TVR climate [climate.bath_tvr] to heat mode, wait 3 seconds, set preset to manual, wait 3 seconds, set temperature to 20.5. Sequence 4: IF trigger is on_off AND ((climate control switch [switch.climate_control] is off AND operation mode select [select.operation_mode] is heating) OR (climate control switch [switch.climate_control] is on AND operation mode select [select.operation_mode] is cooling)) AND (bath TVR climate [climate.bath_tvr] is in heat mode OR its temperature attribute is above 10.5) THEN set bath TVR climate [climate.bath_tvr] to heat mode, wait 3 seconds, set preset to manual, wait 3 seconds, set temperature to 10.5, wait 3 seconds, set bath TVR climate [climate.bath_tvr] to off mode. DEFAULT: Log a message to the logbook.",
"natural_language": {
"trigger": "The automation can be triggered in four ways: when the climate control switch [switch.climate_control] remains in its current state for three minutes; when the in bed dummy switch [input_boolean.in_bed_dummy_switch] is turned on and stays on for three minutes; at 6:30 AM; or at 12:15 AM.",
"conditions": "The automation selects one of four action sequences based on which trigger fired and the current state of several devices. For the 6:30 AM trigger, it requires that the device tracker root [device_tracker.root] is home and the bath TVR climate [climate.bath_tvr] is in heat mode. For the 12:15 AM or 'in bed' trigger, it only requires the bath TVR climate to be in heat mode. For the climate control switch trigger, the conditions depend on the switch's state and the system's operation mode, leading to different sequences for turning heating on or off. If no specific sequence's conditions are met, a default action runs.",
"action": "Depending on the matched conditions, the automation will: 1) At 6:30 AM, turn on the bathroom heater to a warm 22.5°C and activate a boost switch. 2) At midnight or when going to bed, lower the bathroom heater temperature to 19.5°C. 3) When climate control is manually turned on in heating mode, set the bathroom heater to a moderate 20.5°C. 4) When climate control is turned off or the mode is changed in a way that indicates heating should stop, it sets the bathroom heater to a very low 10.5°C and then turns it off completely. If none of these apply, it logs a message for debugging."
},
"human_like": "Manages the bathroom heating schedule and temperature based on time of day, occupancy, and the overall climate control system status.",
"complexity": "high"
}
},
{
"id": "bath_light",
"result": {
"structured": "TRIGGER: When bath motion sensor [binary_sensor.bath_motion] turns on OR When bath occupancy sensor [binary_sensor.bath_occupancy] turns off and remains off for a duration determined by the value of bath counter [counter.bath_motion] (if >14 then 120 seconds, if >10 then 90 seconds, if >6 then 60 seconds, if >3 then 45 seconds, else 30 seconds) OR When bed motion sensor [binary_sensor.bed_motion] turns on OR When living motion sensor [binary_sensor.living_motion] turns on OR When an event 'lights_check' with data light: turn_off occurs. CONDITIONS AND ACTIONS: (IF trigger is light_on AND bath light [light.bath] is off THEN call script.lights_on with data ctrl_light: light.bath and ctrl_all: true if night mode sensor [binary_sensor.night_mode] is off) OR (IF trigger is light_off AND bath light [light.bath] is on AND bath occupancy sensor [binary_sensor.bath_occupancy] is off THEN call script.lights_off with data ctrl_light: light.bath).",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when motion is detected by the bath motion sensor [binary_sensor.bath_motion]; when the bath occupancy sensor [binary_sensor.bath_occupancy] reports the room is empty and stays empty for a variable amount of time (the delay depends on the value of a counter tracking motion events); when motion is detected by the bed motion sensor [binary_sensor.bed_motion]; when motion is detected by the living motion sensor [binary_sensor.living_motion]; or when a specific system event named 'lights_check' is received, instructing lights to turn off.",
"conditions": "For turning the light on, the trigger must be motion in the bathroom and the bath light [light.bath] must already be off. For turning the light off, the trigger must be one of the 'light_off' triggers, the bath light [light.bath] must be on, and the bath occupancy sensor [binary_sensor.bath_occupancy] must confirm the room is empty.",
"action": "If the conditions for turning on are met, it runs a script to turn on the bath light [light.bath], optionally controlling other lights if night mode is not active. If the conditions for turning off are met, it runs a script to turn off the bath light [light.bath]."
},
"human_like": "Automatically turns the bathroom light on when motion is detected and off when the room is empty, with an adjustable delay based on recent activity, and can also be turned off by motion in other rooms or a system command.",
"complexity": "high"
}
},
{
"id": "bath_fan",
"result": {
"structured": "TRIGGER: When bath fan sensor [binary_sensor.bath_fan] turns on OR When bath fan sensor [binary_sensor.bath_fan] turns off OR When showering sensor [binary_sensor.showering] changes state OR When fan bath time boolean [input_boolean.fan_bath_time] turns on OR When fan bath time boolean [input_boolean.fan_bath_time] remains on for a dynamic duration (minutes equal to the integer value of fan bath time input number [input_number.fan_bath_time], defaulting to 1) OR When an event of type 'up_down_my' with data 'start' occurs OR When bath motion sensor [binary_sensor.bath_motion] turns on OR When bath occupancy sensor [binary_sensor.bath_occupancy] turns off for a dynamic duration (seconds determined by the value of bath counter [counter.bath_motion]: >12 → 90s, >8 → 70s, >4 → 50s, else → 30s). CONDITIONS: (For turning on the fan) ((showering sensor [binary_sensor.showering] changes state AND showering sensor [binary_sensor.showering] is on) OR (bath fan sensor [binary_sensor.bath_fan] turns on OR fan bath time boolean [input_boolean.fan_bath_time] turns on)) AND bath fan switch [switch.bath_fan] is off. (For turning off the fan) (showering sensor [binary_sensor.showering] changes state OR fan bath time boolean [input_boolean.fan_bath_time] remains on for dynamic duration OR bath fan sensor [binary_sensor.bath_fan] turns off) AND (fan bath time boolean [input_boolean.fan_bath_time] remains on for dynamic duration OR fan bath time boolean [input_boolean.fan_bath_time] is off) AND bath fan sensor [binary_sensor.bath_fan] is off AND showering sensor [binary_sensor.showering] is off AND bath fan switch [switch.bath_fan] is on. (For turning off fan bath time boolean) (showering sensor [binary_sensor.showering] changes state OR fan bath time boolean [input_boolean.fan_bath_time] remains on for dynamic duration) AND fan bath time boolean [input_boolean.fan_bath_time] is on. (For incrementing bath counter) bath motion sensor [binary_sensor.bath_motion] turns on. (For resetting bath counter) bath occupancy sensor [binary_sensor.bath_occupancy] turns off for dynamic duration. ACTIONS: If conditions for turning on are met, turn on bath fan switch [switch.bath_fan]. If conditions for turning off are met, turn off bath fan switch [switch.bath_fan]. If conditions for turning off the boolean are met, turn off fan bath time boolean [input_boolean.fan_bath_time]. If bath motion sensor [binary_sensor.bath_motion] turns on, increment bath counter [counter.bath_motion]. If bath occupancy sensor [binary_sensor.bath_occupancy] turns off for dynamic duration, reset bath counter [counter.bath_motion].",
"natural_language": {
"trigger": "The automation can be triggered by several events: the bath fan sensor [binary_sensor.bath_fan] turning on or off; the showering sensor [binary_sensor.showering] changing its state; the fan bath time boolean [input_boolean.fan_bath_time] turning on, or remaining on for a specific number of minutes (taken from the fan bath time input number [input_number.fan_bath_time]); a custom event named 'up_down_my' with the data 'start'; the bath motion sensor [binary_sensor.bath_motion] detecting motion; or the bath occupancy sensor [binary_sensor.bath_occupancy] reporting no occupancy for a variable period, where the wait time depends on the current value of the bath counter [counter.bath_motion].",
"conditions": "The automation performs different actions based on which trigger occurs and the state of other devices. To turn the fan on, it requires that either the shower is active and the showering sensor changed state, or the fan sensor or the manual timer boolean were triggered, and the fan switch is currently off. To turn the fan off, it requires a trigger from the shower, the manual timer, or the fan sensor, combined with the manual timer being either in its 'off' state or having completed its timed period, the fan sensor being off, the shower being off, and the fan switch being on. A separate action turns off the manual timer boolean if triggered by the shower or the timer's completion while the boolean is on. Furthermore, motion triggers increment a counter, and the bathroom becoming unoccupied for a calculated time resets that counter.",
"action": "The automation controls the bathroom fan switch, a manual timer boolean, and a motion counter. It turns the fan on or off based on shower activity, manual controls, and sensor states. It also manages a counter that tracks motion events and resets it when the room is vacant, influencing the delay used for the occupancy trigger."
},
"human_like": "This automation manages the bathroom fan, turning it on during showers or via manual override, and turning it off after a delay or when conditions are safe. It also tracks motion to adjust its occupancy-based logic.",
"complexity": "high"
}
},
{
"id": "in_shower",
"result": {
"structured": "TRIGGER: When bath motion 1 sensor [binary_sensor.bath_motion_1] turns on OR when bath motion 2 sensor [binary_sensor.bath_motion_2] turns on. CONDITIONS: showering sensor [binary_sensor.showering] is on. ACTIONS: If the trigger was bath motion 2 sensor [binary_sensor.bath_motion_2] turning on AND both Water City 1 [automation.water_city_1] and Bath Light [automation.bath_light] are on, then turn them both off. If the trigger was bath motion 1 sensor [binary_sensor.bath_motion_1] turning on AND both Water City 1 [automation.water_city_1] and Bath Light [automation.bath_light] are off, then turn them both on.",
"natural_language": {
"trigger": "When motion is detected by either the bath motion 1 sensor [binary_sensor.bath_motion_1] or the bath motion 2 sensor [binary_sensor.bath_motion_2].",
"conditions": "The showering sensor [binary_sensor.showering] must be in the 'on' state, indicating that someone is showering.",
"action": "Depending on which motion sensor was triggered, the automation will either pause or resume certain automations. If motion is detected by the bath motion 2 sensor, and both the Water City 1 [automation.water_city_1] and Bath Light [automation.bath_light] automations are currently running, they will be turned off. If motion is detected by the bath motion 1 sensor, and both the Water City 1 [automation.water_city_1] and Bath Light [automation.bath_light] automations are currently off, they will be turned on."
},
"human_like": "Pauses or resumes the bathroom light and water city automations based on specific motion sensor triggers while someone is showering.",
"complexity": "medium"
}
},
{
"id": "in_bed",
"result": {
"structured": "TRIGGER: When bed in sensor [binary_sensor.bed_in] becomes on OR When hall motion sensor [binary_sensor.hall_motion] becomes on OR When device tracker n0ll [device_tracker.n0ll] becomes home OR When an android_alarm event occurs. CONDITIONS: (Trigger is from bed in sensor [binary_sensor.bed_in] AND in bed dummy switch [input_boolean.in_bed_dummy_switch] is off AND device tracker root [device_tracker.root] is home AND living TV [media_player.livingtv] is not playing AND device tracker n0ll [device_tracker.n0ll] is not_home AND time is between 23:00:00 and 07:00:00) OR (Trigger is from hall motion sensor [binary_sensor.hall_motion] OR device tracker n0ll [device_tracker.n0ll] OR android_alarm event AND in bed dummy switch [input_boolean.in_bed_dummy_switch] is on AND device tracker root [device_tracker.root] is home). ACTIONS: If the first condition set is met: Run script Light Extend Clear [script.light_extend_clear], then wait up to 30 seconds for lumi double switch 1 timer [timer.lumi_double_switch_1_timer] to become idle, then turn on in bed dummy switch [input_boolean.in_bed_dummy_switch], then turn off automation Bed Light [automation.bed_light], then wait 3 seconds, then start dummy in bed timer [timer.dummy_in_bed] for 45 seconds. If the second condition set is met: Turn off in bed dummy switch [input_boolean.in_bed_dummy_switch] and turn on automation Bed Light [automation.bed_light].",
"natural_language": {
"trigger": "The automation can be triggered in four ways: when the bed in sensor [binary_sensor.bed_in] detects someone is in bed, when motion is detected by the hall motion sensor [binary_sensor.hall_motion], when the device tracker n0ll [device_tracker.n0ll] arrives home, or when an android alarm event occurs.",
"conditions": "The automation has two distinct paths. The first path, which sets the 'in bed' state, requires the trigger to be from the bed sensor, the in bed dummy switch [input_boolean.in_bed_dummy_switch] to be off, the device tracker root [device_tracker.root] to be home, the living TV [media_player.livingtv] to not be playing, the device tracker n0ll [device_tracker.n0ll] to be away, and the time to be between 11 PM and 7 AM. The second path, which clears the 'in bed' state, requires the trigger to be from motion, arrival, or an alarm, and for the in bed dummy switch [input_boolean.in_bed_dummy_switch] to be on and the device tracker root [device_tracker.root] to be home.",
"action": "If the conditions for being in bed are met, the system runs a script to clear any light extensions, waits for a specific timer to be idle, turns on a dummy switch to mark the 'in bed' state, turns off the bed light automation, waits 3 seconds, and starts a 45-second timer. If the conditions for getting out of bed are met, it turns off the dummy switch and re-enables the bed light automation."
},
"human_like": "This automation manages the 'in bed' status, turning on a night-time mode when someone gets into bed under specific evening conditions, and turning it off when motion or arrival is detected.",
"complexity": "high"
}
},
{
"id": "in_bed_light",
"result": {
"structured": "TRIGGER: When timer.dummy_in_bed [timer.dummy_in_bed] finishes, restarts, or starts. CONDITIONS: (day sensor [binary_sensor.day] is off OR bed light [light.bed] is on). ACTIONS: Set variable 'cfg' using a template that imports a configuration from 'tools.jinja' based on the state of night mode sensor [binary_sensor.night_mode]. Then, run a script determined by the trigger event type: script.lights_off if the timer finished, or script.lights_on if the timer started or restarted. Pass variables to the script including the control light (bed light [light.bed]), a flag for controlling all lights based on night mode, and brightness, transition, and color temperature values from the 'cfg' variable.",
"natural_language": {
"trigger": "When the dummy in bed timer [timer.dummy_in_bed] finishes, restarts, or starts.",
"conditions": "It must be either nighttime (the day sensor [binary_sensor.day] is off) or the bed light [light.bed] is already on.",
"action": "First, a configuration variable is calculated based on whether night mode is active. Then, depending on the specific timer event, either the 'lights_off' script is run (if the timer finished) or the 'lights_on' script is run (if the timer started or restarted). These scripts are given parameters including which light to control, whether to control all lights, and specific brightness, transition time, and color temperature settings."
},
"human_like": "Controls the bedroom light based on a timer, turning it on or off depending on whether it's nighttime or the light is already on.",
"complexity": "medium"
}
},
{
"id": "bed_charger",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] enters zone.home OR When device tracker root [device_tracker.root] leaves zone.home OR When pixel 6a battery level sensor [sensor.pixel_6a_battery_level] drops below 10% OR When the time is 05:50:00 OR When pixel 6a charger type sensor [sensor.pixel_6a_charger_type] changes to 'none' and remains for 30 seconds. CONDITIONS: (For turning on) ((Trigger is time_start OR (pixel 6a battery level sensor [sensor.pixel_6a_battery_level] is below 5% AND (Trigger is home_enter OR Trigger is charge_start))) AND device tracker root [device_tracker.root] is 'home' AND bed switch 2 [switch.bed_switch_2] is off). (For turning off) (((Trigger is charge_stop AND pixel 6a battery level sensor [sensor.pixel_6a_battery_level] is above 95%) OR (Trigger is home_exit AND pixel 6a charger type sensor [sensor.pixel_6a_charger_type] is 'none')) AND bed switch 2 [switch.bed_switch_2] is on). ACTIONS: If the 'turn on' conditions are met, turn on bed switch 2 [switch.bed_switch_2]. If the 'turn off' conditions are met, turn off bed switch 2 [switch.bed_switch_2].",
"natural_language": {
"trigger": "The automation can start when the user (device tracker root) arrives at or leaves home, when the phone's battery level drops below 10%, at 5:50 AM, or when the phone's charger is disconnected for 30 seconds.",
"conditions": "To turn on the charger: it must be either 5:50 AM, or the battery is critically low (below 5%) and the user has just arrived home or the battery just dropped below 10%. Additionally, the user must be home and the charger switch must be off. To turn off the charger: it must be either that the charger was disconnected and the battery is above 95%, or the user has left home and the charger is disconnected. Additionally, the charger switch must be on for the turn-off action.",
"action": "Turns on a bed charger switch when conditions for charging are met, and turns it off when charging is complete or the user leaves."
},
"human_like": "Automatically controls a bed charger for a phone, turning it on at a scheduled time or when the battery is low and the user is home, and turning it off when the battery is full or the user leaves.",
"complexity": "high"
}
},
{
"id": "ligth_city_2",
"result": {
"structured": "TRIGGER: When motion city 2 sensor [binary_sensor.motion_city_2] detects motion (on) OR When city 2 light [light.city_2] is on for 5 minutes and 30 seconds OR When motion city 2 sensor [binary_sensor.motion_city_2] stops detecting motion (off) for 90 seconds. CONDITIONS: (Trigger is motion city 2 sensor [binary_sensor.motion_city_2] detects motion (light_on) AND city 2 light [light.city_2] is off AND sun is after sunset) OR (Trigger is city 2 light [light.city_2] on for 5 minutes 30 seconds OR motion city 2 sensor [binary_sensor.motion_city_2] off for 90 seconds (light_off) AND city 2 light [light.city_2] is on AND motion city 2 sensor [binary_sensor.motion_city_2] is off). ACTIONS: If conditions for light_on are met, turn on city 2 light [light.city_2] at 90% brightness, wait 250 milliseconds, then set its color temperature to 3300K. If conditions for light_off are met, turn off city 2 light [light.city_2].",
"natural_language": {
"trigger": "The automation can start when the motion city 2 sensor [binary_sensor.motion_city_2] first detects motion, when the city 2 light [light.city_2] has been on for 5 minutes and 30 seconds, or when the motion city 2 sensor [binary_sensor.motion_city_2] reports no motion for 90 seconds.",
"conditions": "If the trigger was motion detection, the light must be off and it must be after sunset. If the trigger was the light being on for a duration or no motion for a duration, the light must currently be on and the motion sensor must report no motion.",
"action": "If motion is detected after sunset and the light is off, the light turns on to 90% brightness and then adjusts its color temperature to a warm white. If the light has been on for a set time or no motion is detected for a set time, and the light is on with no motion, the light turns off."
},
"human_like": "Automatically turns on the city 2 light with a warm glow when motion is detected after sunset, and turns it off after a period of inactivity or a fixed on-time.",
"complexity": "medium"
}
},
{
"id": "remote_city_2",
"result": {
"structured": "TRIGGER: When an MQTT message is received on topic tele/zha-bridge-city/054B/SENSOR. CONDITIONS: None (global). ACTIONS: Choose one sequence based on the following conditions: 1) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 0) AND city 2 light [light.city_2] is on THEN turn off city 2 light [light.city_2] AND IF Light City 2 [automation.ligth_city_2] is off THEN turn on Light City 2 [automation.ligth_city_2]. 2) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 0) AND city 2 light [light.city_2] is off AND Light City 2 [automation.ligth_city_2] is on THEN turn off Light City 2 [automation.ligth_city_2] AND turn on city 2 light [light.city_2] at 95% brightness AND set city 2 light [light.city_2] color temperature to 2850K. 3) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 1) AND city 2 light [light.city_2] is on THEN adjust city 2 light [light.city_2] color temperature by increasing it by one step (wrapping from 454 to 250 mireds). 4) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 2) AND city 2 light [light.city_2] is on THEN adjust city 2 light [light.city_2] brightness by increasing it by one step (wrapping from 254 to 1). 5) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 1) AND city 2 light [light.city_2] is off THEN turn on city 2 light [light.city_2] at 85% brightness. 6) IF (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 2) AND city 2 light [light.city_2] is off THEN turn on city 2 light [light.city_2] at 1% brightness.",
"natural_language": {
"trigger": "When a specific MQTT message is received on the topic tele/zha-bridge-city/054B/SENSOR.",
"conditions": "There are no global conditions; the automation uses a choose action to evaluate multiple conditional sequences based on the MQTT payload and the current state of the light.",
"action": "The automation selects one of six possible action sequences based on the MQTT payload and the light's state. If the payload indicates a Power value of 0 and the city 2 light [light.city_2] is on, it turns the light off and, if the Light City 2 [automation.ligth_city_2] automation is off, turns that automation on. If the payload indicates Power 0, the light is off, and the Light City 2 automation is on, it turns off the automation, turns the light on at 95% brightness, and sets its color temperature to 2850K. If the payload indicates Power 1 and the light is on, it increases the light's color temperature by one step. If the payload indicates Power 2 and the light is on, it increases the light's brightness by one step. If the payload indicates Power 1 and the light is off, it turns the light on at 85% brightness. If the payload indicates Power 2 and the light is off, it turns the light on at 1% brightness."
},
"human_like": "Controls the city 2 light based on remote commands received via MQTT, allowing toggling, dimming, and color temperature adjustments.",
"complexity": "high"
}
},
{
"id": "heat_city_2",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] enters zone.city OR When device tracker root [device_tracker.root] leaves zone.city OR When city root distance sensor [sensor.city_root_distance] is above 15 OR When the time is 23:30:00 OR When the time is 10:45:00. CONDITIONS: (For the first action branch) The trigger is either entering zone.city OR the time is 10:45:00 AND device tracker root [device_tracker.root] is inside zone.city AND the time is between 10:45:00 and 23:50:00 AND city 2 climate [climate.city_2] is off. (For the second action branch) The trigger is either leaving zone.city OR the time is 23:30:00 AND city 2 climate [climate.city_2] is in heat mode. (For the third action branch) The trigger is city root distance sensor [sensor.city_root_distance] above 15. ACTIONS: If the first condition set is met, set city 2 climate [climate.city_2] to heat mode. If the second condition set is met, set city 2 climate [climate.city_2] to off mode. If the third condition set is met, set city 2 climate [climate.city_2] to off mode AND turn off Heat City 2 [automation.heat_city_2].",
"natural_language": {
"trigger": "The automation can be triggered when the device tracker root [device_tracker.root] enters or leaves the city zone, when the city root distance sensor [sensor.city_root_distance] reports a value greater than 15, or at the scheduled times of 10:45 AM or 11:30 PM.",
"conditions": "To turn the heat on, the trigger must be either the device entering the city zone or the 10:45 AM time trigger. Additionally, the device tracker root [device_tracker.root] must be inside the city zone, the current time must be between 10:45 AM and 11:50 PM, and the city 2 climate [climate.city_2] must be off. To turn the heat off, the trigger must be either the device leaving the city zone or the 11:30 PM time trigger, and the city 2 climate [climate.city_2] must be in heat mode. To turn the heat off and disable the automation, the trigger must be the distance sensor reporting a value above 15, with no further conditions.",
"action": "Depending on which trigger and conditions are met, the automation will either turn on the heat for the city 2 climate [climate.city_2], turn it off, or turn it off and also disable the Heat City 2 [automation.heat_city_2] automation itself."
},
"human_like": "This automation controls the heating in the city based on location, distance, and time, turning it on when someone is present during the day and off when they leave, it's late, or they are too far away.",
"complexity": "medium"
}
},
{
"id": "waterheater_city",
"result": {
"structured": "TRIGGER: When city root distance sensor [sensor.city_root_distance] falls below 25 OR When city root distance sensor [sensor.city_root_distance] rises above 45. CONDITIONS: (Trigger is 'trigger_on' AND waterheater city schedule switch [switch.waterheater_city_schedule] is off) OR (Trigger is 'trigger_off' AND waterheater city schedule switch [switch.waterheater_city_schedule] is on). ACTIONS: If conditions for 'trigger_on' are met, turn on waterheater city schedule switch [switch.waterheater_city_schedule] and fire event 'waterheater' with data 'city: schedule_on'. If conditions for 'trigger_off' are met, turn off waterheater city schedule switch [switch.waterheater_city_schedule] and fire event 'waterheater' with data 'city: schedule_off'.",
"natural_language": {
"trigger": "When the city root distance sensor [sensor.city_root_distance] reports a value below 25, or when it reports a value above 45.",
"conditions": "If the trigger was the sensor going below 25, the waterheater city schedule switch [switch.waterheater_city_schedule] must be off. If the trigger was the sensor going above 45, the waterheater city schedule switch [switch.waterheater_city_schedule] must be on.",
"action": "If the sensor is below 25 and the schedule switch is off, the automation turns on the waterheater city schedule switch [switch.waterheater_city_schedule] and sends a custom event indicating the city schedule is on. If the sensor is above 45 and the schedule switch is on, it turns off the waterheater city schedule switch [switch.waterheater_city_schedule] and sends a custom event indicating the city schedule is off."
},
"human_like": "Automatically turns the water heater city schedule on or off based on the distance to the city root, using thresholds to manage energy usage.",
"complexity": "medium"
}
},
{
"id": "waterheater_city_reheat",
"result": {
"structured": "TRIGGER: When waterheater city sensor [sensor.waterheater_city] falls below 19.5 OR When waterheater city sensor [sensor.waterheater_city] rises above 35.5 OR When a waterheater event with city: schedule_on occurs OR When a waterheater event with city: trigger_off occurs. CONDITIONS: waterheater city schedule switch [switch.waterheater_city_schedule] is on. ACTIONS: (If the trigger was waterheater city sensor [sensor.waterheater_city] below 19.5 AND the current time is between 08:00:00 and 20:30:00 AND waterheater city switch [switch.waterheater_city] is off, then turn on waterheater city switch [switch.waterheater_city]) OR (If the trigger was waterheater city sensor [sensor.waterheater_city] above 35.5 AND the current time is after 08:00:00 AND waterheater city switch [switch.waterheater_city] is on, then turn off waterheater city switch [switch.waterheater_city]) OR (If the trigger was a waterheater event with city: schedule_on AND the current time is between 13:00:00 and 19:30:00 AND waterheater city sensor [sensor.waterheater_city] is below 33 AND waterheater city switch [switch.waterheater_city] is off, then turn on waterheater city switch [switch.waterheater_city]) OR (If the trigger was a waterheater event with city: trigger_off AND waterheater city switch [switch.waterheater_city] is on, then turn off waterheater city switch [switch.waterheater_city]).",
"natural_language": {
"trigger": "The automation can be triggered in four ways: when the waterheater city sensor [sensor.waterheater_city] reports a temperature below 19.5, when it reports a temperature above 35.5, when a specific 'waterheater' event with data 'city: schedule_on' occurs, or when a 'waterheater' event with data 'city: trigger_off' occurs.",
"conditions": "The automation only runs if the waterheater city schedule switch [switch.waterheater_city_schedule] is turned on.",
"action": "Depending on which trigger fired and other conditions, the automation will either turn the waterheater city switch [switch.waterheater_city] on or off. If the temperature is low and it's during the daytime, it turns the heater on. If the temperature is too high and it's after 8 AM, it turns the heater off. If a schedule event occurs in the afternoon and the temperature is below a threshold, it turns the heater on. If a specific 'trigger_off' event occurs, it turns the heater off."
},
"human_like": "This automation manages a city water heater by turning it on or off based on temperature readings and scheduled events, ensuring it only operates when needed and within set time windows.",
"complexity": "high"
}
},
{
"id": "av_switch_city_1",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] enters zone city OR When city root distance sensor [sensor.city_root_distance] becomes greater than 45. CONDITIONS: (Trigger is trigger_on AND city AV switch [switch.switch_city_av] is off) OR (Trigger is trigger_off AND city AV switch [switch.switch_city_av] is on). ACTIONS: If conditions for trigger_on are met, turn on city AV switch [switch.switch_city_av]. If conditions for trigger_off are met, turn off city AV switch [switch.switch_city_av].",
"natural_language": {
"trigger": "When device tracker root [device_tracker.root] enters the city zone, or when the city root distance sensor [sensor.city_root_distance] reports a value greater than 45.",
"conditions": "If the trigger was the entry into the city zone, the city AV switch [switch.switch_city_av] must be off. If the trigger was the distance exceeding 45, the city AV switch [switch.switch_city_av] must be on.",
"action": "Turns on the city AV switch [switch.switch_city_av] when entering the city zone and it's off, or turns it off when the distance exceeds 45 and it's on."
},
"human_like": "Automatically turns on the city AV switch when arriving in the city, and turns it off when moving far away.",
"complexity": "medium"
}
},
{
"id": "cliamate_city1_swing_set",
"result": {
"structured": "TRIGGER: When climate city1 swingv input select [input_select.cliamate_city1_swingv] changes state OR When climate city1 swingh input select [input_select.cliamate_city1_swingh] changes state. CONDITIONS: None. ACTIONS: If the trigger was climate city1 swingv input select [input_select.cliamate_city1_swingv], set the vertical swing of city 1 climate [climate.city_1] to the new state of climate city1 swingv input select [input_select.cliamate_city1_swingv]. If the trigger was climate city1 swingh input select [input_select.cliamate_city1_swingh], set the horizontal swing of city 1 climate [climate.city_1] to the new state of climate city1 swingh input select [input_select.cliamate_city1_swingh].",
"natural_language": {
"trigger": "When the climate city1 swingv input select [input_select.cliamate_city1_swingv] changes its selected option, or when the climate city1 swingh input select [input_select.cliamate_city1_swingh] changes its selected option.",
"conditions": "There are no additional conditions that must be met.",
"action": "Depending on which input select changed, the automation updates the corresponding swing setting on the city 1 climate [climate.city_1]. If the vertical swing input select changed, it sets the air conditioner's vertical swing to match the new selection. If the horizontal swing input select changed, it sets the air conditioner's horizontal swing to match the new selection."
},
"human_like": "Updates the air conditioner's swing direction whenever the corresponding vertical or horizontal swing selector is changed.",
"complexity": "low"
}
},
{
"id": "climate_night",
"result": {
"structured": "TRIGGER: When climate night sensor [binary_sensor.climate_night] turns on OR When climate night sensor [binary_sensor.climate_night] turns off OR When climate control switch [switch.climate_control] turns off. CONDITIONS: The previous state of the triggering entity is not 'unknown' or 'unavailable'. ACTIONS: (CHOOSE 1: If the trigger is climate night sensor [binary_sensor.climate_night] turning on AND climate control switch [switch.climate_control] is on, THEN create a snapshot scene named Restore Night Mode [scene.restore_night_mode] for the entities bed climate fan [fan.bed_climate], office climate fan [fan.office_climate], living climate fan [fan.living_climate], bed temp climate [climate.temp_bed], office temp climate [climate.temp_office], living temp climate [climate.temp_living], and temperature control number [number.temperature_control]; set temperature control number [number.temperature_control] based on the operation mode select [select.operation_mode] and pump climate [climate.pump] temperature; set temperatures for living temp climate [climate.temp_living], office temp climate [climate.temp_office], and bed temp climate [climate.temp_bed] based on their current attributes and operation mode select [select.operation_mode]; set preset mode to 'night' for living climate fan [fan.living_climate], office climate fan [fan.office_climate], and bed climate fan [fan.bed_climate]) OR (CHOOSE 2: If the trigger is climate night sensor [binary_sensor.climate_night] turning off AND Restore Night Mode [scene.restore_night_mode] exists, THEN activate Restore Night Mode [scene.restore_night_mode] and delete Restore Night Mode [scene.restore_night_mode]).",
"natural_language": {
"trigger": "The automation can be triggered in three ways: when the climate night sensor [binary_sensor.climate_night] turns on, when it turns off, or when the climate control switch [switch.climate_control] is turned off.",
"conditions": "A single condition checks that the previous state of the entity that caused the trigger was not 'unknown' or 'unavailable'.",
"action": "The automation performs different actions based on which trigger fired and additional conditions. If the climate night sensor turns on and the climate control switch is on, it first creates a snapshot scene to save the current settings of several climate and fan devices. It then adjusts the temperature control number and the target temperatures for the living room, office, and bedroom climate devices based on the current operation mode (auto, heating, or cooling). Finally, it sets the fans in these rooms to a 'night' preset mode. If the climate night sensor turns off and the previously saved snapshot scene exists, the automation restores the saved settings by activating that scene and then deletes the scene."
},
"human_like": "Activates or deactivates a night mode for the home climate system, adjusting temperatures and fan settings when enabled, and restoring previous settings when disabled.",
"complexity": "high"
}
},
{
"id": "clima_max_restore_fans",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] changes from not_home to home AND remains for 10 minutes OR when device tracker root [device_tracker.root] changes from home to not_home AND remains for 10 minutes OR when clima max boolean [input_boolean.clima_max] turns off (to 'off') AND remains for 5 seconds. CONDITIONS: None. ACTIONS: If the trigger was to_home OR to_away OR to_timeout, then activate scene Clima Max Mode Fan [scene.clima_max_mode_fan] and then turn off the automation Clima Max Restore Fans [automation.clima_max_restore_fans].",
"natural_language": {
"trigger": "The automation triggers in three scenarios: when the device tracker root [device_tracker.root] arrives home and stays home for 10 minutes, when it leaves home and stays away for 10 minutes, or when the clima max boolean [input_boolean.clima_max] is turned off and stays off for 5 seconds.",
"conditions": "There are no additional conditions to check; the automation proceeds directly to actions if any of the triggers occur.",
"action": "When triggered, the automation activates the scene Clima Max Mode Fan [scene.clima_max_mode_fan] to restore fan settings, and then disables itself by turning off the automation Clima Max Restore Fans [automation.clima_max_restore_fans]."
},
"human_like": "Restores fan settings via a scene when you arrive, leave, or turn off the climate max mode, then disables itself.",
"complexity": "medium"
}
},
{
"id": "clima_max_restore_temps",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] changes from not_home to home AND remains for 10 minutes OR when device tracker root [device_tracker.root] changes from home to not_home AND remains for 10 minutes OR when clima max boolean [input_boolean.clima_max] changes to off AND remains for 5 seconds. CONDITIONS: None. ACTIONS: If the trigger was to_home OR to_away OR to_timeout, then activate scene Clima Max Mode Temp [scene.clima_max_mode_temp] and turn off automation Clima Max Restore Temps [automation.clima_max_restore_temps].",
"natural_language": {
"trigger": "The automation triggers when the device tracker root [device_tracker.root] arrives home and stays home for 10 minutes, or when it leaves home and stays away for 10 minutes, or when the clima max boolean [input_boolean.clima_max] is turned off and remains off for 5 seconds.",
"conditions": "There are no conditions that need to be checked after the trigger.",
"action": "When triggered, it activates the scene named Clima Max Mode Temp [scene.clima_max_mode_temp] and then turns off this automation itself, Clima Max Restore Temps [automation.clima_max_restore_temps], to prevent it from running again."
},
"human_like": "Restores the climate temperature settings when you arrive or leave home, or when the climate max mode is turned off, and then disables itself.",
"complexity": "medium"
}
},
{
"id": "clima_max_restore_switch",
"result": {
"structured": "TRIGGER: When clima max boolean [input_boolean.clima_max] remains off for 20 minutes OR When clima max restore switch alert [alert.clima_max_restore_switch] turns off. CONDITIONS: None. ACTIONS: If the trigger was clima max boolean [input_boolean.clima_max] turning off, send a notification titled 'clima max' with message 'heat pump auto swiched off' and turn off climate control switch [switch.climate_control]. If the trigger was clima max restore switch alert [alert.clima_max_restore_switch] turning off, send a notification titled 'clima max' with message 'heat pump skip restore' and turn on clima max restore switch alert [alert.clima_max_restore_switch]. Finally, turn off Clima Max Restore Switch [automation.clima_max_restore_switch].",
"natural_language": {
"trigger": "This automation runs when the clima max boolean [input_boolean.clima_max] has been off for 20 minutes, or when the clima max restore switch alert [alert.clima_max_restore_switch] is turned off.",
"conditions": "There are no additional conditions for this automation.",
"action": "Depending on which trigger occurred, the automation performs different actions. If the clima max boolean turned off, it sends a Gmail notification with the title 'clima max' and the message 'heat pump auto swiched off', and then turns off the climate control switch [switch.climate_control]. If the clima max restore switch alert turned off, it sends a Gmail notification with the title 'clima max' and the message 'heat pump skip restore', and then turns the same alert back on. In all cases, the automation then turns itself off."
},
"human_like": "Manages the heat pump by turning it off after a delay and sending notifications, or by handling a cancellation request to skip the restoration process.",
"complexity": "medium"
}
},
{
"id": "clima_sync",
"result": {
"structured": "TRIGGER: When operation mode select [select.operation_mode] changes state and remains stable for 10 seconds OR When climate control switch [switch.climate_control] turns on and remains on for 10 seconds OR When pump temp on off sensor [binary_sensor.pump_temp_on_off] turns on and remains on for 15 seconds OR When climate control switch [switch.climate_control] turns off and remains off for 15 minutes OR When pump temp on off sensor [binary_sensor.pump_temp_on_off] turns off and remains off for 15 minutes OR When Home Assistant starts OR When Clima Max Restore Fans [automation.clima_max_restore_fans] turns off and remains off for 10 seconds OR When space cooling sensor [binary_sensor.space_cooling] OR space heating sensor [binary_sensor.space_heating] changes state and remains stable for 10 seconds OR When thermostat pump sensor [binary_sensor.thermostat_pump] turns on and remains on for 10 seconds. CONDITIONS: (trigger.from_state.state is not 'unknown' AND trigger.to_state.state is not 'unknown') OR (trigger.id is start_up OR max_off). ACTIONS: If triggered by mode: Run the script corresponding to the new mode (auto, heating, or cooling). If triggered by state or (state_temp AND climate control switch [switch.climate_control] is on): Turn on or off living climate fan [fan.living_climate], bed climate fan [fan.bed_climate], and office climate fan [fan.office_climate] based on the trigger's new state. If triggered by start_up OR (state AND climate control switch [switch.climate_control] is on AND Clima Max Restore Fans [automation.clima_max_restore_fans] is off) OR (max_off AND Fans Speed Modulation [automation.fans_speed_modulation] is on): After a 5-second delay, set the preset mode of all three fans to silent, then after another 5-second delay, set them to auto. If triggered by thermostat_on_off AND space heating sensor [binary_sensor.space_heating] is on AND pump ctrl heating switch [switch.pump_ctrl_heating] is off: Turn on pump ctrl heating switch [switch.pump_ctrl_heating]. If triggered by thermostat_on_off AND space heating sensor [binary_sensor.space_heating] is off AND pump ctrl heating switch [switch.pump_ctrl_heating] is on: Turn off pump ctrl heating switch [switch.pump_ctrl_heating]. If triggered by thermostat_on_off AND space cooling sensor [binary_sensor.space_cooling] is on AND pump ctrl cooling switch [switch.pump_ctrl_cooling] is off: Turn on pump ctrl cooling switch [switch.pump_ctrl_cooling]. If triggered by thermostat_on_off AND space cooling sensor [binary_sensor.space_cooling] is off AND pump ctrl cooling switch [switch.pump_ctrl_cooling] is on: Turn off pump ctrl cooling switch [switch.pump_ctrl_cooling].",
"natural_language": {
"trigger": "The automation can be triggered by several events: a change in the operation mode select [select.operation_mode] that lasts for 10 seconds; the climate control switch [switch.climate_control] turning on for 10 seconds or off for 15 minutes; the pump temp on off sensor [binary_sensor.pump_temp_on_off] turning on for 15 seconds or off for 15 minutes; when Home Assistant starts; when the Clima Max Restore Fans [automation.clima_max_restore_fans] automation turns off for 10 seconds; a change in the space cooling sensor [binary_sensor.space_cooling] or space heating sensor [binary_sensor.space_heating] that lasts for 10 seconds; or the thermostat pump sensor [binary_sensor.thermostat_pump] turning on for 10 seconds.",
"conditions": "The automation only runs if the trigger's state change does not involve an 'unknown' or 'unavailable' state, or if the trigger was specifically the Home Assistant start event or the Clima Max Restore Fans automation turning off.",
"action": "Depending on which trigger fired, the automation performs different actions. If the operation mode changed, it runs the corresponding climate script (auto, heating, or cooling). If the climate control switch or pump temperature sensor changed state, it synchronises the on/off state of the living, bedroom, and office climate fans. Under certain start-up or automation state conditions, it briefly sets all fans to silent mode and then back to auto. Finally, it monitors the heating and cooling thermostat sensors to turn the corresponding pump control switches on or off to match the demand."
},
"human_like": "This automation coordinates the home climate system by syncing fan states with the main control switch, managing pump operations based on heating or cooling demand, and resetting fan modes during system start-up.",
"complexity": "high"
}
},
{
"id": "clima_max",
"result": {
"structured": "TRIGGER: When clima max boolean [input_boolean.clima_max] turns on OR When clima max boolean [input_boolean.clima_max] remains on for a duration equal to the integer value (in minutes) of clima max input number [input_number.clima_max]. CONDITIONS: None. ACTIONS: (If triggered by turning on) Set variables 'pump_temp' and 'clima_temp' based on operation mode select [select.operation_mode] and current attributes of pump climate [climate.pump] and living temp climate [climate.temp_living], ensuring values are bounded by their respective min and max temperatures. Then, if any of bed climate fan [fan.bed_climate], office climate fan [fan.office_climate], or living climate fan [fan.living_climate] are off, turn them on. Create a scene 'clima_max_mode_fan' snapshotting the three fans. If operation mode select [select.operation_mode] is cooling OR auto, create a scene 'clima_max_mode_temp' snapshotting bed temp climate [climate.temp_bed], office temp climate [climate.temp_office], living temp climate [climate.temp_living], and temperature control number [number.temperature_control]. If operation mode select [select.operation_mode] is heating, create a scene 'clima_max_mode_temp' snapshotting bed temp climate [climate.temp_bed], office temp climate [climate.temp_office], living temp climate [climate.temp_living], bath TVR climate [climate.bath_tvr], and temperature control number [number.temperature_control]. Set the preset mode of the three fans to 'max'. If operation mode select [select.operation_mode] is cooling OR auto, set the temperature of bed temp climate [climate.temp_bed], living temp climate [climate.temp_living], and office temp climate [climate.temp_office] to the calculated 'clima_temp'. If operation mode select [select.operation_mode] is heating, set bath TVR climate [climate.bath_tvr] HVAC mode to heat, wait 500ms, set its preset mode to manual, wait 500ms, and set the temperature of bed temp climate [climate.temp_bed], living temp climate [climate.temp_living], office temp climate [climate.temp_office], and bath TVR climate [climate.bath_tvr] to the calculated 'clima_temp'. Set the value of temperature control number [number.temperature_control] to the calculated 'pump_temp'. Turn on automations Clima Max Restore Fans [automation.clima_max_restore_fans] and Clima Max Restore Temps [automation.clima_max_restore_temps]. If climate control switch [switch.climate_control] is off, turn on automation Clima Max Restore Switch [automation.clima_max_restore_switch] and turn on climate control switch [switch.climate_control]; otherwise, send a notification with title 'clima max' and message 'heat pump skip auto swich off'. (If triggered by the timeout) Turn off clima max boolean [input_boolean.clima_max].",
"natural_language": {
"trigger": "The automation triggers in two ways: either immediately when the clima max boolean [input_boolean.clima_max] is turned on, or after it has remained on for a specific number of minutes. That duration is taken from the value of the clima max input number [input_number.clima_max].",
"conditions": "There are no conditions that must be checked before the actions run.",
"action": "When the automation is triggered by the boolean turning on, it first calculates two target temperatures. One is for the heat pump, based on its current mode and temperature limits. The other is for the room climates, adjusted by 1.5 degrees depending on the overall operation mode (heating, cooling, or auto). It then ensures all the climate fans (bed, office, and living room) are on, and saves their current states into a scene. It also saves the current temperature settings of the relevant climate entities into another scene, which includes the bathroom climate if the system is in heating mode. All fans are then set to their maximum preset. Depending on the operation mode, it sets new target temperatures for the room climates (and the bathroom climate in heating mode). It also adjusts the central temperature control number. It then activates several 'restore' automations to later revert these changes. Finally, if the main climate control switch was off, it turns it on and activates another restore automation; otherwise, it sends a notification saying the automatic switch-off was skipped. If the automation is triggered by the timeout, it simply turns off the clima max boolean."
},
"human_like": "Activates a maximum climate boost mode, turning all fans to max, adjusting temperatures, and saving the current settings to be restored later.",
"complexity": "high"
}
},
{
"id": "fans_speed_modulation",
"result": {
"structured": "TRIGGER: When speed living climate sensor [sensor.speed_living_climate] OR speed office climate sensor [sensor.speed_office_climate] OR speed bed climate sensor [sensor.speed_bed_climate] is between 1210 and 1230 (exclusive) for 20 minutes OR is between 540 and 560 (exclusive) for 10 minutes OR is below 100 OR is between 670 and 690 (exclusive) for 10 minutes OR is above 1690 for 10 minutes. CONDITIONS: climate control switch [switch.climate_control] is on AND (bed climate fan [fan.bed_climate] OR office climate fan [fan.office_climate] OR living climate fan [fan.living_climate]) has preset_mode set to auto OR max AND Clima Max Restore Fans [automation.clima_max_restore_fans] is off. ACTIONS: Based on the triggering condition: If the trigger ID is 'to_auto' AND the corresponding fan's preset_mode is 'max', set that fan's preset_mode to auto. If the trigger ID is 'to_max' AND the corresponding fan's preset_mode is 'auto', set that fan's preset_mode to max.",
"natural_language": {
"trigger": "The automation triggers when any of the climate speed sensors (speed living climate sensor [sensor.speed_living_climate], speed office climate sensor [sensor.speed_office_climate], or speed bed climate sensor [sensor.speed_bed_climate]) meet specific numeric thresholds for a set duration. This includes being in a narrow band between 1210 and 1230 for 20 minutes, being between 540 and 560 for 10 minutes, dropping below 100, being between 670 and 690 for 10 minutes, or exceeding 1690 for 10 minutes.",
"conditions": "For the action to run, the climate control switch [switch.climate_control] must be turned on. Additionally, at least one of the climate fans (bed climate fan [fan.bed_climate], office climate fan [fan.office_climate], or living climate fan [fan.living_climate]) must have its preset mode set to either 'auto' or 'max'. Finally, another automation named Clima Max Restore Fans [automation.clima_max_restore_fans] must be turned off.",
"action": "The automation first identifies which specific fan corresponds to the sensor that triggered it. Then, based on the specific trigger condition, it will either switch the fan from 'max' mode to 'auto' mode, or from 'auto' mode to 'max' mode."
},
"human_like": "This automation automatically adjusts the speed preset (auto or max) of climate fans based on the readings from their associated speed sensors, ensuring efficient climate control when the main system is active.",
"complexity": "high"
}
},
{
"id": "apply_offsets",
"result": {
"structured": "TRIGGER: When the state of any of the following input numbers changes: living offset input number [input_number.living_offset] OR office offset input number [input_number.office_offset] OR bed offset input number [input_number.bed_offset]. CONDITIONS: None. ACTIONS: Write the value of the triggering input number (converted to a signed 16-bit integer, scaled by 10) to a specific Modbus register (address 242) on a device (slave) determined by the triggering entity. Then, wait for 10 seconds and update the corresponding climate entity: if living offset input number [input_number.living_offset] triggered, update living temp climate [climate.temp_living]; if office offset input number [input_number.office_offset] triggered, update office temp climate [climate.temp_office]; if bed offset input number [input_number.bed_offset] triggered, update bed temp climate [climate.temp_bed].",
"natural_language": {
"trigger": "Whenever the value of the living offset input number [input_number.living_offset], the office offset input number [input_number.office_offset], or the bed offset input number [input_number.bed_offset] changes.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "First, the automation sends the new offset value to a specific register on a Modbus device. The value is scaled by 10 and converted into a specific data format. The specific device (or slave address) is chosen based on which input number changed. After a 10-second delay, the automation refreshes the corresponding climate entity to reflect the new offset: the living temp climate [climate.temp_living], office temp climate [climate.temp_office], or bed temp climate [climate.temp_bed]."
},
"human_like": "When a temperature offset is adjusted, it sends the new setting to the heating system and then updates the climate control display after a short delay.",
"complexity": "medium"
}
},
{
"id": "climate_offset",
"result": {
"structured": "TRIGGER: When climate control switch [switch.climate_control] turns on and remains on for 10 seconds. CONDITIONS: (The automation has not been triggered in the last 20 hours OR it has never been triggered before). ACTIONS: Reset living offset input number [input_number.living_offset], office offset input number [input_number.office_offset], and bed offset input number [input_number.bed_offset] to 0.0. Wait for Apply Offsets [automation.apply_offsets] to be idle (current = 0) for 15 seconds, with a 30-second timeout. Delay for the remaining wait time. Calculate temperature differences: living = living temperature sensor [sensor.temp_living] minus living temp climate [climate.temp_living] current_temperature, rounded up; office = office temperature sensor [sensor.office_temp] minus office temp climate [climate.temp_office] current_temperature, rounded up; bed = bed temperature sensor [sensor.bed_temp] minus bed temp climate [climate.temp_bed] current_temperature, rounded up. Create a notification showing these differences. Set living offset input number [input_number.living_offset] to the living difference, office offset input number [input_number.office_offset] to the office difference, and bed offset input number [input_number.bed_offset] to the bed difference. If the condition is false, log a skipped message.",
"natural_language": {
"trigger": "When the climate control switch [switch.climate_control] is turned on and stays on for at least 10 seconds.",
"conditions": "The automation will only proceed if it has not been run in the last 20 hours, or if it has never been run before.",
"action": "First, it resets three offset values (for the living room, office, and bedroom) to zero. It then waits for another automation named Apply Offsets [automation.apply_offsets] to finish running and be idle for 15 seconds, but will move on after 30 seconds if that doesn't happen. After a short delay, it calculates the difference between the actual room temperature (from sensors) and the temperature reported by each climate entity. These differences are rounded up and displayed in a notification. Finally, it updates the offset values with these calculated differences. If the condition about the 20-hour cooldown is not met, it simply logs that the automation was skipped."
},
"human_like": "This automation calculates and applies temperature offsets for different rooms when the climate control is turned on, but only runs once every 20 hours to avoid unnecessary updates.",
"complexity": "high"
}
},
{
"id": "tariff_switch",
"result": {
"structured": "TRIGGER: At 06:00:00 (with variable s set to 'win') OR At 07:00:00 (with variable s set to 'sum') OR At 22:00:00 (with variable s set to 'win') OR At 23:00:00 (with variable s set to 'sum'). CONDITIONS: The current month is in the list associated with the trigger variable s (where 'win' list is [1, 2, 3, 11, 12] and 'sum' list is [4, 5, 6, 7, 8, 9, 10]). ACTIONS: Set the selected option for monthly energy select [select.monthly_energy] and daily energy select [select.daily_energy] to the trigger id (either 'peak' or 'offpeak').",
"natural_language": {
"trigger": "The automation is triggered at four specific times of day: 6:00 AM, 7:00 AM, 10:00 PM, and 11:00 PM. Each time trigger is assigned an identifier ('peak' or 'offpeak') and a season variable ('win' for winter or 'sum' for summer).",
"conditions": "The automation checks if the current month falls within the season defined by the trigger's variable. For triggers with the 'win' variable, the valid months are January, February, March, November, and December. For triggers with the 'sum' variable, the valid months are April through October.",
"action": "It sets the option for both the monthly energy select [select.monthly_energy] and the daily energy select [select.daily_energy] to match the trigger's identifier, which will be either 'peak' or 'offpeak'."
},
"human_like": "Automatically switches the energy tariff selection between 'peak' and 'offpeak' at scheduled times, adjusting for the winter and summer seasons.",
"complexity": "medium"
}
},
{
"id": "n0ll_home",
"result": {
"structured": "TRIGGER: When device tracker n0ll [device_tracker.n0ll] changes state from not_home to home. CONDITIONS: None. ACTIONS: Choose based on conditions: IF living TV [media_player.livingtv] is idle THEN execute a template action that calls shell_command.kodi_screensaver if Kodi screen saver sensor [binary_sensor.kodi_screen_saver] is 'off' OR calls script.radio_on [script.radio_on] if Kodi screen saver sensor [binary_sensor.kodi_screen_saver] is 'on'. THEN IF sound bar media player [media_player.ht_mt500_501_b34d6a] is playing THEN pause sound bar timer [timer.sound_bar].",
"natural_language": {
"trigger": "When the device tracker n0ll [device_tracker.n0ll] changes its state from 'not_home' to 'home'.",
"conditions": "There are no global conditions for this automation. The actions are executed conditionally based on the state of other devices.",
"action": "When the automation triggers, it first checks if the living TV [media_player.livingtv] is idle. If it is, it runs a script or command based on the state of the Kodi screen saver sensor [binary_sensor.kodi_screen_saver]: if the screen saver is off, it runs a shell command to turn it on; if the screen saver is on, it runs the Radio On [script.radio_on] script. Then, it checks if the sound bar media player [media_player.ht_mt500_501_b34d6a] is currently playing. If it is, it pauses the sound bar timer [timer.sound_bar]."
},
"human_like": "When n0ll arrives home, this automation adjusts the media setup by managing the screen saver and pausing a timer if the sound bar is playing.",
"complexity": "medium"
}
},
{
"id": "home_near",
"result": {
"structured": "TRIGGER: When home root distance sensor [sensor.home_root_distance] is below 35 OR When home root distance sensor [sensor.home_root_distance] is below 10. CONDITIONS: None. ACTIONS: Send a notification via notify.gmail with title 'hass' and message 'home near trigger', THEN turn on Home Away [automation.home_away] AND turn on Living TV [automation.living_tv], THEN turn on living TV switch [switch.living_tv] AND turn on bed switch 1 [switch.bed_switch_1], THEN turn off Home Near [automation.home_near].",
"natural_language": {
"trigger": "When the home root distance sensor [sensor.home_root_distance] reports a value below 35 or below 10.",
"conditions": "There are no conditions for this automation.",
"action": "Sends a notification via Gmail with the title 'hass' and the message 'home near trigger'. It then enables the 'Home Away' [automation.home_away] and 'Living TV' [automation.living_tv] automations. Next, it turns on the living TV switch [switch.living_tv] and the bed switch 1 [switch.bed_switch_1]. Finally, it turns off itself, the 'Home Near' [automation.home_near] automation."
},
"human_like": "When arriving near home, this automation sends a notification, turns on specific automations and switches, and then disables itself.",
"complexity": "medium"
}
},
{
"id": "root_home",
"result": {
"structured": "TRIGGER: When device tracker root [device_tracker.root] enters zone.home. CONDITIONS: The trigger's from_state is not None. ACTIONS: Turn on Just Home [automation.just_home].",
"natural_language": {
"trigger": "When the device tracker root [device_tracker.root] enters the home zone.",
"conditions": "The automation only runs if the device tracker had a previous state before entering the home zone.",
"action": "Turns on the automation named Just Home [automation.just_home]."
},
"human_like": "When the device tracker named 'root' arrives home, it activates another automation called 'Just Home'.",
"complexity": "low"
}
},
{
"id": "just_home",
"result": {
"structured": "TRIGGER: When hall motion sensor [binary_sensor.hall_motion] turns on OR when living motion sensor [binary_sensor.living_motion] turns on OR when door sensor [binary_sensor.door] turns on. CONDITIONS: None. ACTIONS: Turn off home motion boolean [input_boolean.home_motion]. IF living TV [media_player.livingtv] is idle THEN turn on Radio On [script.radio_on]. IF lumi double switch 1 boolean [input_boolean.lumi_double_switch_1] is off AND day sensor [binary_sensor.day] is off THEN turn on Lumi All Lights On [script.lumi_all_lights_on] with brightness target 85 and time target calculated from just home light timer input number [input_number.just_home_light_timer] (value in minutes). Finally, turn off Just Home [automation.just_home].",
"natural_language": {
"trigger": "The automation triggers when motion is detected by the hall motion sensor [binary_sensor.hall_motion] or the living motion sensor [binary_sensor.living_motion], or when the door sensor [binary_sensor.door] opens.",
"conditions": "There are no global conditions for the automation to run.",
"action": "First, it turns off the home motion boolean [input_boolean.home_motion]. Then, if the living TV [media_player.livingtv] is idle, it starts the Radio On [script.radio_on] script. Next, if the lumi double switch 1 boolean [input_boolean.lumi_double_switch_1] is off and it is nighttime (day sensor [binary_sensor.day] is off), it runs the Lumi All Lights On [script.lumi_all_lights_on] script, setting the brightness to 85 and using a timer duration based on the just home light timer input number [input_number.just_home_light_timer]. Finally, the automation turns itself off."
},
"human_like": "This automation turns off a motion flag, optionally plays the radio, and turns on lights at night when motion is detected at the hall, living room, or door, then disables itself.",
"complexity": "medium"
}
},
{
"id": "living_tv",
"result": {
"structured": "TRIGGER: When living TV device tracker [device_tracker.livingtv] changes to home AND remains for 45 seconds. CONDITIONS: None. ACTIONS: Send a notification via notify.gmail with title 'hass' and message 'living near trigger' AND turn off Living TV [automation.living_tv].",
"natural_language": {
"trigger": "When the living TV device tracker [device_tracker.livingtv] reports being at home and stays in that state for 45 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification via Gmail with the title 'hass' and the message 'living near trigger', and then disables the Living TV [automation.living_tv] automation itself."
},
"human_like": "Sends a notification and disables itself when the living room TV device is detected as being at home for 45 seconds.",
"complexity": "low"
}
},
{
"id": "reload_homeconect",
"result": {
"structured": "TRIGGER: When washer device tracker [device_tracker.washer] OR dryer device tracker [device_tracker.dryer] OR dishwasher device tracker [device_tracker.dishwasher] changes to state 'home' AND remains in that state for 15 seconds. CONDITIONS: None. ACTIONS: Press home connect refresh button [button.home_connect_refresh].",
"natural_language": {
"trigger": "When any of the appliance device trackers—the washer, dryer, or dishwasher—becomes 'home' and stays in that state for 15 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "Presses the home connect refresh button [button.home_connect_refresh] to refresh the Home Connect integration."
},
"human_like": "Refreshes the Home Connect integration when any major appliance (washer, dryer, or dishwasher) comes online and stays online for 15 seconds.",
"complexity": "low"
}
},
{
"id": "auto_lock",
"result": {
"structured": "TRIGGER: When door sensor [binary_sensor.door] changes from open (on) to closed (off) AND remains closed for 30 seconds (lock_on_door) OR When building lock [lock.building] becomes locked AND remains locked for 1 minute (lock_on_building) OR When device tracker root [device_tracker.root] enters zone.home (lock_off) OR When device tracker root [device_tracker.root] leaves zone.home (lock_on) OR When in bed dummy switch [input_boolean.in_bed_dummy_switch] turns on AND remains on for 1 minute (lock_on) OR When an MQTT message is received on topic 'nuki/opener/trigger' with payload 'button' (lock_off_building). CONDITIONS: A template condition that requires the trigger's 'from_state' to be not None. ACTIONS: The automation executes a series of conditional actions based on the trigger ID and entity states. First, if triggered by lock_on_door AND door lock [lock.door] is unlocked AND auto lock boolean [input_boolean.auto_lock] is on, then lock door lock [lock.door]. Second, if triggered by lock_on OR (triggered by lock_on_building AND device tracker root [device_tracker.root] is not_home) AND door lock [lock.door] is unlocked, then if door sensor [binary_sensor.door] is closed (off), lock door lock [lock.door]; otherwise, send a notification stating the door's open/closed status. Third, if triggered by lock_on AND building lock [lock.building] is unlocked, then lock building lock [lock.building]. Fourth, if triggered by lock_off AND building lock [lock.building] is locked, then run script Doors Full Unlock [script.doors_full_unlock]. Fifth, if triggered by lock_off_building AND building lock [lock.building] is unlocked AND door lock [lock.door] is locked, then unlock door lock [lock.door].",
"natural_language": {
"trigger": "The automation can start when the door sensor [binary_sensor.door] closes and stays closed for 30 seconds, when the building lock [lock.building] is locked for a full minute, when the device tracker root [device_tracker.root] enters or leaves the home zone, when the in bed dummy switch [input_boolean.in_bed_dummy_switch] is turned on for a minute, or when a specific MQTT button message is received.",
"conditions": "A single condition checks that the trigger has a valid previous state, ensuring the automation only runs for state changes.",
"action": "Depending on what triggered the automation and the current state of the locks, it will perform different actions. If the door closes and auto-lock is enabled, it locks the door. If the user leaves home or the building lock is engaged while the user is away, it will lock the door if it's closed, or send a notification if it's open. It also locks the building lock when the user leaves home. When the user arrives home, it runs a script to unlock all doors. Finally, if a specific MQTT button is pressed while the building is unlocked but the door is locked, it unlocks the door."
},
"human_like": "This automation manages door and building locks based on user presence, door status, and manual triggers, automatically securing the property when you leave or go to bed, and unlocking it when you return.",
"complexity": "high"
}
},
{
"id": "ring_notify",
"result": {
"structured": "TRIGGER: When building ring sensor [binary_sensor.building_ring] turns on. CONDITIONS: None. ACTIONS: Execute script.all_notify with parameters icon_notify: door, tit: ring, msg: door AND then wait for 60 seconds.",
"natural_language": {
"trigger": "When the building ring sensor [binary_sensor.building_ring] detects a ring and turns on.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification using the script 'all_notify' with the specified icon and message, then waits for one minute."
},
"human_like": "Sends a notification when the building's doorbell rings.",
"complexity": "low"
}
},
{
"id": "shutter_wind",
"result": {
"structured": "TRIGGER: When shutters vibration sensor [sensor.shutters_vibration] exceeds 2.5 OR When shutters vibration sensor [sensor.shutters_vibration] exceeds 0 OR When shutters vibration sensor [sensor.shutters_vibration] exceeds 5.5 OR When shutters vibration sensor [sensor.shutters_vibration] exceeds 10.5 OR When wind vibration sensor [sensor.wind_vibration] exceeds 15.0 OR When a template condition is met (shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'speed_open' > local wind speed sensor [sensor.local_wind_speed] AND local wind speed sensor [sensor.local_wind_speed] > local forecast wind speed sensor [sensor.local_forecast_wind_speed] AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'forecast_speed_open' > local forecast wind speed sensor [sensor.local_forecast_wind_speed] AND wind vibration sensor [sensor.wind_vibration] < 3.0) OR When an event 'up_down_my' with data 'start' occurs. CONDITIONS: For all triggers, a template condition must be true (trigger.from_state and trigger.to_state are defined and not 'unknown' or 'unavailable', OR trigger.id is 'start'). ACTIONS: A series of conditional actions are executed based on the trigger and other state checks: 1. If trigger is 'notify' AND bed cover [cover.bed] current_tilt_position < 80, send a notification and fire a 'shutter_event' with wind: notify. 2. If trigger is 'detected' AND bed cover [cover.bed] current_tilt_position > 80 AND bed cover [cover.bed] current_position > 30, send a notification and fire a 'shutter_event' with wind: detected. 3. If trigger is 'move_second' AND temperature outside sensor [sensor.temp_out] > 0.0 AND bed cover [cover.bed] current_position < 30, open shutters cover [cover.shutters], send a notification, and fire a 'shutter_event' with wind: open. 4. If trigger is 'move_first' AND temperature outside sensor [sensor.temp_out] > 0.0, then if bed cover [cover.bed] current_tilt_position < 80, tilt open shutters cover [cover.shutters], send a notification, and fire a 'shutter_event' with wind: tilt_open_shutters; else open shutters cover [cover.shutters], send a notification, and fire a 'shutter_event' with wind: open. 5. If trigger is 'move_restore' AND temperature outside sensor [sensor.temp_out] > 0.0 AND wind vibration sensor [sensor.wind_vibration] < 3.0, then based on shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'state_shutters': if 'open', restore using scenes or script; if 'tilt_open_wind' or 'tilt_open_shutters', set tilt position; then send a notification, fire a 'shutter_event' with wind: close, and optionally delete scenes. 6. If trigger is 'move_tilt' AND shutter wind vibration enable boolean [input_boolean.shutter_wind_vibration_en] is on AND temperature outside sensor [sensor.temp_out] > 0.0 AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'state_shutters' is 'close', tilt open shutters cover [cover.shutters], send a notification, and fire a 'shutter_event' with wind: tilt_open_wind. 7. If trigger is 'move_second', 'move_first', or 'move_restore' AND temperature outside sensor [sensor.temp_out] < 0.0, send a notification about low temperature. 8. If trigger is 'notify' AND bed cover [cover.bed] current_tilt_position < 80 AND bed cover [cover.bed] current_position < 30, create scenes to store shutter positions and send a notification. 9. If trigger is 'start' AND temperature outside sensor [sensor.temp_out] > 0.0 AND bed cover [cover.bed] current_tilt_position > 80 AND bed cover [cover.bed] current_position > 30 AND a template condition is met (shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'speed_open' > local wind speed sensor [sensor.local_wind_speed] AND local wind speed sensor [sensor.local_wind_speed] > local forecast wind speed sensor [sensor.local_forecast_wind_speed] AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'forecast_speed_open' > local forecast wind speed sensor [sensor.local_forecast_wind_speed]) AND shutters vibration sensor [sensor.shutters_vibration] < 2.5 AND wind vibration sensor [sensor.wind_vibration] < 3.0 AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute 'state_shutters' is 'open', 'tilt_open_wind', or 'tilt_open_shutters', then run script Shutters Position 1 [script.shutters_position_1], send a notification, and fire a 'shutter_event' with wind: close.",
"natural_language": {
"trigger": "The automation can be triggered by several events: when the shutters vibration sensor [sensor.shutters_vibration] detects vibration above certain thresholds (0, 2.5, 5.5, or 10.5), when the wind vibration sensor [sensor.wind_vibration] exceeds 15.0, when a complex template condition involving wind speed and forecast data is met, or when a custom event named 'up_down_my' with the data 'start' is received.",
"conditions": "A general condition applies to all triggers: the automation only runs if the trigger's state change involves valid states (not 'unknown' or 'unavailable'), unless the trigger is the 'start' event. Each action path then has its own specific set of conditions, which typically check the current temperature outside, the position and tilt of the bed cover [cover.bed], the state of the wind vibration sensor, and the status of the shutter wind vibration enable boolean [input_boolean.shutter_wind_vibration_en]. Some paths also check the current state of the shutters as reported by the shutters open speed wind sensor [sensor.shutters_open_speed_wind].",
"action": "The automation performs different actions based on which trigger fired and the state of various sensors and covers. Actions include sending notifications, firing custom 'shutter_event' events, opening or tilting the shutters cover [cover.shutters], creating and activating scenes to save and restore shutter positions, running a pre-defined script to move shutters to a safe position, and deleting temporary scenes. The specific action taken is carefully chosen to respond to wind conditions, vibration levels, and temperature to protect the shutters and inform the user."
},
"human_like": "This automation monitors wind and vibration to automatically adjust shutter positions for safety, sends alerts, and can restore settings when conditions improve.",
"complexity": "high"
}
},
{
"id": "shutter_position_ctrl",
"result": {
"structured": "TRIGGER: When the current_position attribute of living 2 cover [cover.living_2] OR office cover [cover.office] becomes greater than 30 (open) OR when the current_position attribute of living 2 cover [cover.living_2] OR office cover [cover.office] becomes less than 30 (close). CONDITIONS: The previous state of the triggering cover is not 'unknown' or 'unavailable', and its previous current_position was not 50, and its new current_position is not 50. ACTIONS: Define a variable _map linking cover entities to their corresponding input_booleans. Then, if the trigger was 'open' AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute state_shutters is 'close' AND the corresponding input_boolean (from _map) is 'on', then turn that input_boolean off. Alternatively, if the trigger was 'close' AND shutters open speed wind sensor [sensor.shutters_open_speed_wind] attribute state_shutters is 'close' AND the corresponding input_boolean (from _map) is 'off', then turn that input_boolean on.",
"natural_language": {
"trigger": "When the position of either the living 2 cover [cover.living_2] or the office cover [cover.office] changes to be above 30% open, or when it changes to be below 30% open.",
"conditions": "The automation only runs if the cover's previous state was valid (not 'unknown' or 'unavailable') and its position was not exactly 50% before or after the change.",
"action": "It first creates a mapping between the cover that triggered the automation and its associated input boolean. If the cover opened past 30%, the wind sensor [sensor.shutters_open_speed_wind] reports the shutters should be 'close', and the corresponding boolean is 'on', it turns that boolean off. Conversely, if the cover closed below 30%, the wind sensor reports 'close', and the corresponding boolean is 'off', it turns that boolean on."
},
"human_like": "This automation synchronizes the state of input booleans with the physical position of shutters, but only when wind conditions dictate the shutters should be closed.",
"complexity": "medium"
}
},
{
"id": "track_merge",
"result": {
"structured": "TRIGGER: When ffeeddccbbaa device tracker [device_tracker.ffeeddccbbaa] changes state OR When google maps device tracker [device_tracker.google_maps_107209225675467950565] changes state. CONDITIONS: None. ACTIONS: Execute python_script.device_tracker_merge with parameters: device_name='root', master_device=device_tracker.ffeeddccbbaa, slave_device=device_tracker.google_maps_107209225675467950565, trigger_id={{trigger.entity_id}}, time={{ states('input_number.tracker_delay') | float(0) * 60 }}, force_update={{ states('input_number.tracker_force_update') | float(0) * 60 }}, accuracy={{ states('input_number.tracker_accuracy') | float(0) * 1000 }}, distance={{ distance(states.device_tracker.ffeeddccbbaa, states.device_tracker.google_maps_107209225675467950565) }}.",
"natural_language": {
"trigger": "Whenever the state of either the ffeeddccbbaa device tracker [device_tracker.ffeeddccbbaa] or the google maps device tracker [device_tracker.google_maps_107209225675467950565] changes.",
"conditions": "There are no conditions that need to be met.",
"action": "Runs a Python script named 'device_tracker_merge' to combine location data. The script uses the ffeeddccbbaa device tracker as the primary source and the google maps device tracker as the secondary source. It passes several dynamic parameters: the name of the triggering device, a delay time calculated from tracker delay input number [input_number.tracker_delay], a force update interval from tracker force update input number [input_number.tracker_force_update], an accuracy threshold from tracker accuracy input number [input_number.tracker_accuracy], and the current distance between the two trackers."
},
"human_like": "Merges location data from two different device trackers whenever either one updates, using a custom script to create a more accurate and reliable combined location.",
"complexity": "medium"
}
},
{
"id": "track_merge_startup",
"result": {
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Execute python_script.device_tracker_merge with parameters: device_name=root, master_device=google maps device tracker [device_tracker.google_maps_107209225675467950565], slave_device=google maps device tracker [device_tracker.google_maps_107209225675467950565], trigger_id=device_tracker.google_maps_107209225675467950565, time=(tracker delay input number [input_number.tracker_delay] value * 60), force_update=(tracker force update input number [input_number.tracker_force_update] value * 60), accuracy=(tracker accuracy input number [input_number.tracker_accuracy] value * 1000), distance=(distance between google maps device tracker [device_tracker.google_maps_107209225675467950565] and itself). Wait 5 seconds. Turn on Track Merge [automation.track_merge].",
"natural_language": {
"trigger": "When Home Assistant first starts up.",
"conditions": "There are no conditions for this automation.",
"action": "It runs a Python script called 'device_tracker_merge' to configure a device tracker merge. The script uses the 'google maps device tracker' [device_tracker.google_maps_107209225675467950565] as both the master and slave device. It calculates several parameters for the script using other helper inputs: the delay time from 'tracker delay input number' [input_number.tracker_delay], the force update interval from 'tracker force update input number' [input_number.tracker_force_update], and the accuracy threshold from 'tracker accuracy input number' [input_number.tracker_accuracy]. It also calculates the distance between the tracker and itself, which will be zero. After running the script, it waits for five seconds and then turns on another automation called 'Track Merge' [automation.track_merge]."
},
"human_like": "Initializes a device tracker merging process when Home Assistant starts, then enables the main tracking automation after a short delay.",
"complexity": "medium"
}
},
{
"id": "auto_clean",
"result": {
"structured": "TRIGGER: When time is 08:00:00 OR When device tracker root [device_tracker.root] changes from home to not_home AND remains not_home for 5 minutes OR When device tracker root [device_tracker.root] changes from home to not_home AND remains not_home for 15 minutes. CONDITIONS: Day is Wednesday OR Saturday AND (All Clean [script.all_clean] was last triggered more than 24 hours ago OR All Clean [script.all_clean] has never been triggered). ACTIONS: Choose based on trigger and conditions: 1. IF trigger is time_check AND device tracker root [device_tracker.root] is home THEN send notification 'check wash door' AND IF clean vacuum sensor [binary_sensor.clean_vacuum] is on THEN wait 5 seconds AND send notification 'bin full not clean'. 2. IF trigger is clean_notify AND wash door sensor [binary_sensor.wash_door] is open (on) THEN send notification 'clean in 10 min'. 3. IF trigger is clean_run AND clean vacuum sensor [binary_sensor.clean_vacuum] is off AND wash door sensor [binary_sensor.wash_door] is open (on) THEN start script All Clean [script.all_clean]. 4. OTHERWISE log a default message.",
"natural_language": {
"trigger": "The automation triggers at 8:00 AM, or when the device tracker root [device_tracker.root] leaves home and stays away for 5 minutes, or when it leaves home and stays away for 15 minutes.",
"conditions": "The automation only runs on Wednesdays or Saturdays, and it requires that the All Clean [script.all_clean] script has not been run in the last 24 hours, or has never been run at all.",
"action": "Depending on which trigger fired and the current state, the automation will perform different actions. If triggered at 8:00 AM and the user is home, it sends a notification to check the wash door, and if the vacuum bin sensor indicates it's full, it sends another notification after a short delay. If triggered by the user leaving for 5 minutes and the wash door is open, it sends a notification that a clean will start in 10 minutes. If triggered by the user leaving for 15 minutes, the wash door is open, and the vacuum bin is not full, it starts the full cleaning script. If none of these specific conditions are met, it logs a default message."
},
"human_like": "This automation manages the robot vacuum, sending reminders and starting scheduled cleans when the house is empty on specific days, ensuring the bin is empty and the wash door is open.",
"complexity": "high"
}
},
{
"id": "reset_bin_counter",
"result": {
"structured": "TRIGGER: When rockrobo dustbin sensor [binary_sensor.rockrobo_dustbin] changes from off to on. CONDITIONS: None. ACTIONS: Reset clean counter [counter.clean_counter].",
"natural_language": {
"trigger": "When the rockrobo dustbin sensor [binary_sensor.rockrobo_dustbin] detects that the dustbin has been inserted (changes from off to on).",
"conditions": "There are no conditions that must be met.",
"action": "Resets the clean counter [counter.clean_counter] to zero."
},
"human_like": "Resets the cleaning counter whenever the robot vacuum's dustbin is put back in place.",
"complexity": "low"
}
},
{
"id": "ligth_village_1",
"result": {
"structured": "TRIGGER: When motion village 1 sensor [binary_sensor.motion_village_1] detects motion (turns on) OR When motion village 1 sensor [binary_sensor.motion_village_1] stops detecting motion (turns off) AND remains off for 90 seconds OR When village 1 light [light.village_1] turns on AND remains on for 5 minutes and 30 seconds. CONDITIONS: (Trigger is motion detection (light_on) AND village 1 light [light.village_1] is off AND it is after sunset minus 20 minutes AND before 23:15:00) OR (Trigger is motion detection (light_on) AND village 1 light [light.village_1] is off AND (it is before sunrise minus 20 minutes OR it is after 23:15:00)) OR (Trigger is motion stop (light_off) AND village 1 light [light.village_1] is on AND motion village 1 sensor [binary_sensor.motion_village_1] is off). ACTIONS: If first condition set is true, turn on village 1 light [light.village_1] to 100% brightness, wait 250ms, then set its color temperature to 3300K. If second condition set is true, turn on village 1 light [light.village_1] to 10% brightness, wait 250ms, then set its color temperature to 2500K. If third condition set is true, turn on village 1 light [light.village_1] to 10% brightness, wait 250ms, then turn it off.",
"natural_language": {
"trigger": "The automation can start when the motion village 1 sensor [binary_sensor.motion_village_1] first detects motion, when it stops detecting motion for 90 seconds, or when the village 1 light [light.village_1] has been on for 5 minutes and 30 seconds.",
"conditions": "The automation checks which trigger happened and other states to decide what to do. If motion is detected, the light is off, it's after sunset (with a 20-minute offset), and before 11:15 PM, it will use the first action. If motion is detected, the light is off, and it's either before sunrise (with a 20-minute offset) or after 11:15 PM, it will use the second action. If motion has been absent for 90 seconds, the light is on, and the motion sensor is off, it will use the third action.",
"action": "Depending on the conditions, the automation will either turn on the village 1 light [light.village_1] with bright, cool light for evening hours, turn it on with dim, warm light for late night/early morning hours, or dim the light briefly before turning it off when motion is no longer detected."
},
"human_like": "This automation controls the village 1 light based on motion and time of day, turning it on with different brightness and color settings in the evening versus late night, and automatically turning it off after a period of no motion.",
"complexity": "medium"
}
},
{
"id": "ligth_top_1",
"result": {
"structured": "TRIGGER: When motion village top 1 sensor [binary_sensor.motion_village_top_1] detects motion (on) OR When motion village top 1 sensor [binary_sensor.motion_village_top_1] stops detecting motion (off) for 90 seconds OR When village top 1 light [light.village_top_1] is on for 5 minutes and 30 seconds. CONDITIONS AND ACTIONS (Choose Block): IF (Trigger is motion detection (light_on) AND village top 1 light [light.village_top_1] is off AND it is after sunset minus 20 minutes AND before 23:15:00) THEN Turn on village top 1 light [light.village_top_1] at 100% brightness, wait 250 milliseconds, then set its color temperature to 3300K. OR IF (Trigger is motion detection (light_on) AND village top 1 light [light.village_top_1] is off AND (it is before sunrise minus 20 minutes OR after 23:15:00)) THEN Turn on village top 1 light [light.village_top_1] at 10% brightness, wait 250 milliseconds, then set its color temperature to 2500K. OR IF (Trigger is motion stopped (light_off) AND village top 1 light [light.village_top_1] is on AND motion village top 1 sensor [binary_sensor.motion_village_top_1] is off) THEN Turn on village top 1 light [light.village_top_1] at 10% brightness, wait 250 milliseconds, then turn it off.",
"natural_language": {
"trigger": "The automation can be triggered in three ways: when the motion village top 1 sensor [binary_sensor.motion_village_top_1] first detects motion; when the same motion sensor reports no motion for 90 seconds; or when the village top 1 light [light.village_top_1] has been left on for 5 minutes and 30 seconds.",
"conditions": "The automation uses a choose block to select an action based on which trigger fired and other conditions. For a motion detection trigger, it checks if the light is off and the time of day. For a motion-stopped trigger, it checks if the light is on and the motion sensor is still off.",
"action": "Depending on the conditions, the automation will either: 1) Turn the light on to full brightness with a warm white color if it's evening; 2) Turn the light on to a dim, warm color if it's late night or early morning; or 3) Dim the light briefly and then turn it off if motion has stopped."
},
"human_like": "This automation controls the village top 1 light based on motion and time of day, turning it on brightly in the evening, dimly at night, and off when no motion is detected.",
"complexity": "medium"
}
},
{
"id": "ligth_village_out",
"result": {
"structured": "TRIGGER: When sunset occurs OR When sunset occurs with an offset of +1 hour 30 minutes OR When sunrise occurs with an offset of +10 minutes OR When device tracker root [device_tracker.root] enters zone.village OR When device tracker root [device_tracker.root] leaves zone.village. CONDITIONS: For the first action branch: ((Trigger is sunset_on AND village presence sensor [binary_sensor.village_presence] is on) OR (Trigger is presence_on AND (It is before sunrise with offset +30 minutes OR It is after sunset with offset -30 minutes))) AND village out light [light.village_out] is off. For the second action branch: Trigger is light_off OR presence_off AND village out light [light.village_out] is on. ACTIONS: If the first condition set is met, turn on village out light [light.village_out] with a random brightness percentage (45-65, step 2) and after a 250ms delay set a random color temperature (300-350K, step 10). If the second condition set is met, turn off village out light [light.village_out].",
"natural_language": {
"trigger": "The automation can be triggered by several events: at sunset, 1 hour and 30 minutes after sunset, 10 minutes after sunrise, when the device tracker root [device_tracker.root] enters the village zone, or when it leaves the village zone.",
"conditions": "To turn the light on, either the sunset trigger must fire while the village presence sensor [binary_sensor.village_presence] detects presence, or the presence entry trigger must fire during the evening (after sunset minus 30 minutes) or early morning (before sunrise plus 30 minutes). Additionally, the village out light [light.village_out] must be off. To turn the light off, either the scheduled light_off trigger (after sunset or after sunrise) or the presence leave trigger must fire, and the light must be on.",
"action": "If the conditions for turning on are met, the light is turned on with a randomly selected brightness and, after a short delay, a randomly selected color temperature. If the conditions for turning off are met, the light is simply turned off."
},
"human_like": "Automatically turns the village outdoor light on at sunset or when someone arrives in the evening/morning, and turns it off when they leave or at scheduled times, using random light settings for a natural look.",
"complexity": "high"
}
},
{
"id": "ligth_garage",
"result": {
"structured": "TRIGGER: When motion village garage sensor [binary_sensor.motion_village_garage] detects motion (on) OR device tracker root [device_tracker.root] enters zone.village OR motion village garage sensor [binary_sensor.motion_village_garage] stops detecting motion (off) AND remains off for 90 seconds OR sunrise occurs with an offset of +10 minutes OR device tracker root [device_tracker.root] leaves zone.village. CONDITIONS: For the first action branch: (Trigger ID is light_on) AND (village garage light [light.village_garage] is off) AND (sun is before sunrise with offset +30 minutes OR sun is after sunset with offset -30 minutes). For the second action branch: (Trigger ID is light_off OR presence_off) AND (village garage light [light.village_garage] is on) AND (motion village garage sensor [binary_sensor.motion_village_garage] is off). ACTIONS: Choose the first sequence if its conditions are met: Turn on village garage light [light.village_garage]. Otherwise, choose the second sequence if its conditions are met: Turn off village garage light [light.village_garage].",
"natural_language": {
"trigger": "The automation can be triggered by several events: when motion is detected in the garage, when the device tracker for 'root' enters the village zone, when motion has been absent for 90 seconds, at 10 minutes after sunrise, or when the device tracker for 'root' leaves the village zone.",
"conditions": "To turn the light on, the trigger must be either motion detection or arrival in the village zone, the garage light must be off, and it must be either within 30 minutes before sunrise or within 30 minutes after sunset. To turn the light off, the trigger must be either the absence of motion for 90 seconds, 10 minutes after sunrise, or departure from the village zone, the garage light must be on, and there must be no motion detected.",
"action": "Depending on the trigger and conditions, the automation will either turn on or turn off the village garage light."
},
"human_like": "Automatically controls the garage light based on motion, presence, and time of day, turning it on when needed at night and off when the area is empty.",
"complexity": "medium"
}
},
{
"id": "waterheater_village",
"result": {
"structured": "TRIGGER: When village presence sensor [binary_sensor.village_presence] becomes present (on) OR When village presence sensor [binary_sensor.village_presence] becomes absent (off) AND remains absent for 15 minutes. CONDITIONS: (Trigger is trigger_on AND waterheater village schedule switch [switch.waterheater_village_schedule] is off) OR (Trigger is trigger_off AND waterheater village schedule switch [switch.waterheater_village_schedule] is on). ACTIONS: If conditions for trigger_on are met, turn on waterheater village schedule switch [switch.waterheater_village_schedule] and fire event 'waterheater' with data village: schedule_on. If conditions for trigger_off are met, turn off waterheater village schedule switch [switch.waterheater_village_schedule] and fire event 'waterheater' with data village: schedule_off.",
"natural_language": {
"trigger": "When the village presence sensor [binary_sensor.village_presence] detects someone has arrived (turns on), or when it detects everyone has left (turns off) and that state persists for 15 minutes.",
"conditions": "If the trigger was the arrival of a person, the automation checks that the waterheater village schedule switch [switch.waterheater_village_schedule] is currently off. If the trigger was the departure of all persons, it checks that the waterheater village schedule switch [switch.waterheater_village_schedule] is currently on.",
"action": "If someone arrives and the schedule is off, the automation turns on the waterheater village schedule switch [switch.waterheater_village_schedule] and sends a 'waterheater' event indicating the schedule is on. If everyone leaves and the schedule is on, it turns off the waterheater village schedule switch [switch.waterheater_village_schedule] and sends a 'waterheater' event indicating the schedule is off."
},
"human_like": "Turns the water heater schedule on when someone is detected in the village, and turns it off after everyone has been gone for 15 minutes.",
"complexity": "medium"
}
},
{
"id": "waterheater_village_reheat",
"result": {
"structured": "TRIGGER: When waterheater village sensor [sensor.waterheater_village] falls below 19.5 OR When waterheater village sensor [sensor.waterheater_village] rises above 35.5 OR When a 'waterheater' event with data village: schedule_on occurs OR When a 'waterheater' event with data village: trigger_off occurs. CONDITIONS: waterheater village schedule switch [switch.waterheater_village_schedule] is on. ACTIONS: (If the trigger was waterheater village sensor [sensor.waterheater_village] below 19.5 AND the current time is between 08:00:00 and 19:30:00 AND waterheater village switch [switch.waterheater_village] is off, then turn on waterheater village switch [switch.waterheater_village]) OR (If the trigger was waterheater village sensor [sensor.waterheater_village] above 35.5 AND the current time is after 08:00:00 AND waterheater village switch [switch.waterheater_village] is on, then turn off waterheater village switch [switch.waterheater_village]) OR (If the trigger was a 'waterheater' event with village: schedule_on AND the current time is between 13:00:00 and 19:30:00 AND waterheater village sensor [sensor.waterheater_village] is below 33 AND waterheater village switch [switch.waterheater_village] is off, then turn on waterheater village switch [switch.waterheater_village]) OR (If the trigger was a 'waterheater' event with village: trigger_off AND waterheater village switch [switch.waterheater_village] is on, then turn off waterheater village switch [switch.waterheater_village]).",
"natural_language": {
"trigger": "The automation is triggered when the waterheater village sensor [sensor.waterheater_village] temperature drops below 19.5°C or rises above 35.5°C. It can also be triggered by specific 'waterheater' events: one indicating the schedule should turn on (village: schedule_on) and another indicating it should turn off (village: trigger_off).",
"conditions": "A global condition requires that the waterheater village schedule switch [switch.waterheater_village_schedule] is turned on for any action to be considered.",
"action": "Depending on which trigger fired and other conditions, the automation performs one of four possible actions. If the temperature is low and it's daytime (between 08:00 and 19:30) and the heater is off, it turns the waterheater village switch [switch.waterheater_village] on. If the temperature is high and it's after 08:00 and the heater is on, it turns the switch off. If a schedule-on event occurs in the afternoon (between 13:00 and 19:30), the temperature is below 33°C, and the heater is off, it turns the switch on. Finally, if a schedule-off event occurs and the heater is on, it turns the switch off."
},
"human_like": "Manages the village water heater by turning it on when the water gets too cold during scheduled hours or when a schedule event occurs, and turning it off when the water is hot enough or when an off event is received.",
"complexity": "medium"
}
},
{
"id": "village_remote_1",
"result": {
"structured": "TRIGGER: When an MQTT message is received on topic tele/zha-bridge-city/A79A/SENSOR. CONDITIONS: None. ACTIONS: Choose based on conditions. Condition 1: (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 0) AND village out light [light.village_out] is off. If true, turn on village out light [light.village_out] with brightness 95% AND then set its color temperature to 2850 Kelvin. Condition 2: (MQTT payload contains ZbReceived[\"0x054B\"] AND ZbReceived[\"0x054B\"].Power == 0) AND village out light [light.village_out] is on. If true, turn off village out light [light.village_out].",
"natural_language": {
"trigger": "When an MQTT message arrives on the topic 'tele/zha-bridge-city/A79A/SENSOR'.",
"conditions": "There are no global conditions. The automation uses a 'choose' action to evaluate two specific scenarios based on the MQTT payload and the current state of the light.",
"action": "If the MQTT payload contains a specific data field (ZbReceived[\"0x054B\"]) where the Power value is 0, and the village out light [light.village_out] is currently off, then the light is turned on to 95% brightness and its color temperature is set to 2850 Kelvin. If the same MQTT payload condition is met but the village out light [light.village_out] is already on, then the light is turned off."
},
"human_like": "Toggles the village outdoor light on or off when a specific remote control button (Power 0) is pressed, also setting the brightness and color when turning on.",
"complexity": "medium"
}
},
{
"id": "lumi_switch_double_trigger_1",
"result": {
"structured": "TRIGGER: When MQTT topic zigbee2mqtt/living-cube reports action 'shake' OR When MQTT topic zigbee2mqtt/bed-button reports action 'shake' OR When timer lumi double switch 1 timer [timer.lumi_double_switch_1_timer] finishes. CONDITIONS: None. ACTIONS: If lumi double switch 1 boolean [input_boolean.lumi_double_switch_1] is 'on', run script Lumi Double Switch On [script.lumi_double_switch_on]; if it is 'off', run script lumi double switch off [script.lumi_double_switch_off].",
"natural_language": {
"trigger": "The automation triggers when a 'shake' action is received from the MQTT topic for the living-cube device, or when a 'shake' action is received from the MQTT topic for the bed-button device, or when the timer named lumi double switch 1 timer [timer.lumi_double_switch_1_timer] finishes.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "The automation checks the current state of the input boolean lumi double switch 1 boolean [input_boolean.lumi_double_switch_1]. If it is 'on', it runs the script Lumi Double Switch On [script.lumi_double_switch_on]. If it is 'off', it runs a script named lumi double switch off (referenced in the template but not defined in the configuration)."
},
"human_like": "Toggles a switch state when a device is shaken or a timer ends, running one of two scripts based on the current switch position.",
"complexity": "medium"
}
},
{
"id": "down_lumi_switch_double_trigger_1",
"result": {
"structured": "TRIGGER: When an event of type up_down_my occurs with event data 'data: stop'. CONDITIONS: lumi double switch 1 boolean [input_boolean.lumi_double_switch_1] is on. ACTIONS: Execute script.lumi_double_switch_off.",
"natural_language": {
"trigger": "When a custom event named 'up_down_my' is received, specifically when its data contains the value 'stop'.",
"conditions": "The lumi double switch 1 boolean [input_boolean.lumi_double_switch_1] must be in the 'on' state.",
"action": "Runs the script named 'lumi_double_switch_off'."
},
"human_like": "Turns off a Lumi double switch when a specific 'stop' event is received, but only if the switch's control boolean is already on.",
"complexity": "low"
}
},
{
"id": "office_switch",
"result": {
"structured": "TRIGGER: When MQTT message on topic zigbee2mqtt/office-button with payload 'single' OR When MQTT message on topic zigbee2mqtt/office-button with payload 'double' OR When MQTT message on topic zigbee2mqtt/office-button with payload 'long' OR When device tracker n0ll [device_tracker.n0ll] is not_home for 30 seconds. CONDITIONS: (Trigger is switch_high OR switch_low) AND Office Light [automation.office_light] is on. ACTIONS: Turn off Office Light [automation.office_light]. CONDITIONS: (Trigger is switch_high OR switch_low) AND office window light [light.office_window] is on. ACTIONS: Turn off office window light [light.office_window]. CONDITIONS: (Trigger is switch_high OR switch_low). ACTIONS: Run script.lights_on with data: ctrl_light = light.office_desk, ctrl_all = true, brightness_pct = 5 if trigger is switch_low OR 90 if trigger is switch_high, transition = 3, color_temp = 4000. CONDITIONS: Office Light [automation.office_light] is off AND (Trigger is switch_off_pc OR switch_off_hold). ACTIONS: Turn on office light [light.office] with effect 'okay', Turn on Office Light [automation.office_light], Delay 750 milliseconds, Fire event 'lights_check' with data light: turn_off. CONDITIONS: Office Light [automation.office_light] is on AND Trigger is switch_off_hold. ACTIONS: Turn off Office Light [automation.office_light], Turn on office light [light.office] with effect 'okay', Delay 550 milliseconds, Turn off bed light [light.bed], wash light [light.wash], kitchen light [light.kitchen], bath light [light.bath], Delay 550 milliseconds, Turn off kitchen LED light [light.kitchen_led], living light [light.living], hall light [light.hall], Turn off office light [light.office] with transition 20 seconds, Wait for office light [light.office] to be off (timeout 30 seconds), Delay for remaining wait time, Turn on office enter dummy boolean [input_boolean.office_enter_dummy], Turn on Office Light [automation.office_light].",
"natural_language": {
"trigger": "The automation triggers when a button press is detected via MQTT from the office button, with actions 'single', 'double', or 'long', or when the device tracker for n0ll [device_tracker.n0ll] shows the person is away for 30 seconds.",
"conditions": "The automation uses a series of conditional branches. If the button is pressed (single or double) and the Office Light automation [automation.office_light] is on, that automation is turned off. If the button is pressed and the office window light [light.office_window] is on, that light is turned off. If the button is pressed (single or double) with no other specific conditions, a script is called to turn on the office desk light [light.office_desk] and potentially other lights, with brightness set to 5% for a single press or 90% for a double press. If the Office Light automation is off and the trigger is either the long button press or the device tracker leaving, the office light [light.office] is turned on with a special effect, the Office Light automation is turned on, and a lights_check event is fired. Finally, if the Office Light automation is on and the trigger is a long button press, a complex sequence begins: the Office Light automation is turned off, the office light is turned on with an effect, then after delays, multiple lights throughout the home are turned off in stages, the office light fades off, and finally the office enter dummy boolean [input_boolean.office_enter_dummy] is turned on and the Office Light automation is restarted.",
"action": "The actions vary based on the trigger and conditions, including turning automations and lights on or off, running a script to set lighting scenes, firing events, and executing a sequenced shutdown of multiple lights in the home."
},
"human_like": "This automation controls office and other home lights using a button or occupancy, offering different brightness levels, turning off lights when leaving, and a 'goodnight' sequence to shut down all lights.",
"complexity": "high"
}
},
{
"id": "night_light_switch",
"result": {
"structured": "TRIGGER: When MQTT topic zigbee2mqtt/bed-button receives a payload with action 'single' OR When MQTT topic zigbee2mqtt/bed-button receives a payload with action 'double'. CONDITIONS: None. ACTIONS: First, set variable 'cfg' from a template using night mode sensor [binary_sensor.night_mode] state. Then, choose: IF trigger is 'single', THEN run script.turn_on on a script determined by the state of bed light [light.bed] (if bed light is 'on', run script.lights_off; if bed light is 'off', run script.lights_on) with parameters from 'cfg'. IF trigger is 'double' AND Bed Light [automation.bed_light] is 'on', THEN turn off Bed Light [automation.bed_light] AND turn off bed light [light.bed]. IF trigger is 'double' AND Bed Light [automation.bed_light] is 'off', THEN turn on Bed Light [automation.bed_light] AND turn on bed light [light.bed] with effect 'okay'.",
"natural_language": {
"trigger": "When a Zigbee button sends a 'single' press or a 'double' press message via MQTT.",
"conditions": "There are no conditions that must be met before the actions run.",
"action": "First, the automation calculates configuration settings based on whether night mode sensor [binary_sensor.night_mode] is active. On a single press, it toggles the bed light [light.bed] by running a script that turns it on or off with specific brightness, transition, and color temperature. On a double press, it checks the state of the Bed Light [automation.bed_light] automation. If that automation is on, it is turned off and the bed light is also turned off. If that automation is off, it is turned on and the bed light is turned on with a special 'okay' effect."
},
"human_like": "A bedside button controls the bedroom light: a single press toggles the light on/off, and a double press toggles a separate light automation on/off.",
"complexity": "medium"
}
},
{
"id": "kitchen_switch",
"result": {
"structured": "TRIGGER: When an MQTT message is received on topic zigbee2mqtt/kitchen-button. CONDITIONS: The extracted action variable is not None AND the action is not 'release'. ACTIONS: Choose 1: If action is 'single' OR 'double' AND both Kitchen Light [automation.kitchen_light] and Kitchen Light 1 [automation.kitchen_light_1] are on, then turn off Kitchen Light [automation.kitchen_light] and Kitchen Light 1 [automation.kitchen_light_1]. Choose 2: If action is 'single' OR 'double' AND both Kitchen Light [automation.kitchen_light] and Kitchen Light 1 [automation.kitchen_light_1] are off, then: Set brightness_pct to 5 if action is 'single' OR 90 if action is 'double', set color_temp to 4000, set transition to 1. Turn on kitchen LED light [light.kitchen_led] to 20% brightness. Delay for the value of control delay input number [input_number.ctrl_delay] milliseconds (default 100). Turn on kitchen LED light [light.kitchen_led] to max(brightness_pct, 30)% brightness. Delay for the value of control delay input number [input_number.ctrl_delay] milliseconds (default 100). Turn on kitchen light [light.kitchen] to 1% brightness, color_temp_kelvin 4000, transition 0. Delay for the value of control delay input number [input_number.ctrl_delay] milliseconds (default 100). Turn on kitchen light [light.kitchen] to brightness_pct% brightness, transition 1. Choose 3: If action is 'hold', then: Turn on kitchen light [light.kitchen] with effect 'okay'. Turn on Kitchen Light [automation.kitchen_light] and Kitchen Light 1 [automation.kitchen_light_1]. Delay for 750 milliseconds. Fire event 'lights_check' with data {light: turn_off}.",
"natural_language": {
"trigger": "When a message is received from the kitchen button via MQTT on the topic zigbee2mqtt/kitchen-button.",
"conditions": "The button press action extracted from the message must be defined and must not be a 'release' action.",
"action": "Depending on the button action and the state of other automations, it performs different sequences. For a single or double press when the Kitchen Light and Kitchen Light 1 automations are on, it turns those automations off. For a single or double press when those automations are off, it initiates a multi-step process to turn on the kitchen LED light and the main kitchen light with specific brightness levels, color temperature, and delays based on the action. For a hold action, it turns on the kitchen light with a special effect, activates the Kitchen Light and Kitchen Light 1 automations, waits briefly, and then fires an event to check lights."
},
"human_like": "Controls the kitchen lights and related automations using a button, with different light scenes for single, double, and hold presses.",
"complexity": "high"
}
},
{
"id": "living_switch",
"result": {
"structured": "TRIGGER: When an MQTT message is received on topic 'zigbee2mqtt/living-cube' and the extracted 'action' variable is not None. CONDITIONS: The 'action' variable extracted from the MQTT payload is not None. ACTIONS: The automation uses a choose block with four distinct sequences. Sequence 1: IF automation.living_light [automation.living_light] is on AND action is 'flip90' AND action_from_side is 0 AND action_side is 1 AND action_to_side is 1 THEN set variables: brightness_pct based on night mode sensor [binary_sensor.night_mode] and living TV [media_player.livingtv] state, color_temp to 4000; turn off automations: Living Light [automation.living_light], Kitchen Light [automation.kitchen_light], Kitchen Light 1 [automation.kitchen_light_1]; turn on living light [light.living] to 1% brightness with 0 transition; delay for control delay input number [input_number.ctrl_delay] milliseconds; turn on living light [light.living] to brightness_pct with transition variable; delay; turn on kitchen LED light [light.kitchen_led] to max(brightness_pct, 30); delay; turn on kitchen light [light.kitchen] to 1% brightness with 0 transition; delay; turn on kitchen light [light.kitchen] to brightness_pct with transition variable. Sequence 2: IF automation.living_light [automation.living_light] is off AND action is 'flip90' AND action_from_side is 1 AND action_side is 0 AND action_to_side is 0 THEN turn on living light [light.living] and kitchen light [light.kitchen] with effect 'okay'; turn on automations: Living Light [automation.living_light], Kitchen Light [automation.kitchen_light], Kitchen Light 1 [automation.kitchen_light_1]; delay 750ms; fire event 'lights_check' with data light: turn_off. Sequence 3: IF light.living [light.living] is on AND automation.living_light [automation.living_light] is off AND action is 'rotate_left' AND side is 1 THEN set variables: step based on action_angle, kitchen_pct from kitchen LED light [light.kitchen_led] brightness, led_pct calculated; turn on living light [light.living] adjusting brightness by step within 10-90% range with transition; delay for control delay input number [input_number.ctrl_delay] milliseconds; turn on kitchen light [light.kitchen] adjusting brightness by step within 10-90% range with transition; delay; turn on kitchen LED light [light.kitchen_led] to min(led_pct - 5, 20); delay; turn on kitchen LED light [light.kitchen_led] to led_pct. Sequence 4: IF light.living [light.living] is on AND automation.living_light [automation.living_light] is off AND action is 'rotate_right' AND side is 1 THEN set variables: step based on action_angle, kitchen_pct from kitchen LED light [light.kitchen_led] brightness, led_pct calculated; turn on living light [light.living] adjusting brightness by step within 10-90% range with transition; delay for control delay input number [input_number.ctrl_delay] milliseconds; turn on kitchen light [light.kitchen] adjusting brightness by step within 10-90% range with transition; delay; turn on kitchen LED light [light.kitchen_led] to min(led_pct - 5, 20); delay; turn on kitchen LED light [light.kitchen_led] to led_pct.",
"natural_language": {
"trigger": "When a message is received from the 'living-cube' device via MQTT, and the message contains a valid 'action' field.",
"conditions": "The only condition is that the 'action' field extracted from the MQTT message must not be empty.",
"action": "The automation performs different actions based on the specific action and state. If the Living Light automation is on and a specific 'flip90' gesture from side 0 to side 1 is detected, it sets the brightness based on night mode or TV status, turns off related light automations, and then turns on the living and kitchen lights with a specific sequence of brightness adjustments and delays. If the Living Light automation is off and the opposite 'flip90' gesture (from side 1 to side 0) is detected, it turns on the living and kitchen lights with an 'okay' effect, re-enables the related automations, and fires a check event. If the living light is on, the Living Light automation is off, and a 'rotate_left' gesture on side 1 is detected, it decreases the brightness of the living, kitchen, and kitchen LED lights in a stepped sequence. Similarly, for a 'rotate_right' gesture under the same conditions, it increases the brightness of those lights."
},
"human_like": "Controls the living room and kitchen lights based on gestures from a smart cube, allowing for turning lights on/off, adjusting brightness, and changing modes.",
"complexity": "high"
}
},
{
"id": "sound_bar_music",
"result": {
"structured": "TRIGGER: When sound bar media player [media_player.ht_mt500_501_b34d6a] turns on from off AND remains on for 3 seconds OR When sound bar select input select [input_select.select_sound_bar] changes state from any value except unknown, unavailable, or none OR When an event 'up_down_my' with data 'start' occurs OR When timer.sound_bar [timer.sound_bar] finishes OR When sound bar active sensor [binary_sensor.sound_bar_active] turns off OR When sound bar media player [media_player.ht_mt500_501_b34d6a] turns off AND remains off for 5 seconds. CONDITIONS: (Trigger is to_on AND Kodi screen saver sensor [binary_sensor.kodi_screen_saver] is on) OR (Trigger is to_stop) OR (Trigger is to_off) OR (Trigger is start) OR (Trigger is timer_clear AND timer.sound_bar [timer.sound_bar] is active OR paused). ACTIONS: If trigger is to_on AND Kodi screen saver sensor [binary_sensor.kodi_screen_saver] is on, then if enable sleep boolean [input_boolean.enable_sleep] is on, start timer.sound_bar [timer.sound_bar] for the duration specified by sound bar music timer input number [input_number.sound_bar_music_timer] minutes, then play selected audio from sound bar select input select [input_select.select_sound_bar] on sound bar media player [media_player.ht_mt500_501_b34d6a]. If trigger is to_stop, turn off sound bar media player [media_player.ht_mt500_501_b34d6a]. If trigger is to_off, run script.sound_bar_off. If trigger is start, update options of sound bar select input select [input_select.select_sound_bar] with radio names. If trigger is timer_clear AND timer.sound_bar [timer.sound_bar] is active OR paused, cancel timer.sound_bar [timer.sound_bar].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when the sound bar media player [media_player.ht_mt500_501_b34d6a] turns on and stays on for 3 seconds; when the sound bar select input select [input_select.select_sound_bar] changes to a valid option; when a custom event named 'up_down_my' with the data 'start' is received; when the timer.sound_bar [timer.sound_bar] finishes; when the sound bar active sensor [binary_sensor.sound_bar_active] turns off; or when the sound bar media player [media_player.ht_mt500_501_b34d6a] turns off and remains off for 5 seconds.",
"conditions": "Depending on which trigger occurred, different conditions apply. For the 'to_on' trigger, the Kodi screen saver sensor [binary_sensor.kodi_screen_saver] must be on. For the 'timer_clear' trigger, the timer.sound_bar [timer.sound_bar] must be either active or paused. The other triggers ('to_stop', 'to_off', 'start') have no additional conditions.",
"action": "The action taken depends on the trigger. If triggered by 'to_on' and the screen saver is on, it starts a sleep timer if enabled, then plays the selected audio on the sound bar. If triggered by 'to_stop', it turns off the sound bar. If triggered by 'to_off', it runs a script to turn off the sound bar. If triggered by 'start', it refreshes the list of available radio stations. If triggered by 'timer_clear', it cancels the active timer."
},
"human_like": "This automation manages a sound bar's music playback, starting it with a sleep timer when the screen saver is active, stopping it based on various triggers, and updating the radio station list.",
"complexity": "high"
}
},
{
"id": "sound_bar_input_sleep_on",
"result": {
"structured": "TRIGGER: When enable sleep boolean [input_boolean.enable_sleep] changes state. CONDITIONS: sound bar media player [media_player.ht_mt500_501_b34d6a] is playing. ACTIONS: If enable sleep boolean [input_boolean.enable_sleep] is off, cancel sound bar timer [timer.sound_bar]. If enable sleep boolean [input_boolean.enable_sleep] is on, start sound bar timer [timer.sound_bar] for 5 minutes, then if enable sleep boolean [input_boolean.enable_sleep] is off OR device tracker n0ll [device_tracker.n0ll] is home, pause sound bar timer [timer.sound_bar].",
"natural_language": {
"trigger": "Whenever the enable sleep boolean [input_boolean.enable_sleep] changes its state.",
"conditions": "The sound bar media player [media_player.ht_mt500_501_b34d6a] must be in a playing state.",
"action": "If the enable sleep boolean [input_boolean.enable_sleep] is turned off, the automation cancels the sound bar timer [timer.sound_bar]. If the enable sleep boolean [input_boolean.enable_sleep] is turned on, it starts the sound bar timer [timer.sound_bar] for five minutes. Immediately after starting the timer, if the enable sleep boolean [input_boolean.enable_sleep] is off or if the device tracker n0ll [device_tracker.n0ll] reports being home, the automation pauses the sound bar timer [timer.sound_bar]."
},
"human_like": "Manages a sleep timer for the sound bar, starting or canceling it based on a sleep mode switch and pausing it if someone arrives home.",
"complexity": "medium"
}
},
{
"id": "bed_sleep_on_spot",
"result": {
"structured": "TRIGGER: When bedmusic sensor [binary_sensor.bedmusic] turns on. CONDITIONS: None. ACTIONS: Set spotify select input select [input_select.select_spotify] to 'sleep'. Execute script Spot Bed [script.spot_bed]. Wait up to 60 seconds for bedroom speaker [media_player.bedroom_speaker] to be in 'playing' state, then continue regardless. Set bedroom speaker [media_player.bedroom_speaker] volume to 0.14. Start bed music timer [timer.bed_music] for 45 minutes.",
"natural_language": {
"trigger": "When the bedmusic sensor [binary_sensor.bedmusic] is activated (turns on).",
"conditions": "There are no conditions that must be met.",
"action": "First, the automation changes the Spotify selection to 'sleep' by setting the spotify select input select [input_select.select_spotify]. It then runs the script named Spot Bed [script.spot_bed]. After that, it waits for up to one minute for the bedroom speaker [media_player.bedroom_speaker] to start playing music, but will proceed even if that doesn't happen. Once it proceeds, it sets the volume of the bedroom speaker [media_player.bedroom_speaker] to 14%. Finally, it starts a 45-minute countdown on the bed music timer [timer.bed_music]."
},
"human_like": "Starts a 45-minute sleep music routine in the bedroom when the bedmusic sensor is activated, setting the playlist, volume, and starting a timer.",
"complexity": "medium"
}
},
{
"id": "bed_sleep_on",
"result": {
"structured": "TRIGGER: When bedmusic sensor [binary_sensor.bedmusic] turns on. CONDITIONS: bedroom speaker [media_player.bedroom_speaker] is NOT playing. ACTIONS: Set sleep sound select input select [input_select.select_sleep_sound] to a random option from its list, excluding the current selection.",
"natural_language": {
"trigger": "When the bedmusic sensor [binary_sensor.bedmusic] is turned on.",
"conditions": "The bedroom speaker [media_player.bedroom_speaker] is not currently playing any media.",
"action": "Selects a random sleep sound from the list of available options in the sleep sound select input select [input_select.select_sleep_sound], ensuring the new selection is different from the current one."
},
"human_like": "Starts a random sleep sound on the bedroom speaker when the bedmusic sensor is activated, but only if the speaker isn't already playing something.",
"complexity": "medium"
}
},
{
"id": "bed_sleep_on_select",
"result": {
"structured": "TRIGGER: When sleep sound select input select [input_select.select_sleep_sound] changes state. CONDITIONS: The previous state of sleep sound select input select [input_select.select_sleep_sound] is different from its new state. ACTIONS: Execute script Bed Sleep On [script.bed_sleep_on].",
"natural_language": {
"trigger": "Whenever the selected option in the sleep sound select input select [input_select.select_sleep_sound] changes.",
"conditions": "The change must be a genuine one, meaning the new selected option is different from the previous one.",
"action": "Run the Bed Sleep On [script.bed_sleep_on] script."
},
"human_like": "Starts the bedtime routine script whenever a different sleep sound is selected.",
"complexity": "low"
}
},
{
"id": "bed_music",
"result": {
"structured": "TRIGGER: When bedroom speaker [media_player.bedroom_speaker] turns on (from 'off') AND remains on for 3 seconds OR When radio bed select input select [input_select.select_radio_bed] changes state AND the previous state was NOT 'unknown', 'unavailable', or 'none' OR When an event 'up_down_my' with data 'start' occurs OR When bedmusic sensor [binary_sensor.bedmusic] turns off (to 'off') OR When timer.bed_music finishes OR When bedroom speaker [media_player.bedroom_speaker] turns off (to 'off') AND remains off for 3 seconds. CONDITIONS: (Trigger is 'to_on' AND (radio bed select input select [input_select.select_radio_bed] triggered the automation OR bedroom speaker [media_player.bedroom_speaker] is not 'playing') AND Bed Sleep On [script.bed_sleep_on] is 'off' AND Spot Bed [script.spot_bed] is 'off') OR (Trigger is 'to_off' AND more than 15 minutes have passed since the last trigger of automation.event_android_alarm) OR (Trigger is 'timer_clear' AND bed music timer [timer.bed_music] is NOT 'idle') OR (Trigger is 'start'). ACTIONS: If the first condition set is true, run script.bed_music_on. If the second condition set is true, turn off bedroom speaker [media_player.bedroom_speaker]. If the third condition set is true, turn off bedroom speaker [media_player.bedroom_speaker] AND cancel bed music timer [timer.bed_music]. If the fourth condition set is true, set the options for radio bed select input select [input_select.select_radio_bed] using a template.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when the bedroom speaker [media_player.bedroom_speaker] has been turned on and stays on for 3 seconds; when the radio selection dropdown [input_select.select_radio_bed] changes to a valid value; when a specific 'up_down_my' event with the 'start' data is received; when the bedmusic sensor [binary_sensor.bedmusic] turns off; when the bed music timer [timer.bed_music] finishes; or when the bedroom speaker [media_player.bedroom_speaker] turns off and stays off for 3 seconds.",
"conditions": "Depending on which trigger fired, different conditions apply. For the 'turn on music' triggers, the automation checks that either the radio selection triggered the automation or the speaker is not currently playing, and also ensures that two other scripts (Bed Sleep On [script.bed_sleep_on] and Spot Bed [script.spot_bed]) are not running. For the 'turn off music' triggers, it checks that more than 15 minutes have passed since a related alarm automation last ran. For the 'timer clear' trigger, it checks that the bed music timer is active. The 'start' event trigger has no additional conditions.",
"action": "The automation performs one of four possible actions based on the trigger and conditions: it either starts the bed music script, turns off the bedroom speaker, turns off the speaker and cancels the timer, or refreshes the list of radio stations in the selection dropdown."
},
"human_like": "This automation manages music playback in the bedroom, starting or stopping it based on speaker state, a radio selector, a motion sensor, a timer, and specific events.",
"complexity": "high"
}
},
{
"id": "auto_reboot_all",
"result": {
"structured": "TRIGGER: When ISP connection sensor [binary_sensor.isp_conn] remains off for 6 minutes. CONDITIONS: The time elapsed since the last trigger of automation.mydelay is greater than 60 minutes (using a default of 61 minutes if never triggered). ACTIONS: Execute script.all_notify with data containing a message that states 'cant ping isp' if ping ISP sensor [sensor.ping_isp] value is less than 0, otherwise 'high isp ping <value> ms'. Then execute script.reboot_all.",
"natural_language": {
"trigger": "When the ISP connection sensor [binary_sensor.isp_conn] reports a disconnected state (off) and remains that way for at least six minutes.",
"conditions": "It must have been at least one hour since the last time the automation named 'mydelay' was triggered. If 'mydelay' has never been triggered, it is treated as if it triggered over an hour ago.",
"action": "First, it sends a notification via the script.all_notify. The notification message will either say 'cant ping isp' if the ping ISP sensor [sensor.ping_isp] reports a negative value, or 'high isp ping <value> ms' if the ping value is available. Then, it executes the script.reboot_all to restart all systems."
},
"human_like": "Automatically reboots all systems and sends an alert if the internet connection is down for more than six minutes, but only if it hasn't done so in the last hour.",
"complexity": "medium"
}
},
{
"id": "open_ports",
"result": {
"structured": "TRIGGER: When external port sensor [binary_sensor.ext_port] remains off for 11 minutes. ACTIONS: Execute script.all_notify with parameters: icon_notify = router-network-wireless, tit = router, msg = open ports.",
"natural_language": {
"trigger": "When the external port sensor [binary_sensor.ext_port] reports a state of 'off' and remains in that state for 11 minutes.",
"conditions": "There are no conditions for this automation.",
"action": "Runs a notification script named 'all_notify' with the title 'router', the message 'open ports', and an icon of 'router-network-wireless'."
},
"human_like": "Sends a notification when the external port has been closed for 11 minutes.",
"complexity": "low"
}
},
{
"id": "isp_notify",
"result": {
"structured": "TRIGGER: When the state of any of the following entities changes (excluding from 'unknown' or 'unavailable') AND remains stable for 1 minute: village connection sensor [binary_sensor.village_conn], city connection sensor [binary_sensor.city_conn], main connection sensor [binary_sensor.main_conn], city waterheater connection sensor [binary_sensor.city_waterheater_conn], village pump connection sensor [binary_sensor.village_pump_conn], village waterheater connection sensor [binary_sensor.village_waterheater_conn]. CONDITIONS: None. ACTIONS: (1) Run script.all_notify with a custom icon and a message derived from the triggering entity's name and state (mapping 'on' to 'up' and 'off' to 'down'). (2) If the new state is 'on', then also run Startup MQTT [script.startup_mqtt].",
"natural_language": {
"trigger": "When any of the monitored connection sensors (village connection sensor [binary_sensor.village_conn], city connection sensor [binary_sensor.city_conn], main connection sensor [binary_sensor.main_conn], city waterheater connection sensor [binary_sensor.city_waterheater_conn], village pump connection sensor [binary_sensor.village_pump_conn], or village waterheater connection sensor [binary_sensor.village_waterheater_conn]) changes its state and remains in that new state for one full minute. The trigger ignores any changes that originated from an 'unknown' or 'unavailable' state.",
"conditions": "There are no specific conditions that must be met for the actions to run.",
"action": "First, it sends a notification using a script, specifying an icon and a message. The message uses the name of the sensor that triggered the automation and translates its state ('on' becomes 'up', 'off' becomes 'down'). Second, if the sensor's new state is 'on', it also runs a separate script called Startup MQTT [script.startup_mqtt]."
},
"human_like": "Sends a notification when any monitored internet or device connection changes status, and if the connection comes back online, it also triggers an MQTT startup routine.",
"complexity": "medium"
}
},
{
"id": "change_current_theme",
"result": {
"structured": "TRIGGER: When current theme input select [input_select.current_theme] changes state. CONDITIONS: None. ACTIONS: Set the frontend theme to the new state value of current theme input select [input_select.current_theme].",
"natural_language": {
"trigger": "Whenever the current theme input select [input_select.current_theme] changes its selected value.",
"conditions": "There are no conditions for this automation.",
"action": "Changes the Home Assistant frontend theme to match the newly selected value of the current theme input select [input_select.current_theme]."
},
"human_like": "Updates the user interface theme whenever a different theme is selected from the dropdown.",
"complexity": "low"
}
},
{
"id": "theme_switch",
"result": {
"structured": "TRIGGER: When day sensor [binary_sensor.day] changes state OR When Home Assistant starts. CONDITIONS: None. ACTIONS: Set current theme input select [input_select.current_theme] to 'default' if day sensor [binary_sensor.day] is 'on', or to 'midnight' if day sensor [binary_sensor.day] is 'off'.",
"natural_language": {
"trigger": "The automation runs when the day sensor [binary_sensor.day] changes its state, or when Home Assistant first starts up.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "Updates the current theme input select [input_select.current_theme] based on the state of the day sensor. If the day sensor is 'on', the theme is set to 'default'. If the day sensor is 'off', the theme is set to 'midnight'."
},
"human_like": "Automatically switches the current theme between 'default' and 'midnight' based on whether it is day or night.",
"complexity": "low"
}
},
{
"id": "updates_notify",
"result": {
"structured": "TRIGGER: When docker hub update sensor [binary_sensor.docker_hub_update_available] turns on AND remains on for 60 seconds OR When the numeric value of HACS sensor [sensor.hacs] (which counts HACS updates) is above 0 AND remains above 0 for 60 seconds. CONDITIONS: None. ACTIONS: If the trigger was docker hub update sensor [binary_sensor.docker_hub_update_available] turning on, then run script.all_notify with data: icon_notify=update, tit=Update, and a message template 'hass: {{ states(''sensor.docker_hub'') }}'. If the trigger was HACS sensor [sensor.hacs] value above 0, then run script.all_notify with data: icon_notify=update, tit=Update, and a message template 'hacs: {{ trigger.to_state.state }}'.",
"natural_language": {
"trigger": "The automation triggers in two ways. First, when the docker hub update sensor [binary_sensor.docker_hub_update_available] detects an update is available and stays in that state for one minute. Second, when the HACS sensor [sensor.hacs], which counts the number of available HACS updates, reports a count greater than zero for at least one minute.",
"conditions": "There are no additional conditions that must be met after the trigger.",
"action": "Depending on which trigger fired, a notification is sent. If the Docker Hub update triggered it, a notification is sent with a message containing the state of the docker hub sensor [sensor.docker_hub]. If the HACS update count triggered it, a notification is sent with a message containing the numeric count from the HACS sensor [sensor.hacs]."
},
"human_like": "Sends a notification when either a Docker Hub update or HACS updates become available and remain available for a minute.",
"complexity": "medium"
}
},
{
"id": "once_week_reboot",
"result": {
"structured": "TRIGGER: When the time is 03:00:00. CONDITIONS: The current weekday is Tuesday. ACTIONS: Execute script Roborock Reboot [script.roborock_reboot] AND execute script All Notify [script.all_notify] with data: icon_notify = restart-alert, tit = weekly, msg = reboot.",
"natural_language": {
"trigger": "The automation triggers at 3:00 AM.",
"conditions": "The automation only runs if the current day is Tuesday.",
"action": "It runs two scripts: first, the Roborock Reboot script [script.roborock_reboot], and then the All Notify script [script.all_notify] with a notification title of 'weekly' and a message of 'reboot', using a restart alert icon."
},
"human_like": "Reboots the Roborock and sends a notification every Tuesday at 3 AM.",
"complexity": "low"
}
},
{
"id": "ligths_auto_off",
"result": {
"structured": "TRIGGER: When village connection sensor [binary_sensor.village_conn] remains on for 30 seconds OR When city connection sensor [binary_sensor.city_conn] remains on for 30 seconds. CONDITIONS: None. ACTIONS: If triggered by village connection sensor [binary_sensor.village_conn], then for each light in the list (village 1 light [light.village_1], village garage light [light.village_garage], village out light [light.village_out], village top 1 light [light.village_top_1]), turn it on, wait 500 milliseconds, then after all lights are on, wait 20 seconds, then for each light in the same list, turn it off, waiting 500 milliseconds between each. If triggered by city connection sensor [binary_sensor.city_conn], then turn on city 2 light [light.city_2], wait 20 seconds, then turn off city 2 light [light.city_2].",
"natural_language": {
"trigger": "When the village connection sensor [binary_sensor.village_conn] has been on for 30 seconds, or when the city connection sensor [binary_sensor.city_conn] has been on for 30 seconds.",
"conditions": "There are no additional conditions that must be met.",
"action": "Depending on which sensor triggered the automation, different lights are controlled. If the village sensor triggered it, the automation will turn on four village lights one by one with a short delay between each, wait 20 seconds, and then turn them all off one by one. If the city sensor triggered it, the automation will turn on the city 2 light [light.city_2], wait 20 seconds, and then turn it off."
},
"human_like": "Automatically flashes a set of lights for 20 seconds when a connection sensor in either the village or city area is active for half a minute.",
"complexity": "medium"
}
},
{
"id": "transmission_notify",
"result": {
"structured": "TRIGGER: When a transmission event occurs. CONDITIONS: None. ACTIONS: Execute script.all_notify with the icon set to 'pipe', the title set to the file name from the event data, and the message set to 'finished'.",
"natural_language": {
"trigger": "When a transmission event is received.",
"conditions": "There are no conditions.",
"action": "Runs the script 'all_notify', setting the notification icon to a pipe, the title to the name of the file from the event, and the message to 'finished'."
},
"human_like": "Sends a notification when a transmission download finishes, showing the file name.",
"complexity": "low"
}
},
{
"id": "transmission_idle",
"result": {
"structured": "TRIGGER: When download active sensor [binary_sensor.download_active] changes from on to off. CONDITIONS: None. ACTIONS: Execute script all_notify with data: icon_notify = pipe-disconnected, tit = transmission, msg = download is idle.",
"natural_language": {
"trigger": "When the download active sensor [binary_sensor.download_active] stops being active, changing its state from 'on' to 'off'.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Sends a notification using the script 'all_notify' with the title 'transmission', the message 'download is idle', and an icon of a disconnected pipe."
},
"human_like": "Sends a notification when downloads have stopped being active.",
"complexity": "low"
}
},
{
"id": "timer_startup",
"result": {
"structured": "TRIGGER: When timer.start_up_delay [timer.start_up_delay] finishes. CONDITIONS: power down restart input select [input_select.power_down_restart] is pending. ACTIONS: Restart Home Assistant.",
"natural_language": {
"trigger": "When the start up delay timer [timer.start_up_delay] finishes.",
"conditions": "If the power down restart input select [input_select.power_down_restart] is set to 'pending'.",
"action": "Restarts the Home Assistant system."
},
"human_like": "Restarts Home Assistant after a startup delay timer finishes, but only if a restart is pending.",
"complexity": "low"
}
},
{
"id": "restart",
"result": {
"structured": "TRIGGER: When a Home Assistant service call event occurs for the 'homeassistant.restart' service. CONDITIONS: (power down restart input select [input_select.power_down_restart] is on). ACTIONS: Fire the custom event 'up_down_my' with data 'stop', set power down restart input select [input_select.power_down_restart] to 'off', and log an entry in the logbook with name 'restart' and message 'power down restart off'.",
"natural_language": {
"trigger": "When a service call is made to restart Home Assistant.",
"conditions": "If the power down restart input select [input_select.power_down_restart] is currently set to 'on'.",
"action": "It will fire a custom event named 'up_down_my' with the data 'stop', change the power down restart input select [input_select.power_down_restart] to 'off', and create a logbook entry named 'restart' with the message 'power down restart off'."
},
"human_like": "This automation logs and resets a restart flag when Home Assistant is about to restart.",
"complexity": "low"
}
},
{
"id": "startup",
"result": {
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Execute the script determined by the current state of power down restart input select [input_select.power_down_restart]: if the state is 'off', run script.startup; if the state is 'on', run script.restart; if the state is 'pending', run script.powerup.",
"natural_language": {
"trigger": "When Home Assistant starts up.",
"conditions": "There are no conditions for this automation.",
"action": "Based on the current setting of the power down restart input select [input_select.power_down_restart], it will run a specific startup script. If the setting is 'off', it runs the startup script. If it's 'on', it runs the restart script. If it's 'pending', it runs the powerup script."
},
"human_like": "Runs a specific startup, restart, or powerup script when Home Assistant starts, depending on a user setting.",
"complexity": "medium"
}
},
{
"id": "wash_light",
"result": {
"structured": "TRIGGER: When hall motion sensor [binary_sensor.hall_motion] OR wash door sensor [binary_sensor.wash_door] turns on OR When hall occupancy sensor [binary_sensor.hall_occupancy] remains off for 45 seconds OR When wash door sensor [binary_sensor.wash_door] remains off for 3 seconds OR When a lights_check event with light: turn_off data occurs. CONDITIONS: For the turn-on action: (Trigger is light_on) AND (wash door sensor [binary_sensor.wash_door] is on) AND (wash light [light.wash] is off). For the turn-off action: (Trigger is light_off) AND (wash light [light.wash] is on) AND (hall occupancy sensor [binary_sensor.hall_occupancy] is off OR wash door sensor [binary_sensor.wash_door] is off). ACTIONS: If conditions for turn-on are met, turn on wash light [light.wash]. If conditions for turn-off are met, turn off wash light [light.wash].",
"natural_language": {
"trigger": "The automation can start when either the hall motion sensor [binary_sensor.hall_motion] or the wash door sensor [binary_sensor.wash_door] detects activity and turns on. It can also start if the hall occupancy sensor [binary_sensor.hall_occupancy] reports no occupancy for 45 seconds, if the wash door sensor [binary_sensor.wash_door] is closed for 3 seconds, or if a specific 'lights_check' event is received with the instruction to turn off the light.",
"conditions": "To turn the light on, the trigger must be from motion or door opening, the wash door sensor [binary_sensor.wash_door] must be open, and the wash light [light.wash] must currently be off. To turn the light off, the trigger must be from an off-related event, the wash light [light.wash] must be on, and either the hall occupancy sensor [binary_sensor.hall_occupancy] reports no occupancy or the wash door sensor [binary_sensor.wash_door] is closed.",
"action": "Depending on which trigger fires and the state of the sensors, the automation will either turn on the wash light [light.wash] or turn it off."
},
"human_like": "This automation controls the washroom light, turning it on when motion is detected and the door is open, and turning it off when the room is unoccupied or the door is closed for a short time.",
"complexity": "medium"
}
},
{
"id": "wash_fan",
"result": {
"structured": "TRIGGER: When wash fan sensor [binary_sensor.wash_fan] turns on OR When wash fan sensor [binary_sensor.wash_fan] turns off OR When bath humidity change sensor [sensor.bath_hum_change] rises above 10.0 OR When showering sensor [binary_sensor.showering] turns off OR When fan wash time boolean [input_boolean.fan_wash_time] turns on OR When fan wash time boolean [input_boolean.fan_wash_time] remains on for a duration equal to the value of fan wash time input number [input_number.fan_wash_time] (in minutes) OR When an event of type 'up_down_my' with data 'start' occurs. CONDITIONS: For turning the fan on: (Trigger is shower_on OR dryer_on OR manual_on) AND wash fan switch [switch.wash_fan] is off. For turning the fan off: ((Trigger is shower_off OR dryer_off OR manual_off) AND (showering sensor [binary_sensor.showering] is off AND wash fan sensor [binary_sensor.wash_fan] is off)) AND wash fan switch [switch.wash_fan] is on. For turning off the timer boolean: (Trigger is shower OR manual_off) AND fan wash time boolean [input_boolean.fan_wash_time] is on. ACTIONS: If the 'turn on' conditions are met, turn on wash fan switch [switch.wash_fan]. If the 'turn off' conditions are met, turn off wash fan switch [switch.wash_fan]. If the 'timer off' conditions are met, turn off fan wash time boolean [input_boolean.fan_wash_time].",
"natural_language": {
"trigger": "The automation can be triggered by several events: the wash fan sensor [binary_sensor.wash_fan] turning on or off, the bath humidity change sensor [sensor.bath_hum_change] rising above 10.0, the showering sensor [binary_sensor.showering] turning off, the fan wash time boolean [input_boolean.fan_wash_time] being turned on, that same boolean remaining on for a specific number of minutes (taken from fan wash time input number [input_number.fan_wash_time]), or a specific 'up_down_my' event with 'start' data.",
"conditions": "To turn the fan on, the trigger must be related to the shower, dryer, or manual activation, and the wash fan switch [switch.wash_fan] must currently be off. To turn the fan off, the trigger must be related to the shower ending, the dryer turning off, or the manual timer ending, while also confirming that the showering sensor [binary_sensor.showering] is off and the wash fan sensor [binary_sensor.wash_fan] is off, and the wash fan switch [switch.wash_fan] must be on. A separate set of conditions, triggered by the shower ending or the manual timer ending, checks if the fan wash time boolean [input_boolean.fan_wash_time] is on.",
"action": "Based on the conditions, the automation will either turn on the wash fan switch [switch.wash_fan], turn it off, or turn off the fan wash time boolean [input_boolean.fan_wash_time]."
},
"human_like": "This automation controls the washroom fan, turning it on during showers, when the dryer is running, or manually, and turning it off when those activities end, while also managing a timer.",
"complexity": "high"
}
},
{
"id": "water_boiler",
"result": {
"structured": "TRIGGER: When time is 05:05:00 OR 06:05:00 OR 04:45:00 OR 05:00:00 OR 06:35:00 OR 07:35:00. CONDITIONS: The current month must be in a predefined list based on the trigger variable 's' (win: [1,2,3,11,12], sum: [4,5,6,7,8,9,10]). ACTIONS: Based on the triggered time ID: (IF trigger ID is time_heat AND device tracker root [device_tracker.root] is home AND hot water climate [climate.hot_water] current_temperature is below 39.0 AND hot water climate [climate.hot_water] state is off THEN set hot water climate [climate.hot_water] to heat mode with temperature 45) OR (IF trigger ID is time_clean AND it is Wednesday AND hot water climate [climate.hot_water] state is off THEN set hot water climate [climate.hot_water] to heat mode) OR (IF trigger ID is time_off AND hot water climate [climate.hot_water] state is heat THEN set hot water climate [climate.hot_water] to off mode).",
"natural_language": {
"trigger": "The automation triggers at specific times of day: 05:05, 06:05, 04:45, 05:00, 06:35, and 07:35.",
"conditions": "A condition checks if the current month matches a seasonal schedule. The schedule depends on which time triggered the automation. For triggers with the variable 's' set to 'win', the valid months are January, February, March, November, and December. For triggers with 's' set to 'sum', the valid months are April through October.",
"action": "Depending on which time triggered the automation, one of three actions may occur. If the trigger is for heating (05:05 or 06:05), it will turn on the hot water heater to 45°C, but only if a specific person is home, the water temperature is below 39°C, and the heater is currently off. If the trigger is for a cleaning cycle (04:45 or 05:00) and it is a Wednesday, it will turn on the hot water heater. If the trigger is to turn off the heater (06:35 or 07:35), it will switch the hot water heater off if it is currently on."
},
"human_like": "Manages the hot water boiler's heating schedule based on the time of day, day of the week, season, occupancy, and current water temperature.",
"complexity": "high"
}
},
{
"id": "water_city_1",
"result": {
"structured": "TRIGGER: When water motion sensor [binary_sensor.water_motion] OR water wash sensor [binary_sensor.water_wash] turns on OR When water occupancy sensor [binary_sensor.water_occupancy] turns off for a duration determined by the value of water motion counter [counter.water_motion] (if > 50 then 300 seconds, if > 30 then 180 seconds, if > 10 then 120 seconds, else 60 seconds) OR When water wash sensor [binary_sensor.water_wash] turns off OR When an event of type 'up_down_my' with data 'start' occurs. CONDITIONS: None (conditions are embedded within choose actions). ACTIONS: First, based on trigger: If the trigger is water_on, increment water motion counter [counter.water_motion]. If the trigger is water_off, reset water motion counter [counter.water_motion]. Second, based on trigger and states: If the trigger is water_on AND water valve switch [switch.water_valve] is off, turn on water valve switch [switch.water_valve]. If the trigger is water_off AND water valve switch [switch.water_valve] is on AND water occupancy sensor [binary_sensor.water_occupancy] is off AND water wash sensor [binary_sensor.water_wash] is off, turn off water valve switch [switch.water_valve].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when either the water motion sensor [binary_sensor.water_motion] or the water wash sensor [binary_sensor.water_wash] detects activity and turns on; when the water occupancy sensor [binary_sensor.water_occupancy] turns off and stays off for a period of time that depends on the current count in the water motion counter [counter.water_motion]; when the water wash sensor [binary_sensor.water_wash] turns off; or when a specific custom event named 'up_down_my' with the data 'start' is received.",
"conditions": "There are no global conditions. Instead, conditions are checked within two separate action sequences. The first sequence updates a counter based on which trigger fired. The second sequence checks the state of the water valve switch [switch.water_valve] and other sensors to decide whether to turn the valve on or off.",
"action": "The automation performs two main tasks. First, it manages a counter: it increases the water motion counter [counter.water_motion] when motion or wash activity starts, and resets the counter when any 'off' condition is triggered. Second, it controls a water valve: it turns the water valve switch [switch.water_valve] on if it's off and activity is detected. It turns the valve off only if it's currently on, the occupancy sensor shows no occupancy, the wash sensor is off, and an 'off' condition has been triggered."
},
"human_like": "This automation controls a water valve based on motion, washing activity, and occupancy, using a counter to adjust timeouts and resetting it when water usage stops.",
"complexity": "high"
}
},
{
"id": "wled_lights",
"result": {
"structured": "TRIGGER: When WLED living sensor [binary_sensor.wled_living] turns on OR When WLED living sensor [binary_sensor.wled_living] turns off OR When WLED living sensor [binary_sensor.wled_living] becomes unavailable for 45 seconds OR When living light [light.living] OR hall light [light.hall] turns off OR When WLED ambient sensor [binary_sensor.wled_ambient] turns on OR When WLED ambient sensor [binary_sensor.wled_ambient] turns off OR When an event 'up_down_my' with data 'stop' occurs OR When day sensor [binary_sensor.day] turns off OR When an event 'up_down_my' with data 'start' occurs OR When device tracker n0ll [device_tracker.n0ll] is not_home for 95 seconds OR When an event 'kodi_living_startup' occurs. CONDITIONS: None (global conditions are absent; conditions are inside choose actions). ACTIONS: Choose action based on trigger and state conditions. 1. IF trigger id is to_ambient: Publish 'SN=0' to wled/wled-living/api AND publish 'T=0' to wled/wled-window/api AND publish brightness from WLED video brightness input number [input_number.wled_video_brightness] to wled/wled-living/api. 2. IF trigger id is to_on: Publish 'A=200&FP=51&FX=112&NL=0' to wled/wled-living/api AND wled/wled-window/api. 3. IF trigger id is to_off AND WLED ambient sensor [binary_sensor.wled_ambient] is off: Publish 'NL=1&NF=2&A=200&PL=1' to wled/wled-living/api AND wled/wled-window/api. 4. IF trigger id is from_off AND WLED ambient sensor [binary_sensor.wled_ambient] is off: Publish 'A=200&FP=51&FX=112&NL=0' if WLED living sensor [binary_sensor.wled_living] is on, ELSE publish 'A=200&FP=15&FX=38&NL=5&NF=2' to wled/wled-living/api AND wled/wled-window/api. 5. IF trigger id is after_off AND WLED living sensor [binary_sensor.wled_living] is off AND WLED ambient sensor [binary_sensor.wled_ambient] is off AND day sensor [binary_sensor.day] is off: Publish 'A=200&PL=3&NL=3&NF=2' to wled/wled-living/api AND wled/wled-window/api. 6. IF trigger id is to_start AND day sensor [binary_sensor.day] is off AND WLED living sensor [binary_sensor.wled_living] is off AND device tracker root [device_tracker.root] is home: Publish 'A=200&FP=15&FX=43&NL=1&NF=2' to wled/wled-living/api AND wled/wled-window/api. 7. IF trigger id is from_ambient: Publish 'A=200&FP=15&FX=112&NL=1&NF=2' to wled/wled-living/api AND wled/wled-window/api.",
"natural_language": {
"trigger": "The automation can be triggered by many events: the WLED living sensor turning on or off, it becoming unavailable for 45 seconds, the living or hall lights turning off, the WLED ambient sensor turning on or off, a custom 'up_down_my' event with 'stop' or 'start' data, the day sensor turning off, the device tracker n0ll being away for 95 seconds, or a 'kodi_living_startup' event.",
"conditions": "There are no global conditions. Specific conditions are checked within each action branch to determine which set of commands to run.",
"action": "Depending on which trigger fired and the current state of other sensors, the automation sends different MQTT commands to control WLED lights. For example, if the WLED ambient sensor turns on, it sends commands to set a specific mode. If the WLED living sensor turns on, it sends commands for a bright, colorful effect. If the lights turn off at night, it sends commands for a nightlight effect. The automation uses a 'choose' block to select the correct action based on a combination of the trigger and the states of the WLED ambient sensor, WLED living sensor, day sensor, and device tracker root."
},
"human_like": "This automation manages WLED lighting effects based on various triggers like sensor states, light changes, and custom events, sending different MQTT commands to create ambient, nightlight, or colorful scenes.",
"complexity": "high"
}
},
{
"id": "hyperion_clear_effects",
"result": {
"structured": "TRIGGER: When hyperion effect timer [timer.hyperion_effect_timer] finishes. CONDITIONS: None. ACTIONS: Set hyperion select effect input select [input_select.hyperion_select_effect] to option 'None'.",
"natural_language": {
"trigger": "When the hyperion effect timer [timer.hyperion_effect_timer] completes its countdown.",
"conditions": "There are no conditions that must be met.",
"action": "Changes the selected option for the hyperion select effect input select [input_select.hyperion_select_effect] to 'None'."
},
"human_like": "Clears the selected Hyperion lighting effect when a timer runs out.",
"complexity": "low"
}
},
{
"id": "send_effect_hyperion",
"result": {
"structured": "TRIGGER: When hyperion select effect input select [input_select.hyperion_select_effect] changes state. CONDITIONS: (The new state of hyperion select effect input select [input_select.hyperion_select_effect] is not 'None') AND (More than 30 seconds have passed since automation.tv_ctrl [automation.tv_ctrl] was last triggered OR day sensor [binary_sensor.day] is off). ACTIONS: Send a shell command to disable the LED device component. Wait 250 milliseconds. Send a shell command to start the selected effect on Hyperion with a priority of 105 and a duration in milliseconds equal to effect time input number [input_number.slider_effect_time] multiplied by 60000. Wait 250 milliseconds. Send a shell command to re-enable the LED device component. Start hyperion effect timer [timer.hyperion_effect_timer] with a duration in seconds equal to effect time input number [input_number.slider_effect_time] multiplied by 60.",
"natural_language": {
"trigger": "Whenever the selected effect for Hyperion, hyperion select effect input select [input_select.hyperion_select_effect], is changed.",
"conditions": "The new effect selected must not be 'None'. Additionally, either more than 30 seconds must have passed since the last time the automation named 'tv_ctrl' was triggered, or it must currently be nighttime as indicated by the day sensor [binary_sensor.day] being off.",
"action": "The automation first sends a command to temporarily turn off the Hyperion LED device. After a brief 250-millisecond delay, it sends a command to start the newly selected visual effect on Hyperion. The effect runs at priority 105 and its duration is calculated from the effect time input number [input_number.slider_effect_time]. After another 250-millisecond delay, it re-enables the LED device. Finally, it starts a timer, hyperion effect timer [timer.hyperion_effect_timer], with a duration matching the effect's runtime."
},
"human_like": "Applies a selected visual effect to Hyperion lighting, with safety delays and a cooldown period to prevent rapid triggering.",
"complexity": "medium"
}
},
{
"id": "video_grabber",
"result": {
"structured": "TRIGGER: When grabber living sensor [binary_sensor.grabber_living] changes state OR when a kodi_living_startup event occurs. CONDITIONS: None. ACTIONS: Send a shell command to hyperion_cmd to set the GRABBER component state to match the current state of grabber living sensor [binary_sensor.grabber_living], wait 250 milliseconds, send a shell command to hyperion_cmd to set the LEDDEVICE component state to false, wait 250 milliseconds, then send a shell command to hyperion_cmd to set the LEDDEVICE component state to true.",
"natural_language": {
"trigger": "The automation triggers either when the grabber living sensor [binary_sensor.grabber_living] changes its state, or when a specific system event named 'kodi_living_startup' occurs.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "It sends a series of commands to a Hyperion system. First, it updates the state of the Hyperion 'GRABBER' component to match the current state of the grabber living sensor. After a brief 250-millisecond delay, it turns off the 'LEDDEVICE' component. Following another 250-millisecond delay, it turns the 'LEDDEVICE' component back on."
},
"human_like": "Controls the Hyperion lighting system based on the living room grabber sensor or a Kodi startup event, toggling the LED device to reset it.",
"complexity": "medium"
}
},
{
"id": "send_effect_hyperion_none",
"result": {
"structured": "TRIGGER: When hyperion select effect input select [input_select.hyperion_select_effect] changes to state 'None' AND remains in that state for 3 seconds. CONDITIONS: None. ACTIONS: Execute shell command hyperion_cmd with payload {\"command\": \"clear\", \"priority\": 105} AND Cancel hyperion effect timer [timer.hyperion_effect_timer].",
"natural_language": {
"trigger": "When the hyperion select effect input select [input_select.hyperion_select_effect] is set to 'None' and stays that way for 3 seconds.",
"conditions": "There are no additional conditions.",
"action": "Sends a command to clear the Hyperion effect with priority 105 and cancels the hyperion effect timer [timer.hyperion_effect_timer]."
},
"human_like": "Clears the current Hyperion effect and stops its associated timer when the effect selector is set to 'None' for a few seconds.",
"complexity": "low"
}
},
{
"id": "led_scheme_send",
"result": {
"structured": "TRIGGER: When WLED colors palette input select [input_select.wled_colors_palette] changes state OR When WLED effects input select [input_select.wled_effects] changes state. CONDITIONS: WLED living light [light.wled_living] is on. ACTIONS: Publish the current state of WLED effects input select [input_select.wled_effects] to MQTT topic wled/wled-living/api AND Publish the current state of WLED colors palette input select [input_select.wled_colors_palette] to MQTT topic wled/wled-living/api.",
"natural_language": {
"trigger": "Whenever the selected value for the WLED colors palette [input_select.wled_colors_palette] changes, or whenever the selected value for the WLED effects [input_select.wled_effects] changes.",
"conditions": "The WLED living light [light.wled_living] must be turned on.",
"action": "Sends two MQTT messages to the topic wled/wled-living/api: one containing the currently selected WLED effect and another containing the currently selected WLED color palette."
},
"human_like": "Updates the WLED light strip's effect and color palette via MQTT whenever the user changes those settings, but only if the light is on.",
"complexity": "low"
}
},
{
"id": "zigbee2mqtt_start",
"result": {
"structured": "TRIGGER: When a message is published to the MQTT topic 'zigbee2mqtt/bridge/state'. CONDITIONS: None. ACTIONS: For each device in a predefined list (bed-light-1 through bed-light-8, office-light-1 through office-light-8, kitchen-light-1 through kitchen-light-7, living-light-1 through living-light-7, kitchen-led, hall-light, bath-light, bath-mirror, wash-switch, office-wardrobe, bed-wardrobe, bath-water, living-switch-tv, bed-switch-1), publish a JSON payload to the MQTT topic 'zigbee2mqtt/[device]/get' to request the device's state, brightness, and color_temp (or specific state fields for non-light devices). Then, publish a payload '{\"online\": \"on\"}' to the MQTT topic 'zigbee2mqtt/bath-tvr/set'. Wait for 1 second. Finally, publish a payload '{\"online\": \"off\"}' to the MQTT topic 'zigbee2mqtt/bath-tvr/set'.",
"natural_language": {
"trigger": "The automation is triggered whenever a message is published to the MQTT topic 'zigbee2mqtt/bridge/state'.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "First, the automation queries the current state, brightness, and color temperature for a long list of lights and devices by publishing a request to each one's specific MQTT topic. This includes lights in the bedroom, office, kitchen, and living room, as well as other devices like switches and sensors. After querying all devices, it sends a command to turn the 'online' status of the 'bath-tvr' device on, waits for one second, and then sends a command to turn its 'online' status off."
},
"human_like": "When the Zigbee2MQTT bridge starts or reports its state, this automation queries the status of all connected lights and devices, and toggles the online status of a bathroom device.",
"complexity": "medium"
}
}
]