AutomationDataset/skdw/automation-descriptions.json

236 lines
24 KiB
JSON

[
{
"id": "kitchen_hood",
"result": {
"structured": "TRIGGER: When cooktop power sensor [binary_sensor.cooktop_power] turns on OR When cooktop power sensor [binary_sensor.cooktop_power] turns off OR When kitchen countertop light [light.kitchen_countertop] turns off. CONDITIONS: ((Trigger is cooktop turned ON AND kitchen hood outlet [switch.outlet_kitchen_hood] is off) OR (Trigger is cooktop turned OFF AND kitchen hood outlet [switch.outlet_kitchen_hood] is on AND kitchen countertop light [light.kitchen_countertop] is off) OR (Trigger is countertop turned OFF AND kitchen hood outlet [switch.outlet_kitchen_hood] is on)). ACTIONS: If the triggering state change was to 'on', turn on kitchen hood outlet [switch.outlet_kitchen_hood]; otherwise, turn it off.",
"natural_language": {
"trigger": "The automation runs when the cooktop power sensor [binary_sensor.cooktop_power] is turned on or off, or when the kitchen countertop light [light.kitchen_countertop] is turned off.",
"conditions": "Depending on which trigger occurred, different conditions must be met. If the cooktop turned on, the kitchen hood outlet [switch.outlet_kitchen_hood] must be off. If the cooktop turned off, the kitchen hood outlet must be on and the kitchen countertop light must be off. If the countertop light turned off, the kitchen hood outlet must be on.",
"action": "The automation will turn the kitchen hood outlet [switch.outlet_kitchen_hood] on if the triggering event was a state change to 'on' (i.e., the cooktop turned on). Otherwise, it will turn the hood outlet off."
},
"human_like": "Automatically controls the kitchen hood based on the cooktop's power state and the countertop lights, turning the hood on when cooking starts and off when cooking ends and the lights are off.",
"complexity": "medium"
}
},
{
"id": "home_presence_count_enabled",
"result": {
"structured": "TRIGGER: When any entity included in the file '../entities/home_presence.yaml' changes state. CONDITIONS: The state change is between 'off' and 'on' (i.e., from 'off' to 'on' or from 'on' to 'off'). ACTIONS: If the new state is 'off', decrement switches enabled counter [counter.switches_enabled]. If the new state is 'on', increment switches enabled counter [counter.switches_enabled].",
"natural_language": {
"trigger": "When any switch or sensor defined in the 'home_presence.yaml' configuration file changes its state.",
"conditions": "The change must be a simple toggle between the 'off' and 'on' states, meaning the entity was either turned off or turned on.",
"action": "Updates a counter to track how many devices are enabled. If the device turned off, the counter is decreased. If the device turned on, the counter is increased."
},
"human_like": "Keeps a running count of how many smart home devices are currently switched on by listening for their state changes.",
"complexity": "medium"
}
},
{
"id": "hvac_turn_off",
"result": {
"structured": "TRIGGER: When air conditioner leak sensor [binary_sensor.air_cond_leakage] changes to on (leak detected). CONDITIONS: NOT (air conditioner [climate.air_conditioner] is off). ACTIONS: Set air conditioner [climate.air_conditioner] HVAC mode to off AND send a notification to iPhone Kamil notification [notify.mobile_app_iphone_kamil] with message 'Air conditioner turned off - the water container is full'.",
"natural_language": {
"trigger": "When the air conditioner leak sensor [binary_sensor.air_cond_leakage] detects a leak, meaning it changes its state to on.",
"conditions": "Only if the air conditioner [climate.air_conditioner] is not already turned off.",
"action": "Turns off the air conditioner [climate.air_conditioner] and sends a notification to the user's iPhone [notify.mobile_app_iphone_kamil] stating that the air conditioner was turned off because the water container is full."
},
"human_like": "Automatically turns off the air conditioner and sends a phone notification when a leak is detected, preventing water overflow.",
"complexity": "low"
}
},
{
"id": "lights_dim_on_toggle",
"result": {
"structured": "TRIGGER: When lights dim input boolean [input_boolean.lights_dim] changes state. CONDITIONS: None. ACTIONS: 1. Store the current state (on/off) of wardrobe ceiling light [light.wardrobe_ceiling], wardrobe clothes light [light.wardrobe_clothes], bathroom ceiling light [light.bathroom_ceiling], and bathroom mirror light [light.bathroom_mirror]. 2. Calculate color temperature (3600K if lights dim input boolean [input_boolean.lights_dim] is on, otherwise 2000K) and brightness (30% if lights dim input boolean [input_boolean.lights_dim] is on, otherwise 1%). 3. Turn on all four lights with the calculated color temperature and brightness. 4. Wait 2 seconds. 5. Turn off only the lights that were previously off (based on stored states).",
"natural_language": {
"trigger": "Whenever the state of the lights dim input boolean [input_boolean.lights_dim] changes, whether it turns on or off.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "First, the automation records whether each of the four lights (wardrobe ceiling light [light.wardrobe_ceiling], wardrobe clothes light [light.wardrobe_clothes], bathroom ceiling light [light.bathroom_ceiling], and bathroom mirror light [light.bathroom_mirror]) was on or off. It then determines a color temperature and brightness level based on the state of the lights dim input boolean: a warmer, dimmer setting (2000K, 1% brightness) when it's off, and a cooler, brighter setting (3600K, 30% brightness) when it's on. All four lights are turned on to these new settings. After a two-second delay, any of the four lights that were originally off are turned back off."
},
"human_like": "Toggles a group of lights between a bright, cool daytime mode and a very dim, warm nighttime mode, remembering which lights were originally off.",
"complexity": "medium"
}
},
{
"id": "lights_dim_on_morning",
"result": {
"structured": "TRIGGER: At 06:30:00. CONDITIONS: None. ACTIONS: Turn on lights dim input boolean [input_boolean.lights_dim].",
"natural_language": {
"trigger": "Every day at 6:30 AM.",
"conditions": "There are no conditions for this automation.",
"action": "Turns on the lights dim input boolean [input_boolean.lights_dim]."
},
"human_like": "Turns on a dim lighting mode automatically every morning at 6:30 AM.",
"complexity": "low"
}
},
{
"id": "lights_dim_on_evening",
"result": {
"structured": "TRIGGER: At 22:00:00. CONDITIONS: None. ACTIONS: Turn off lights dim input boolean [input_boolean.lights_dim].",
"natural_language": {
"trigger": "At exactly 10:00 PM.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off the lights dim input boolean [input_boolean.lights_dim]."
},
"human_like": "Turns off the 'lights dim' setting every evening at 10 PM.",
"complexity": "low"
}
},
{
"id": "lights_switch2light",
"result": {
"structured": "TRIGGER: When any entity listed in the included switches file changes state. CONDITIONS: The state of the corresponding light entity (determined by matching the index of the triggering switch in the switches list to the lights list) is equal to the previous state of the triggering switch (trigger.from_state.state) AND the new state of the triggering switch (trigger.to_state.state) is either 'on' or 'off'. ACTIONS: If the new switch state is 'on', call the light.turn_on service on the corresponding light entity. If the new switch state is 'off', call the light.turn_off service on the corresponding light entity.",
"natural_language": {
"trigger": "When any switch defined in the included switches file changes its state.",
"conditions": "The condition checks two things. First, it verifies that the current state of the light that is paired with the triggering switch (based on their matching positions in the included lists) is the same as the switch's previous state. Second, it ensures the switch's new state is a valid command, either 'on' or 'off'.",
"action": "The automation turns the paired light on or off to match the new state of the switch. If the switch was turned on, the light is turned on. If the switch was turned off, the light is turned off."
},
"human_like": "This automation synchronizes lights with their paired switches, turning a light on or off when its corresponding switch is toggled.",
"complexity": "medium"
}
},
{
"id": "lights_light2switch",
"result": {
"structured": "TRIGGER: When any light entity included in the file ../entities/lights.yaml changes state. CONDITIONS: The state of the corresponding switch entity (from ../entities/switches.yaml at the same index as the triggering light) matches the previous state of the triggering light AND the new state of the triggering light is either 'on' or 'off'. ACTIONS: If the new state is 'on', call service switch.turn_on on the corresponding switch entity. If the new state is 'off', call service switch.turn_off on the corresponding switch entity.",
"natural_language": {
"trigger": "When any light entity defined in the lights.yaml file changes its state.",
"conditions": "The switch that corresponds to the light (found at the same position in the switches.yaml file) must have been in the same state that the light just left. Also, the light's new state must be either 'on' or 'off'.",
"action": "Turns the corresponding switch on or off to match the new state of the light."
},
"human_like": "Keeps a set of switches synchronized with their corresponding lights, turning the switch on or off when the light's state changes.",
"complexity": "medium"
}
},
{
"id": "light-tripleclick",
"result": {
"structured": "TRIGGER: When any entity listed in the external file '../entities/light_tripleclick_switches.yaml' changes state. CONDITIONS: None. ACTIONS: First, wait for the triggering entity's state to become different from its new state (trigger.to_state.state) for up to 1 second, aborting if this wait times out. Then, wait for the triggering entity's state to become equal to its new state (trigger.to_state.state) for up to 1 second, aborting if this wait times out. Then, delay for 500 milliseconds. Finally, execute the action defined in the external file '../entities/light_tripleclick_actions.yaml' at the index corresponding to the triggering switch, targeting the entity specified in that same action definition.",
"natural_language": {
"trigger": "When any of the light switches defined in the configuration file changes its state.",
"conditions": "There are no conditions for this automation.",
"action": "The automation first waits for a brief state change away from the new state, then waits for the state to settle back to the new state, creating a detection window for a rapid triple-click pattern. After a short delay, it looks up and executes a specific action (like toggling a light) that is pre-configured for the specific switch that was clicked."
},
"human_like": "Executes a custom action (like toggling a light) when a specific light switch is triple-clicked, using timing to detect the click pattern.",
"complexity": "high"
}
},
{
"id": "media_radio_fm_update",
"result": {
"structured": "TRIGGER: When radio FM input select [input_select.radio_fm] changes state. CONDITIONS: None. ACTIONS: Send an ISCP 'preset' command with value '{{ preset_id }}' to pioneer Onkyo media player [media_player.pioneer_onkyo], where preset_id is calculated as the index of the new selected option in the input_select's options list plus one.",
"natural_language": {
"trigger": "Whenever the selected station in the radio FM input select [input_select.radio_fm] changes.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "Sends a command to the pioneer Onkyo media player [media_player.pioneer_onkyo] to tune to the corresponding radio preset. The preset number is automatically calculated based on the position of the newly selected station in the list of available options."
},
"human_like": "Updates the connected stereo to match the selected FM radio station from a dropdown list.",
"complexity": "low"
}
},
{
"id": "media-radio-net",
"result": {
"structured": "TRIGGER: When media radio net input select [input_select.media_radio_net] changes state. CONDITIONS: None. ACTIONS: First, check if pioneer DLNA media player [media_player.pioneer_dlna] has a value (is available). If it does NOT have a value, stop the automation. If it is available, retrieve the selected radio station's URL from a predefined list of stations based on the new state of the input select. Then, play the retrieved audio URL on pioneer DLNA media player [media_player.pioneer_dlna] with media content type audio/aac.",
"natural_language": {
"trigger": "Whenever the selection on the media radio net input select [input_select.media_radio_net] changes.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "The automation first checks if the pioneer DLNA media player [media_player.pioneer_dlna] is available. If the media player is not available, the automation stops. If it is available, the automation looks up the URL for the radio station that matches the newly selected option from a predefined list. Finally, it instructs the media player to play that URL as an audio stream."
},
"human_like": "Plays a selected NET radio station on the Pioneer DLNA media player when a user changes the station selection.",
"complexity": "medium"
}
},
{
"id": "media-radio-net-select-return",
"result": {
"structured": "TRIGGER: When the media_content_id attribute of pioneer DLNA media player [media_player.pioneer_dlna] changes. CONDITIONS: The new state of the media_content_id attribute is NOT in the list of predefined Radio NET station URLs. ACTIONS: Set the option of media radio net input select [input_select.media_radio_net] to 'Other'.",
"natural_language": {
"trigger": "Whenever the currently playing media content ID on the pioneer DLNA media player [media_player.pioneer_dlna] changes.",
"conditions": "The new media content ID is not one of the URLs belonging to the predefined list of Radio NET stations.",
"action": "Reset the media radio net input select [input_select.media_net_radio] to the 'Other' option."
},
"human_like": "Resets the radio station selector to 'Other' when the media player starts playing a stream that is not a known Radio NET station.",
"complexity": "medium"
}
},
{
"id": "media_sound_mode",
"result": {
"structured": "TRIGGER: When sound mode input select [input_select.sound_mode] changes state. CONDITIONS: None. ACTIONS: Send ISCP command 'listening-mode' with value from mapping (Auto → auto-surround, Extended → all-ch-stereo, Surround → dolby-atmos, Desk → full-mono) to pioneer Onkyo media player [media_player.pioneer_onkyo] AND Send ISCP message from CMT mapping (Auto → CMT00000000000000000000000000, Extended → CMT00000000000000000000000000, Surround → CMT00000000000000000000000000, Desk → CMT00010100010000000000000000) to pioneer Onkyo media player [media_player.pioneer_onkyo] AND Send ISCP message from TCL mapping (Auto → TCL000000+02-01000000000-01000000000000000, Extended → TCL-0C000+02+0E+0A000000-04000000000000000, Surround → TCL000000+02-01000000000-01000000000000000, Desk → TCL000-01+02+18000000000-04000000000000000) to pioneer Onkyo media player [media_player.pioneer_onkyo].",
"natural_language": {
"trigger": "Whenever the sound mode input select [input_select.sound_mode] changes to a new state.",
"conditions": "There are no conditions that must be met.",
"action": "The automation sends three commands to the pioneer Onkyo media player [media_player.pioneer_onkyo]. First, it sets the listening mode (e.g., 'auto-surround' for 'Auto'). Second, it sends a CMT message specific to the selected sound mode. Third, it sends a TCL message specific to the selected sound mode."
},
"human_like": "Updates the sound mode and sends configuration messages to the Onkyo receiver whenever the sound mode selector is changed.",
"complexity": "medium"
}
},
{
"id": "mqtt_knob",
"result": {
"structured": "TRIGGER: When an MQTT message is received on topic zigbee2mqtt/Remote Bathroom audio knob OR when an MQTT message is received on topic zigbee2mqtt/Remote Bedroom audio knob. CONDITIONS: The MQTT payload contains an 'action' field. ACTIONS: Set variables: media_player_entity is Onkyo zone 2 media player [media_player.pioneer_onkyo_zone_2] if the trigger ID is '0', otherwise Onkyo zone 3 media player [media_player.pioneer_onkyo_zone_3]; command is the action from the payload; step_size is the action_step_size from the payload; step_percent is step_size multiplied by 0.0005 if step_size is a number, otherwise 0. Then, choose: IF command is 'toggle', THEN if Onkyo zone 2 media player [media_player.pioneer_onkyo_zone_2] or Onkyo zone 3 media player [media_player.pioneer_onkyo_zone_3] (as determined by media_player_entity) is on, turn it off, else turn it on. ELSE IF Onkyo zone 2 media player [media_player.pioneer_onkyo_zone_2] or Onkyo zone 3 media player [media_player.pioneer_onkyo_zone_3] (as determined by media_player_entity) is on AND command is 'brightness_step_down', THEN set its volume to current volume minus step_percent. ELSE IF Onkyo zone 2 media player [media_player.pioneer_onkyo_zone_2] or Onkyo zone 3 media player [media_player.pioneer_onkyo_zone_3] (as determined by media_player_entity) is on AND command is 'brightness_step_up', THEN set its volume to current volume plus step_percent.",
"natural_language": {
"trigger": "When a message is received from either the bathroom audio knob [device: zigbee2mqtt/Remote Bathroom audio knob] or the bedroom audio knob [device: zigbee2mqtt/Remote Bedroom audio knob] via MQTT.",
"conditions": "The message payload must contain an 'action' field.",
"action": "The automation first determines which media player to control: if the message came from the bathroom knob, it targets Onkyo zone 2 media player [media_player.pioneer_onkyo_zone_2]; if from the bedroom knob, it targets Onkyo zone 3 media player [media_player.pioneer_onkyo_zone_3]. It extracts the command and step size from the payload. If the command is 'toggle', it toggles the power state of the selected media player. If the command is 'brightness_step_down' or 'brightness_step_up' and the media player is on, it adjusts the volume down or up by a small percentage calculated from the step size."
},
"human_like": "Uses MQTT knobs in the bathroom and bedroom to toggle power and adjust volume for corresponding audio zones on the Onkyo receiver.",
"complexity": "medium"
}
},
{
"id": "mqtt_remote_menu_publish",
"result": {
"structured": "TRIGGER: When remote menu line 1 sensor [sensor.remote_menu_line_1] changes state OR When remote menu line 2 sensor [sensor.remote_menu_line_2] changes state OR When remote menu line 3 sensor [sensor.remote_menu_line_3] changes state OR When remote menu line 4 sensor [sensor.remote_menu_line_4] changes state OR When remote menu line 5 sensor [sensor.remote_menu_line_5] changes state. CONDITIONS: None. ACTIONS: Publish an MQTT message to topic 'homeassistant/remote_menu/line_{{ trigger.id }}' with the payload set to the new state of the triggering sensor.",
"natural_language": {
"trigger": "Whenever any of the five remote menu line sensors (remote menu line 1 sensor [sensor.remote_menu_line_1], remote menu line 2 sensor [sensor.remote_menu_line_2], remote menu line 3 sensor [sensor.remote_menu_line_3], remote menu line 4 sensor [sensor.remote_menu_line_4], or remote menu line 5 sensor [sensor.remote_menu_line_5]) changes its state.",
"conditions": "There are no conditions that must be met.",
"action": "Publishes the new state value of the sensor that triggered the automation to a specific MQTT topic. The topic is constructed dynamically to include the line number (e.g., 'homeassistant/remote_menu/line_1' for the first sensor)."
},
"human_like": "Automatically publishes updates from the remote menu display lines to MQTT for external systems.",
"complexity": "medium"
}
},
{
"id": "presence-lights",
"result": {
"structured": "TRIGGER: When any sensor in the list of presence sensors (defined in ../entities/presence_sensors.yaml) changes state. CONDITIONS: presence lights input boolean [input_boolean.presence_lights] is on. ACTIONS: For the triggered sensor, if its new state is 'on', turn on the light at the corresponding index in the lights list; if its new state is 'off', turn off the light at the corresponding index in the lights list. The lights list is: light.living_room_sofa, light.living_room_desk, light.kitchen_countertop.",
"natural_language": {
"trigger": "Any of the presence sensors (as defined in the external file) changes its state.",
"conditions": "The master control for presence-based lighting, presence lights input boolean [input_boolean.presence_lights], must be switched on.",
"action": "When a presence sensor triggers, the automation maps that specific sensor to a specific light from a predefined list. If the sensor turns on, the corresponding light is turned on. If the sensor turns off, the corresponding light is turned off. The mapping is based on the order of sensors in the list from the file and the order of lights in the automation's list."
},
"human_like": "Automatically turns specific lights on or off based on which presence sensor detects activity, but only when the feature is enabled.",
"complexity": "medium"
}
},
{
"id": "presence-speakers",
"result": {
"structured": "TRIGGER: When any entity listed in the presence_sensors YAML file changes state to 'on'. CONDITIONS: presence speakers input boolean [input_boolean.presence_speakers] is 'on'. ACTIONS: Set sound mode input select [input_select.sound_mode] to the option from the sound_modes list that corresponds to the index of the triggering entity within the presence_sensors list.",
"natural_language": {
"trigger": "When any of the presence sensors defined in the external file becomes active (changes state to 'on').",
"conditions": "The automation is only active if the presence speakers input boolean [input_boolean.presence_speakers] is turned on.",
"action": "Changes the sound mode input select [input_select.sound_mode] to a specific sound mode. The selected mode is determined by matching the position of the sensor that triggered the automation in the list of presence sensors to a predefined list of sound modes."
},
"human_like": "Automatically switches the sound system's mode based on which user presence sensor is activated.",
"complexity": "medium"
}
},
{
"id": "on-startup",
"result": {
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: First, set the options of media radio net input select [input_select.media_radio_net] to a list of station names loaded from an external file plus 'Other'. Second, set the frontend theme to 'skynet' in dark mode.",
"natural_language": {
"trigger": "When Home Assistant finishes starting up.",
"conditions": "There are no conditions for this automation.",
"action": "It performs two actions. First, it populates the dropdown list for the media radio net input select [input_select.media_radio_net] with station names from an external configuration file, adding 'Other' as a final option. Second, it sets the user interface theme to 'skynet' using dark mode."
},
"human_like": "Sets up the radio station list and applies the dark theme when Home Assistant starts.",
"complexity": "medium"
}
}
]