899 lines
97 KiB
JSON
899 lines
97 KiB
JSON
[
|
|
{
|
|
"id": "d0be7b52-30f2-4947-a8de-a20a15df8849",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of apollo msr 2 zone 1 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_1_occupancy] OR apollo msr 2 zone 2 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_2_occupancy] OR apollo msr 2 zone 3 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_3_occupancy] changes. CONDITIONS: None. ACTIONS: If test main [light.test_main] is off, turn it on with brightness 255. Then, turn on a specific test segment light (light.test_segment_1, light.test_segment_2, or light.test_segment_3) corresponding to the triggered zone, setting its color to green (0,255,0) for 'on', red (255,0,0) for 'off', white (255,255,255) for 'unknown', or blue (0,0,255) for 'unavailable'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the occupancy state changes for any of the three radar zones: apollo msr 2 zone 1 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_1_occupancy], apollo msr 2 zone 2 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_2_occupancy], or apollo msr 2 zone 3 occupancy [binary_sensor.apollo_msr_2_8935e0_radar_zone_3_occupancy].",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "First, if the main test light [light.test_main] is off, it will be turned on to full brightness. Then, a specific segment light (light.test_segment_1, light.test_segment_2, or light.test_segment_3) is turned on. The segment light corresponds to the zone that triggered the automation (zone 1, 2, or 3). The color of the segment light is set based on the new state of the triggered occupancy sensor: green for occupied ('on'), red for unoccupied ('off'), white for 'unknown', or blue for 'unavailable'."
|
|
},
|
|
"human_like": "This automation visually indicates the occupancy status of three radar zones by lighting up corresponding colored segments on a test light, and ensures the main light is on.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "1d19d3a4-4ce1-433e-b27a-bc5fa8364153",
|
|
"result": {
|
|
"structured": "TRIGGER: When visibility alert [binary_sensor.aurora_visibility_visibility_alert] changes from off to on. CONDITIONS: visibility [sensor.aurora_visibility_visibility] is above 0. ACTIONS: Run Notify [script.notify] with a title 'Snapshot Status' and a message containing the current visibility percentage.",
|
|
"natural_language": {
|
|
"trigger": "When the visibility alert [binary_sensor.aurora_visibility_visibility_alert] becomes active, indicating a change from off to on.",
|
|
"conditions": "The visibility [sensor.aurora_visibility_visibility] sensor must report a value greater than 0 percent.",
|
|
"action": "Sends a notification using the Notify [script.notify] script. The notification has the title 'Snapshot Status' and a message stating the current chance of Aurora Borealis visibility, which is the value from the visibility sensor."
|
|
},
|
|
"human_like": "Sends a notification when an aurora visibility alert is triggered and the visibility probability is positive.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "plants_update group members",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time reaches 00:00:00 daily OR when Home Assistant starts OR when an event_template_reloaded event occurs. CONDITIONS: None. ACTIONS: Update the group 'Plants' (object_id: plants) with icon mdi:sprout, setting its member entities to the list of all current plant entities.",
|
|
"natural_language": {
|
|
"trigger": "This automation runs at midnight every day, when Home Assistant starts up, or whenever a template reload event is triggered.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It updates the membership of a group named 'Plants' to include all plant entities currently present in the system, and sets the group's icon to a sprout symbol."
|
|
},
|
|
"human_like": "Keeps the 'Plants' group up-to-date by refreshing its list of member plant entities at midnight, on startup, or when templates are reloaded.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "plants_notify",
|
|
"result": {
|
|
"structured": "TRIGGER: When plant issue [binary_sensor.plant_issue] changes from off to on OR at 10:00 OR at 15:30 OR at 19:00. CONDITIONS: The number of plant problems [count] is greater than 0. ACTIONS: Run script Notify [script.notify] with a title and message constructed from plant events [sensor.plant_events].",
|
|
"natural_language": {
|
|
"trigger": "This automation triggers when the plant issue [binary_sensor.plant_issue] sensor first turns on, or at the scheduled times of 10:00, 15:30, and 19:00 daily.",
|
|
"conditions": "The automation only proceeds if the sensor.plant_events [sensor.plant_events] contains at least one plant problem.",
|
|
"action": "It sends a notification by calling the Notify [script.notify] script. The notification's title and message are dynamically generated to list which specific plants have which issues, based on the data from plant events [sensor.plant_events]."
|
|
},
|
|
"human_like": "Sends a notification about plants needing attention when an issue is detected or at specific times during the day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "button_toggle_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When workshop button action [event.workshop_button_action] OR mikes button action [event.mikes_button_action] OR jims button action [event.jims_button_action] OR lindsays button action [event.lindsays_button_action] changes state. CONDITIONS: The trigger event data is valid AND the event type (single, double, or hold) is defined in the configuration for the specific button. ACTIONS: Turn on or off the configured list of lights or switches for the specific button and event type. The service used is 'homeassistant.turn_on' if none of the target entities are on, otherwise 'homeassistant.turn_off'.",
|
|
"natural_language": {
|
|
"trigger": "When any of the four Zigbee buttons (workshop button action [event.workshop_button_action], mikes button action [event.mikes_button_action], jims button action [event.jims_button_action], or lindsays button action [event.lindsays_button_action]) is pressed, generating a state change event.",
|
|
"conditions": "The automation checks that the trigger event contains valid data and that the specific button press type (single, double, or hold) is mapped to a list of target entities in the internal configuration.",
|
|
"action": "It toggles the state of the target entities associated with the pressed button and the press type. If any of the target lights or switches are currently on, they are all turned off. If none are on, they are all turned on."
|
|
},
|
|
"human_like": "This automation uses Zigbee buttons to toggle groups of lights and switches, with different actions for single, double, and long presses.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "button_living_room_scene_controller",
|
|
"result": {
|
|
"structured": "TRIGGER: When a Z-Wave JS value notification event occurs. CONDITIONS: The template condition evaluates to true, meaning the derived 'service' and 'data' variables are not None. ACTIONS: Call the service defined by the 'service' variable with the data defined by the 'data' variable. The specific service and data are determined by a configuration mapping based on the triggering device ID, the event label (scene), and the event value (key press type).",
|
|
"natural_language": {
|
|
"trigger": "When a Z-Wave JS device sends a value notification event, such as a button press on a scene controller.",
|
|
"conditions": "The automation only proceeds if a valid service and corresponding data can be found in the internal configuration map, based on the specific device that triggered the event, the scene label, and the type of key press (e.g., single, double, or triple press).",
|
|
"action": "Executes the pre-configured action for that specific button press, which toggles a specific light or switch. For example, a single press on Scene 001 for device '215253fb0f54a57d98bc940fac442073' toggles the downstairs ambiance [light.downstairs_ambiance], while a double press on Scene 004 for device 'f7a1fe2db74bf6a3b652301589f7cebc' toggles the hyperion cinema [switch.hyperion_cinema]."
|
|
},
|
|
"human_like": "Controls various lights and switches in the living and dining rooms using button presses on Z-Wave scene controllers, with different actions for single, double, and triple presses.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "button_living_room_scene_controller_leds",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following entities changes state: mikes lamp [light.mikes_lamp], lindsays lamp [light.lindsays_lamp], jims lamp [light.jims_lamp], hyperion usb capture [switch.hyperion_usb_capture], hyperion cinema [switch.hyperion_cinema], hyperion rainbow swirl fast [switch.hyperion_rainbow_swirl_fast], all living room [light.all_living_room], downstairs ambiance [light.downstairs_ambiance], dining room uplight 1 [light.dining_room_uplight_1], dining room uplight 2 [light.dining_room_uplight_2], living room uplight [light.living_room_uplight]. CONDITIONS: The computed template variable 'value' is not none AND the computed template variable 'state_parameter' is not none. ACTIONS: For each associated device ID, call service zwave_js.bulk_set_partial_config_parameters with parameter 'state_parameter' and value 'value'. Then, if the computed template variable 'color' is not none AND (the state is 'unavailable' OR 'unknown' OR 'off'), for each associated device ID, call service zwave_js.bulk_set_partial_config_parameters with parameter 'color_parameter' and value 'color'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state changes for any of the listed lights and switches in the living room and dining room, including mikes lamp [light.mikes_lamp], lindsays lamp [light.lindsays_lamp], jims lamp [light.jims_lamp], the hyperion switches, and the various living room and dining room uplights.",
|
|
"conditions": "The automation only proceeds if the system can successfully calculate a numeric value and a parameter number for the specific entity that triggered the change.",
|
|
"action": "First, it updates a configuration parameter on one or two Z-Wave devices linked to the changed entity, setting a value that represents the new state (on, off, unavailable, or unknown). Then, if the state is either off or in an error state (unavailable/unknown), it also updates a separate color parameter on the same device(s) to control an LED indicator, setting it to white for 'off' or red for an error."
|
|
},
|
|
"human_like": "Updates the LED indicators on living room scene controller devices to reflect the on/off or error status of various lights and entertainment switches.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "467417d9-fe47-4fb8-a0fd-2764c92e099a",
|
|
"result": {
|
|
"structured": "TRIGGER: When basement bme280 temperature [sensor.basement_bme280_temperature] OR basement bme280 humidity [sensor.basement_bme280_humidity] changes state. CONDITIONS: The triggered entity must have a corresponding entry in the internal configuration mapping. ACTIONS: Send a notification via the notify service mapped to the triggered entity (basement temperature notify [notify.basement_temperature] for temperature, basement humidity notify [notify.basement_humidity] for humidity). The notification message contains the current timestamp, the new state of the triggered sensor, and the current state of the corresponding reference sensor (apollo air 1 temperature [sensor.apollo_air_1_1ecac0_sen55_temperature] for temperature, apollo air 1 humidity [sensor.apollo_air_1_1ecac0_sen55_humidity] for humidity).",
|
|
"natural_language": {
|
|
"trigger": "Whenever the basement bme280 temperature [sensor.basement_bme280_temperature] or the basement bme280 humidity [sensor.basement_bme280_humidity] sensor reports a new value.",
|
|
"conditions": "The automation only proceeds if the sensor that changed is one of the two defined in its internal configuration.",
|
|
"action": "Sends a notification message. The notification is sent to the specific notification service linked to the changed sensor. The message includes the current date and time, the new reading from the changed sensor, and the current reading from a corresponding reference sensor for comparison."
|
|
},
|
|
"human_like": "Helps calibrate sensors by sending a comparison log to a notification service whenever key basement climate sensors update.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_outside_cameras_based_on_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When camera shutoff [binary_sensor.camera_shutoff] changes from off to on. CONDITIONS: None. ACTIONS: First, execute the Notify [script.notify] script with a message containing the current time and a note that the temperature is moving below 16°F, turning off the driveway and backyard camera. Second, turn off driveway camera port [switch.driveway_camera_port] and patio camera port [switch.patio_camera_port].",
|
|
"natural_language": {
|
|
"trigger": "When the camera shutoff [binary_sensor.camera_shutoff] sensor turns on.",
|
|
"conditions": "There are no conditions that must be checked.",
|
|
"action": "Sends a notification with a timestamped message stating the temperature is moving below 16°F and the driveway and backyard cameras are being turned off. Then, it powers off the driveway camera port [switch.driveway_camera_port] and the patio camera port [switch.patio_camera_port]."
|
|
},
|
|
"human_like": "Turns off the outside cameras and sends a notification when the temperature sensor indicates it is getting too cold.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_outside_cameras_based_on_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When camera turn on [binary_sensor.camera_turn_on] changes from off to on. CONDITIONS: None. ACTIONS: Execute Notify [script.notify] with a message containing the current time and a note that the temperature is moving above 20°F, turning on the driveway and backyard camera. Then turn on driveway camera port [switch.driveway_camera_port] AND patio camera port [switch.patio_camera_port].",
|
|
"natural_language": {
|
|
"trigger": "When the binary sensor camera turn on [binary_sensor.camera_turn_on] changes its state from off to on.",
|
|
"conditions": "There are no conditions that must be met for this automation to proceed.",
|
|
"action": "First, it sends a notification via the Notify [script.notify] script. The message includes the current time and states that the temperature is moving above 20°F, so the driveway and backyard cameras are being turned on. Then, it turns on the driveway camera port [switch.driveway_camera_port] and the patio camera port [switch.patio_camera_port]."
|
|
},
|
|
"human_like": "Turns on the outside cameras and sends a notification when a temperature-based sensor indicates it's warm enough.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "f6524e79-6b0c-4aa2-b508-3d67f83901a8",
|
|
"result": {
|
|
"structured": "TRIGGER: When mikes cube action [event.mikes_cube_action] changes state. CONDITIONS: The event data is not null. ACTIONS: If the event type is 'shake', toggle movie time [switch.movie_time]. If the event type contains 'rotate', adjust the volume of yamaha rx v6a [media_player.yamaha_rx_v6a]: for 'rotate_right', increase volume by 0.05 (clamped between 0 and 1); for other rotations (implicitly 'rotate_left'), decrease volume by 0.05 (clamped between 0 and 1).",
|
|
"natural_language": {
|
|
"trigger": "When the mikes cube action [event.mikes_cube_action] sensor reports a state change.",
|
|
"conditions": "The automation only runs if the event data from the cube is valid and not null.",
|
|
"action": "Depending on the cube's action: If it's a shake, it toggles the movie time [switch.movie_time] switch. If the action is a rotation, it adjusts the volume of the yamaha rx v6a [media_player.yamaha_rx_v6a] receiver. Rotating right increases the volume by 5%, while rotating left decreases it by 5%, ensuring the volume stays within the normal range."
|
|
},
|
|
"human_like": "Uses a physical cube to control entertainment: shaking toggles 'movie mode' and rotating adjusts the receiver's volume.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "mqtt_store_door_states_discovery",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: For each door in the list, call the script MQTT Automated Config [script.mqtt_automated_config] with data to create a timestamp sensor for that door. The list of doors is: Main Door (identifiers a8541, unique_id main_door_last_opened), Sliding Door (identifiers 59e40, unique_id sliding_door_last_opened), Garage Door (identifiers 922c2, unique_id front_garage_door_last_opened), Garage Entry Door (identifiers 5ef46, unique_id garage_entry_door_last_opened), Rear Garage Door (identifiers 0fff6, unique_id rear_garage_door_last_opened), Passenger Door (identifiers 069aa, unique_id passenger_door_last_opened).",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant starts up.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "For each of the six predefined doors, it calls a script named MQTT Automated Config [script.mqtt_automated_config] to automatically create a sensor that tracks when the door was last opened. The doors configured are: Main Door, Sliding Door, Garage Door, Garage Entry Door, Rear Garage Door, and Passenger Door."
|
|
},
|
|
"human_like": "Automatically sets up MQTT sensors to track the last opened time for several doors when Home Assistant starts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "notify_on_door_state_change",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following doors changes from closed (off) to open (on): main door [binary_sensor.main_door], garage entry door [binary_sensor.garage_entry_door], sliding door [binary_sensor.sliding_door], front garage door [binary_sensor.front_garage_door], rear garage door [binary_sensor.rear_garage_door], passenger door [binary_sensor.passenger_door]. CONDITIONS: The trigger data is valid (trigger and its states are defined). ACTIONS: 1. Update a sensor via script.mqtt_automated_states with the opening timestamp and attributes (including who is home, a count of recent openings, and the source). 2. Choose: IF the count of recent openings is greater than 0, run a specific count notification script for that door. OTHERWISE, send a standard notification that the door was opened. 3. IF the person at home is 'unknown', wait up to 30 seconds for the people at home [sensor.people_at_home] count to become greater than 0. 4. Choose: IF at least 30 seconds have passed since the door opened, send a notification that the user is still unknown. OTHERWISE, send a notification identifying the person who used the door.",
|
|
"natural_language": {
|
|
"trigger": "When any of the monitored doors (main door [binary_sensor.main_door], garage entry door [binary_sensor.garage_entry_door], sliding door [binary_sensor.sliding_door], front garage door [binary_sensor.front_garage_door], rear garage door [binary_sensor.rear_garage_door], or passenger door [binary_sensor.passenger_door]) changes from a closed to an open state.",
|
|
"conditions": "The automation only proceeds if the trigger information is valid and properly defined.",
|
|
"action": "First, it records the door opening event by updating a sensor with the current time, who is home, and a count of how many times the door has been opened recently within a quiet window. If the door has been opened multiple times recently, it runs a special notification script for repeated openings. Otherwise, it sends a standard notification that the door was opened. If the system doesn't know who is home at the time of the opening, it waits up to 30 seconds to see if someone is detected at home. If after 30 seconds the user is still unknown, it sends an alert. If someone is identified within that time, it sends a notification saying who used the door."
|
|
},
|
|
"human_like": "Notifies you when a door is opened, tracks repeat openings to avoid spam, and tries to identify who opened it if initially unknown.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "notify_on_door_ajar",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following doors changes state (trigger reference *id004). CONDITIONS: Condition reference *id005. ACTIONS: Execute script Notify If Ajar [script.notify_if_ajar] with data: duration (lookup value from mapping based on triggering entity, default 300 seconds), door (triggering entity_id), door_name (friendly_name attribute of triggering entity), timestamp (current time).",
|
|
"natural_language": {
|
|
"trigger": "When a door sensor (referenced by *id004) changes its state.",
|
|
"conditions": "If a condition (referenced by *id005) is met.",
|
|
"action": "Runs a notification script called Notify If Ajar [script.notify_if_ajar], passing it information about which door triggered it, a custom duration threshold for that specific door, the door's friendly name, and the current timestamp."
|
|
},
|
|
"human_like": "Sends a notification if a door is left open for too long, using different time thresholds for different doors.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "illuminate_doors_when_open",
|
|
"result": {
|
|
"structured": "TRIGGER: When main door [binary_sensor.main_door] changes from closed (off) to open (on) OR when garage entry door [binary_sensor.garage_entry_door] changes from closed (off) to open (on) OR when sliding door [binary_sensor.sliding_door] changes from closed (off) to open (on) OR when server room door contact [binary_sensor.server_room_door_contact] changes from closed (off) to open (on). CONDITIONS: The trigger data is valid (valid template condition) AND (Sun [sun.sun] is below the horizon OR garage luminance [sensor.garage_luminance] is below 11). ACTIONS: If the door was not opened within a cooldown duration (in_duration is false), then for each light or switch associated with the opened door, create a scene snapshot of its current state, then apply a scene to turn on those entities (lights at full brightness). Wait until the door that triggered the automation closes (state changes to 'off'). Then, for each associated entity, trigger an event named 'illuminate_door' with data to resume the entity's previous state after the specified duration.",
|
|
"natural_language": {
|
|
"trigger": "When any of the monitored doors (main door [binary_sensor.main_door], garage entry door [binary_sensor.garage_entry_door], sliding door [binary_sensor.sliding_door], or server room door contact [binary_sensor.server_room_door_contact]) opens.",
|
|
"conditions": "The automation only runs if the trigger data is valid and it is either nighttime (the sun is below the horizon) or the garage is dark (garage luminance [sensor.garage_luminance] is below 11).",
|
|
"action": "If the door was not opened recently (outside a cooldown period), the automation saves the current state of the lights or switches associated with that door, then turns them on (lights at full brightness). It then waits for the door to close. After the door closes, it schedules events to restore each light or switch to its previous state after a door-specific duration (e.g., 120 seconds for the main door)."
|
|
},
|
|
"human_like": "Automatically turns on specific lights when a door is opened at night or in low light, and turns them off again after the door is closed and a timer expires.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "illuminate_door_event_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type 'illuminate_door' is received. CONDITIONS: The event data must contain all three fields: 'service', 'duration', and 'scene_id'. ACTIONS: Call the service specified in the event's 'service' field, passing the 'duration' and 'scene_id' data from the event.",
|
|
"natural_language": {
|
|
"trigger": "When a custom event named 'illuminate_door' occurs.",
|
|
"conditions": "The event must contain specific data: a 'service' name, a 'duration', and a 'scene_id'. If any of these pieces of data are missing, the automation will not run.",
|
|
"action": "Calls the Home Assistant service specified in the event data, providing the duration and scene ID as parameters for the service call."
|
|
},
|
|
"human_like": "This automation acts as a handler for a custom 'illuminate_door' event, using the event's data to trigger a specific lighting scene for a set duration.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "cancel_scheduled_resume_state",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of foyer [switch.foyer] changes OR When the state of garage entry [switch.garage_entry] changes OR When the state of garage cans [switch.garage_cans] changes OR When the state of dining room chandelier [light.dining_room_chandelier] changes. CONDITIONS: Condition referenced by alias *id006 (details not provided in input). ACTIONS: Turn off the script whose entity_id is derived from the triggering entity (e.g., script.resume_switch_foyer).",
|
|
"natural_language": {
|
|
"trigger": "When there is any change in the state of the foyer switch [switch.foyer], the garage entry switch [switch.garage_entry], the garage cans switch [switch.garage_cans], or the dining room chandelier light [light.dining_room_chandelier].",
|
|
"conditions": "If a specific condition, referenced as *id006, is met. The exact details of this condition are not provided in the given information.",
|
|
"action": "Cancels a scheduled resume operation by turning off a dynamically determined script. The script's name is built from the entity that triggered the automation, for example, changing 'switch.foyer' to 'script.resume_switch_foyer' and then turning that script off."
|
|
},
|
|
"human_like": "Cancels any scheduled 'resume state' script when certain lights or switches are manually operated.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "illuminate_server_room",
|
|
"result": {
|
|
"structured": "TRIGGER: When server room door contact [binary_sensor.server_room_door_contact] changes state. CONDITIONS: The trigger must be a valid state change event AND the new state (to_state) must be either 'on' or 'off'. ACTIONS: Turn the server room switch [switch.server_room_switch] to the same state as the new door state (on or off).",
|
|
"natural_language": {
|
|
"trigger": "Whenever the server room door contact [binary_sensor.server_room_door_contact] changes its state.",
|
|
"conditions": "The automation checks that the trigger is a valid state change event and that the new state of the door contact is either 'on' or 'off'.",
|
|
"action": "Sets the server room switch [switch.server_room_switch] to match the new state of the door contact. If the door opens (state 'on'), the switch is turned on. If the door closes (state 'off'), the switch is turned off."
|
|
},
|
|
"human_like": "Automatically turns the server room light on when the door opens and off when the door closes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "announce_and_notify_on_doorbell_press",
|
|
"result": {
|
|
"structured": "TRIGGER: When doorbell chime [binary_sensor.doorbell_chime] changes from off to on. CONDITIONS: The time difference between the last state change to on and the previous state change from off is greater than 15 seconds. ACTIONS: Run the Notify [script.notify] script with title 'Door Bell!' and message 'Door Bell!'.",
|
|
"natural_language": {
|
|
"trigger": "When the doorbell chime [binary_sensor.doorbell_chime] is pressed, changing its state from off to on.",
|
|
"conditions": "The automation only proceeds if the doorbell press is considered valid, meaning the time elapsed since the last time the doorbell was pressed is more than 15 seconds.",
|
|
"action": "Sends a notification by executing the Notify [script.notify] script, which will announce 'Door Bell!'."
|
|
},
|
|
"human_like": "Sends a notification when the doorbell is pressed, but only if it hasn't been pressed very recently to avoid duplicate alerts.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "suppress_doorbell_chime",
|
|
"result": {
|
|
"structured": "TRIGGER: When doorbell chime [binary_sensor.doorbell_chime] changes from off to on. CONDITIONS: None. ACTIONS: Turn off doorbell chime active [switch.doorbell_chime_active], wait for 15 seconds, then turn on doorbell chime active [switch.doorbell_chime_active].",
|
|
"natural_language": {
|
|
"trigger": "When the doorbell chime [binary_sensor.doorbell_chime] is activated, changing its state from off to on.",
|
|
"conditions": "There are no conditions that must be met for this automation to run.",
|
|
"action": "Immediately turns off the doorbell chime active [switch.doorbell_chime_active] switch, waits for 15 seconds, and then turns the switch back on."
|
|
},
|
|
"human_like": "Temporarily silences the doorbell chime for 15 seconds when it rings.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "mqtt_store_drink_states_discovery",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Call script MQTT Automated Config [script.mqtt_automated_config] with domain 'sensor' and unique_id 'drinks_config'. Then, call script MQTT Automated States [script.mqtt_automated_states] with domain 'sensor', unique_id 'drinks_config', state equal to the count of the 'drinks' list, and attributes containing the 'drinks' list. Finally, publish an MQTT configuration message to the topic 'homeassistant/select/drinks/config' to create a select entity named 'Drink' with unique_id 'drink_selector', state and command topics, value and command templates, JSON attributes for drink parts and image, options derived from drink names, and retain flag set to True.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant first starts up.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation first runs the MQTT Automated Config [script.mqtt_automated_config] script to set up a sensor configuration. It then runs the MQTT Automated States [script.mqtt_automated_states] script to publish the number of available drinks and their detailed recipes as attributes. Finally, it publishes an MQTT discovery message to create a selectable entity called 'Drink' in the MQTT integration, which will allow users to choose from a list of predefined cocktails and see their ingredients and images."
|
|
},
|
|
"human_like": "Sets up an MQTT drink selector when Home Assistant starts, allowing you to choose from a menu of cocktails and view their recipes.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "mqtt_store_echo_states_discovery",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Execute script MQTT Automated Config [script.mqtt_automated_config] with data: domain 'sensor', unique_id 'alexa_last_tts', device_class 'timestamp'.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant finishes starting up.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Runs the script named MQTT Automated Config [script.mqtt_automated_config], passing it the parameters to configure a sensor with the unique identifier 'alexa_last_tts' and a device class of 'timestamp'."
|
|
},
|
|
"human_like": "Automatically configures an MQTT sensor for Alexa TTS status when Home Assistant starts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "event_milestone_notifications",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR When the time is 15:30:00 OR When the time is 19:00:00. CONDITIONS: personal events [binary_sensor.personal_events] is on. ACTIONS: For each event in the list of events from personal events [binary_sensor.personal_events] that occurs today, call the Notify [script.notify] script with a message stating 'Today is [event_person]s [event_type]!'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at three specific times each day: 10:00 AM, 3:30 PM, and 7:00 PM.",
|
|
"conditions": "The automation only proceeds if the personal events [binary_sensor.personal_events] sensor is in the 'on' state, indicating there are events to process.",
|
|
"action": "It retrieves a list of events scheduled for today from the personal events sensor. For each event found, it sends a notification using the Notify [script.notify] script. The notification message announces the event, formatted as 'Today is [person's name]s [event type]!'."
|
|
},
|
|
"human_like": "Sends daily reminder notifications for personal milestones at set times.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "event_milestone_reminders",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR When the time is 15:30:00 OR When the time is 19:00:00. CONDITIONS: The count of filtered events from personal events [binary_sensor.personal_events] is greater than 0. ACTIONS: For each event in the filtered list, call the Notify [script.notify] script with a message containing the event details.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at three specific times each day: 10:00 AM, 3:30 PM, and 7:00 PM.",
|
|
"conditions": "It checks if there are any upcoming events, stored in the personal events [binary_sensor.personal_events] entity, that are scheduled for 30, 14, or 7 days from today and are associated with either Mike or Lindsay.",
|
|
"action": "For each matching event found, it sends a notification using the Notify [script.notify] script. The message includes who the event is for, what the event is, and how many days away it is, with correct pluralization."
|
|
},
|
|
"human_like": "Sends daily reminders for upcoming personal events for Mike or Lindsay that are 30, 14, or 7 days away.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "event_calendar_reminders",
|
|
"result": {
|
|
"structured": "TRIGGER: At 19:00:00 daily. CONDITIONS: None. ACTIONS: Execute the Events [script.events] script.",
|
|
"natural_language": {
|
|
"trigger": "Every day at 7:00 PM.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Runs the script named Events [script.events]."
|
|
},
|
|
"human_like": "Runs a daily reminder script at 7 PM.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "reload_templates",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event_template_reloaded event occurs. CONDITIONS: None. ACTIONS: Wait 1 second, then fire a templates_reloaded event.",
|
|
"natural_language": {
|
|
"trigger": "When a system event named 'event_template_reloaded' is received.",
|
|
"conditions": "There are no conditions to check.",
|
|
"action": "After a one-second delay, the automation sends a new event called 'templates_reloaded'."
|
|
},
|
|
"human_like": "Waits a moment after templates are reloaded, then signals that the reload is complete.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_livingroom_lights_with_harmony_activities",
|
|
"result": {
|
|
"structured": "TRIGGER: When xbox one [switch.xbox_one] OR playstation [switch.playstation] OR roku [switch.roku] OR switch [switch.switch] OR tv [switch.tv] turns on from off. CONDITIONS: Sun [sun.sun] is below_horizon. ACTIONS: Turn on living room [light.living_room] AND hyperion usb capture [switch.hyperion_usb_capture].",
|
|
"natural_language": {
|
|
"trigger": "When any of the entertainment devices in the living room (xbox one [switch.xbox_one], playstation [switch.playstation], roku [switch.roku], switch [switch.switch], or tv [switch.tv]) are turned on from an off state.",
|
|
"conditions": "The sun [sun.sun] must be below the horizon, indicating it is nighttime or evening.",
|
|
"action": "Turn on the living room lights [light.living_room] and the hyperion usb capture [switch.hyperion_usb_capture]."
|
|
},
|
|
"human_like": "Automatically turns on the living room lights and a capture device when an entertainment system is activated at night.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_hyperion_lights_with_harmony_activities",
|
|
"result": {
|
|
"structured": "TRIGGER: When living room remote [remote.living_room] has its current activity attribute set to 'PowerOff'. CONDITIONS: Sun [sun.sun] is below the horizon. ACTIONS: Turn off hyperion usb capture [switch.hyperion_usb_capture].",
|
|
"natural_language": {
|
|
"trigger": "When the living room remote [remote.living_room] is set to the 'PowerOff' activity.",
|
|
"conditions": "The sun [sun.sun] must be below the horizon, meaning it is night or evening.",
|
|
"action": "Turns off the hyperion usb capture [switch.hyperion_usb_capture]."
|
|
},
|
|
"human_like": "Turns off the Hyperion lights when the Harmony remote is set to 'PowerOff' and it's nighttime.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "harmony_give_chromecast_control_to_remote_using_emulated_roku",
|
|
"result": {
|
|
"structured": "TRIGGER: When a roku_command event is received with source_name 'Home Assistant'. CONDITIONS: The target media player chromecast [media_player.chromecast] is in state 'playing' OR 'paused' AND the key from the event is not 'NoPress'. ACTIONS: If the key is 'Play', then toggle play/pause on chromecast [media_player.chromecast]. If the key is 'Rev' OR 'Fwd', then seek forward or backward by 10 seconds on chromecast [media_player.chromecast], clamping to the media duration or start.",
|
|
"natural_language": {
|
|
"trigger": "When a roku_command event is received from the source named 'Home Assistant'.",
|
|
"conditions": "The chromecast [media_player.chromecast] must be currently playing or paused, and the key sent in the event must not be 'NoPress'.",
|
|
"action": "If the key is 'Play', it toggles the play/pause state of the chromecast [media_player.chromecast]. If the key is 'Rev' or 'Fwd', it seeks backward or forward by 10 seconds in the media, ensuring the new position does not go beyond the start or end of the media."
|
|
},
|
|
"human_like": "Allows remote control of the Chromecast using Roku commands, enabling play/pause and seeking functions when media is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "indoor_holiday_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When indoor holiday [binary_sensor.indoor_holiday] changes state (excluding from unknown or unavailable) OR at sunset OR at sunrise. CONDITIONS: The computed target list contains at least one entity AND the variable 'continue' is True AND the variable 'to_state' is either 'on' or 'off'. ACTIONS: Call the service switch.turn_{{ to_state }} on the entities in the target list.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered in three ways: when the indoor holiday [binary_sensor.indoor_holiday] sensor changes its state, but not from an 'unknown' or 'unavailable' state; at the moment of sunset; or at the moment of sunrise.",
|
|
"conditions": "The automation proceeds only if the calculated list of target entities is not empty, the internal logic determines the trigger is valid, and the intended action state is determined to be either 'on' or 'off'.",
|
|
"action": "It turns the target switches either on or off, based on the trigger that fired. If the indoor sensor triggered, it targets the indoor holiday switch [switch.indoor_holiday]. If a sun event triggered, it targets an empty list, which would typically prevent the action from running due to the condition."
|
|
},
|
|
"human_like": "Controls holiday lights based on a manual switch sensor or the time of day, turning them on at sunset and off at sunrise.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_turn_on_fan_when_humidity_is_high",
|
|
"result": {
|
|
"structured": "TRIGGER: When master bathroom humidity status [binary_sensor.master_bathroom_humidity_status] changes state. CONDITIONS: The state change is valid (both old and new states are either 'on' or 'off'). ACTIONS: If the new state is 'off', delay for 20 minutes. Then, call the service switch.turn_on or switch.turn_off (depending on the new state) on master bathroom fan [switch.master_bathroom_fan]. Finally, delay for 1 second.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the master bathroom humidity status [binary_sensor.master_bathroom_humidity_status] sensor changes its state.",
|
|
"conditions": "The automation only proceeds if the state change is considered valid, meaning both the previous state and the new state are either 'on' or 'off'.",
|
|
"action": "If the humidity status changed to 'off', the automation waits for 20 minutes. Then, it turns the master bathroom fan [switch.master_bathroom_fan] on or off to match the new humidity status (e.g., if humidity is 'on', turn the fan on). After performing this action, it waits for one second."
|
|
},
|
|
"human_like": "Controls the bathroom fan based on the humidity sensor, turning it on when humidity is high and off when it's normal, with a delay before turning it off.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "basement_notify_when_humidity_is_high",
|
|
"result": {
|
|
"structured": "TRIGGER: When basement humidity high [binary_sensor.basement_humidity_high] turns on AND remains on for 2 hours OR When basement humidity high [binary_sensor.basement_humidity_high] turns on AND remains on for 10 hours. CONDITIONS: None. ACTIONS: Execute Notify [script.notify] with a title and message stating 'Basement humidity has been high for [trigger duration].'",
|
|
"natural_language": {
|
|
"trigger": "When the basement humidity high [binary_sensor.basement_humidity_high] sensor indicates high humidity and stays in that state for either 2 hours or 10 hours.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Sends a notification using the Notify [script.notify] script. The notification's title and message will state that the basement humidity has been high for the duration that triggered the automation (either 2 hours or 10 hours)."
|
|
},
|
|
"human_like": "Sends an alert if the basement humidity remains high for either 2 or 10 hours.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "hyperion_execute_effects",
|
|
"result": {
|
|
"structured": "TRIGGER: When hyperion brightness [input_number.hyperion_brightness] changes state OR When hyperion effects [input_select.hyperion_effects] changes state. CONDITIONS: The state change is valid (trigger.from_state and trigger.to_state are defined and their states are different). ACTIONS: Turn on gpio 18 tv [light.gpio_18_tv] with brightness set to the new value of hyperion brightness [input_number.hyperion_brightness] if that was the trigger, otherwise the current value, and effect set to the new value of hyperion effects [input_select.hyperion_effects] if that was the trigger, otherwise the current value.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the hyperion brightness [input_number.hyperion_brightness] or the hyperion effects [input_select.hyperion_effects] changes its state.",
|
|
"conditions": "The automation only runs if the state change is considered valid, meaning both the previous and new states are properly defined and they are different from each other.",
|
|
"action": "It turns on the gpio 18 tv [light.gpio_18_tv] light, setting its brightness to the newly selected brightness value if the brightness was changed, or the current brightness if the effect was changed. Similarly, it sets the light effect to the newly selected effect if the effect was changed, or the current effect if the brightness was changed."
|
|
},
|
|
"human_like": "Updates the TV backlight's brightness and visual effect whenever the corresponding controls are adjusted.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "aafa91b8-a2e2-4df2-9412-536288327566",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Execute the irrigation mqtt discovery script [script.irrigation_mqtt_discovery].",
|
|
"natural_language": {
|
|
"trigger": "When the Home Assistant system starts up.",
|
|
"conditions": "There are no conditions; the action runs immediately after the trigger.",
|
|
"action": "Runs the script named 'irrigation mqtt discovery' [script.irrigation_mqtt_discovery]."
|
|
},
|
|
"human_like": "Runs the MQTT discovery script for the irrigation system when Home Assistant starts up.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "54f20352-b2ba-44d7-80f5-44ada2469dbc",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts OR at 00:00:00 daily OR when the state of any of the following entities changes: irrigation program start [input_datetime.irrigation_program_start], back yard status [switch.back_yard_status], front yard status [switch.front_yard_status], back yard day cycle [number.back_yard_day_cycle], front yard day cycle [number.front_yard_day_cycle], rain bird sprinkler 1 status [switch.rain_bird_sprinkler_1_status], rain bird sprinkler 2 status [switch.rain_bird_sprinkler_2_status], rain bird sprinkler 3 status [switch.rain_bird_sprinkler_3_status], rain bird sprinkler 5 status [switch.rain_bird_sprinkler_5_status], rain bird sprinkler 6 status [switch.rain_bird_sprinkler_6_status], rain bird sprinkler 7 status [switch.rain_bird_sprinkler_7_status], rain bird sprinkler 8 status [switch.rain_bird_sprinkler_8_status], rain bird sprinkler 1 program duration [number.rain_bird_sprinkler_1_program_duration], rain bird sprinkler 2 program duration [number.rain_bird_sprinkler_2_program_duration], rain bird sprinkler 3 program duration [number.rain_bird_sprinkler_3_program_duration], rain bird sprinkler 5 program duration [number.rain_bird_sprinkler_5_program_duration], rain bird sprinkler 6 program duration [number.rain_bird_sprinkler_6_program_duration], rain bird sprinkler 7 program duration [number.rain_bird_sprinkler_7_program_duration], rain bird sprinkler 8 program duration [number.rain_bird_sprinkler_8_program_duration]. CONDITIONS: (Get Next Irrigations [script.get_next_irrigations] returns a list of zones with count greater than 0). ACTIONS: Call Get Next Irrigations [script.get_next_irrigations] and store the result in variable 'irrigations'. Then, for each zone in the 'irrigations.zones' list, call MQTT Automated States [script.mqtt_automated_states] with domain 'sensor', a unique_id from the zone data, and a state from the zone data.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in three ways: when Home Assistant first starts up, at midnight every day, or whenever the state changes for any of the irrigation-related settings. These settings include the irrigation program start time, the on/off status for the front and back yards, their watering day cycles, the on/off status for each of the seven sprinkler zones (1, 2, 3, 5, 6, 7, 8), and the programmed duration for each of those sprinkler zones.",
|
|
"conditions": "After the trigger, the automation runs a script to calculate the next irrigation schedules. It only proceeds if this script returns at least one zone that needs to be scheduled.",
|
|
"action": "The automation first runs the 'Get Next Irrigations' script to calculate upcoming watering times. If any zones are scheduled, it then publishes the next run time for each zone as a sensor state using the 'MQTT Automated States' script."
|
|
},
|
|
"human_like": "This automation updates the schedule for the sprinkler system at startup, daily at midnight, or whenever any irrigation setting changes, ensuring the next watering times are always current.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "1c67152d-d153-41a9-b5a7-78ce036fecbf",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time matches any of the following sensor states: sensor.rain_bird_sprinkler_1_start, sensor.rain_bird_sprinkler_2_start, sensor.rain_bird_sprinkler_3_start, sensor.rain_bird_sprinkler_5_start, sensor.rain_bird_sprinkler_6_start, sensor.rain_bird_sprinkler_7_start, sensor.rain_bird_sprinkler_8_start. CONDITIONS: The duration value derived from the number entity (number.{object_id}_program_duration) is greater than 0. ACTIONS: First, execute the script MQTT Automated States [script.mqtt_automated_states] to update a sensor with the trigger time and attributes (indicating the run was triggered by 'irrigation' if rain bird controller rainsensor [binary_sensor.rain_bird_controller_rainsensor] is off, else by 'rain'). Second, if rain bird controller rainsensor [binary_sensor.rain_bird_controller_rainsensor] is off, start irrigation on the corresponding switch [switch.{object_id}] for the specified duration.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered at specific times, which are defined by the states of a list of schedule sensors: sensor.rain_bird_sprinkler_1_start, sensor.rain_bird_sprinkler_2_start, sensor.rain_bird_sprinkler_3_start, sensor.rain_bird_sprinkler_5_start, sensor.rain_bird_sprinkler_6_start, sensor.rain_bird_sprinkler_7_start, and sensor.rain_bird_sprinkler_8_start.",
|
|
"conditions": "The automation only proceeds if the calculated irrigation duration for the triggered sprinkler zone is greater than zero minutes.",
|
|
"action": "The automation first logs the start time of the irrigation cycle by calling the MQTT Automated States [script.mqtt_automated_states] script, marking whether the run was initiated by the irrigation schedule or due to rain. Then, if the rain sensor indicates it is not currently raining (rain bird controller rainsensor [binary_sensor.rain_bird_controller_rainsensor] is off), it commands the corresponding sprinkler valve to start watering for the pre-set duration."
|
|
},
|
|
"human_like": "Starts a scheduled sprinkler zone's watering cycle, but only if the duration is set and it's not currently raining.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "a9040111-cd2f-4dd4-9a6b-518bfa2e90e9",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time reaches 1 minute before the time set in irrigation program start [input_datetime.irrigation_program_start]. CONDITIONS: (rain bird controller rainsensor [binary_sensor.rain_bird_controller_rainsensor] is on) AND (irrigation season [binary_sensor.irrigation_season] is on). ACTIONS: Execute script.set_last_irrigation with data: time set to the hour/minute of the trigger time, date set to the date of the trigger time, switches set to a list of all RainBird switch entities, and reason set to 'rain'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers one minute before the scheduled irrigation program start time, as defined by irrigation program start [input_datetime.irrigation_program_start].",
|
|
"conditions": "It only runs if the rain bird controller rainsensor [binary_sensor.rain_bird_controller_rainsensor] is active (indicating rain) and the irrigation season [binary_sensor.irrigation_season] is also active.",
|
|
"action": "It calls a script named 'set_last_irrigation' to log the event, providing the current time, date, a list of all RainBird irrigation switches, and the reason 'rain'."
|
|
},
|
|
"human_like": "Cancels or logs a skipped irrigation cycle when rain is detected just before the scheduled watering time, but only during the irrigation season.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "33596fc1-7dbf-4837-a589-953f2d5d072a",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR When the time is 15:30:00 OR When the time is 19:00:00. CONDITIONS: The variable 'event' is not None (meaning a reminder event exists for a target date). ACTIONS: Run the Notify [script.notify] script with a title and message from the event variable.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at three specific times each day: 10:00 AM, 3:30 PM, and 7:00 PM.",
|
|
"conditions": "A reminder event must exist. This is determined by checking if the irrigation season start or end date falls on a target date (which is either tomorrow or in 7 days).",
|
|
"action": "Sends a notification using the Notify [script.notify] script. The notification's title and message are generated based on which irrigation season date is approaching."
|
|
},
|
|
"human_like": "Sends reminders to turn the irrigation water shutoff valve on or off when the season start or end date is approaching.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "laser_position_indicator_automation",
|
|
"result": {
|
|
"structured": "TRIGGER: When front garage door [binary_sensor.front_garage_door] changes state. CONDITIONS: The state change is valid (both from_state and to_state are defined) AND (front garage door [binary_sensor.front_garage_door] turned from off to on OR front garage door [binary_sensor.front_garage_door] turned from on to off). ACTIONS: If the door turned on: First, stop garage laser position timer script [script.laser_position_timer]. Then, if garage ceiling outlet [switch.garage_ceiling_outlet] is off, turn it on. Finally, start garage laser position timer script [script.laser_position_timer]. If the door turned off: If garage ceiling outlet [switch.garage_ceiling_outlet] is on, stop garage laser position timer script [script.laser_position_timer] and turn off garage ceiling outlet [switch.garage_ceiling_outlet].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the front garage door [binary_sensor.front_garage_door] changes.",
|
|
"conditions": "The automation only proceeds if the state change is valid (meaning the system can identify both the previous and new state) and the change is either the door opening (from 'off' to 'on') or closing (from 'on' to 'off').",
|
|
"action": "If the door opened, the automation first cancels any running garage laser position timer script [script.laser_position_timer]. Then, if the garage ceiling outlet [switch.garage_ceiling_outlet] is off, it turns it on. Finally, it starts the garage laser position timer script [script.laser_position_timer]. If the door closed, the automation checks if the garage ceiling outlet [switch.garage_ceiling_outlet] is on. If it is, it cancels the garage laser position timer script [script.laser_position_timer] and turns off the garage ceiling outlet [switch.garage_ceiling_outlet]."
|
|
},
|
|
"human_like": "Controls a garage laser indicator light and timer when the garage door opens or closes, turning the light on when the door opens and off when it closes.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "announce_dryer_when_complete",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer status [binary_sensor.dryer_status] changes from on to off OR when washer status [binary_sensor.washer] changes from on to off. CONDITIONS: The time difference between the last change to on and the last change to off is greater than 15 seconds AND the name extracted from the triggering entity's state is not 'Unknown'. ACTIONS: Fire the 'announce_energy' event with the machine name (lowercased) AND call the Notify [script.notify] service with a title and message stating the machine name is finished.",
|
|
"natural_language": {
|
|
"trigger": "When either the dryer status [binary_sensor.dryer_status] or the washer status [binary_sensor.washer] changes from being on to being off.",
|
|
"conditions": "The machine must have been in the 'on' state for more than 15 seconds before turning off, and the system must be able to successfully extract a name from the triggering sensor (the name is not 'Unknown').",
|
|
"action": "The automation fires a custom event named 'announce_energy' containing the machine's name, and then runs the Notify [script.notify] script to send a notification with the message that the specific machine is finished."
|
|
},
|
|
"human_like": "Sends a notification when the dryer or washing machine finishes its cycle, but only if it ran for more than 15 seconds.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "washer_and_dryer_booleans",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer power [sensor.dryer_power] OR washer power [sensor.washer_power] changes state. CONDITIONS: The automation's internal template variable 'continue' evaluates to true, which requires that the trigger is valid (has defined to_state and from_state), the triggered entity is configured, its new state is a number, and a disposition (whether the number exceeds the configured threshold) can be determined. ACTIONS: Call the service determined by the internal logic (homeassistant.turn_on if the power exceeds the threshold, otherwise homeassistant.turn_off) on the target entity determined by the configuration (washer input boolean [input_boolean.washer] for washer power changes, dryer input boolean [input_boolean.dryer] for dryer power changes).",
|
|
"natural_language": {
|
|
"trigger": "When the power reading for either the dryer [sensor.dryer_power] or the washer [sensor.washer_power] changes.",
|
|
"conditions": "The automation checks that the state change is valid and that the new power reading is a number. It then compares this number against a predefined threshold (80 watts for the washer, 150 watts for the dryer). The automation proceeds only if all these checks pass successfully.",
|
|
"action": "If the power reading is above the threshold, it turns on the corresponding input boolean (washer input boolean [input_boolean.washer] or dryer input boolean [input_boolean.dryer]). If the power reading is at or below the threshold, it turns the corresponding input boolean off."
|
|
},
|
|
"human_like": "Turns on a status indicator when the washer or dryer is running (using power consumption), and turns it off when they stop.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "washer_and_dryer_cycle_counter",
|
|
"result": {
|
|
"structured": "TRIGGER: When input boolean test washer [input_boolean.test_washer] changes state OR When Washer Status [binary_sensor.washer_status] changes state. CONDITIONS: The state change is valid (trigger exists, has to_state and from_state defined) AND the new state (next_phase) is different from the old state. ACTIONS: Call the script Calculate Washer Cycle [script.calculate_washer_cycle] with data: prefix='washer_dryer_', source=triggering entity ID, next_phase=new state value.",
|
|
"natural_language": {
|
|
"trigger": "When there is a state change reported by either the input boolean test washer [input_boolean.test_washer] or the Washer Status [binary_sensor.washer_status].",
|
|
"conditions": "The automation only proceeds if the state change is valid, meaning the automation trigger information is complete and the new state is actually different from the previous state.",
|
|
"action": "It triggers the Calculate Washer Cycle [script.calculate_washer_cycle] script, passing along a fixed prefix, the ID of the entity that changed, and its new state."
|
|
},
|
|
"human_like": "Tracks state changes of the washer to calculate and log its cycles.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "3e5e2ffb-d811-4818-a6bd-1f1386c6dbae",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Set variables: prefix = washer_dryer_, binary_sensors list = [test_washer, washer]. Then, for each item in binary_sensors list, call the service MQTT Automated Config [script.mqtt_automated_config] with data: domain = binary_sensor, unique_id = prefix concatenated with the current item, object_id = the current item, device_class = running.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant starts up.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It sets up two variables: a prefix 'washer_dryer_' and a list containing 'test_washer' and 'washer'. It then repeats an action for each item in that list. For each item, it calls the MQTT Automated Config [script.mqtt_automated_config] script, passing it information to create a binary sensor with a device class of 'running', using the prefix and the current list item to form its unique and object identifiers."
|
|
},
|
|
"human_like": "Automatically configures MQTT binary sensors for a washer/dryer when Home Assistant starts.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "0705a3d3-e7e4-475f-9063-70e7c6107c83",
|
|
"result": {
|
|
"structured": "TRIGGER: When leak [binary_sensor.leak] changes to on. CONDITIONS: None. ACTIONS: Execute Notify [script.notify] with title 'Leak Detected!' and message from leak [binary_sensor.leak] attribute 'message'. AND Set leak annoy datetime [input_datetime.leak_annoy] to current time plus 15 minutes.",
|
|
"natural_language": {
|
|
"trigger": "When the leak sensor [binary_sensor.leak] detects a leak and changes its state to 'on'.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Sends a notification using the Notify script [script.notify] with the title 'Leak Detected!' and a message taken from the leak sensor's 'message' attribute. It also sets the leak annoy datetime [input_datetime.leak_annoy] to 15 minutes from the current time."
|
|
},
|
|
"human_like": "Sends a leak alert notification and schedules a follow-up reminder for 15 minutes later.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "391d15c8-d9de-4937-94e9-c6367690ea4a",
|
|
"result": {
|
|
"structured": "TRIGGER: When the scheduled time defined by leak annoy datetime [input_datetime.leak_annoy] is reached. CONDITIONS: leak [binary_sensor.leak] is on. ACTIONS: Execute Notify [script.notify] with data title 'Leak Detected!' and a message, AND set the datetime for leak annoy datetime [input_datetime.leak_annoy].",
|
|
"natural_language": {
|
|
"trigger": "At a specific time scheduled in leak annoy datetime [input_datetime.leak_annoy].",
|
|
"conditions": "The leak sensor [binary_sensor.leak] must be reporting a leak (state 'on').",
|
|
"action": "Send a notification via the Notify [script.notify] script with the title 'Leak Detected!' and a dynamic message, and then update the scheduled time in leak annoy datetime [input_datetime.leak_annoy]."
|
|
},
|
|
"human_like": "Sends persistent leak alerts at scheduled times while a leak is detected, and reschedules the next alert.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "execute_quick_effects_on_ui_updates",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of any of the following entities changes: quick strip brightness [input_number.quick_strip_brightness], quick strip color temp [input_number.quick_strip_color_temp], quick strip hue [input_number.quick_strip_hue], or quick strip effect [input_select.quick_strip_effect]. CONDITIONS: The automation proceeds only if the variable 'continue_actions' evaluates to true. This variable is true when the trigger is valid (a real state change occurred) AND (if the triggering entity is quick strip effect [input_select.quick_strip_effect]) OR (if the triggering entity is not quick strip effect [input_select.quick_strip_effect] AND the current state of quick strip effect [input_select.quick_strip_effect] is not 'off'). ACTIONS: First, a conditional choose action: If the variable 'choose_service' is not equal to 0, then call the service specified by 'choose_service' on the entity hue color temp [input_boolean.hue_color_temp]. The 'choose_service' variable is set to 'input_boolean.turn_on' if the triggering entity is quick strip color temp [input_number.quick_strip_color_temp], 'input_boolean.turn_off' if it is quick strip hue [input_number.quick_strip_hue], 'input_boolean.turn_on' if it is quick strip effect [input_select.quick_strip_effect] and its new state is 'off', or 0 otherwise. Second, call the service script.lzw45_ui_quick_effect.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered whenever the state of the quick strip brightness [input_number.quick_strip_brightness], quick strip color temp [input_number.quick_strip_color_temp], quick strip hue [input_number.quick_strip_hue], or quick strip effect [input_select.quick_strip_effect] changes.",
|
|
"conditions": "The automation only runs if the change is a valid state transition (from one defined state to another different state). Furthermore, if the change was to the quick strip effect [input_select.quick_strip_effect], it always proceeds. If the change was to brightness, color temperature, or hue, it only proceeds if the current selected effect in quick strip effect [input_select.quick_strip_effect] is not set to 'off'.",
|
|
"action": "First, it may adjust a helper switch: if the change was to the color temperature, it turns on the hue color temp [input_boolean.hue_color_temp] switch. If the change was to the hue, it turns off that same switch. If the change was to the effect and the new effect is 'off', it also turns on the hue color temp [input_boolean.hue_color_temp] switch. Then, regardless of the first step, it runs the lzw45 ui quick effect script [script.lzw45_ui_quick_effect] to apply the updated settings."
|
|
},
|
|
"human_like": "Updates a light strip's visual effect whenever its brightness, color, or effect is changed via the user interface, managing an internal mode switch in the process.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "manage_lzw_pixel_effects_and_quick_strip_effects",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of quick strip effect [input_select.quick_strip_effect] OR lzw45 ui pixel effect script [script.lzw45_ui_pixel_effect] OR lzw45 ui custom effect script [script.lzw45_ui_custom_effect] changes. CONDITIONS: The trigger is valid, meaning the previous state and new state are both defined, not 'unavailable' or 'unknown', and are different from each other. ACTIONS: Set the value of lzw45 last effect [input_text.lzw45_last_effect] to a computed value. The value is: if the triggering entity is 'lzw45_ui_pixel_effect' or 'lzw45_party_effect', use the current state of pixel effect [input_select.pixel_effect]; if the triggering entity is 'lzw45_ui_custom_effect', use 'custom'; otherwise, use the new state of the triggering entity.",
|
|
"natural_language": {
|
|
"trigger": "When the state of the quick strip effect [input_select.quick_strip_effect], the lzw45 ui pixel effect script [script.lzw45_ui_pixel_effect], or the lzw45 ui custom effect script [script.lzw45_ui_custom_effect] changes.",
|
|
"conditions": "The change must be valid, meaning the previous state and the new state are both known and available, and they are different from each other.",
|
|
"action": "Updates the lzw45 last effect [input_text.lzw45_last_effect] text field. The value saved depends on which entity triggered the change: if the trigger was from the pixel effect script, it saves the current pixel effect [input_select.pixel_effect] selection; if from the custom effect script, it saves the word 'custom'; otherwise, it saves the new state of the triggering entity itself."
|
|
},
|
|
"human_like": "Keeps track of the last selected lighting effect by saving a reference whenever a relevant effect control is changed.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reaction_keep_sunset_switches_on",
|
|
"result": {
|
|
"structured": "TRIGGER: When passenger sconce [switch.passenger_sconce] OR sconces garage [switch.sconces_garage] OR sconces main entrance [switch.sconces_main_entrance] turns off. CONDITIONS: The trigger context is valid (trigger object exists and has defined to_state and from_state). ACTIONS: Turn on the switch that triggered the automation (passenger sconce [switch.passenger_sconce] OR sconces garage [switch.sconces_garage] OR sconces main entrance [switch.sconces_main_entrance]). Execute Notify [script.notify] with a title and message. Execute Notify Area [script.notify_area] with a message for the living_room area. If the current time is between sunrise and sunset, wait 5 seconds and then turn off outdoor bulbs [light.outdoor_bulbs].",
|
|
"natural_language": {
|
|
"trigger": "When any of the sunset switches—passenger sconce [switch.passenger_sconce], sconces garage [switch.sconces_garage], or sconces main entrance [switch.sconces_main_entrance]—are turned off.",
|
|
"conditions": "The automation only proceeds if the trigger event is valid, meaning the automation system has properly captured the state change from on to off.",
|
|
"action": "Immediately turns the specific switch that was turned off back on. It then sends a notification to the user and a separate notification to the living room area. Finally, if it is currently daytime (between sunrise and sunset), it waits five seconds and turns off the outdoor bulbs [light.outdoor_bulbs]."
|
|
},
|
|
"human_like": "Keeps specific outdoor sconce switches on by turning them back on if someone turns them off, and also manages outdoor lights during the day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reaction_keep_living_room_lamps_available",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following lights becomes unavailable: Jims lamp [light.jims_lamp] OR Mikes lamp [light.mikes_lamp] OR Lindsays lamp [light.lindsays_lamp]. CONDITIONS: The trigger is valid (trigger exists, to_state and from_state are defined) AND the triggering light is the only light among the three that is unavailable (the other two are not unavailable). ACTIONS: Run script Notify [script.notify] with a message that the specific light went unavailable. Then run script Notify Area [script.notify_area] with a message to the living room area asking not to turn off living room lamps and to turn the lamp back on, and providing a voice command example.",
|
|
"natural_language": {
|
|
"trigger": "When any of the three living room lamps — Jims lamp [light.jims_lamp], Mikes lamp [light.mikes_lamp], or Lindsays lamp [light.lindsays_lamp] — changes its state to 'unavailable'.",
|
|
"conditions": "The automation only proceeds if the trigger event is properly defined and, crucially, if the lamp that triggered the event is the only one among the three that is currently unavailable. This means the other two lamps must be in any state other than 'unavailable'.",
|
|
"action": "First, it sends a general notification via the Notify [script.notify] script, announcing that the specific lamp has become unavailable. Then, it sends a targeted notification to the living room area using the Notify Area [script.notify_area] script, instructing occupants not to turn off the living room lamps, to turn the affected lamp back on, and providing a voice command example for future use."
|
|
},
|
|
"human_like": "This automation alerts the household when one of the living room lamps becomes unavailable, but only if it's the only lamp in that state, and asks people in the living room to turn it back on.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "6c4bb70c-e8a7-40c8-9c78-bb077023e3b9",
|
|
"result": {
|
|
"structured": "TRIGGER: When multicast error [sensor.multicast_error] changes state, provided the previous state was not 'unknown' or 'unavailable' AND the new state is not 'unknown' or 'unavailable'. CONDITIONS: The template condition 'continue' evaluates to true, which requires that the trigger's state change attributes contain a valid 'action' AND a valid 'entity_id' AND the state change occurred within the last 10 seconds (to prevent re-triggering from a template reload). ACTIONS: 1. Execute Notify [script.notify] with a message about refreshing the entity. 2. Execute script.get_zwave_entities_from_light_group to get related Z-Wave entities for the light. 3. Wait for 1 second. 4. Refresh the Z-Wave value for the entity obtained from the script response. 5. Perform the action specified in the trigger's 'action' attribute on the target entity.",
|
|
"natural_language": {
|
|
"trigger": "When the multicast error [sensor.multicast_error] sensor changes to a new state, but only if the previous state and the new state are both neither 'unknown' nor 'unavailable'.",
|
|
"conditions": "The automation proceeds only if the state change includes an 'action' attribute and an 'entity_id' attribute, and the state change happened very recently (within the last 10 seconds). This is to prevent the automation from running again if it was triggered by a template reload.",
|
|
"action": "First, it sends a notification to a mobile device stating it is refreshing the entity. Then, it runs a script to find the Z-Wave entities associated with the problematic light group. After a one-second delay, it refreshes the value of the primary Z-Wave entity. Finally, it performs the specific action (like turning on or off) that was stored in the trigger's attributes on the target light entity."
|
|
},
|
|
"human_like": "Automatically attempts to fix Z-Wave multicast errors by refreshing the affected light and performing a corrective action, notifying the user in the process.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "06cfa18a-fa57-406d-94dc-5037e6096b87",
|
|
"result": {
|
|
"structured": "TRIGGER: When wled api error [sensor.wled_api_error] changes state. CONDITIONS: The template condition '{{ continue }}' evaluates to true, meaning: (The list of filtered entities is not empty) AND (The wled api error [sensor.wled_api_error] state timestamp is less than 10 seconds old, relative to a 24-hour window). ACTIONS: 1. Execute script Notify [script.notify] with a message listing the friendly names of the filtered entities. 2. Wait for 1 second. 3. Call the service homeassistant.turn_{{ to_state }} on the filtered entities, where 'to_state' is derived from the 'action' attribute of the trigger.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the wled api error [sensor.wled_api_error] sensor changes its state.",
|
|
"conditions": "The automation proceeds only if a complex set of template conditions are met. First, it uses the trigger's attributes to identify a specific group of lights. It then filters this group to only include lights that are not already in the target state derived from the error. Finally, it checks that the error state change happened very recently (within the last 10 seconds, calculated from a 24-hour rolling window). The automation runs only if there are lights to act upon and the error is new.",
|
|
"action": "Sends a notification to a mobile device listing the lights that will be refreshed. After a one-second delay, it sends a command to turn those lights to the state indicated by the error (e.g., 'on' or 'off')."
|
|
},
|
|
"human_like": "Automatically attempts to fix WLED lighting errors by refreshing affected lights and notifying the user.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "3f1c8cab-0151-4961-854e-80fdb956fcae",
|
|
"result": {
|
|
"structured": "TRIGGER: When doorbell chime active [switch.doorbell_chime_active] remains off for 5 minutes OR When sensor doorbell chime off [sensor.doorbell_chime_off] state equals 5 OR At 8:00:00 daily. CONDITIONS: The template condition '{{ continue }}' evaluates to true (i.e., the variable 'message' is not 'None'). ACTIONS: Execute script Notify [script.notify] with title 'Fixing Doorbell Chime' and a message defined by the 'message' variable, then turn on doorbell chime active [switch.doorbell_chime_active].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in three scenarios: when the doorbell chime active [switch.doorbell_chime_active] has been off for at least five minutes, when the doorbell chime off sensor [sensor.doorbell_chime_off] reports a value of 5, or at 8:00 AM every day.",
|
|
"conditions": "The automation proceeds only if the computed message variable is not empty, meaning a relevant condition for sending a notification is met.",
|
|
"action": "Sends a notification to a mobile device with a message explaining why the chime is being fixed, and then turns the doorbell chime active [switch.doorbell_chime_active] back on."
|
|
},
|
|
"human_like": "Ensures the doorbell chime is turned back on if it has been off for too long or is found off at a scheduled check, and notifies the user about the action.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "0c371ea2-c700-476b-9c3d-b36bd3c9a662",
|
|
"result": {
|
|
"structured": "TRIGGER: When roku living room [media_player.roku_living_room] changes state to playing OR paused, but not from unavailable OR unknown. CONDITIONS: The template condition '{{ living_room_lights | length > 0 }}' evaluates to True. ACTIONS: Turn the light on or off for the entity(s) specified by the 'living_room_lights' variable. The service is 'light.turn_on' if 'light_state' is 'on', else 'light.turn_off'. The target entity(s) are determined by the 'living_room_lights' variable, which is a list derived from a template that considers the movie time switch, the media player state, the current light state, and whether the light was previously turned on by this automation.",
|
|
"natural_language": {
|
|
"trigger": "When the media player roku living room [media_player.roku_living_room] changes its state to either playing or paused, provided it was not previously in an unavailable or unknown state.",
|
|
"conditions": "A template condition must be satisfied, which checks if the list of lights to control, defined by the 'living_room_lights' variable, contains at least one item. This variable is calculated based on several factors: whether the movie time [switch.movie_time] is on, the current state of the media player, the current state of the living room [light.living_room], and whether the light was previously turned on by this same automation.",
|
|
"action": "Turns the specified living room lights on or off. The action (on or off) and the specific lights to target are determined by the internal variables 'light_state' and 'living_room_lights'. The light is turned on when the media is paused and off when the media is playing, but only under the specific conditions evaluated in the 'living_room_lights' template."
|
|
},
|
|
"human_like": "Automatically controls the living room lights based on whether the Roku media player is playing or paused, but only when 'movie time' mode is active to avoid disrupting normal viewing.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "repair_ignore_spook_repair",
|
|
"result": {
|
|
"structured": "TRIGGER: When repair event [event.repair] changes state. CONDITIONS: The template condition evaluates to true, meaning the variable 'target' is not None. ACTIONS: Call service repairs.remove with data issue_id set to the value of the variable 'target'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the repair event [event.repair] changes its state.",
|
|
"conditions": "The automation checks if a computed variable named 'target' has a value. The 'target' variable is set only if the issue_id from the event's attributes contains the string 'timed_event_snapshot_status'.",
|
|
"action": "It removes the specific repair issue by calling the 'repairs.remove' service, providing the issue_id stored in the 'target' variable."
|
|
},
|
|
"human_like": "Automatically dismisses specific, unwanted repair notifications related to timed event snapshots.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "snapshot_status",
|
|
"result": {
|
|
"structured": "TRIGGER: When samba backup [sensor.samba_backup] changes state. CONDITIONS: The trigger is valid (has a defined from_state and to_state) AND the new state (converted to lowercase) is not 'idle'. ACTIONS: Run the Notify [script.notify] script with a title 'Snapshot Status' and a message 'Samba backup <status>.' where <status> is the new state.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the samba backup [sensor.samba_backup] sensor changes.",
|
|
"conditions": "The state change must be valid, meaning both the previous and new states are defined, and the new state (in lowercase) must not be 'idle'.",
|
|
"action": "Sends a notification using the Notify [script.notify] script, with the title 'Snapshot Status' and a message stating the current backup status."
|
|
},
|
|
"human_like": "Sends a notification whenever the Samba backup status changes, unless it's just reporting 'idle'.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "garbage_day_message",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR 15:30:00 OR 19:00:00. CONDITIONS: The current day of the week is Monday. ACTIONS: Run the Notify script [script.notify] with a message variable 'what'. The message is computed as 'Trash and Recycling day tomorrow!' if the recycling variable is true, otherwise 'Trash day tomorrow!'. The recycling variable is true if the number of days from the recycling date [input_datetime.recycling] to tomorrow is an even multiple of 7.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at three specific times during the day: 10:00 AM, 3:30 PM, and 7:00 PM.",
|
|
"conditions": "The automation only runs if the current day is a Monday.",
|
|
"action": "It sends a notification using the Notify script [script.notify]. The message content is determined by a calculation: it checks if tomorrow is a recycling collection day based on the recycling date [input_datetime.recycling]. If it is, the message will be 'Trash and Recycling day tomorrow!'. If not, the message will be 'Trash day tomorrow!'."
|
|
},
|
|
"human_like": "Sends a reminder on Monday mornings, afternoons, and evenings about whether tomorrow is trash day or trash and recycling day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "change_filters_message",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR when the time is 19:00:00. CONDITIONS: The current day is the 1st AND the current month is January (1) OR April (4) OR July (7) OR October (10). ACTIONS: Run the Notify [script.notify] script with the message 'Change HVAC filter.'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at 10:00 AM or at 7:00 PM.",
|
|
"conditions": "The automation only runs if the current day is the first day of the month, and the month is either January, April, July, or October.",
|
|
"action": "Sends a notification by running the Notify [script.notify] script with the message 'Change HVAC filter.'."
|
|
},
|
|
"human_like": "Sends a reminder to change the HVAC filter on the first day of every quarter (January, April, July, October) at 10 AM and 7 PM.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "mosby_heartworm",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR when the time is 19:00:00. CONDITIONS: The current day of the month is the 1st. ACTIONS: Run the Notify [script.notify] script with the message 'Give mosby heartworm and flee medication.'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at 10:00 AM or at 7:00 PM.",
|
|
"conditions": "The automation only runs if the current day of the month is the 1st.",
|
|
"action": "It sends a notification by running the Notify [script.notify] script, which delivers the message 'Give mosby heartworm and flee medication.'."
|
|
},
|
|
"human_like": "Sends a reminder to give Mosby heartworm and flea medication on the first day of the month, both in the morning and evening.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "dst_warning",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 10:00:00 OR when the time is 19:00:00. CONDITIONS: The value of daylight savings days until [sensor.daylight_savings_days_until] is equal to 7 OR 1. ACTIONS: Execute the Notify [script.notify] script with a message that includes the number of days until daylight savings and the action phrase from daylight savings phrase [sensor.daylight_savings_phrase].",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at 10:00 AM or 7:00 PM.",
|
|
"conditions": "It only proceeds if the sensor daylight savings days until [sensor.daylight_savings_days_until] reports that there are exactly 7 or 1 day left until the daylight savings change.",
|
|
"action": "It sends a notification using the Notify [script.notify] script. The message informs the user how many days are left until daylight savings and what will happen (e.g., 'spring forward' or 'fall back'), using the phrase from the daylight savings phrase [sensor.daylight_savings_phrase] sensor."
|
|
},
|
|
"human_like": "Sends a reminder notification one week and one day before a daylight savings time change.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "outdoor_lights_on_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When the sun sets OR When the sun rises. CONDITIONS: None. ACTIONS: Call the Sunrise Sunset [script.sunrise_sunset] script, passing the triggered event (sunset or sunrise) and the current state of the seasonal lights [sensor.seasonal_lights] as parameters.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered at the exact moment of sunset or sunrise.",
|
|
"conditions": "There are no conditions that must be met for the action to run.",
|
|
"action": "It runs the Sunrise Sunset [script.sunrise_sunset] script, telling it whether the trigger was a sunset or sunrise event and what the current seasonal lights [sensor.seasonal_lights] setting is."
|
|
},
|
|
"human_like": "Automatically runs a script to manage outdoor lights at sunset and sunrise, using the current seasonal setting.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "clear_persistent_notifications_around_bedtime",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 22:00:00. CONDITIONS: None. ACTIONS: Dismiss all persistent notifications.",
|
|
"natural_language": {
|
|
"trigger": "At 10:00 PM every day.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Clears all persistent notifications from the system."
|
|
},
|
|
"human_like": "Automatically clears all system notifications at bedtime.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "simple_thermostat",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event starts on thermostat calendar [calendar.thermostat]. CONDITIONS: The variable 'temperature' derived from the event summary is not None. ACTIONS: Set the temperature of living room thermostat [climate.living_room_thermostat] to the value of the variable 'temperature'.",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled event begins on the thermostat calendar [calendar.thermostat].",
|
|
"conditions": "The event summary must correspond to a valid temperature setting ('heat' or 'cool') defined in the automation's configuration.",
|
|
"action": "Sets the living room thermostat [climate.living_room_thermostat] to the temperature associated with the calendar event."
|
|
},
|
|
"human_like": "Adjusts the living room thermostat based on scheduled events in a calendar.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "d11bb907-e656-4a0b-8f03-ecbbf3e40a3a",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 00:00:00 (midnight) OR when an event named 'run_manual_schedule_update' occurs. CONDITIONS: None. ACTIONS: Calculate variables 'day' and 'week' based on mike run program [input_datetime.mike_run_program]. If the calculated week number is between 1 and 10 inclusive, then call script 'script.set_run_schedule' with parameters: program ID '718485f4-3031-46a3-bce5-990189a6e06c', the calculated week, weekly_todo as mike this week todo [todo.mike_this_week], daily_todo as mike today todo [todo.mike_today], and max_heart_rate 200. Then, call script 'script.set_mikes_daily_list'. Finally, fire an event named 'roll_up_todo'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs either at midnight (00:00:00) or when a custom event called 'run_manual_schedule_update' is triggered.",
|
|
"conditions": "There are no explicit conditions that must be met for the actions to run.",
|
|
"action": "First, it calculates the current day and week number based on the date set in mike run program [input_datetime.mike_run_program]. If the week number is between 1 and 10, it updates a running schedule by calling a script with specific parameters, including the target weekly and daily todo lists: mike this week todo [todo.mike_this_week] and mike today todo [todo.mike_today]. It then calls another script to set Mike's daily list. Finally, it fires an event to signal that todos should be rolled up."
|
|
},
|
|
"human_like": "Sets up Mike's weekly and daily running schedule and todo lists at midnight or on demand, based on his training program start date.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_game_room_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of game room switch [switch.game_room_switch] changes. CONDITIONS: The trigger is valid (to_state and from_state are defined) AND the new state of game room switch [switch.game_room_switch] is either 'on' or 'off'. ACTIONS: Turn the game room bookcase outlet [switch.game_room_bookcase_outlet] and game room buffet outlet [switch.game_room_buffet_outlet] to the same state (on or off) as game room switch [switch.game_room_switch].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the game room switch [switch.game_room_switch] changes.",
|
|
"conditions": "The automation only proceeds if the trigger is properly defined and the new state of the game room switch is either 'on' or 'off'.",
|
|
"action": "The automation turns on or off the game room bookcase outlet [switch.game_room_bookcase_outlet] and the game room buffet outlet [switch.game_room_buffet_outlet] to match the state of the game room switch."
|
|
},
|
|
"human_like": "Syncs the lights on the bookcase and buffet outlets in the game room with the main game room switch.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_basement_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When basement stairs [switch.basement_stairs] changes state. CONDITIONS: The trigger is valid AND the new state is either 'on' or 'off'. ACTIONS: Turn basement cans [switch.basement_cans] to the same state (on/off) as basement stairs [switch.basement_stairs].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the basement stairs [switch.basement_stairs] switch changes.",
|
|
"conditions": "The automation checks that the trigger event is valid and that the new state of the switch is either 'on' or 'off'.",
|
|
"action": "Sets the basement cans [switch.basement_cans] switch to match the new state (on or off) of the basement stairs [switch.basement_stairs] switch."
|
|
},
|
|
"human_like": "Synchronizes the basement can lights to turn on or off whenever the basement stairs light switch is toggled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_deck_string_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When deck mood lighting [switch.deck_mood_lighting] OR patio string light [switch.patio_string_light] changes state. CONDITIONS: The trigger is valid (has to_state and from_state) AND the new state is either 'on' or 'off' AND there is at least one other target switch from the list (deck mood lighting [switch.deck_mood_lighting], patio string light [switch.patio_string_light]) that is not the triggering entity and is not already in the new state. ACTIONS: Turn the other target switch(es) to the same state (on or off) as the triggering switch.",
|
|
"natural_language": {
|
|
"trigger": "Whenever either the deck mood lighting [switch.deck_mood_lighting] or the patio string light [switch.patio_string_light] changes its state.",
|
|
"conditions": "The automation checks that the state change is valid and that the new state is either 'on' or 'off'. It also ensures there is at least one other light from the group (deck mood lighting or patio string light) that is not the one that triggered the change and is currently in a different state.",
|
|
"action": "The automation turns the other light(s) to match the new state of the light that triggered the change, synchronizing them."
|
|
},
|
|
"human_like": "This automation synchronizes the deck mood lighting and patio string light, so when one is turned on or off, the other follows.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_cabinet_string_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When kitchen cabinet [switch.kitchen_cabinet] changes state. CONDITIONS: The list of target entities to be toggled is not empty. ACTIONS: Turn the target entities to the same state as the trigger entity (on or off). The target entities are determined by: starting with a list containing kitchen cabinet 2 [switch.kitchen_cabinet_2] and kitchen uplight [switch.kitchen_uplight]; if indoor holiday [binary_sensor.indoor_holiday] is on, kitchen uplight [switch.kitchen_uplight] is removed from the list; from the resulting list, any entity already in the same state as the trigger entity is removed. The remaining entities are the targets.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the kitchen cabinet [switch.kitchen_cabinet] changes.",
|
|
"conditions": "The automation checks that there is at least one target switch that needs to be toggled. The target list is built by considering the kitchen cabinet 2 [switch.kitchen_cabinet_2] and the kitchen uplight [switch.kitchen_uplight]. If the indoor holiday [binary_sensor.indoor_holiday] is active, the kitchen uplight is excluded from the list. Then, any switch that is already in the same state as the triggering kitchen cabinet switch is filtered out. The automation proceeds only if at least one switch remains in the target list.",
|
|
"action": "The automation turns the identified target switches to the same state (on or off) as the kitchen cabinet [switch.kitchen_cabinet]."
|
|
},
|
|
"human_like": "This automation synchronizes the kitchen cabinet lights with the main cabinet switch, optionally excluding the uplight during holiday mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "ups_notify_power_outage",
|
|
"result": {
|
|
"structured": "TRIGGER: When house power status [binary_sensor.house_power_status] changes to on OR When house power status [binary_sensor.house_power_status] changes to on and remains for 1 minute OR When house power status [binary_sensor.house_power_status] changes from on to off. CONDITIONS: The trigger is valid (trigger object exists and has defined to_state and from_state). ACTIONS: Send a notification via script.notify with a message that depends on the trigger ID. If the trigger ID is 'power off', then also execute the power down sequence script [script.power_down_sequence].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the house power status [binary_sensor.house_power_status] changes to 'on', when it stays 'on' for one full minute, or when it changes from 'on' back to 'off'.",
|
|
"conditions": "The automation only proceeds if the trigger event is valid, meaning the automation system can access both the previous and new state of the sensor.",
|
|
"action": "It sends a notification using the Notify [script.notify] script. The content of the message changes based on which trigger fired: an initial outage warning, a confirmation that power is still out, or a cancellation notice. If the trigger that fired is the one where power was 'on' for a full minute, it also runs the power down sequence script [script.power_down_sequence]."
|
|
},
|
|
"human_like": "Monitors the house power status and sends notifications about outages, starting a power-down procedure if the outage lasts for a full minute.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "mqtt_store_and_automate_weights",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts OR When master scale weight [sensor.master_scale_weight] changes state. CONDITIONS: (Trigger is Home Assistant start) OR (Trigger is a new weight reading AND the new weight reading is a number AND the weight reading falls within a 20 lb range of a configured person's current or initial weight). ACTIONS: If trigger is Home Assistant start, then for each configured person, call script MQTT Automated Config [script.mqtt_automated_config] to create a sensor entity. If a valid weight reading is matched to a person, call script MQTT Automated States [script.mqtt_automated_states] to update that person's weight sensor.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs either when Home Assistant first starts up, or whenever the master scale weight [sensor.master_scale_weight] sensor reports a new value.",
|
|
"conditions": "If the automation was triggered by the Home Assistant start event, it proceeds directly to its configuration action. If it was triggered by a new weight reading, it checks if the reading is a numeric value and if that value is within 20 pounds of a pre-configured weight for either person.petro (initial 200 lb) or person.lambo (initial 145 lb). The comparison uses the person's last known weight sensor value, or their initial weight if no sensor exists yet.",
|
|
"action": "On startup, the automation creates MQTT sensor entities for each configured person to track their weight. When a new weight reading from the master scale matches a person's expected range, it updates that specific person's weight sensor with the new value."
|
|
},
|
|
"human_like": "Automatically creates and updates individual weight sensors for household members based on readings from a shared master scale, matching the weight to the closest person.",
|
|
"complexity": "high"
|
|
}
|
|
}
|
|
] |