1965 lines
216 KiB
JSON
1965 lines
216 KiB
JSON
[
|
|
{
|
|
"id": "'1608298913447'",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Person [person.jon] leaves zone.home. CONDITIONS: None. ACTIONS: Send a notification to Mobile Notification Device [device_id: a9570941d9dcebbd74ecb611f829a0f2].",
|
|
"natural_language": {
|
|
"trigger": "When Jon Person [person.jon] leaves the area defined by the zone named 'home'.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Sends a notification to the mobile device identified by Mobile Notification Device [device_id: a9570941d9dcebbd74ecb611f829a0f2]."
|
|
},
|
|
"human_like": "Sends a notification to a mobile device when Jon leaves the home area.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1655124375247'",
|
|
"result": {
|
|
"structured": "TRIGGER: When Kodi Media Player [media_player.kodi] is turned on. CONDITIONS: None. ACTIONS: Activate Lutron Dark Scene [scene.lutron_dark].",
|
|
"natural_language": {
|
|
"trigger": "When the Kodi Media Player [media_player.kodi] is turned on.",
|
|
"conditions": "There are no conditions.",
|
|
"action": "Activates the Lutron Dark Scene [scene.lutron_dark]."
|
|
},
|
|
"human_like": "Turns on a dark lighting scene when the Kodi media player starts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1737827992080'",
|
|
"result": {
|
|
"structured": "TRIGGER: When the command 'testing' is spoken to the voice assistant. CONDITIONS: None. ACTIONS: Send an announcement with the message 'Test is successful!' to Office Voice Assistant Satellite [assist_satellite.home_assistant_voice_office_assist_satellite].",
|
|
"natural_language": {
|
|
"trigger": "When someone says the voice command 'testing'.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "The Office Voice Assistant Satellite [assist_satellite.home_assistant_voice_office_assist_satellite] will announce the message 'Test is successful!'."
|
|
},
|
|
"human_like": "When you say 'testing', the voice assistant in the office will announce that the test was successful.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "transition_to_sleep_mode",
|
|
"result": {
|
|
"structured": "TRIGGER: At 20:00:00 daily. CONDITIONS: Harmony Hub Sensor [sensor.harmony_hub] is PowerOff AND Extended Away Mode [input_boolean.extended_away_mode] is off AND Penthouse Occupied [binary_sensor.penthouse_occupied] is off. ACTIONS: Execute script.set_thermostat_preset with data: thermostat_entity = Upstairs Climate [climate.upstairs], preset = sleep.",
|
|
"natural_language": {
|
|
"trigger": "Every day at 8:00 PM.",
|
|
"conditions": "The Harmony Hub Sensor [sensor.harmony_hub] must be in the 'PowerOff' state, the Extended Away Mode [input_boolean.extended_away_mode] must be turned off, and the Penthouse Occupied [binary_sensor.penthouse_occupied] sensor must indicate the penthouse is unoccupied.",
|
|
"action": "Runs a script to set the Upstairs Climate [climate.upstairs] thermostat to 'sleep' preset mode."
|
|
},
|
|
"human_like": "Sets the upstairs thermostat to sleep mode at 8 PM if the entertainment system is off, away mode is disabled, and the penthouse is unoccupied.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "get_downstairs_thermostat_temps",
|
|
"result": {
|
|
"structured": "TRIGGER: When the automation is triggered by the blueprint 'climate/get_thermostat_temps.yaml'. CONDITIONS: None. ACTIONS: Execute the blueprint 'climate/get_thermostat_temps.yaml' with the input climate_entity set to Downstairs Climate [climate.downstairs].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered according to the logic defined within the blueprint 'climate/get_thermostat_temps.yaml'.",
|
|
"conditions": "There are no explicit conditions defined in this automation; any conditions are handled within the blueprint.",
|
|
"action": "Runs the blueprint 'climate/get_thermostat_temps.yaml', which will perform actions related to the Downstairs Climate [climate.downstairs] entity as defined in the blueprint."
|
|
},
|
|
"human_like": "Uses a blueprint to get temperature information from the downstairs thermostat.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "get_upstairs_thermostat_temps",
|
|
"result": {
|
|
"structured": "TRIGGER: Not defined in automation; blueprint trigger unknown. CONDITIONS: Not defined in automation; blueprint conditions unknown. ACTIONS: Not defined in automation; blueprint actions unknown.",
|
|
"natural_language": {
|
|
"trigger": "The automation uses a blueprint, so the specific triggers are not defined in this YAML and are determined by the blueprint 'climate/get_thermostat_temps.yaml'.",
|
|
"conditions": "The automation uses a blueprint, so the specific conditions are not defined in this YAML and are determined by the blueprint 'climate/get_thermostat_temps.yaml'.",
|
|
"action": "The automation uses a blueprint, so the specific actions are not defined in this YAML and are determined by the blueprint 'climate/get_thermostat_temps.yaml'."
|
|
},
|
|
"human_like": "This automation uses a blueprint to manage or retrieve temperature settings for the upstairs thermostat.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_minimum_attic_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Attic Temp Min [sensor.attic_temp_min] changes state. CONDITIONS: None. ACTIONS: Update Min Attic Temp [input_number.min_attic_temp] with the minimum temperature value from Attic Temp Min [sensor.attic_temp_min].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the temperature sensor Attic Temp Min [sensor.attic_temp_min] reports a new value.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Sets the value of the input number Min Attic Temp [input_number.min_attic_temp] to the minimum temperature reading from the sensor."
|
|
},
|
|
"human_like": "Keeps track of the lowest temperature recorded in the attic.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_maximum_attic_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Attic Temp Max [sensor.attic_temp_max] state changes. CONDITIONS: None. ACTIONS: Update Max Attic Temp [input_number.max_attic_temp] with the maximum temperature value from Attic Temp Max [sensor.attic_temp_max].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the temperature reading from the Attic Temp Max [sensor.attic_temp_max] sensor changes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Sets the value of the Max Attic Temp [input_number.max_attic_temp] to the new maximum temperature value reported by the sensor."
|
|
},
|
|
"human_like": "Keeps track of the highest temperature recorded in the attic.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_minimum_garage_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Garage Temp Min [sensor.garage_temp_min] changes state. CONDITIONS: None. ACTIONS: Update Min Garage Temp [input_number.min_garage_temp] to the minimum temperature value from Garage Temp Min [sensor.garage_temp_min].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Garage Temp Min [sensor.garage_temp_min] sensor updates its value.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Sets the Min Garage Temp [input_number.min_garage_temp] to the lowest temperature value recorded by the Garage Temp Min [sensor.garage_temp_min] sensor."
|
|
},
|
|
"human_like": "Keeps track of the lowest temperature recorded in the garage.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_maximum_garage_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Garage Temp Max [sensor.garage_temp_max] state changes. CONDITIONS: None. ACTIONS: Set Max Garage Temp [input_number.max_garage_temp] to the maximum value from Garage Temp Max [sensor.garage_temp_max].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the temperature reading from the Garage Temp Max [sensor.garage_temp_max] sensor changes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Updates the Max Garage Temp [input_number.max_garage_temp] input number to reflect the maximum temperature value recorded by the sensor."
|
|
},
|
|
"human_like": "Keeps track of the highest temperature recorded in the garage.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_minimum_outdoor_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Porch Temp Min [sensor.porch_temp_min] state changes. CONDITIONS: None. ACTIONS: Set Min Outdoor Temp [input_number.min_outdoor_temp] to the minimum value from Porch Temp Min [sensor.porch_temp_min].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the temperature reading from the Porch Temp Min [sensor.porch_temp_min] sensor changes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Updates the Min Outdoor Temp [input_number.min_outdoor_temp] input number to reflect the new minimum outdoor temperature value."
|
|
},
|
|
"human_like": "Keeps track of the lowest outdoor temperature by updating a helper value whenever the porch temperature sensor reports a new reading.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_maximum_outdoor_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of Porch Temp Max [sensor.porch_temp_max] changes. CONDITIONS: None. ACTIONS: Update Max Outdoor Temp [input_number.max_outdoor_temp] to the maximum value recorded by Porch Temp Max [sensor.porch_temp_max].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the temperature sensor Porch Temp Max [sensor.porch_temp_max] reports a new reading.",
|
|
"conditions": "This automation runs without any additional conditions.",
|
|
"action": "Sets the value of Max Outdoor Temp [input_number.max_outdoor_temp] to track the highest temperature recorded by the Porch Temp Max [sensor.porch_temp_max] sensor."
|
|
},
|
|
"human_like": "Keeps track of the highest outdoor temperature recorded on the porch.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_downstairs_hvac",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Doors Windows [binary_sensor.downstairs_doors_windows] changes from closed (off) to open (on) AND remains open for 2 minutes. CONDITIONS: None. ACTIONS: Turn off Downstairs Climate [climate.downstairs].",
|
|
"natural_language": {
|
|
"trigger": "When the Downstairs Doors Windows [binary_sensor.downstairs_doors_windows] sensor detects that a door or window has been open for at least two minutes.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Turns off the Downstairs Climate [climate.downstairs] HVAC system."
|
|
},
|
|
"human_like": "Turns off the downstairs heating or cooling if a door or window is left open for two minutes to save energy.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_downstairs_hvac",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Doors Windows [binary_sensor.downstairs_doors_windows] changes from open (on) to closed (off). CONDITIONS: Downstairs Climate [climate.downstairs] is off. ACTIONS: Turn on Downstairs Climate [climate.downstairs].",
|
|
"natural_language": {
|
|
"trigger": "When the Downstairs Doors Windows [binary_sensor.downstairs_doors_windows] sensor changes from reporting an open door or window to reporting all doors and windows are closed.",
|
|
"conditions": "The Downstairs Climate [climate.downstairs] system must currently be in the 'off' state.",
|
|
"action": "Turn on the Downstairs Climate [climate.downstairs] system."
|
|
},
|
|
"human_like": "Turns on the downstairs heating or cooling system after all doors and windows have been closed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "calculate_astronomical_condition",
|
|
"result": {
|
|
"structured": "TRIGGER: When the sun sets. CONDITIONS: None. ACTIONS: Set variable 'first_hour' to the hour of the next astronomical sunset from Astro Weather Sun Next Setting [sensor.astroweather_white_rabbit_gardens_sun_next_setting_astronomical]. Then, execute script 'calculate_weather_metrics' with the following parameters: weather_entity is Astro Weather [weather.astroweather_white_rabbit_gardens], forecast_type is 'hourly', first_hour is the variable 'first_hour', last_hour is 23, and metrics_list includes calculations to update Average Astro Condition [input_number.average_astro_condition], Average Astro Cloudless Percentage [input_number.average_astro_cloudless_percentage], Average Astro Seeing Percentage [input_number.average_astro_seeing_percentage], and Average Astro Transparency Percentage [input_number.average_astro_transparency_percentage].",
|
|
"natural_language": {
|
|
"trigger": "The automation starts at sunset.",
|
|
"conditions": "There are no conditions that must be met for the action to run.",
|
|
"action": "First, it calculates the hour of the next astronomical sunset based on the Astro Weather Sun Next Setting [sensor.astroweather_white_rabbit_gardens_sun_next_setting_astronomical]. Then, it runs a script called 'calculate_weather_metrics' using the Astro Weather [weather.astroweather_white_rabbit_gardens] entity. The script processes hourly forecasts from the calculated sunset hour until 11 PM, updating several average astronomical metrics: the condition, cloudless percentage, seeing percentage, and transparency percentage."
|
|
},
|
|
"human_like": "Calculates and updates average astronomical weather metrics for the evening, starting at sunset.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "check_freezing_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Openweathermap Temperature [sensor.openweathermap_temperature] OR Porch Sensor Temperature [sensor.porch_sensor_temperature] falls below 30 OR When Nighttime [input_boolean.nighttime] turns from off to on. CONDITIONS: Nighttime [input_boolean.nighttime] is off OR the trigger is the 'asleep' trigger (Nighttime turning on). ACTIONS: Set variable 'next_hour' to the next hour (or hour after next if within 5 minutes of the hour). Set variable 'last_hour' to 0 if triggered by temperature, or 12 if triggered by nighttime. Run script.calculate_weather_metrics with weather_entity: Openweathermap Weather [weather.openweathermap], forecast_type: hourly, first_hour: {{ next_hour }}, last_hour: {{ last_hour }}, metrics_list targeting Minimum Outdoor Temperature [input_number.minimum_outdoor_temperature] for temperature below 33 over 120 minutes. If Minimum Outdoor Temperature [input_number.minimum_outdoor_temperature] is below 25, then turn on Freezing Temperature [input_boolean.freezing_temperature].",
|
|
"natural_language": {
|
|
"trigger": "This automation runs when either the Openweathermap Temperature [sensor.openweathermap_temperature] or the Porch Sensor Temperature [sensor.porch_sensor_temperature] drops below 30 degrees, or when the Nighttime [input_boolean.nighttime] mode is activated (changes from off to on).",
|
|
"conditions": "The automation only proceeds if the Nighttime [input_boolean.nighttime] mode is currently off, or if the trigger that started it was specifically the Nighttime mode turning on.",
|
|
"action": "First, it calculates two time variables. It determines the next full hour to start checking the weather forecast, and it sets a duration for the forecast check (12 hours if triggered by nighttime, otherwise a shorter check). It then calls a script to analyze the hourly weather forecast from Openweathermap Weather [weather.openweathermap], looking for temperatures predicted to fall below 33 degrees within a 120-minute window, and stores the result in Minimum Outdoor Temperature [input_number.minimum_outdoor_temperature]. Finally, if that calculated minimum temperature is below 25 degrees, it turns on the Freezing Temperature [input_boolean.freezing_temperature] indicator."
|
|
},
|
|
"human_like": "Checks for freezing conditions by monitoring current temperatures and nighttime mode, then analyzes the weather forecast to predict severe cold and activate a freezing alert if needed.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_freezing_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: When Openweathermap Temperature [sensor.openweathermap_temperature] rises above 33 OR when Porch Sensor Temperature [sensor.porch_sensor_temperature] rises above 33. CONDITIONS: None. ACTIONS: Turn off Freezing Temperature [input_boolean.freezing_temperature].",
|
|
"natural_language": {
|
|
"trigger": "When either the Openweathermap Temperature [sensor.openweathermap_temperature] or the Porch Sensor Temperature [sensor.porch_sensor_temperature] rises above 33 degrees.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Turns off the Freezing Temperature [input_boolean.freezing_temperature] indicator."
|
|
},
|
|
"human_like": "Turns off the freezing temperature alert when either the outside or porch temperature rises above freezing.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "check_salt_system_low_temperature",
|
|
"result": {
|
|
"structured": "TRIGGER: At 06:00:00 daily. CONDITIONS: None. ACTIONS: Turn off Salt System Low Temperature [input_boolean.salt_system_low_temperature]. Then, execute script.calculate_weather_metrics with weather entity Openweathermap Weather [weather.openweathermap], forecast type daily, number of days 3, and metrics list to calculate Minimum Daily Temperature [input_number.minimum_daily_temperature] and Maximum Daily Temperature [input_number.maximum_daily_temperature]. After that, IF (Minimum Daily Temperature [input_number.minimum_daily_temperature] is below 55 OR Maximum Daily Temperature [input_number.maximum_daily_temperature] is below 55) THEN turn on Salt System Low Temperature [input_boolean.salt_system_low_temperature].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 6:00 AM.",
|
|
"conditions": "There are no conditions that must be met before proceeding with the actions.",
|
|
"action": "First, it turns off the Salt System Low Temperature [input_boolean.salt_system_low_temperature] indicator. Then, it runs a weather calculation script using the Openweathermap Weather [weather.openweathermap] entity to get a 3-day daily forecast. This script calculates values for the Minimum Daily Temperature [input_number.minimum_daily_temperature] and Maximum Daily Temperature [input_number.maximum_daily_temperature] inputs. Finally, if either the calculated minimum or maximum daily temperature is below 55 degrees, it turns the Salt System Low Temperature [input_boolean.salt_system_low_temperature] indicator back on."
|
|
},
|
|
"human_like": "Checks the forecast each morning and warns if low temperatures are expected by turning on an indicator, ensuring the salt system is protected.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_device_initialization_catch_22",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Turn on Device Initialization Catch 22 [input_boolean.device_initialization_catch_22], then wait for 1 minute and 30 seconds, then turn off Device Initialization Catch 22 [input_boolean.device_initialization_catch_22].",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant first starts up.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Immediately turns on the Device Initialization Catch 22 [input_boolean.device_initialization_catch_22] flag, waits for one minute and thirty seconds, and then turns the flag off."
|
|
},
|
|
"human_like": "Sets a temporary flag for 90 seconds when Home Assistant starts, likely to manage device initialization order.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_power_outage",
|
|
"result": {
|
|
"structured": "TRIGGER: When Cyber1 Status Data [sensor.cyber1_status_data] changes to state 'OB DISCHRG' AND remains for 1 minute OR when Home Assistant starts. CONDITIONS: Cyber1 Status Data [sensor.cyber1_status_data] is in state 'OB DISCHRG'. ACTIONS: Wait for a random delay between 2 and 15 seconds. Set UPS Power Out Datetime [input_datetime.ups_power_out] to the current date and time. Register a mobile notification with tag 'power_out', title 'Warning:', message 'Power is out, shutting down PC.', and channel 'critical'. Send a notification with the same details to the mobile destination. Disable the recorder. Execute the script 'turn_off_pc'. If Vacuum Timer [timer.vacuum] is idle, then stop Vacuum [vacuum.ecovacs_deebot_none].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers either when the Cyber1 Status Data [sensor.cyber1_status_data] reports a status of 'OB DISCHRG' (indicating the UPS is on battery) and remains in that state for one minute, or immediately when Home Assistant starts up.",
|
|
"conditions": "The automation only proceeds if the Cyber1 Status Data [sensor.cyber1_status_data] is confirmed to be in the 'OB DISCHRG' state at the time of evaluation.",
|
|
"action": "After a random short delay, the automation logs the power outage time, sends a critical mobile notification warning that the power is out and the PC is shutting down, disables the recorder, runs a script to turn off the PC, and if the vacuum is idle, it also stops the vacuum to conserve power."
|
|
},
|
|
"human_like": "This automation manages a power outage by notifying the user, safely shutting down the PC, and stopping the vacuum to conserve UPS battery power.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_ups_critical",
|
|
"result": {
|
|
"structured": "TRIGGER: When Cyber1 Battery Runtime [sensor.cyber1_battery_runtime] falls below 420 OR when Home Assistant starts. CONDITIONS: Cyber1 Battery Runtime [sensor.cyber1_battery_runtime] is below 420. ACTIONS: Wait for a random delay between 2 and 15 seconds. Set UPS Battery Critical Datetime [input_datetime.ups_battery_critical] to the current date and time. Register a mobile notification with tag 'ups_battery', title 'Warning:', message 'UPS battery is critical, shutting down RPi.', and channel 'critical'. Send a notification to mobile with the same details. Wait for 3 seconds. Shut down the host system.",
|
|
"natural_language": {
|
|
"trigger": "This automation runs when the Cyber1 Battery Runtime [sensor.cyber1_battery_runtime] drops below 420, or when Home Assistant itself starts up.",
|
|
"conditions": "It only proceeds if the Cyber1 Battery Runtime [sensor.cyber1_battery_runtime] is confirmed to be below 420.",
|
|
"action": "After a random delay of 2 to 15 seconds, it records the current time in UPS Battery Critical Datetime [input_datetime.ups_battery_critical]. It then sends a critical mobile notification warning that the UPS battery is low and the Raspberry Pi will shut down. Finally, after a 3-second pause, it powers down the host system."
|
|
},
|
|
"human_like": "Safely shuts down the system and sends a warning when the UPS battery becomes critically low.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_power_restoration",
|
|
"result": {
|
|
"structured": "TRIGGER: When Cyber1 Status Data [sensor.cyber1_status_data] changes to state 'OL CHRG' AND remains for 2 minutes OR when Home Assistant starts. CONDITIONS: Cyber1 Status Data [sensor.cyber1_status_data] is in state 'OL CHRG'. ACTIONS: Wait for a random delay between 2 and 15 seconds. Set variables for a notification message. Execute script.register_mobile_notification with the constructed tag registry data. Execute script.send_notification with the constructed notification data. Execute script.remove_mobile_notification to clear the 'power_out' tag. Execute script.remove_mobile_notification to clear the 'ups_battery' tag. Send a Wake-on-LAN magic packet to MAC address 98-EE-CB-A6-80-EA. Wait for 2 minutes. Enable the recorder. Send Vacuum [vacuum.ecovacs_deebot_none] to its base. Turn off Theater Open [input_boolean.theater_open]. Turn off Remote Harmony Hub [remote.harmony_hub].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers either when the Cyber1 Status Data [sensor.cyber1_status_data] reports 'OL CHRG' (indicating power restoration) and stays in that state for two minutes, or immediately when Home Assistant itself starts up.",
|
|
"conditions": "It only proceeds if the Cyber1 Status Data [sensor.cyber1_status_data] is confirmed to be in the 'OL CHRG' state at the moment the conditions are checked.",
|
|
"action": "After a short, random delay, it sends a mobile notification confirming power restoration, including timestamps from the outage. It then clears any previous power outage notifications, sends a command to wake up a computer, waits two minutes, re-enables the recorder, sends the vacuum back to its dock, and turns off the theater's open status and the Harmony Hub remote."
|
|
},
|
|
"human_like": "This automation handles the system recovery after a power outage, sending notifications, waking up a PC, and resetting various devices like the vacuum and home theater.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reboot_nut_service",
|
|
"result": {
|
|
"structured": "TRIGGER: When Cyber1 Status [sensor.cyber1_status] becomes unavailable OR when Home Assistant starts. CONDITIONS: Cyber1 Status [sensor.cyber1_status] is unavailable. ACTIONS: Wait for a random delay between 2 and 15 seconds, then execute the shell command reboot_nut_service.",
|
|
"natural_language": {
|
|
"trigger": "This automation runs when the Cyber1 Status [sensor.cyber1_status] sensor becomes unavailable, or when the Home Assistant system itself starts up.",
|
|
"conditions": "It only proceeds if the Cyber1 Status [sensor.cyber1_status] is confirmed to be in an unavailable state.",
|
|
"action": "After a random delay of 2 to 15 seconds, it runs a shell command named 'reboot_nut_service'."
|
|
},
|
|
"human_like": "Automatically restarts the NUT (Network UPS Tools) service if the UPS status sensor becomes unavailable or when Home Assistant boots up.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "open_house",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Person [person.jon] changes from not_home to home AND remains home for 5 seconds. CONDITIONS: None. ACTIONS: Execute script Open Garage Door North [script.open_garage_door_north] with variable use_info_message set to false. Execute script Turn Off Extended Away Mode [script.turn_off_extended_away_mode]. IF Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] value is less than Family Room Ambient Min [input_number.family_room_ambient_min] value THEN turn on Office Lamp [light.office_lamp], Driveway Light [light.driveway], and Front Floodlight [light.front_floodlight]. IF Christmas Mode [input_boolean.christmas_mode] is off THEN turn on Family Room Lamp [light.family_room_lamp] and Hallway Lamp [light.hallway_lamp] ELSE execute script Turn On [script.turn_on] with variable additional_lights set to daytime. IF Skylar Person [person.skylar] is home THEN execute script Operate Preferred Studio Lamps [script.operate_preferred_studio_lamps] with operation set to on.",
|
|
"natural_language": {
|
|
"trigger": "When Jon Person [person.jon] arrives home and has been home for at least five seconds.",
|
|
"conditions": "There are no conditions that must be met before the actions run; the automation proceeds directly after the trigger.",
|
|
"action": "First, the automation opens the north garage door by running the script Open Garage Door North [script.open_garage_door_north] without an info message, and it turns off any extended away mode via the script Turn Off Extended Away Mode [script.turn_off_extended_away_mode]. Then, if the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is below the minimum threshold set by Family Room Ambient Min [input_number.family_room_ambient_min], it turns on the Office Lamp [light.office_lamp], Driveway Light [light.driveway], and Front Floodlight [light.front_floodlight]. If Christmas Mode [input_boolean.christmas_mode] is off, it also turns on the Family Room Lamp [light.family_room_lamp] and Hallway Lamp [light.hallway_lamp]; otherwise, it activates Christmas lights in daytime mode via the script Turn On [script.turn_on]. Finally, if Skylar Person [person.skylar] is also home, it runs a script to turn on their preferred studio lamps."
|
|
},
|
|
"human_like": "Welcomes Jon home by opening the garage door, turning off away mode, and turning on various lights inside and outside the house if it's dark enough, with special handling for Christmas mode and Skylar's presence.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "close_house",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Person [person.jon] leaves home (changes from home to not_home) AND remains not_home for 5 seconds OR When Sun [sun.sun] sets (changes from above_horizon to below_horizon) OR When Home Assistant starts. CONDITIONS: Jon Person [person.jon] is not_home OR Sun [sun.sun] is below_horizon. ACTIONS: Wait a random delay between 2 and 15 seconds. Execute Close Garage Door North [script.close_garage_door_north] with info message enabled. Execute Close Garage Door South [script.close_garage_door_south] with info message enabled. IF the trigger was NOT sunset AND Jon Person [person.jon] is NOT home THEN execute Lock PC [script.lock_pc]. IF Adults Home [binary_sensor.adults_home] is off THEN activate scenes: Lights Out Scene [scene.lights_out], Fans Off Downstairs Scene [scene.fans_off_downstairs], Fans Off Upstairs Scene [scene.fans_off_upstairs] AND turn off lights associated with Ceiling Fan Lights [light.ceiling_fan_lights]. IF the trigger was NOT jon_left AND Sun [sun.sun] is below_horizon THEN turn off Storage Lights [light.storage_lights] and Outdoor Lights [light.outdoor_lights].",
|
|
"natural_language": {
|
|
"trigger": "The automation can be triggered in three ways: when Jon Person [person.jon] leaves home and stays away for at least 5 seconds, when the sun sets, or when Home Assistant starts up.",
|
|
"conditions": "For the automation to proceed, at least one of the following must be true: Jon Person [person.jon] is not at home, or the sun is below the horizon.",
|
|
"action": "After a random delay of 2 to 15 seconds, the automation will close both garage doors using the respective scripts with an info message. If the trigger was not sunset and Jon is not home, it will lock the PC. If no adults are home, it will activate scenes to turn off lights and fans throughout the house and turn off any ceiling fan lights. Finally, if the trigger was not Jon leaving and the sun is down, it will turn off the storage and outdoor lights."
|
|
},
|
|
"human_like": "This automation secures the house by closing garage doors and turning off lights when Jon leaves or at sunset, with additional actions like locking the PC and turning off fans if no adults are home.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_guest_arrival_cleanup",
|
|
"result": {
|
|
"structured": "TRIGGER: When Guest Arrival Cleanup Timer [timer.guest_arrival_cleanup] finishes. CONDITIONS: None. ACTIONS: Run script Close Garage Door North [script.close_garage_door_north] with variable use_info_message set to true AND Turn off Driveway Light [light.driveway] AND Turn off Front Floodlight [light.front_floodlight].",
|
|
"natural_language": {
|
|
"trigger": "When the Guest Arrival Cleanup Timer [timer.guest_arrival_cleanup] finishes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It runs the 'Close Garage Door North' [script.close_garage_door_north] script, passing a variable to show an info message, and then turns off the Driveway Light [light.driveway] and the Front Floodlight [light.front_floodlight]."
|
|
},
|
|
"human_like": "Cleans up after guest arrival by closing the garage door and turning off the driveway and front floodlights when a timer expires.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "enable_family_room_av",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 07:00:00 OR When the time is 16:00:00. CONDITIONS: ((Children Home [binary_sensor.children_home] is on AND the trigger is morning) OR the trigger is afternoon). ACTIONS: If Extended Away Mode [input_boolean.extended_away_mode] is off, then run script.enable_family_room_av.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at 7:00 AM or at 4:00 PM.",
|
|
"conditions": "If the trigger is the 7:00 AM time, then the Children Home [binary_sensor.children_home] sensor must be on. If the trigger is the 4:00 PM time, no additional condition is required.",
|
|
"action": "If the Extended Away Mode [input_boolean.extended_away_mode] is off, the automation runs the script 'enable_family_room_av'."
|
|
},
|
|
"human_like": "Enables the family room AV system at set times, depending on whether the children are home in the morning.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_office_occupied",
|
|
"result": {
|
|
"structured": "TRIGGER: When Office Human Sensor Presence [binary_sensor.office_human_sensor_presence] changes from off to on AND remains on for 2 minutes OR When Office Human Sensor Presence [binary_sensor.office_human_sensor_presence] changes from on to off AND remains off for 15 minutes. CONDITIONS: None. ACTIONS: Turn Office Occupied [input_boolean.office_occupied] on (if the trigger id is 'on') OR Turn Office Occupied [input_boolean.office_occupied] off (if the trigger id is 'off').",
|
|
"natural_language": {
|
|
"trigger": "When the Office Human Sensor Presence [binary_sensor.office_human_sensor_presence] detects a person and stays in the 'on' state for two minutes, or when it stops detecting a person and stays in the 'off' state for fifteen minutes.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Sets the Office Occupied [input_boolean.office_occupied] status to 'on' if the sensor has been on for two minutes, or to 'off' if the sensor has been off for fifteen minutes."
|
|
},
|
|
"human_like": "Automatically marks the office as occupied or unoccupied based on the presence sensor, using different delays to confirm the state change.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "operate_office_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Office Occupied [input_boolean.office_occupied] changes state OR when Office Sensor Temperature [sensor.office_sensor_temperature] changes. CONDITIONS: Office Occupied [input_boolean.office_occupied] is on. ACTIONS: If Office Sensor Temperature [sensor.office_sensor_temperature] is greater than or equal to 80, turn on Office Fan [fan.office_fan] to high speed. If Office Sensor Temperature [sensor.office_sensor_temperature] is less than 80 but greater than or equal to 78, turn on Office Fan [fan.office_fan] to medium speed. If Office Sensor Temperature [sensor.office_sensor_temperature] is less than 78 but greater than or equal to 76, turn on Office Fan [fan.office_fan] to low speed. If Office Sensor Temperature [sensor.office_sensor_temperature] is less than 76, turn off Office Fan [fan.office_fan].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered either when the occupancy status of the office changes, indicated by Office Occupied [input_boolean.office_occupied], or when the temperature in the office, measured by Office Sensor Temperature [sensor.office_sensor_temperature], changes.",
|
|
"conditions": "The automation only runs if the office is currently occupied, meaning Office Occupied [input_boolean.office_occupied] is set to 'on'.",
|
|
"action": "Based on the current temperature, the Office Fan [fan.office_fan] is adjusted. If the temperature is 80 degrees or higher, the fan is set to high speed. If it's between 78 and 80 degrees, the fan is set to medium speed. If it's between 76 and 78 degrees, the fan is set to low speed. If the temperature drops below 76 degrees, the fan is turned off."
|
|
},
|
|
"human_like": "Automatically adjusts the office fan speed based on the room temperature, but only when someone is in the office.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "operate_family_room_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Family Room AV System [binary_sensor.family_room_av_system] turns on OR when Main Floor Temperature [sensor.main_floor_temperature] changes. CONDITIONS: Family Room AV System [binary_sensor.family_room_av_system] is on. ACTIONS: If Main Floor Temperature [sensor.main_floor_temperature] is above 80°F, turn on Family Room Fan [fan.family_room_fan]. If Main Floor Temperature [sensor.main_floor_temperature] is between 78.5°F and 80°F, set Family Room Fan [fan.family_room_fan] to low speed. If Main Floor Temperature [sensor.main_floor_temperature] is below 74°F, turn off Family Room Fan [fan.family_room_fan].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the Family Room AV System [binary_sensor.family_room_av_system] is turned on, or when the Main Floor Temperature [sensor.main_floor_temperature] reading changes.",
|
|
"conditions": "The automation only runs if the Family Room AV System [binary_sensor.family_room_av_system] is currently on.",
|
|
"action": "Based on the current temperature, the Family Room Fan [fan.family_room_fan] is adjusted. If the temperature is above 80°F, the fan is turned on. If the temperature is between 78.5°F and 80°F, the fan is set to a low speed. If the temperature drops below 74°F, the fan is turned off."
|
|
},
|
|
"human_like": "Automatically controls the family room fan based on the temperature, but only when the AV system is in use.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "operate_theater_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Harmony Hub Sensor [sensor.harmony_hub] changes state OR When Theater Temperature [sensor.theater_temperature] changes state. CONDITIONS: (Harmony Hub Sensor [sensor.harmony_hub] is NOT PowerOff) AND (Theater Temperature [sensor.theater_temperature] is above 78°F) AND (Theater Fan [fan.theater_fan] is off). ACTIONS: Turn on Theater Fan [fan.theater_fan] and set speed to high. CONDITIONS: (Harmony Hub Sensor [sensor.harmony_hub] is NOT PowerOff) AND (Theater Temperature [sensor.theater_temperature] is above 76°F) AND (Theater Fan [fan.theater_fan] is off). ACTIONS: Turn on Theater Fan [fan.theater_fan] and set speed to medium. CONDITIONS: (Harmony Hub Sensor [sensor.harmony_hub] is NOT PowerOff) AND (Theater Temperature [sensor.theater_temperature] is above 74°F) AND (Theater Fan [fan.theater_fan] is off). ACTIONS: Turn on Theater Fan [fan.theater_fan] and set speed to low. CONDITIONS: (Harmony Hub Sensor [sensor.harmony_hub] is NOT PowerOff) AND (Theater Temperature [sensor.theater_temperature] is at or below 74°F) AND (Theater Fan [fan.theater_fan] is on). ACTIONS: Turn off Theater Fan [fan.theater_fan]. CONDITIONS: (Harmony Hub Sensor [sensor.harmony_hub] is PowerOff) AND (Theater Fan [fan.theater_fan] is on). ACTIONS: Turn off Theater Fan [fan.theater_fan].",
|
|
"natural_language": {
|
|
"trigger": "When the Harmony Hub Sensor [sensor.harmony_hub] changes its state, or when the Theater Temperature [sensor.theater_temperature] changes.",
|
|
"conditions": "The automation checks several scenarios based on the Harmony Hub's state and the theater's temperature. If the Harmony Hub is not in PowerOff mode, it will turn on the Theater Fan [fan.theater_fan] at different speeds depending on the temperature: high speed if above 78°F, medium speed if above 76°F, and low speed if above 74°F, but only if the fan is currently off. If the temperature is at or below 74°F and the fan is on, it will turn the fan off. Additionally, if the Harmony Hub is in PowerOff mode and the fan is on, it will turn the fan off regardless of temperature.",
|
|
"action": "Controls the Theater Fan [fan.theater_fan] by turning it on at specific speeds based on temperature thresholds when the Harmony Hub is active, or turning it off when the temperature is low or the Harmony Hub is powered off."
|
|
},
|
|
"human_like": "Automatically adjusts the theater fan speed based on room temperature when the entertainment system is on, and turns the fan off when it's cool enough or the system is off.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_penthouse_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Penthouse Fan Switch [switch.penthouse_fan] changes from off to on AND remains on for 40 minutes. CONDITIONS: None. ACTIONS: Turn off Penthouse Fan Switch [switch.penthouse_fan].",
|
|
"natural_language": {
|
|
"trigger": "When the Penthouse Fan Switch [switch.penthouse_fan] is turned on and remains in the on state for 40 minutes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Turns off the Penthouse Fan Switch [switch.penthouse_fan]."
|
|
},
|
|
"human_like": "Automatically turns off the penthouse fan 40 minutes after it has been switched on.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_treadmill",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Current Consumption [sensor.treadmill_current_consumption] rises above 200. CONDITIONS: Treadmill Triggered [input_boolean.treadmill_triggered] is off. ACTIONS: Set Treadmill Start Datetime [input_datetime.treadmill_start] to the current date and time AND Turn on Treadmill Triggered [input_boolean.treadmill_triggered].",
|
|
"natural_language": {
|
|
"trigger": "When the power consumption of the treadmill, measured by Treadmill Current Consumption [sensor.treadmill_current_consumption], exceeds 200 units.",
|
|
"conditions": "The automation only runs if the Treadmill Triggered [input_boolean.treadmill_triggered] flag is currently off.",
|
|
"action": "The automation records the current time by setting the Treadmill Start Datetime [input_datetime.treadmill_start] and then turns on the Treadmill Triggered [input_boolean.treadmill_triggered] flag to prevent repeated triggers."
|
|
},
|
|
"human_like": "Records the start time of a treadmill session when its power consumption increases, and sets a flag to indicate the session has begun.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "detect_treadmill_power_unavailable",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Current Consumption [sensor.treadmill_current_consumption] becomes unavailable. CONDITIONS: Treadmill Triggered [input_boolean.treadmill_triggered] is on. ACTIONS: Calculate minutes_since_start as the integer difference between now and Treadmill Start Datetime [input_datetime.treadmill_start]. Calculate default_minutes as the integer value of Default Treadmill Minutes [input_number.default_treadmill_minutes]. Set offset_minutes to 2. IF (minutes_since_start <= (default_minutes - offset_minutes)) THEN start Treadmill Power Timer [timer.treadmill_power] for a duration of ((default_minutes - minutes_since_start) * 60) seconds. OTHERWISE trigger the Stop Treadmill [automation.stop_treadmill] automation.",
|
|
"natural_language": {
|
|
"trigger": "When the Treadmill Current Consumption [sensor.treadmill_current_consumption] sensor becomes unavailable.",
|
|
"conditions": "If the Treadmill Triggered [input_boolean.treadmill_triggered] flag is currently turned on.",
|
|
"action": "The automation calculates how many minutes have passed since the Treadmill Start Datetime [input_datetime.treadmill_start]. It also reads the default workout duration from Default Treadmill Minutes [input_number.default_treadmill_minutes]. If the elapsed time is less than or equal to the default duration minus a 2-minute buffer, it starts the Treadmill Power Timer [timer.treadmill_power] for the remaining time. Otherwise, it triggers the separate Stop Treadmill [automation.stop_treadmill] automation."
|
|
},
|
|
"human_like": "Handles unexpected treadmill power loss by either restarting a timer for the remaining workout time or triggering the normal stop procedure, depending on how long the workout has been running.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "detect_treadmill_power_available",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Current Consumption [sensor.treadmill_current_consumption] changes from unavailable. CONDITIONS: None. ACTIONS: If Treadmill Triggered [input_boolean.treadmill_triggered] is on, then if Treadmill Power Timer [timer.treadmill_power] is active, cancel Treadmill Power Timer [timer.treadmill_power]. Otherwise (if Treadmill Triggered [input_boolean.treadmill_triggered] is off), turn off Treadmill Switch [switch.treadmill].",
|
|
"natural_language": {
|
|
"trigger": "When the Treadmill Current Consumption [sensor.treadmill_current_consumption] sensor becomes available, transitioning from an 'unavailable' state.",
|
|
"conditions": "There are no conditions that must be met for the automation to proceed.",
|
|
"action": "The automation checks if the Treadmill Triggered [input_boolean.treadmill_triggered] flag is on. If it is, it then checks if the Treadmill Power Timer [timer.treadmill_power] is currently running. If the timer is active, it is cancelled. If the Treadmill Triggered flag is off, the automation turns off the Treadmill Switch [switch.treadmill]."
|
|
},
|
|
"human_like": "When the treadmill's power sensor comes back online, it either cancels a running power timer if the treadmill is marked as triggered, or turns the treadmill off if it's not.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_treadmill_power_timer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Power Timer [timer.treadmill_power] finishes. CONDITIONS: None. ACTIONS: Trigger the automation Stop Treadmill [automation.stop_treadmill].",
|
|
"natural_language": {
|
|
"trigger": "When the Treadmill Power Timer [timer.treadmill_power] finishes.",
|
|
"conditions": "There are no conditions.",
|
|
"action": "Triggers the Stop Treadmill [automation.stop_treadmill] automation to run."
|
|
},
|
|
"human_like": "When the treadmill power timer ends, it triggers another automation to stop the treadmill.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "stop_treadmill",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Current Consumption [sensor.treadmill_current_consumption] falls below 7. CONDITIONS: Treadmill Triggered [input_boolean.treadmill_triggered] is on. ACTIONS: Turn off Treadmill Triggered [input_boolean.treadmill_triggered]; Turn off Treadmill Switch [switch.treadmill]; Set Treadmill Daily Time [input_number.treadmill_daily_time] to the total minutes (rounded down to the nearest 5) elapsed since Treadmill Start Datetime [input_datetime.treadmill_start]; Set Treadmill Daily Calories [input_number.treadmill_daily_calories] to a calculated value based on Smart Scale Weight [sensor.smart_scale_p1_weight], Treadmill Speed [input_number.treadmill_speed], Treadmill Incline [input_number.treadmill_incline], and Treadmill Daily Time [input_number.treadmill_daily_time]; Execute script.register_exercise_metrics with exercise_type 'treadmill' and the calculated daily calories; Add the value of Treadmill Daily Time [input_number.treadmill_daily_time] to the current value of Treadmill Usage Minutes [input_number.treadmill_usage_minutes].",
|
|
"natural_language": {
|
|
"trigger": "When the treadmill's power consumption, as measured by Treadmill Current Consumption [sensor.treadmill_current_consumption], drops below 7.",
|
|
"conditions": "The automation only runs if the Treadmill Triggered [input_boolean.treadmill_triggered] flag is currently turned on.",
|
|
"action": "The automation first resets the trigger flag by turning off Treadmill Triggered [input_boolean.treadmill_triggered] and then powers off the treadmill by turning off Treadmill Switch [switch.treadmill]. It calculates the total workout duration by finding how many minutes have passed since the Treadmill Start Datetime [input_datetime.treadmill_start], rounding down to the nearest 5 minutes, and saves this to Treadmill Daily Time [input_number.treadmill_daily_time]. It then calculates the calories burned during the session using a formula that factors in the user's weight from Smart Scale Weight [sensor.smart_scale_p1_weight], the set Treadmill Speed [input_number.treadmill_speed], and the Treadmill Incline [input_number.treadmill_incline], and saves the result to Treadmill Daily Calories [input_number.treadmill_daily_calories]. This calorie data is then logged by running the 'register_exercise_metrics' script. Finally, it updates the total lifetime usage by adding today's workout minutes to the Treadmill Usage Minutes [input_number.treadmill_usage_minutes] counter."
|
|
},
|
|
"human_like": "Automatically stops the treadmill and logs the workout details—including duration and calories burned—when the treadmill's power consumption indicates it's no longer in use.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "check_refrigerator_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When Refrigerator Switch [switch.refrigerator] turns off. CONDITIONS: None. ACTIONS: Execute the actions defined in the blueprint 'devices/monitor_device.yaml' with inputs: device_entity = switch.refrigerator, component_name = tplink, device_name = Refrigerator.",
|
|
"natural_language": {
|
|
"trigger": "When the Refrigerator Switch [switch.refrigerator] is turned off.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "Runs the predefined monitoring routine from the blueprint 'devices/monitor_device.yaml', specifically for the TP-Link device named 'Refrigerator'."
|
|
},
|
|
"human_like": "Monitors the refrigerator's power state and runs a check when it turns off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "check_microwave_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When the state of Microwave Switch [switch.microwave] changes. CONDITIONS: None. ACTIONS: The automation uses the blueprint 'devices/monitor_device.yaml' with inputs: device_entity = switch.microwave, component_name = tplink, device_name = Microwave.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Microwave Switch [switch.microwave] changes.",
|
|
"conditions": "There are no specific conditions for this automation.",
|
|
"action": "Executes a predefined monitoring blueprint for the device, using the Microwave Switch [switch.microwave] as the target device, specifying it as a 'tplink' component named 'Microwave'."
|
|
},
|
|
"human_like": "Monitors the microwave's power state using a standard device monitoring template.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "check_projector_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When Projector Switch [switch.projector] changes state. CONDITIONS: Projector Plug Powered Off [input_boolean.projector_plug_powered_off] is on. ACTIONS: Execute the blueprint 'devices/monitor_device.yaml' with the provided inputs.",
|
|
"natural_language": {
|
|
"trigger": "When the Projector Switch [switch.projector] changes its state.",
|
|
"conditions": "If the Projector Plug Powered Off [input_boolean.projector_plug_powered_off] is turned on.",
|
|
"action": "Runs the 'monitor_device' blueprint to process the state change of the Projector Switch [switch.projector]."
|
|
},
|
|
"human_like": "Monitors the projector's switch state and performs conditional processing when the projector plug is marked as powered off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_vacuum",
|
|
"result": {
|
|
"structured": "TRIGGER: At 03:00:00. CONDITIONS: Day is Monday AND Vacuum Timer [timer.vacuum] is idle. ACTIONS: IF Vacuum [vacuum.ecovacs_deebot_none] is not docked, THEN reload the vacuum configuration entry, wait up to 10 seconds for Vacuum [vacuum.ecovacs_deebot_none] to become docked. IF after waiting Vacuum [vacuum.ecovacs_deebot_none] is still not docked, THEN send a notification 'Device Alert: Vacuum not functioning good.' and stop automation execution. Turn off Vacuum Kicked Off [input_boolean.vacuum_kicked_off] AND Vacuum Finished [input_boolean.vacuum_finished]. Start Vacuum Timer [timer.vacuum] for 1 hour 30 minutes. Wait 100 milliseconds. Start Vacuum [vacuum.ecovacs_deebot_none].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at 3:00 AM.",
|
|
"conditions": "It only runs if it is a Monday and the Vacuum Timer [timer.vacuum] is currently idle.",
|
|
"action": "First, it checks if the Vacuum [vacuum.ecovacs_deebot_none] is not docked. If it isn't, it attempts to reload the vacuum's configuration and waits up to 10 seconds for it to dock. If the vacuum is still not docked after the wait, it sends a notification with the title 'Device Alert' and the message 'Vacuum not functioning good.', then stops the automation entirely. If the vacuum is docked or becomes docked, it proceeds to turn off both the Vacuum Kicked Off [input_boolean.vacuum_kicked_off] and Vacuum Finished [input_boolean.vacuum_finished] switches. It then starts the Vacuum Timer [timer.vacuum] for an hour and a half, waits a brief 100 milliseconds, and finally commands the Vacuum [vacuum.ecovacs_deebot_none] to start cleaning."
|
|
},
|
|
"human_like": "Starts the vacuum cleaner every Monday morning at 3 AM, but first ensures it is properly docked and ready, sending an alert if there's a problem.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "stop_vacuum",
|
|
"result": {
|
|
"structured": "TRIGGER: When Vacuum Timer [timer.vacuum] finishes OR When Ecovacs Deebot Battery [sensor.ecovacs_deebot_battery] drops below 20. CONDITIONS: The current day is Monday. ACTIONS: Send Vacuum [vacuum.ecovacs_deebot_none] to its charging base.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered either when the Vacuum Timer [timer.vacuum] finishes, or when the Ecovacs Deebot Battery [sensor.ecovacs_deebot_battery] level falls below 20 percent.",
|
|
"conditions": "The automation only runs if the current day is Monday.",
|
|
"action": "Commands the Vacuum [vacuum.ecovacs_deebot_none] to return to its charging dock."
|
|
},
|
|
"human_like": "Sends the robot vacuum back to its dock on Mondays when its timer finishes or its battery gets low.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "detect_vacuum_running",
|
|
"result": {
|
|
"structured": "TRIGGER: When Vacuum [vacuum.ecovacs_deebot_none] starts cleaning (state changes to cleaning). CONDITIONS: It is Monday AND Vacuum Timer [timer.vacuum] is active. ACTIONS: Turn on Vacuum Kicked Off [input_boolean.vacuum_kicked_off].",
|
|
"natural_language": {
|
|
"trigger": "When the Vacuum [vacuum.ecovacs_deebot_none] starts its cleaning cycle.",
|
|
"conditions": "The automation only runs if it is a Monday and the Vacuum Timer [timer.vacuum] is currently active.",
|
|
"action": "Sets the Vacuum Kicked Off [input_boolean.vacuum_kicked_off] status to on."
|
|
},
|
|
"human_like": "Flags that a scheduled vacuum cleaning has started on a Monday.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "detect_vacuum_finished",
|
|
"result": {
|
|
"structured": "TRIGGER: When Vacuum [vacuum.ecovacs_deebot_none] changes to docked. CONDITIONS: (Current day is Monday) AND (Vacuum Kicked Off [input_boolean.vacuum_kicked_off] is on). ACTIONS: Turn on Vacuum Finished [input_boolean.vacuum_finished].",
|
|
"natural_language": {
|
|
"trigger": "When the Vacuum [vacuum.ecovacs_deebot_none] returns to its dock.",
|
|
"conditions": "The automation only runs if it is currently Monday and the Vacuum Kicked Off [input_boolean.vacuum_kicked_off] flag is turned on.",
|
|
"action": "Sets the Vacuum Finished [input_boolean.vacuum_finished] flag to on."
|
|
},
|
|
"human_like": "Marks the vacuum as having finished its cleaning cycle on Mondays when it returns to the dock and a manual start flag is set.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_washer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer Power State [sensor.washer_power_state] changes from stop OR unknown to fill. CONDITIONS: None. ACTIONS: Set Washer Start Datetime [input_datetime.washer_start] to the current date and time. Set Washer Load Size Select [input_select.washer_load_size] to the option '*sensing*'. Turn on Backup Laundry Log [input_boolean.backup_laundry_log]. Execute the script Log Laundry Event [script.log_laundry_event] with parameters: event_type 'basic', prefix 'Washer', and a message indicating the washer is starting and the state of Washer Fabric Softener [input_boolean.washer_fabric_softener].",
|
|
"natural_language": {
|
|
"trigger": "When the Washer Power State [sensor.washer_power_state] transitions from either 'stop' or 'unknown' to the 'fill' state.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation records the start time by setting the Washer Start Datetime [input_datetime.washer_start] to the current moment. It then sets the Washer Load Size Select [input_select.washer_load_size] to '*sensing*', turns on the Backup Laundry Log [input_boolean.backup_laundry_log], and logs a laundry event via the script Log Laundry Event [script.log_laundry_event], noting the washer is starting and whether fabric softener is being used based on the state of Washer Fabric Softener [input_boolean.washer_fabric_softener]."
|
|
},
|
|
"human_like": "Starts tracking a new laundry cycle when the washer begins filling, setting the start time, load size, and logging the event.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_washer_load_size",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer Power State [sensor.washer_power_state] changes from 'fill' to 'raise'. CONDITIONS: Washer State Select [input_select.washer_state] is 'Wash Fill'. ACTIONS: Calculate a variable 'washer_fill_seconds' as the number of seconds elapsed since the timestamp stored in Washer Start Datetime [input_datetime.washer_start]. Set Washer Load Size Select [input_select.washer_load_size] to 'Small' if washer_fill_seconds is between 180 and 449, 'Medium' if between 450 and 649, 'Large' if 650 or greater, otherwise default to 'Medium'. Set Washer Fill Seconds [input_number.washer_fill_seconds] to the calculated value. Execute the script Log Laundry Event [script.log_laundry_event] with parameters for event type 'fill_plus_load', prefix 'Washer', message 'fill time, load size', and references to the two updated entities.",
|
|
"natural_language": {
|
|
"trigger": "When the Washer Power State [sensor.washer_power_state] transitions from the 'fill' phase to the 'raise' phase.",
|
|
"conditions": "The Washer State Select [input_select.washer_state] must be set to 'Wash Fill'.",
|
|
"action": "The automation calculates how long the washer has been filling by comparing the current time to the start time stored in Washer Start Datetime [input_datetime.washer_start]. Based on this fill duration, it selects a load size: Small for 3 to 7.5 minutes, Medium for 7.5 to 10.8 minutes, and Large for over 10.8 minutes. It then updates the Washer Load Size Select [input_select.washer_load_size] with this selection, records the calculated fill time in seconds to Washer Fill Seconds [input_number.washer_fill_seconds], and finally logs this event using the Log Laundry Event [script.log_laundry_event] script."
|
|
},
|
|
"human_like": "Automatically determines and sets the washer's load size based on how long it took to fill with water, then logs the event.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_washer_wash_blackout_timer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer State Select [input_select.washer_state] changes from 'Wash Fill' to 'Wash'. ACTIONS: Set variable 'duration' to 00:01:00. Start Washer Wash Blackout Timer [timer.washer_wash_blackout] with the specified duration. Execute script Log Laundry Event [script.log_laundry_event] with parameters: event_type 'timer', prefix 'Washer', message 'timer started ({{ duration }})', entity_id_1 'timer.washer_wash_blackout'.",
|
|
"natural_language": {
|
|
"trigger": "When the washer's state changes from 'Wash Fill' to 'Wash'.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Sets a timer duration to one minute, starts the Washer Wash Blackout Timer [timer.washer_wash_blackout] for that duration, and logs the event using the Log Laundry Event [script.log_laundry_event] script."
|
|
},
|
|
"human_like": "Starts a one-minute blackout timer and logs the event when the washer begins its wash cycle.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_washer_rinse_fill_blackout_timer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer State Select [input_select.washer_state] changes from 'Wash Drain' to 'Rinse Fill'. CONDITIONS: Washer Fabric Softener [input_boolean.washer_fabric_softener] is on. ACTIONS: Set variable 'duration' based on Washer Load Size Select [input_select.washer_load_size] value: '00:03:00' for 'Small', '00:05:00' for 'Large', otherwise '00:04:00'. Start Washer Rinse Fill Blackout Timer [timer.washer_rinse_fill_blackout] with the calculated duration. Call script Log Laundry Event [script.log_laundry_event] with event_type 'timer', prefix 'Washer', message 'timer started ({{ duration }})', and entity_id_1 set to the timer.",
|
|
"natural_language": {
|
|
"trigger": "When the washer's cycle changes from the 'Wash Drain' phase to the 'Rinse Fill' phase.",
|
|
"conditions": "The washer's fabric softener option must be turned on.",
|
|
"action": "First, it calculates a timer duration based on the selected load size: 3 minutes for a small load, 5 minutes for a large load, or 4 minutes for any other size. Then, it starts the Washer Rinse Fill Blackout Timer [timer.washer_rinse_fill_blackout] for that calculated duration. Finally, it logs this event by running the Log Laundry Event [script.log_laundry_event] script with details about the timer start."
|
|
},
|
|
"human_like": "Starts a blackout timer for the washer's rinse fill cycle when fabric softener is enabled, with the timer duration adjusted based on the load size.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "start_washer_rinse_blackout_timer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer State Select [input_select.washer_state] changes from 'Rinse Fill' to 'Rinse'. CONDITIONS: None. ACTIONS: Set variable 'duration' to 00:01:00. Start Washer Rinse Blackout Timer [timer.washer_rinse_blackout] for the duration variable (1 minute). Execute Log Laundry Event [script.log_laundry_event] with event_type 'timer', prefix 'Washer', message 'timer started (1 minute)', and entity_id_1 'timer.washer_rinse_blackout'.",
|
|
"natural_language": {
|
|
"trigger": "When the washer's state changes from 'Rinse Fill' to 'Rinse' on the Washer State Select [input_select.washer_state].",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "It sets a variable for a one-minute duration, starts the Washer Rinse Blackout Timer [timer.washer_rinse_blackout] for that duration, and then logs the event using the Log Laundry Event [script.log_laundry_event] script, noting that the timer was started."
|
|
},
|
|
"human_like": "Starts a one-minute blackout timer for the washer when it enters the rinse cycle.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_washer_operation",
|
|
"result": {
|
|
"structured": "TRIGGER: When Washer Power State [sensor.washer_power_state] changes state. CONDITIONS: The previous state of Washer Power State [sensor.washer_power_state] is not 'unavailable'. ACTIONS: Wait 1 second. Set a variable 's' to the current state of Washer State Select [input_select.washer_state]. Set the option for Washer State Select [input_select.washer_state] based on a complex template that evaluates the previous and new power states, the current washer state, and the status of three timers (Washer Rinse Fill Blackout Timer [timer.washer_rinse_fill_blackout], Washer Rinse Blackout Timer [timer.washer_rinse_blackout], Washer Wash Blackout Timer [timer.washer_wash_blackout]). If any timer is active, keep the current state. Otherwise, transition through a sequence of washer states (Wash Fill, Wash, Wash Drain, Rinse Fill, Rinse, Rinse Drain, Off) based on specific power state transitions. If the state of Washer State Select [input_select.washer_state] changed after the service call, run Log Laundry Event [script.log_laundry_event] with a message. If the new state of Washer State Select [input_select.washer_state] is 'Off', also run Log Laundry Event [script.log_laundry_event] with a 'stopped' message and run Update Laundry History Time Ranges [script.update_laundry_history_time_ranges] with start and stop timestamps.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Washer Power State [sensor.washer_power_state] sensor reports a change in its value.",
|
|
"conditions": "The automation only proceeds if the previous state of the Washer Power State [sensor.washer_power_state] sensor was not 'unavailable'.",
|
|
"action": "After a brief one-second delay, the automation captures the current washer cycle state from Washer State Select [input_select.washer_state]. It then calculates a new washer state using a complex set of rules. These rules consider the previous and new power readings, the current cycle stage, and whether any of three blackout timers (Washer Rinse Fill Blackout Timer [timer.washer_rinse_fill_blackout], Washer Rinse Blackout Timer [timer.washer_rinse_blackout], Washer Wash Blackout Timer [timer.washer_wash_blackout]) are running. If a timer is active, the state is left unchanged. Otherwise, it follows a specific sequence to update the state, such as moving from 'Wash Fill' to 'Wash' to 'Wash Drain', and so on, ending in 'Off'. If this update actually changes the washer state, it logs the change. If the final state is set to 'Off', it logs that the washer stopped and updates the laundry history with the start and stop times."
|
|
},
|
|
"human_like": "Tracks the washing machine's cycle by interpreting its power consumption patterns, updating a visual state selector, and logging the start and end of laundry cycles.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_dryer_running",
|
|
"result": {
|
|
"structured": "TRIGGER: When the template condition is true: Dryer Sensor Temperature [sensor.dryer_sensor_temperature] and Downstairs Temperature [sensor.downstairs_temperature] are both available (not 'unavailable' or 'unknown') AND the integer value of Dryer Sensor Temperature [sensor.dryer_sensor_temperature] is greater than the integer value of Downstairs Temperature [sensor.downstairs_temperature] plus 30. CONDITIONS: None. ACTIONS: Set Dryer Start Datetime [input_datetime.dryer_start] to the current date and time. Reset both Dryer Temperature Count [counter.dryer_temperature_count] and Dryer Humidity Count [counter.dryer_humidity_count]. Turn on Dryer Running [input_boolean.dryer_running]. Turn on Backup Laundry Log [input_boolean.backup_laundry_log]. Execute script Log Laundry Event [script.log_laundry_event] with event_type 'basic' and a message containing indoor (Downstairs Temperature [sensor.downstairs_temperature] and Downstairs Humidity [sensor.downstairs_humidity]) and outdoor (Porch Sensor Temperature [sensor.porch_sensor_temperature] and Openweathermap Humidity [sensor.openweathermap_humidity]) conditions. Execute script Log Laundry Event [script.log_laundry_event] with event_type 'metric', prefix 'Dryer', message 'temperature detected', and entity_id_1 referencing Dryer Sensor Temperature [sensor.dryer_sensor_temperature]. Start the Dryer Done Failsafe Timer [timer.dryer_done_failsafe] with a duration of 2 hours.",
|
|
"natural_language": {
|
|
"trigger": "When the Dryer Sensor Temperature [sensor.dryer_sensor_temperature] and the Downstairs Temperature [sensor.downstairs_temperature] are both reporting valid readings, and the dryer's temperature is more than 30 degrees higher than the downstairs temperature.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "The automation records the start time, resets two counters, marks the dryer as running, enables a backup logging flag, logs the start event with indoor and outdoor climate data, logs a metric event for the temperature detection, and starts a two-hour safety timer."
|
|
},
|
|
"human_like": "Detects when the dryer is running by comparing its temperature to the room temperature, then logs the start, sets status flags, and starts a timer.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_dryer_done_failsafe",
|
|
"result": {
|
|
"structured": "TRIGGER: When Dryer Done Failsafe Timer [timer.dryer_done_failsafe] finishes. CONDITIONS: None. ACTIONS: Reset Dryer Temperature Count [counter.dryer_temperature_count] AND reset Dryer Humidity Count [counter.dryer_humidity_count].",
|
|
"natural_language": {
|
|
"trigger": "When the Dryer Done Failsafe Timer [timer.dryer_done_failsafe] completes its countdown.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Resets both the Dryer Temperature Count [counter.dryer_temperature_count] and the Dryer Humidity Count [counter.dryer_humidity_count] to zero."
|
|
},
|
|
"human_like": "Resets the dryer's monitoring counters when a safety timer finishes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "register_dryer_event",
|
|
"result": {
|
|
"structured": "TRIGGER: When Dryer Humidity Falling [binary_sensor.dryer_humidity_falling] is on AND Dryer Sensor Humidity [sensor.dryer_sensor_humidity] is less than or equal to 70 OR When Dryer Temperature Falling [binary_sensor.dryer_temperature_falling] changes to on. CONDITIONS: Dryer Running [input_boolean.dryer_running] is on. ACTIONS: If the trigger was the temperature falling, then increment Dryer Temperature Count [counter.dryer_temperature_count] and run Log Laundry Event [script.log_laundry_event] with event_type 'metric', prefix 'Dryer', message 'temperature falling', and entity_id_1 'sensor.dryer_sensor_temperature'. Otherwise, increment Dryer Humidity Count [counter.dryer_humidity_count] and run Log Laundry Event [script.log_laundry_event] with event_type 'metric', prefix 'Dryer', message 'humidity falling', and entity_id_1 'sensor.dryer_sensor_humidity'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when either the Dryer Humidity Falling [binary_sensor.dryer_humidity_falling] sensor is active and the humidity reading from Dryer Sensor Humidity [sensor.dryer_sensor_humidity] is 70% or lower, or when the Dryer Temperature Falling [binary_sensor.dryer_temperature_falling] sensor turns on.",
|
|
"conditions": "The automation only runs if the Dryer Running [input_boolean.dryer_running] indicator is turned on.",
|
|
"action": "Depending on which trigger fired, the automation performs different actions. If the trigger was the temperature falling, it increases the Dryer Temperature Count [counter.dryer_temperature_count] and logs a 'temperature falling' event using the Log Laundry Event [script.log_laundry_event] script. If the trigger was the humidity condition, it increases the Dryer Humidity Count [counter.dryer_humidity_count] and logs a 'humidity falling' event."
|
|
},
|
|
"human_like": "Tracks and logs when the dryer's temperature or humidity starts falling during a cycle, helping to monitor the drying progress.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_dryer_running",
|
|
"result": {
|
|
"structured": "TRIGGER: When Dryer Done [binary_sensor.dryer_done] turns on. CONDITIONS: Dryer Running [input_boolean.dryer_running] is on. ACTIONS: Turn off Dryer Running [input_boolean.dryer_running], run Log Laundry Event [script.log_laundry_event] with event_type 'basic', prefix 'Dryer', and message 'stopped', and run Update Laundry History Time Ranges [script.update_laundry_history_time_ranges] with is_washer false, start_time from Dryer Start Datetime [input_datetime.dryer_start] timestamp, and stop_time as the current timestamp.",
|
|
"natural_language": {
|
|
"trigger": "When the Dryer Done [binary_sensor.dryer_done] sensor indicates the dryer cycle is complete by turning on.",
|
|
"conditions": "The automation only proceeds if the Dryer Running [input_boolean.dryer_running] helper is currently switched on.",
|
|
"action": "It turns off the Dryer Running [input_boolean.dryer_running] helper, logs a 'stopped' event for the dryer using the Log Laundry Event [script.log_laundry_event] script, and updates the laundry history by calling the Update Laundry History Time Ranges [script.update_laundry_history_time_ranges] script with the start time from the Dryer Start Datetime [input_datetime.dryer_start] and the current time as the stop time."
|
|
},
|
|
"human_like": "Stops tracking a dryer cycle and logs its completion when the dryer is reported as done.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_treadmill_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Triggered [input_boolean.treadmill_triggered] turns on. CONDITIONS: None. ACTIONS: Choose an action based on the current temperature of Downstairs Climate [climate.downstairs]: If current_temperature is below 70.0, wait 10 minutes then turn on Treadmill Fan Switch [switch.treadmill_fan]. Else if current_temperature is below 75.0, wait 5 minutes then turn on Treadmill Fan Switch [switch.treadmill_fan]. Otherwise, turn on Treadmill Fan Switch [switch.treadmill_fan] immediately.",
|
|
"natural_language": {
|
|
"trigger": "When the Treadmill Triggered [input_boolean.treadmill_triggered] is switched on.",
|
|
"conditions": "There are no conditions that must be met before the action runs.",
|
|
"action": "The automation checks the current temperature of the Downstairs Climate [climate.downstairs]. If the temperature is below 70°F, it waits for 10 minutes before turning on the Treadmill Fan Switch [switch.treadmill_fan]. If the temperature is between 70°F and 75°F, it waits for 5 minutes before turning on the fan. If the temperature is 75°F or above, it turns on the fan immediately."
|
|
},
|
|
"human_like": "Turns on the treadmill fan when the treadmill is triggered, with a delay based on the current downstairs temperature to help with cooling.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_treadmill_fan",
|
|
"result": {
|
|
"structured": "TRIGGER: When Treadmill Triggered [input_boolean.treadmill_triggered] turns off. CONDITIONS: None. ACTIONS: Wait for 2 minutes, then turn off Treadmill Fan Switch [switch.treadmill_fan], then run script Control Fan For Temperature [script.control_fan_for_temperature] with parameters: fan_entity_id = Office Fan [fan.office_fan], temperature_entity_id = Main Floor Temperature [sensor.main_floor_temperature], thresholds = [76, 74, 72], timeout = 360.",
|
|
"natural_language": {
|
|
"trigger": "When the Treadmill Triggered [input_boolean.treadmill_triggered] input boolean is turned off.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "After a delay of two minutes, the automation turns off the Treadmill Fan Switch [switch.treadmill_fan]. It then activates the Control Fan For Temperature [script.control_fan_for_temperature] script, passing it the Office Fan [fan.office_fan], the Main Floor Temperature [sensor.main_floor_temperature] sensor, a set of temperature thresholds (76, 74, 72), and a timeout of 360 seconds."
|
|
},
|
|
"human_like": "Turns off the treadmill fan after a short delay and then starts a script to manage the office fan based on the main floor temperature.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "manage_echo_do_not_disturb",
|
|
"result": {
|
|
"structured": "TRIGGER: When Nighttime [input_boolean.nighttime] turns on OR when Nighttime [input_boolean.nighttime] turns off. CONDITIONS: None. ACTIONS: For each Echo Do Not Disturb switch in the list [switch.master_bedroom_echo_do_not_disturb_switch, switch.studio_echo_do_not_disturb_switch, switch.penthouse_echo_do_not_disturb_switch], if the switch is for the master bedroom OR if the corresponding room occupancy sensor (binary_sensor.<room_name>_occupied) is on, then turn the switch to the same state as the trigger (on or off).",
|
|
"natural_language": {
|
|
"trigger": "When the Nighttime [input_boolean.nighttime] mode is either turned on or turned off.",
|
|
"conditions": "There are no specific conditions that must be met for the actions to run.",
|
|
"action": "For each of the three Echo Do Not Disturb switches (Master Bedroom, Studio, and Penthouse), the automation checks if the switch is for the master bedroom or if the corresponding room's occupancy sensor reports the room is occupied. If either of these is true, the switch is turned on or off to match the new state of the Nighttime mode."
|
|
},
|
|
"human_like": "Controls Echo Do Not Disturb settings for bedroom devices based on nighttime mode and room occupancy.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "update_pc_lastboot",
|
|
"result": {
|
|
"structured": "TRIGGER: When Legion T530 Lastboot [sensor.legion_t530_lastboot] changes state to any value. CONDITION: The new state of Legion T530 Lastboot [sensor.legion_t530_lastboot] is neither 'unknown' nor 'unavailable'. ACTION: Set PC Lastboot Datetime [input_datetime.pc_lastboot] to the timestamp value of Legion T530 Lastboot [sensor.legion_t530_lastboot].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Legion T530 Lastboot [sensor.legion_t530_lastboot] sensor updates to a new state.",
|
|
"conditions": "The new state reported by the Legion T530 Lastboot [sensor.legion_t530_lastboot] sensor must be a valid value, meaning it is not 'unknown' or 'unavailable'.",
|
|
"action": "Updates the PC Lastboot Datetime [input_datetime.pc_lastboot] input to match the timestamp value from the Legion T530 Lastboot [sensor.legion_t530_lastboot] sensor."
|
|
},
|
|
"human_like": "Keeps a record of the PC's last boot time by copying the timestamp from a sensor whenever it updates with a valid value.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "save_monthly_calories",
|
|
"result": {
|
|
"structured": "TRIGGER: When Total Monthly Calories [sensor.total_monthly_calories] changes state. CONDITIONS: (The current day of the month is the 1st) AND (The previous state of Total Monthly Calories [sensor.total_monthly_calories] exists AND its numeric value is greater than 0). ACTIONS: Log a debug message containing the timestamp of the previous state change and the derived month abbreviation. Set the value of the input_number entity for the current year and the derived month (e.g., input_number.calories_curr_year_jan) to the numeric value from the previous state of Total Monthly Calories [sensor.total_monthly_calories]. If the derived month is 'dec', then for each month from January to December: copy the value from the current year's input_number for that month to the previous year's input_number (e.g., input_number.calories_prev_year_jan), and then reset the current year's input_number for that month to 0.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Total Monthly Calories [sensor.total_monthly_calories] sensor updates its value.",
|
|
"conditions": "The automation only runs if it is the first day of the month, and if the previous value reported by the Total Monthly Calories [sensor.total_monthly_calories] sensor was a number greater than zero.",
|
|
"action": "First, a debug log entry is created, noting the timestamp of the last change and the month derived from it. Then, the calorie total from the previous month is saved into a specific input_number for the current year (e.g., 'calories_curr_year_jan'). If the month being saved is December, a year-end rollover occurs: all monthly values for the current year are copied into corresponding 'previous year' input_numbers, and then all the 'current year' input_numbers are reset to zero."
|
|
},
|
|
"human_like": "Saves the previous month's calorie total at the start of each month and performs a yearly rollover of totals when December is saved.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "copy_daily_steps",
|
|
"result": {
|
|
"structured": "TRIGGER: At 23:59:00 daily. CONDITIONS: None. ACTIONS: Set the value of Steps Daily [input_number.steps_daily] to the current state value of Steps Daily Sensor [sensor.steps_daily].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 11:59 PM.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Copies the current step count from the Steps Daily Sensor [sensor.steps_daily] and saves it to the Steps Daily [input_number.steps_daily] helper."
|
|
},
|
|
"human_like": "Saves the daily step count just before midnight.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "process_workout_exercise",
|
|
"result": {
|
|
"structured": "TRIGGER: (Not specified in provided automation; blueprint triggers are not detailed). CONDITIONS: (Not specified in provided automation; blueprint conditions are not detailed). ACTIONS: (Not specified in provided automation; blueprint actions are not detailed). The automation uses the blueprint 'health/process_exercise.yaml' with inputs: exercise_type = 'workout' and units_entity = Workout Daily Time [input_number.workout_daily_time].",
|
|
"natural_language": {
|
|
"trigger": "The trigger is defined by the external blueprint 'health/process_exercise.yaml' and is not detailed in the provided automation.",
|
|
"conditions": "The conditions are defined by the external blueprint 'health/process_exercise.yaml' and are not detailed in the provided automation.",
|
|
"action": "The actions are defined by the external blueprint 'health/process_exercise.yaml' and are not detailed in the provided automation. The blueprint is configured to process a 'workout' type exercise and use the entity Workout Daily Time [input_number.workout_daily_time] for units."
|
|
},
|
|
"human_like": "Processes workout exercise data using a predefined blueprint, tracking time in a daily counter.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "process_yard_work_exercise",
|
|
"result": {
|
|
"structured": "TRIGGER: (Blueprint trigger not specified; assume default from blueprint 'health/process_exercise.yaml' for exercise processing). CONDITIONS: (Blueprint conditions not specified; assume default from blueprint 'health/process_exercise.yaml' for exercise processing). ACTIONS: (Blueprint actions not specified; assume default from blueprint 'health/process_exercise.yaml' for exercise processing) with parameters: exercise_type = 'yard_work' and units_entity = Yard Work Daily Time [input_number.yard_work_daily_time].",
|
|
"natural_language": {
|
|
"trigger": "The trigger is defined by the blueprint 'health/process_exercise.yaml' and is not detailed in this automation snippet.",
|
|
"conditions": "The conditions are defined by the blueprint 'health/process_exercise.yaml' and are not detailed in this automation snippet.",
|
|
"action": "The action is defined by the blueprint 'health/process_exercise.yaml' and will process exercise data for the 'yard_work' type, using the Yard Work Daily Time [input_number.yard_work_daily_time] entity to track units."
|
|
},
|
|
"human_like": "This automation processes yard work as an exercise activity, tracking the time spent using a daily counter.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "process_other_exercise",
|
|
"result": {
|
|
"structured": "TRIGGER: (Not specified in provided automation; blueprint may define triggers). CONDITIONS: (Not specified in provided automation; blueprint may define conditions). ACTIONS: Execute the blueprint 'health/process_exercise.yaml' with inputs: exercise_type set to 'other' and units_entity set to Other Daily Time [input_number.other_daily_time].",
|
|
"natural_language": {
|
|
"trigger": "The triggers for this automation are defined within the referenced blueprint 'health/process_exercise.yaml' and are not detailed in the provided YAML.",
|
|
"conditions": "Any conditions for this automation are defined within the referenced blueprint 'health/process_exercise.yaml' and are not detailed in the provided YAML.",
|
|
"action": "Runs the 'process exercise' routine using the blueprint, specifying the exercise type as 'other' and using the Other Daily Time [input_number.other_daily_time] input number to track duration."
|
|
},
|
|
"human_like": "Processes 'other' type exercise data using a predefined health tracking routine.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "process_steps_exercise",
|
|
"result": {
|
|
"structured": "TRIGGER: (Blueprint-defined trigger for exercise processing). CONDITIONS: (Blueprint-defined conditions). ACTIONS: (Blueprint-defined actions for processing steps exercise using Steps Daily [input_number.steps_daily]).",
|
|
"natural_language": {
|
|
"trigger": "The trigger is defined by the blueprint 'health/process_exercise.yaml'.",
|
|
"conditions": "The conditions are defined by the blueprint 'health/process_exercise.yaml'.",
|
|
"action": "The action is defined by the blueprint 'health/process_exercise.yaml' and involves processing steps exercise data using the Steps Daily [input_number.steps_daily] entity."
|
|
},
|
|
"human_like": "Processes daily step count data for health tracking.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "perform_startup_chores",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Execute shell_command.delete_junk_log_files; Turn on Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration]; Run pyscript.restore_input_select_options for Kodi Movies Select [input_select.kodi_movies] from file /config/all_movies_backup; Wait until Kodi Movies Select [input_select.kodi_movies] state is not 'Select' for a maximum of 10 seconds; Select option in Kodi Movies Select [input_select.kodi_movies] equal to the state of Current Feature Text [input_text.current_feature]; Turn off Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration]; Delay for 30 seconds; Reload configuration entry for Vacuum [vacuum.ecovacs_deebot_none].",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant finishes starting up.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "First, it runs a shell command to delete junk log files. Then, it turns on the Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration] flag. Next, it restores the list of movie options for the Kodi Movies Select [input_select.kodi_movies] dropdown from a backup file. The automation waits for up to 10 seconds for the Kodi Movies Select [input_select.kodi_movies] to have a valid option selected (i.e., its state is no longer 'Select'). Once that happens, it sets the Kodi Movies Select [input_select.kodi_movies] to the movie title stored in the Current Feature Text [input_text.current_feature] field. After that, it turns the Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration] flag back off. It then pauses for 30 seconds. Finally, it reloads the configuration for the Vacuum [vacuum.ecovacs_deebot_none]."
|
|
},
|
|
"human_like": "Performs a series of cleanup and restoration tasks when Home Assistant starts, including tidying logs, restoring the Kodi movie list, and reloading the vacuum configuration.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "perform_mqtt_chores",
|
|
"result": {
|
|
"structured": "TRIGGER: When an MQTT message is received on topic 'homeassistant/status' with payload 'online'. CONDITIONS: None. ACTIONS: 1. Define a variable 'vtrack_entities' containing a list of all input_boolean entity IDs where the entity name contains 'Virtual' OR 'NFC Tag'. 2. For each entity in 'vtrack_entities', publish an MQTT message to topic 'homeassistant/device_tracker/<entity_id_without_prefix>' with payload 'home' if the entity state is 'on', otherwise payload 'not_home'. 3. Define a variable 'items' containing a list of six sensor names: 'ups_last_changed', 'garage_door_north_last_changed', 'garage_door_south_last_changed', 'treadmill_last_changed', 'washer_last_changed', 'workout_last_changed'. 4. For each item in the 'items' list, call the script 'script.set_up_mqtt_automated_config' with parameters domain 'sensor' and unique_id set to the current item.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant receives an MQTT message on the topic 'homeassistant/status' with the content 'online'.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, the automation builds a list of all input_boolean entities whose names contain either 'Virtual' or 'NFC Tag'. For each of these entities, it publishes an MQTT status update to a corresponding device tracker topic, sending 'home' if the entity is on, or 'not_home' if it is off. Next, it creates a list of six specific sensor names ending with 'last_changed'. Finally, for each of these sensor names, it executes a script to set up MQTT automated configuration for a timestamp sensor."
|
|
},
|
|
"human_like": "This automation syncs virtual device tracker states and configures timestamp sensors via MQTT whenever the Home Assistant MQTT broker comes online.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "perform_shutdown_chores",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant shutdown event occurs. CONDITIONS: None. ACTIONS: Execute shell command backup_log.",
|
|
"natural_language": {
|
|
"trigger": "When the Home Assistant system begins its shutdown process.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Runs a shell command named 'backup_log'."
|
|
},
|
|
"human_like": "Runs a log backup command when Home Assistant is shutting down.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "perform_daily_chores",
|
|
"result": {
|
|
"structured": "TRIGGER: At 01:01:01 every day. CONDITIONS: None. ACTIONS: Set variables day_of_week and day_of_month. Turn off Exercise Recordable [input_boolean.exercise_recordable]. Set value to 0 for Treadmill Daily Time [input_number.treadmill_daily_time], Treadmill Daily Calories [input_number.treadmill_daily_calories], Workout Daily Time [input_number.workout_daily_time], Workout Daily Calories [input_number.workout_daily_calories], Yard Work Daily Time [input_number.yard_work_daily_time], Yard Work Daily Calories [input_number.yard_work_daily_calories], Other Daily Time [input_number.other_daily_time], Other Daily Calories [input_number.other_daily_calories], Steps Daily [input_number.steps_daily], Steps Daily Calories [input_number.steps_daily_calories]. Set Other Date Datetime [input_datetime.other_date] to current timestamp. Turn on automations: Determine CPAP Filter Target Day [automation.determine_cpap_filter_target_day], Run Studio Motion Based Light [automation.run_studio_motion_based_light], Update Last Alexa Device [automation.update_last_alexa_device]. If Zigbee2mqtt Update [update.zigbee2mqtt_update] is off, then turn on Notify Zigbee Device Unavailable [automation.notify_zigbee_device_unavailable]. Execute shell command backup_auto_scripts_log. Turn off Dryer Running [input_boolean.dryer_running]. If Backup Laundry Log [input_boolean.backup_laundry_log] is on, then execute shell command backup_laundry_log and turn off Backup Laundry Log [input_boolean.backup_laundry_log]. If Hockey Season [input_boolean.hockey_season] is on, then if Hockey Canes Active [input_boolean.hockey_canes_active] is on, update entity Next Canes Game [sensor.next_canes_game] (continue on error), and if Hockey Flyers Active [input_boolean.hockey_flyers_active] is on, update entity Next Flyers Game [sensor.next_flyers_game] (continue on error). Set F150 Mileage [input_number.f150_mileage] to its current value plus 32. If Theater Open [input_boolean.theater_open] is on AND Adults Home [binary_sensor.adults_home] is off AND Harmony Hub Sensor [sensor.harmony_hub] is PowerOff, then turn off Theater Open [input_boolean.theater_open]. Turn off Salt System Low Temperature [input_boolean.salt_system_low_temperature]. Turn on Control Family Room Lamp [automation.control_family_room_lamp]. Turn off Control Christmas Lights [automation.control_christmas_lights]. Execute watchman.report with parse_config false and create_file true. For each person in list (david, mike, sarah, skylar), if the person is not home (person entity state is not 'home'), then select first option in the corresponding input_select (input_select.<person>_guest_suite). If day_of_week is 0 (Sunday), then set value to 0 for Treadmill Weekly Time [input_number.treadmill_weekly_time], Treadmill Weekly Calories [input_number.treadmill_weekly_calories], Workout Weekly Time [input_number.workout_weekly_time], Workout Weekly Calories [input_number.workout_weekly_calories], Yard Work Weekly Time [input_number.yard_work_weekly_time], Yard Work Weekly Calories [input_number.yard_work_weekly_calories], Other Weekly Time [input_number.other_weekly_time], Other Weekly Calories [input_number.other_weekly_calories], Steps Weekly [input_number.steps_weekly], Steps Weekly Calories [input_number.steps_weekly_calories]; execute script generate_periodic_lists with type all and start_date from Date Sensor [sensor.date]; execute script generate_weekly_free_time_days; execute script generate_weekly_exercise_days. If day_of_month is 1, then set value to 0 for Treadmill Monthly Time [input_number.treadmill_monthly_time], Treadmill Monthly Calories [input_number.treadmill_monthly_calories], Workout Monthly Time [input_number.workout_monthly_time], Workout Monthly Calories [input_number.workout_monthly_calories], Yard Work Monthly Time [input_number.yard_work_monthly_time], Yard Work Monthly Calories [input_number.yard_work_monthly_calories], Other Monthly Time [input_number.other_monthly_time], Other Monthly Calories [input_number.other_monthly_calories], Steps Monthly [input_number.steps_monthly], Steps Monthly Calories [input_number.steps_monthly_calories]; reset counters Treadmill Days [counter.treadmill_days], Workout Days [counter.workout_days], Yard Work Days [counter.yard_work_days], Other Days [counter.other_days], Steps Days [counter.steps_days], Exercise Recordable [counter.exercise_recordable]; execute shell command backup_exercise_log.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every day at 1:01:01 AM.",
|
|
"conditions": "There are no conditions that must be met for the automation to proceed; it runs unconditionally at the scheduled time.",
|
|
"action": "The automation performs a comprehensive series of daily maintenance and reset tasks. It first calculates the current day of the week and day of the month. It then resets daily exercise trackers to zero, updates a date tracker, and ensures several helper automations are turned on. It checks the status of the Zigbee2mqtt update and triggers a notification if it's unavailable. It logs script backups, marks the dryer as not running, and backs up the laundry log if a flag is set. During hockey season, it updates the next game information for active teams. It simulates a daily commute by adding 32 miles to the F150 Mileage [input_number.f150_mileage]. If the theater is marked as open but no adults are home and the Harmony Hub Sensor [sensor.harmony_hub] is off, it closes the theater. It turns off a low-temperature alert for a salt system, manages lighting automations for a family room lamp and Christmas lights, and generates a system report. For each family member (david, mike, sarah, skylar), if they are not home, it resets their guest suite selection. On Sundays, it resets weekly exercise totals and runs scripts to generate weekly schedules. On the first day of the month, it resets monthly exercise totals, resets day counters, and backs up the exercise log."
|
|
},
|
|
"human_like": "This automation runs a wide variety of daily household maintenance tasks at 1:01 AM, including resetting trackers, managing lights, checking system updates, and handling seasonal routines like hockey game updates.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "log_automations",
|
|
"result": {
|
|
"structured": "TRIGGER: When an automation_triggered event occurs. CONDITIONS: The automation entity ID (extracted from the event data) is NOT in the skip list containing: 'log_automations', 'log_scripts', 'set_maximum_attic_temperature', 'set_maximum_garage_temperature', 'set_maximum_outdoor_temperature', 'set_minimum_attic_temperature', 'set_minimum_garage_temperature', 'set_minimum_outdoor_temperature', 'set_washer_operation'. ACTIONS: Send a notification to Automations Scripts Notify [notify.automations_scripts] containing the formatted timestamp and the name of the triggered automation.",
|
|
"natural_language": {
|
|
"trigger": "Whenever any Home Assistant automation is triggered, generating an 'automation_triggered' event.",
|
|
"conditions": "The automation that was triggered must not be on a specific exclusion list. This list includes automations like 'log_automations', 'log_scripts', and several temperature and washer-related automations, preventing this logging automation from logging its own activity or other specific, potentially noisy automations.",
|
|
"action": "Sends a notification message to the Automations Scripts Notify [notify.automations_scripts] service. The message includes a human-readable timestamp and the name of the automation that was just triggered."
|
|
},
|
|
"human_like": "Logs the triggering of most automations by sending a notification, while ignoring a predefined list of automations to avoid clutter.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "log_scripts",
|
|
"result": {
|
|
"structured": "TRIGGER: When a script starts (event: script_started). CONDITIONS: The script name (extracted from trigger.event.data.entity_id) is NOT in the skip list ['log_laundry_event', 'mobile_notification_worker', 'restore_lighting_on_resume', 'resume_cinema', 'resume_worker', 'set_datetime_offset_days', 'set_datetime_offset_weeks', 'set_datetime_offset_months', 'set_fan_to_speed', 'set_theater_dark', 'set_theater_dark_delay', 'set_theater_dim', 'set_theater_idle']. ACTIONS: Send a notification via Automations Scripts Notify [notify.automations_scripts] containing the script start timestamp and the script name.",
|
|
"natural_language": {
|
|
"trigger": "Whenever any script in Home Assistant starts running.",
|
|
"conditions": "The automation only proceeds if the specific script that started is not on a predefined exclusion list. This list includes scripts like 'log_laundry_event', 'mobile_notification_worker', and several others related to theater modes and scheduling, which are considered too noisy or routine to log.",
|
|
"action": "Sends a notification to the 'Automations Scripts Notify' [notify.automations_scripts] service. The message includes the exact time the script started and the name of the script."
|
|
},
|
|
"human_like": "Logs the start of most scripts to a notification channel, excluding a predefined set of noisy or routine scripts.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "change_yaml_log_level",
|
|
"result": {
|
|
"structured": "TRIGGER: When Yaml Log Level Select [input_select.yaml_log_level] changes state. CONDITIONS: None. ACTIONS: Set the logger level for 'homeassistant.components.system_log.external' to the new state value of Yaml Log Level Select [input_select.yaml_log_level].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the value of the Yaml Log Level Select [input_select.yaml_log_level] changes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Sets the logging level for the external system log component to match the newly selected value from the Yaml Log Level Select [input_select.yaml_log_level]."
|
|
},
|
|
"human_like": "Updates the system log level based on the user's selection from a dropdown menu.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "save_notifications_on_create",
|
|
"result": {
|
|
"structured": "TRIGGER: When a persistent notification is added, updated, or is current. CONDITIONS: The notification ID is not 'config_entry_discovered'. ACTIONS: Publish an MQTT message to the topic 'homeassistant/notifications/{notification_id}' with a JSON payload containing the notification ID, title, and message, and retain the message.",
|
|
"natural_language": {
|
|
"trigger": "Whenever a persistent notification is created, updated, or is currently present in Home Assistant.",
|
|
"conditions": "The automation only runs if the notification's ID is not 'config_entry_discovered'.",
|
|
"action": "Sends the notification's details (its ID, title, and message) as a retained MQTT message to a specific topic based on the notification ID."
|
|
},
|
|
"human_like": "Saves new and updated Home Assistant notifications to an MQTT broker for external logging or processing.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "remove_saved_notifications_on_dismiss",
|
|
"result": {
|
|
"structured": "TRIGGER: When a persistent notification is removed. CONDITIONS: The removed notification's ID is not 'config_entry_discovery'. ACTIONS: Publish an MQTT message to the topic 'homeassistant/notifications/[notification_id]' with a retain flag set to true.",
|
|
"natural_language": {
|
|
"trigger": "Whenever a persistent notification is dismissed or removed from the system.",
|
|
"conditions": "The automation only runs if the ID of the removed notification is not 'config_entry_discovery'.",
|
|
"action": "Sends a message via MQTT to a specific topic based on the notification's ID, ensuring the message is retained by the broker."
|
|
},
|
|
"human_like": "Cleans up saved MQTT notifications when they are dismissed, except for the configuration discovery notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "publish_mqtt_automated_states",
|
|
"result": {
|
|
"structured": "TRIGGER: When Cyber1 Status Data [sensor.cyber1_status_data] changes to 'OB DISCHRG' and remains for 1 minute OR When Garage Door North Cover [cover.garage_door_north] changes from closed to open OR When Garage Door South Cover [cover.garage_door_south] changes from closed to open OR When Washer State Select [input_select.washer_state] changes from 'Off' to any state except 'Unknown', 'unknown', or 'unavailable' OR When Treadmill Triggered [input_boolean.treadmill_triggered] changes from off to on OR When Workout Daily Time [input_number.workout_daily_time] becomes greater than 0. CONDITIONS: The trigger is valid (trigger object exists and has defined to_state and from_state). ACTIONS: Execute script publish_mqtt_automated_states with data: domain sensor, unique_id from trigger, state as current timestamp, and empty attributes.",
|
|
"natural_language": {
|
|
"trigger": "The automation can be triggered by any of the following events: the Cyber1 Status Data [sensor.cyber1_status_data] reports 'OB DISCHRG' for one minute; the north garage door [cover.garage_door_north] opens from a closed state; the south garage door [cover.garage_door_south] opens from a closed state; the washer state [input_select.washer_state] changes from 'Off' to any state other than 'Unknown', 'unknown', or 'unavailable'; the treadmill triggered flag [input_boolean.treadmill_triggered] is turned on; or the daily workout time [input_number.workout_daily_time] exceeds zero.",
|
|
"conditions": "The only condition is that the triggering event must be valid, meaning the automation's trigger context is properly defined with a previous and new state.",
|
|
"action": "Calls a script named publish_mqtt_automated_states, passing along the trigger's unique identifier and the current timestamp as the state, to publish this information via MQTT."
|
|
},
|
|
"human_like": "Publishes MQTT messages with timestamps for various household events like UPS status changes, garage door openings, washer activity, and treadmill use.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_zigbee_unavailable_notification",
|
|
"result": {
|
|
"structured": "TRIGGER: When Zigbee2mqtt Update [update.zigbee2mqtt_update] changes from off to on OR when Zigbee2mqtt Update [update.zigbee2mqtt_update] changes from on to off. ACTIONS: Turn the Notify Zigbee Device Unavailable [automation.notify_zigbee_device_unavailable] automation on or off, matching the trigger's 'from' state (i.e., turn on when the update goes from off to on, turn off when the update goes from on to off).",
|
|
"natural_language": {
|
|
"trigger": "When the Zigbee2mqtt Update [update.zigbee2mqtt_update] becomes available (changes from off to on) or becomes unavailable (changes from on to off).",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Enables or disables the Notify Zigbee Device Unavailable [automation.notify_zigbee_device_unavailable] automation. It turns the notification automation on when the Zigbee2mqtt update becomes available, and turns it off when the update becomes unavailable."
|
|
},
|
|
"human_like": "Automatically enables or disables Zigbee device unavailable notifications based on whether the Zigbee2mqtt system itself is available.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_hockey_hobby",
|
|
"result": {
|
|
"structured": "TRIGGER: When Hockey Season [input_boolean.hockey_season] turns on OR when Hockey Season [input_boolean.hockey_season] turns off. CONDITIONS: None. ACTIONS: Enable or disable the Notify Next Canes Game [automation.notify_next_canes_game] and Notify Next Flyers Game [automation.notify_next_flyers_game] automations based on the trigger (turn_on for 'on' trigger, turn_off for 'off' trigger) AND set the state of Hockey Canes Active [input_boolean.hockey_canes_active] and Hockey Flyers Active [input_boolean.hockey_flyers_active] to match the trigger (turn_on for 'on' trigger, turn_off for 'off' trigger).",
|
|
"natural_language": {
|
|
"trigger": "When the Hockey Season [input_boolean.hockey_season] is turned on or off.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Turns on or off the Notify Next Canes Game [automation.notify_next_canes_game] and Notify Next Flyers Game [automation.notify_next_flyers_game] automations to match the new season state. It also turns on or off the Hockey Canes Active [input_boolean.hockey_canes_active] and Hockey Flyers Active [input_boolean.hockey_flyers_active] switches accordingly."
|
|
},
|
|
"human_like": "Toggles all hockey-related notifications and activity switches on or off when the hockey season starts or ends.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "respond_to_mobile_text",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Galaxy Last Notification [sensor.jon_galaxy_last_notification] changes state to null. CONDITIONS: (category (extracted from sensor.jon_galaxy_last_notification) is not 'email') AND (the first person in the extracted persons list is not 'Stranger') AND (Treadmill Triggered [input_boolean.treadmill_triggered] is on OR Sleeptime [input_boolean.sleeptime] is on OR Jon Driving [binary_sensor.jon_driving] is on). ACTIONS: For each person in the extracted persons list, if the corresponding timer (timer.text_response_delay_<person>) is idle, then send a notification via Gmail to a phone number (determined by the person's name) with a message stating the user's current activity (on the treadmill, asleep, driving, or unavailable) and a promise to respond later, then start the corresponding timer for 300 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When a new notification is received on the user's phone, causing the sensor Jon Galaxy Last Notification [sensor.jon_galaxy_last_notification] to update to a null state.",
|
|
"conditions": "The notification must not be an email, and the text or title of the notification must contain the name of a known person (Michael, Maryam, Sarah, or David). Additionally, the user must be in one of the following states: using the treadmill (Treadmill Triggered [input_boolean.treadmill_triggered] is on), sleeping (Sleeptime [input_boolean.sleeptime] is on), or driving (Jon Driving [binary_sensor.jon_driving] is on).",
|
|
"action": "For each identified person in the notification, the system checks if a cooldown timer for that person is idle. If so, it sends an automated SMS via Gmail to that person's phone number, explaining that the user is currently busy (e.g., on the treadmill, asleep, or driving) and will respond later. After sending the message, it starts a 5-minute cooldown timer for that person to prevent duplicate messages."
|
|
},
|
|
"human_like": "Automatically sends a polite 'I'm busy' text reply to specific contacts when a notification arrives while the user is on the treadmill, sleeping, or driving.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "create_daily_mini_todo_list",
|
|
"result": {
|
|
"structured": "TRIGGER: At 05:00:00 daily. CONDITIONS: None. ACTIONS: Set variables for weekly list entities and a calculated start date. For each weekly list entity (Mini Todo Weekly Cleaning List [sensor.mini_todo_weekly_cleaning_list], Mini Todo Weekly Other List [sensor.mini_todo_weekly_other_list], Mini Todo Weekly Yard Work List [sensor.mini_todo_weekly_yard_work_list]), if the state is 'unknown' or 'unavailable', run script.generate_periodic_lists for that type. Run script.get_weather_metrics. Fire the reset_mini_todo_items event. Wait until the Daily Mini Todo List [sensor.daily_mini_todo_list] has zero items. Calculate and set the Mini Todo Available Minutes [input_number.mini_todo_available_minutes] based on the time window between Mini Todo Start Time [input_datetime.mini_todo_start_time] and Mini Todo End Time [input_datetime.mini_todo_end_time], minus Mini Todo Downtime Minutes [input_number.mini_todo_downtime_minutes]. Reset the Mini Todo Tasks [counter.mini_todo_tasks] counter. Turn off Mini Todo Major Item Added [input_boolean.mini_todo_major_item_added]. Run script.add_mini_todo_calendar_items with the calculated time window. If the current weekday is marked for exercise in Mini Todo Weekly Exercise Days [input_number.mini_todo_weekly_exercise_days], then calculate exercise type based on Treadmill Last Changed [sensor.treadmill_last_changed] and Workout Last Changed [sensor.workout_last_changed], deduct exercise minutes from Mini Todo Available Minutes [input_number.mini_todo_available_minutes], fire an add_mini_todo_item event for the exercise, and increment Mini Todo Tasks [counter.mini_todo_tasks]. If the current weekday is marked for free time in Mini Todo Weekly Free Time Days [input_number.mini_todo_weekly_free_time_days], then fire an add_mini_todo_item event for free time, increment Mini Todo Tasks [counter.mini_todo_tasks], and stop the automation. Reset the Mini Todo Attempts [counter.mini_todo_attempts] counter. If Mini Todo Weekly Cleaning List [sensor.mini_todo_weekly_cleaning_list] has items, run script.add_mini_todo_periodic_item for cleaning. If Mini Todo Weekly Yard Work List [sensor.mini_todo_weekly_yard_work_list] has items, run script.add_mini_todo_periodic_item for yard_work. Calculate a target task count. While Mini Todo Available Minutes [input_number.mini_todo_available_minutes] is greater than 0 AND Mini Todo Tasks [counter.mini_todo_tasks] is less than the target task count AND Mini Todo Attempts [counter.mini_todo_attempts] is less than or equal to 10, randomly select a type from ['cleaning', 'other', 'yard_work', 'major', 'minor'], log the iteration, delay 500ms, and if the type is in ['cleaning', 'other', 'yard_work'] and a random check passes, run script.add_mini_todo_periodic_item for that type, OR if the type is in ['major', 'minor'] and a random check passes, run script.add_mini_todo_project_item for that type.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every day at 5:00 AM.",
|
|
"conditions": "There are no explicit conditions that must be met before the actions run; the automation executes immediately upon the time trigger.",
|
|
"action": "The automation performs a multi-step daily setup for a mini todo list. First, it checks if the weekly cleaning, other, and yard work list sensors are available, and if not, it generates the periodic lists for the missing types. It then fetches weather metrics and resets the daily todo items, waiting until the daily list is empty. It calculates the available minutes for the day based on a configurable start and end time, minus a downtime allowance, and sets this value. It resets the task counter and turns off a flag for major items. It adds any calendar items to the list. If the day is marked for exercise, it determines the last type of exercise (treadmill or workout), deducts the estimated time from the available minutes, adds an exercise item to the list, and increments the task counter. If the day is marked as a free time day, it adds a free time block, increments the task counter, and stops the automation entirely. Otherwise, it resets an attempts counter. If there are items in the weekly cleaning or yard work lists, it adds one periodic item from each. It then calculates how many more tasks are needed to reach a target of five. In a loop, while there are available minutes, fewer than the target tasks, and fewer than 10 attempts have been made, it randomly picks a category (cleaning, other, yard work, major, or minor) and, with a 50% chance, adds either a periodic item (for the first three categories) or a project item (for major/minor) to the list, logging each iteration."
|
|
},
|
|
"human_like": "This automation creates a personalized daily to-do list every morning, factoring in exercise days, free time, calendar events, and available time to schedule a mix of chores and projects.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "reload_unifi_integration",
|
|
"result": {
|
|
"structured": "TRIGGER: When a system log event occurs for the Unifi integration component with level WARNING. CONDITIONS: The event message contains the substring 'received 401 Unauthorized'. ACTIONS: Increment Unifi Integration Errors [counter.unifi_integration_errors]. IF Unifi Integration Errors [counter.unifi_integration_errors] is greater than 5 THEN reload the configuration entry for Udm State Sensor [sensor.udm_state] AND reset Unifi Integration Errors [counter.unifi_integration_errors].",
|
|
"natural_language": {
|
|
"trigger": "When a system log event is generated for the Unifi integration component with a WARNING severity level.",
|
|
"conditions": "The specific warning message in the log event must contain the text 'received 401 Unauthorized'.",
|
|
"action": "First, it increments the Unifi Integration Errors [counter.unifi_integration_errors] counter. Then, it checks if the error count has exceeded 5. If it has, it reloads the configuration entry for the Udm State Sensor [sensor.udm_state] and resets the error counter back to zero."
|
|
},
|
|
"human_like": "Automatically reloads the Unifi integration if it repeatedly fails to authenticate, tracking errors to prevent unnecessary restarts.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reload_ecovacs_integration",
|
|
"result": {
|
|
"structured": "TRIGGER: When Vacuum [vacuum.ecovacs_deebot_none] OR Ecovacs Deebot Filter Lifespan [sensor.ecovacs_deebot_filter_lifespan] OR Ecovacs Deebot Main Brush Lifespan [sensor.ecovacs_deebot_main_brush_lifespan] OR Ecovacs Deebot Side Brush Lifespan [sensor.ecovacs_deebot_side_brush_lifespan] becomes unavailable AND remains unavailable for 30 seconds. CONDITIONS: None. ACTIONS: Reload the configuration entry for Vacuum [vacuum.ecovacs_deebot_none].",
|
|
"natural_language": {
|
|
"trigger": "When any of the following entities becomes unavailable and stays that way for 30 seconds: the Vacuum [vacuum.ecovacs_deebot_none], the Ecovacs Deebot Filter Lifespan [sensor.ecovacs_deebot_filter_lifespan], the Ecovacs Deebot Main Brush Lifespan [sensor.ecovacs_deebot_main_brush_lifespan], or the Ecovacs Deebot Side Brush Lifespan [sensor.ecovacs_deebot_side_brush_lifespan].",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "Reloads the configuration entry for the Vacuum [vacuum.ecovacs_deebot_none]."
|
|
},
|
|
"human_like": "Automatically reloads the Ecovacs vacuum integration if the vacuum or its component sensors become unavailable for 30 seconds.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_control_automation",
|
|
"result": {
|
|
"structured": "TRIGGER: When Christmas Mode [input_boolean.christmas_mode] changes state. CONDITIONS: None. ACTIONS: Set variable 'toggle_operation' to the current state of Christmas Mode [input_boolean.christmas_mode]. Then, turn the automation Control Family Room Light Automations [automation.control_family_room_light_automations] to the state stored in 'toggle_operation'. Then, IF (Sun [sun.sun] is NOT rising AND Sun [sun.sun] is above the horizon) THEN turn Control Family Room Lamp [automation.control_family_room_lamp] to the opposite state of 'toggle_operation' AND turn Control Christmas Lights [automation.control_christmas_lights] to the same state as 'toggle_operation'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Christmas Mode [input_boolean.christmas_mode] input boolean changes.",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "First, it records the new state of Christmas Mode [input_boolean.christmas_mode] into a variable. It then uses that state to turn on or off the Control Family Room Light Automations [automation.control_family_room_light_automations] automation. Next, if it is daytime (the sun is above the horizon but not rising), it will toggle two other automations: it turns the Control Family Room Lamp [automation.control_family_room_lamp] automation to the opposite state of Christmas Mode, and it turns the Control Christmas Lights [automation.control_christmas_lights] automation to the same state as Christmas Mode."
|
|
},
|
|
"human_like": "Toggles a set of light-related automations when Christmas Mode is switched, adjusting the family room lamp and Christmas lights during the day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_family_room_light_automations",
|
|
"result": {
|
|
"structured": "TRIGGER: When Sun [sun.sun] changes state OR when Sun [sun.sun] attribute 'rising' changes. CONDITIONS: None. ACTIONS: IF Sun [sun.sun] is not rising AND Sun [sun.sun] is above the horizon THEN turn off Control Family Room Lamp [automation.control_family_room_lamp] AND IF All Day Christmas Lights [binary_sensor.all_day_christmas_lights] is off THEN turn on Control Christmas Lights [automation.control_christmas_lights]. OTHERWISE (ELSE) turn on Control Family Room Lamp [automation.control_family_room_lamp] AND turn off Control Christmas Lights [automation.control_christmas_lights].",
|
|
"natural_language": {
|
|
"trigger": "When the Sun [sun.sun] changes its overall state or when its 'rising' attribute changes.",
|
|
"conditions": "There are no separate conditions; the logic is embedded within the action.",
|
|
"action": "If the sun is not rising and is above the horizon, the automation turns off the Control Family Room Lamp [automation.control_family_room_lamp]. Then, if the All Day Christmas Lights [binary_sensor.all_day_christmas_lights] are off, it turns on the Control Christmas Lights [automation.control_christmas_lights]. Otherwise, if the sun is rising or below the horizon, it turns on the Control Family Room Lamp [automation.control_family_room_lamp] and turns off the Control Christmas Lights [automation.control_christmas_lights]."
|
|
},
|
|
"human_like": "Manages the family room lamp and Christmas lights based on the sun's position, turning the lamp on at night and the Christmas lights on during the day if they are not already set to run all day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_office_lamp",
|
|
"result": {
|
|
"structured": "TRIGGER: When Office Sensor Ambient Light [sensor.office_sensor_ambient_light] changes state. CONDITIONS: (Office Sensor Ambient Light [sensor.office_sensor_ambient_lights] lux value is below Office Ambient Min [input_number.office_ambient_min]) OR (Office Sensor Ambient Light [sensor.office_sensor_ambient_lights] lux value is above Office Ambient Max [input_number.office_ambient_max]). ACTIONS: If lux is below min, turn on Office Lamp [light.office_lamp]. If lux is above max, turn off Office Lamp [light.office_lamp].",
|
|
"natural_language": {
|
|
"trigger": "When the ambient light level reported by the Office Sensor Ambient Light [sensor.office_sensor_ambient_light] changes.",
|
|
"conditions": "If the measured light level is either below the minimum threshold set by Office Ambient Min [input_number.office_ambient_min] or above the maximum threshold set by Office Ambient Max [input_number.office_ambient_max].",
|
|
"action": "Turns on the Office Lamp [light.office_lamp] if the light level is too low, and turns it off if the light level is too high."
|
|
},
|
|
"human_like": "Automatically turns the office lamp on or off to maintain a comfortable light level based on ambient light sensors.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_hallway_lamp",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] state changes OR When Hallway Ambient Min [input_number.hallway_ambient_min] state changes OR When Hallway Ambient Max [input_number.hallway_ambient_max] state changes OR When Hallway Lamp [light.hallway_lamp] state changes. CONDITIONS: (Hallway Lamp [light.hallway_lamp] is on OR off) AND (theater mode is off). ACTIONS: If Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] lux value is less than Hallway Ambient Min [input_number.hallway_ambient_min] AND Hallway Lamp [light.hallway_lamp] is off, turn on Hallway Lamp [light.hallway_lamp]. If Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] lux value is greater than Hallway Ambient Max [input_number.hallway_ambient_max] AND Hallway Lamp [light.hallway_lamp] is on, turn off Hallway Lamp [light.hallway_lamp].",
|
|
"natural_language": {
|
|
"trigger": "When the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes, when the minimum or maximum lux thresholds (Hallway Ambient Min [input_number.hallway_ambient_min] or Hallway Ambient Max [input_number.hallway_ambient_max]) are adjusted, or when the state of the Hallway Lamp [light.hallway_lamp] itself changes.",
|
|
"conditions": "The automation only runs if the Hallway Lamp [light.hallway_lamp] is either on or off (i.e., it is in a valid state) and if a general 'theater mode' is not active.",
|
|
"action": "If the measured ambient light falls below the minimum threshold and the lamp is off, the lamp is turned on. Conversely, if the ambient light rises above the maximum threshold and the lamp is on, the lamp is turned off."
|
|
},
|
|
"human_like": "Automatically turns the Hallway Lamp [light.hallway_lamp] on or off based on the ambient light level to maintain brightness within a desired range.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_family_room_lamp",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes state OR when Family Room Ambient Min [input_number.family_room_ambient_min] changes state OR when Family Room Ambient Max [input_number.family_room_ambient_max] changes state. CONDITIONS: (Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] lux value is less than Family Room Ambient Min [input_number.family_room_ambient_min] value) OR (Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_lights] lux value is greater than Family Room Ambient Max [input_number.family_room_ambient_max] value). ACTIONS: If the lux condition is met, turn on or adjust Family Room Lamp [light.family_room_lamp] to maintain ambient light within the specified range, while also checking theater mode status.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes, or when the user-defined minimum or maximum light level thresholds, Family Room Ambient Min [input_number.family_room_ambient_min] and Family Room Ambient Max [input_number.family_room_ambient_max], are adjusted.",
|
|
"conditions": "The automation checks if the current ambient light level is either below the minimum threshold or above the maximum threshold set for the family room. It also incorporates a check for theater mode, which may prevent the light from turning on.",
|
|
"action": "If the conditions are satisfied, the Family Room Lamp [light.family_room_lamp] is controlled—turned on, off, or adjusted—to keep the room's light level within the desired range, respecting the theater mode setting."
|
|
},
|
|
"human_like": "Automatically adjusts the family room lamp based on the ambient light level to keep it within a comfortable range, unless theater mode is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_christmas_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes state. CONDITIONS: (Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is less than Family Room Ambient Min [input_number.family_room_ambient_min]) AND (the theater mode is not active) AND (the Christmas mode is active). ACTIONS: Turn on Family Room Lamp [light.family_room_lamp]. TRIGGER: When Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes state. CONDITIONS: (Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is greater than Family Room Ambient Max [input_number.family_room_ambient_max]) AND (the theater mode is not active) AND (the Christmas mode is active). ACTIONS: Turn off Family Room Lamp [light.family_room_lamp].",
|
|
"natural_language": {
|
|
"trigger": "When the ambient light level reported by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] changes.",
|
|
"conditions": "If the ambient light level is below the minimum threshold set by Family Room Ambient Min [input_number.family_room_ambient_min], and the home theater mode is not active, and the Christmas mode is active, the lamp will be turned on. Conversely, if the ambient light level is above the maximum threshold set by Family Room Ambient Max [input_number.family_room_ambient_max], and the home theater mode is not active, and the Christmas mode is active, the lamp will be turned off.",
|
|
"action": "Turns the Family Room Lamp [light.family_room_lamp] on or off based on the ambient light level, but only when Christmas mode is active and theater mode is not."
|
|
},
|
|
"human_like": "Automatically turns the family room lamp on when it gets dark and off when it's bright, but only during Christmas season and when the home theater is not in use.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_voice_assistant_screens",
|
|
"result": {
|
|
"structured": "TRIGGER: When Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is below Family Room Ambient Min [input_number.family_room_ambient_min] OR when Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is above Family Room Ambient Max [input_number.family_room_ambient_max]. CONDITIONS: None. ACTIONS: If the trigger was the 'dim' condition (light below minimum), then activate Voice Assistants On Dim Scene [scene.voice_assistants_on_dim]; otherwise (if the trigger was the 'bright' condition), activate Voice Assistants On Bright Scene [scene.voice_assistants_on_bright].",
|
|
"natural_language": {
|
|
"trigger": "When the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] falls below the minimum threshold set by Family Room Ambient Min [input_number.family_room_ambient_min], or when it rises above the maximum threshold set by Family Room Ambient Max [input_number.family_room_ambient_max].",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "If the trigger was caused by the light being too dim, it turns on the Voice Assistants On Dim Scene [scene.voice_assistants_on_dim]. If the trigger was caused by the light being too bright, it turns on the Voice Assistants On Bright Scene [scene.voice_assistants_on_bright]."
|
|
},
|
|
"human_like": "Adjusts the voice assistant screens' brightness based on the ambient light level in the room, using different scenes for dim and bright conditions.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "enable_extended_away_mode",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time matches the value set in Extended Away Start Datetime [input_datetime.extended_away_start]. CONDITIONS: None. ACTIONS: Turn on Extended Away Mode [input_boolean.extended_away_mode] AND execute the script Set Extended Thermostat Holds [script.set_extended_thermostat_holds] with the data parameters heat_temp set to the current state of Extended Hold Heat Temp [input_number.extended_hold_heat_temp] and cool_temp set to the current state of Extended Hold Cool Temp [input_number.extended_hold_cool_temp].",
|
|
"natural_language": {
|
|
"trigger": "At the specific time set in the Extended Away Start Datetime [input_datetime.extended_away_start].",
|
|
"conditions": "There are no conditions that must be met for this automation to proceed.",
|
|
"action": "It activates the Extended Away Mode [input_boolean.extended_away_mode] and runs the script called Set Extended Thermostat Holds [script.set_extended_thermostat_holds], passing in the current temperature values from Extended Hold Heat Temp [input_number.extended_hold_heat_temp] and Extended Hold Cool Temp [input_number.extended_hold_cool_temp] as parameters."
|
|
},
|
|
"human_like": "Automatically enables the extended away mode and sets the thermostat hold temperatures at a pre-scheduled start time.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "disable_extended_away_mode",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time reaches the value set in Extended Away End Datetime [input_datetime.extended_away_end]. CONDITIONS: None. ACTIONS: Turn off Extended Away Mode [input_boolean.extended_away_mode] AND call script Remove Thermostat Hold [script.remove_thermostat_hold] with data thermostat_entity: climate.downstairs, extended: true AND call script Remove Thermostat Hold [script.remove_thermostat_hold] with data thermostat_entity: climate.upstairs, extended: true.",
|
|
"natural_language": {
|
|
"trigger": "At the specific time set in the Extended Away End Datetime [input_datetime.extended_away_end].",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Disables the Extended Away Mode [input_boolean.extended_away_mode] and then runs the Remove Thermostat Hold [script.remove_thermostat_hold] script for both the Downstairs Climate [climate.downstairs] and Upstairs Climate [climate.upstairs] thermostats, specifying that it is for an extended hold."
|
|
},
|
|
"human_like": "Automatically turns off the extended away mode and removes the extended temperature holds from the upstairs and downstairs thermostats at a scheduled end time.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_nighttime_during_extended_away",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 22:00:00 OR When the time is 05:30:00. CONDITIONS: Extended Away Mode [input_boolean.extended_away_mode] is on. ACTIONS: Start Extended Away Nighttime Timer [timer.extended_away_nighttime] with a random duration between 5 and 90 minutes AND Turn Extended Away Nighttime [input_boolean.extended_away_nighttime] on (if trigger id is 'on') or off (if trigger id is 'off').",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at two specific times: 10:00 PM (22:00) and 5:30 AM (05:30).",
|
|
"conditions": "The automation only proceeds if the Extended Away Mode [input_boolean.extended_away_mode] is currently turned on.",
|
|
"action": "It starts the Extended Away Nighttime Timer [timer.extended_away_nighttime] with a random duration between 5 and 90 minutes. Simultaneously, it sets the Extended Away Nighttime [input_boolean.extended_away_nighttime] to match the trigger: turning it on at 10 PM or off at 5:30 AM."
|
|
},
|
|
"human_like": "Manages nighttime lighting or security during extended away periods by turning a mode on at night and off in the morning, with a random timer for added unpredictability.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_extended_away_nighttime_timer",
|
|
"result": {
|
|
"structured": "TRIGGER: When Extended Away Nighttime Timer [timer.extended_away_nighttime] finishes. CONDITIONS: Extended Away Mode [input_boolean.extended_away_mode] is on. ACTIONS: Set Nighttime [input_boolean.nighttime] to the current state of Extended Away Nighttime [input_boolean.extended_away_nighttime] (i.e., turn Nighttime on if Extended Away Nighttime is on, or turn it off if Extended Away Nighttime is off).",
|
|
"natural_language": {
|
|
"trigger": "When the Extended Away Nighttime Timer [timer.extended_away_nighttime] finishes.",
|
|
"conditions": "The Extended Away Mode [input_boolean.extended_away_mode] must be turned on.",
|
|
"action": "Sets the Nighttime [input_boolean.nighttime] state to match the current state of the Extended Away Nighttime [input_boolean.extended_away_nighttime] input boolean."
|
|
},
|
|
"human_like": "When the extended away nighttime timer ends, it updates the main nighttime status to reflect the extended away setting, but only if extended away mode is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "run_extended_away_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When Extended Away Mode [input_boolean.extended_away_mode] turns on OR When Nighttime [input_boolean.nighttime] turns off OR When Sun [sun.sun] sets (changes to below_horizon) OR When Home Assistant starts. CONDITIONS: Extended Away Mode [input_boolean.extended_away_mode] is on AND Nighttime [input_boolean.nighttime] is off AND Sun [sun.sun] is below_horizon. ACTIONS: Wait a random delay between 2 and 15 seconds. Turn off Extended Away Early Return [input_boolean.extended_away_early_return]. Then, repeat a sequence until Extended Away Mode [input_boolean.extended_away_mode] is off OR Nighttime [input_boolean.nighttime] is on OR Sun [sun.sun] is above_horizon. In each loop iteration: Determine a light to toggle. If more than 3 lights in the Away Lights [light.away_lights] group are on, randomly toggle one of the currently on lights. Otherwise, randomly toggle any light in the Away Lights [light.away_lights] group. Wait for Extended Away Mode [input_boolean.extended_away_mode] to turn off, with a random timeout between 10 and 60 minutes. If the wait completes (mode turned off), turn on Extended Away Early Return [input_boolean.extended_away_early_return]. After the repeat loop ends: If Extended Away Early Return [input_boolean.extended_away_early_return] is off, turn off all Away Lights [light.away_lights]. Otherwise, turn on Office Lamp [light.office_lamp] and Family Room Lamp [light.family_room_lamp] (the 'normal_lights'), and turn off all other lights in the Away Lights [light.away_lights] group.",
|
|
"natural_language": {
|
|
"trigger": "This automation can start when Extended Away Mode [input_boolean.extended_away_mode] is activated, when Nighttime [input_boolean.nighttime] is deactivated, when the Sun [sun.sun] sets, or when Home Assistant itself starts up.",
|
|
"conditions": "For the automation to proceed, all of the following must be true: Extended Away Mode [input_boolean.extended_away_mode] must be on, Nighttime [input_boolean.nighttime] must be off, and the Sun [sun.sun] must be below the horizon.",
|
|
"action": "After a short random pause, the automation first turns off the Extended Away Early Return [input_boolean.extended_away_early_return] indicator. It then enters a loop that randomly toggles lights within the Away Lights [light.away_lights] group to simulate activity. The loop aims to keep no more than three lights on at a time. It pauses for a random period between 10 and 60 minutes between toggles, but will exit immediately if the away mode ends, nighttime begins, or the sun rises. If the away mode ends during a wait, it marks an early return. Once the loop finishes, if an early return was not detected, it turns off all the away lights. If an early return was detected, it turns on the Office Lamp [light.office_lamp] and Family Room Lamp [light.family_room_lamp] while turning off the other lights in the away group."
|
|
},
|
|
"human_like": "Simulates an occupied home during extended away periods by randomly toggling lights at night, and provides a welcoming light scene if someone returns early.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_extended_away_mode",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Jon Distance [sensor.home_jon_distance] is less than 13000. CONDITIONS: Home Jon Direction Of Travel [sensor.home_jon_direction_of_travel] is towards. ACTIONS: Execute Turn Off Extended Away Mode [script.turn_off_extended_away_mode].",
|
|
"natural_language": {
|
|
"trigger": "When the distance reported by the Home Jon Distance [sensor.home_jon_distance] sensor falls below 13000.",
|
|
"conditions": "If the Home Jon Direction Of Travel [sensor.home_jon_direction_of_travel] sensor indicates the direction is 'towards'.",
|
|
"action": "Runs the Turn Off Extended Away Mode [script.turn_off_extended_away_mode] script."
|
|
},
|
|
"human_like": "Turns off the extended away mode when Jon is within a certain distance and traveling towards home.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "run_studio_motion_based_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Studio Motion Detector Occupancy [binary_sensor.studio_motion_detector_occupancy] detects motion (state changes to 'on'). CONDITIONS: None explicitly defined (conditions are handled internally by the blueprint). ACTIONS: Turn on Studio Bath Light [light.studio_bath] and Studio Fan Switch [switch.studio_fan] upon motion detection. Turn off Studio Bath Light [light.studio_bath] after no motion is detected for 120 seconds. Turn off Studio Fan Switch [switch.studio_fan] after no motion is detected for 420 seconds, but only if the fan has been running for at least an additional 300 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When the Studio Motion Detector Occupancy [binary_sensor.studio_motion_detector_occupancy] detects motion.",
|
|
"conditions": "This automation uses a blueprint which handles its own internal logic; no explicit conditions are defined in the provided YAML.",
|
|
"action": "When motion is detected, the Studio Bath Light [light.studio_bath] and the Studio Fan Switch [switch.studio_fan] are turned on. The light is turned off 120 seconds after motion stops. The fan is turned off 420 seconds after motion stops, but only if it has been running for at least 300 seconds total."
|
|
},
|
|
"human_like": "Automatically turns on the studio light and fan when motion is detected, and turns them off after a delay to save energy.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "run_laundry_room_motion_based_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Laundry Room Motion Detector Occupancy [binary_sensor.laundry_room_motion_detector_occupancy] changes state. CONDITIONS: None. ACTIONS: Turn on Laundry Room Light [light.Laundry_room] when motion is detected, and turn it off after no motion is detected for 180 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected or stops being detected by the Laundry Room Motion Detector Occupancy [binary_sensor.laundry_room_motion_detector_occupancy].",
|
|
"conditions": "There are no specific conditions that must be met.",
|
|
"action": "When motion is detected, the Laundry Room Light [light.Laundry_room] is turned on. The light will then automatically turn off after no motion has been detected for 180 seconds."
|
|
},
|
|
"human_like": "Automatically turns the laundry room light on when motion is detected and off a few minutes after motion stops.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "run_master_bath_motion_based_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Master Bath Motion Detector Occupancy [binary_sensor.master_bath_motion_detector_occupancy] detects motion (on). CONDITIONS: Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] reports a value below the minimum lux threshold defined by Master Suite Ambient Min [input_number.master_suite_ambient_min]. ACTIONS: Turn on Master Vanity Light [light.master_vanity] and turn on Master Bath Fan Switch [switch.master_bath_fan]. After motion stops, wait 420 seconds, then turn off Master Vanity Light [light.master_vanity]. After motion stops, wait 240 seconds, then turn off Master Bath Fan Switch [switch.master_bath_fan]. If the fan is turned on, wait an additional 300 seconds before turning it off.",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected by the Master Bath Motion Detector Occupancy [binary_sensor.master_bath_motion_detector_occupancy].",
|
|
"conditions": "The automation only runs if the ambient light level, measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light], is below a minimum brightness value set by the Master Suite Ambient Min [input_number.master_suite_ambient_min].",
|
|
"action": "It turns on the Master Vanity Light [light.master_vanity] and the Master Bath Fan Switch [switch.master_bath_fan]. After motion is no longer detected, it waits 7 minutes before turning the light off, and waits 4 minutes before turning the fan off. If the fan is activated, it ensures it runs for at least an additional 5 minutes beyond the initial delay."
|
|
},
|
|
"human_like": "Automatically turns on the vanity light and fan in the master bathroom when motion is detected and the room is dark enough, keeping them on for a set time after you leave.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_attic_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Attic Door Sensor Contact [binary_sensor.attic_door_sensor_contact] changes state. CONDITIONS: (Attic Door Close Toggle [input_boolean.attic_door_close_toggle] is on). ACTIONS: If Attic Door Sensor Contact [binary_sensor.attic_door_sensor_contact] is open (on), turn on Attic Light [light.attic]. If Attic Door Sensor Contact [binary_sensor.attic_door_sensor_contact] is closed (off), turn off Attic Light [light.attic].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Attic Door Sensor Contact [binary_sensor.attic_door_sensor_contact] changes, either opening or closing.",
|
|
"conditions": "The automation only runs if the Attic Door Close Toggle [input_boolean.attic_door_close_toggle] is switched on.",
|
|
"action": "If the door sensor reports the door is open, the Attic Light [light.attic] is turned on. If the door sensor reports the door is closed, the Attic Light [light.attic] is turned off."
|
|
},
|
|
"human_like": "Automatically turns the attic light on when the door is opened and off when it's closed, as long as the feature is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_upstairs_entry_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Upstairs Entry Sensor Contact [binary_sensor.upstairs_entry_sensor_contact] changes state. CONDITIONS: None. ACTIONS: The behaviour is defined by the 'lighting/sensor_light.yaml' blueprint, which typically toggles Penthouse Hall Light [light.penthouse_hall] based on the state of Upstairs Entry Sensor Contact [binary_sensor.upstairs_entry_sensor_contact] and the value of Upstairs Entry Close Toggle [input_boolean.upstairs_entry_close_toggle].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Upstairs Entry Sensor Contact [binary_sensor.upstairs_entry_sensor_contact] changes.",
|
|
"conditions": "There are no explicit conditions defined in this automation; the logic is contained within the referenced blueprint.",
|
|
"action": "Executes the logic defined by the 'lighting/sensor_light.yaml' blueprint. This blueprint generally controls the Penthouse Hall Light [light.penthouse_hall], likely turning it on when the sensor is triggered and off after a delay, with its behaviour potentially modified by the Upstairs Entry Close Toggle [input_boolean.upstairs_entry_close_toggle]."
|
|
},
|
|
"human_like": "Automatically controls the hall light based on the upstairs entry door sensor.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_master_closet_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When Master Closet Sensor Contact [binary_sensor.master_closet_sensor_contact] changes state. CONDITIONS: None. ACTIONS: Turn on Master Closet Light [light.master_closet] when the sensor is open (on) AND turn off Master Closet Light [light.master_closet] when the sensor is closed (off).",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Master Closet Sensor Contact [binary_sensor.master_closet_sensor_contact] changes.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "If the sensor is open, the Master Closet Light [light.master_closet] is turned on. If the sensor is closed, the light is turned off."
|
|
},
|
|
"human_like": "Automatically turns the closet light on when the door is opened and off when it is closed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_attic_door_close_toggle",
|
|
"result": {
|
|
"structured": "TRIGGER: When Attic Light [light.attic] turns from on to off. CONDITIONS: None. ACTIONS: Wait 1 second AND Turn off Attic Door Close Toggle [input_boolean.attic_door_close_toggle].",
|
|
"natural_language": {
|
|
"trigger": "When the Attic Light [light.attic] is turned off.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "After a one-second delay, the automation turns off the Attic Door Close Toggle [input_boolean.attic_door_close_toggle]."
|
|
},
|
|
"human_like": "Resets the attic door status toggle one second after the attic light is turned off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_upstairs_entry_close_toggle",
|
|
"result": {
|
|
"structured": "TRIGGER: When Penthouse Hall Light [light.penthouse_hall] changes from on to off. CONDITIONS: None. ACTIONS: Wait 1 second, then turn off Upstairs Entry Close Toggle [input_boolean.upstairs_entry_close_toggle].",
|
|
"natural_language": {
|
|
"trigger": "When the Penthouse Hall Light [light.penthouse_hall] is turned off.",
|
|
"conditions": "There are no conditions.",
|
|
"action": "After a one-second delay, the automation turns off the Upstairs Entry Close Toggle [input_boolean.upstairs_entry_close_toggle]."
|
|
},
|
|
"human_like": "Resets the upstairs entry close toggle one second after the hall light is turned off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_guest_lights_at_dark",
|
|
"result": {
|
|
"structured": "TRIGGER: When Sun [sun.sun] is not rising AND Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] value is less than Studio Bedroom Ambient Min [input_number.studio_bedroom_ambient_min] value OR When Home Assistant starts. CONDITIONS: Children Home [binary_sensor.children_home] is on AND Jon Person [person.jon] is home AND Nighttime [input_boolean.nighttime] is off AND (Sun [sun.sun] is not rising AND Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] value is less than Studio Bedroom Ambient Min [input_number.studio_bedroom_ambient_min] value). ACTIONS: Wait a random delay between 2 and 15 seconds, then run the script operate_preferred_studio_lamps with operation set to 'on'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when it becomes dark enough, specifically when the sun is not rising and the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] falls below the threshold set by Studio Bedroom Ambient Min [input_number.studio_bedroom_ambient_min]. It also triggers when Home Assistant first starts up.",
|
|
"conditions": "For the action to run, several conditions must be met: the Children Home [binary_sensor.children_home] sensor must be on, indicating children are home; Jon Person [person.jon] must be at home; the Nighttime [input_boolean.nighttime] mode must be off. Additionally, the same dark condition from the trigger must be true at the time of evaluation: the sun must not be rising and the ambient light must be below the set minimum threshold.",
|
|
"action": "After a random delay of between 2 and 15 seconds, the automation turns on the preferred studio lamps by calling the script operate_preferred_studio_lamps."
|
|
},
|
|
"human_like": "Turns on the guest room lights when it gets dark, but only if Jon is home, the kids are home, and it's not nighttime.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_studio_night_light",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time pattern matches every minute at minute 1 (i.e., every hour at HH:01). CONDITIONS: (Studio Guests Select [input_select.studio_guests] is Empty) OR (Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] ambient light value is greater than or equal to Studio Bedroom Ambient Max [input_number.studio_bedroom_ambient_max] value). ACTIONS: Turn on Studio Night Light [light.studio_night_light], then delay for 200 milliseconds, then turn off Studio Night Light [light.studio_night_light], then delay for 10 seconds, then check if Studio Night Light [light.studio_night_light] is on, and if true, run script.send_notification with a custom message.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every hour at one minute past the hour.",
|
|
"conditions": "It checks if either the Studio Guests Select [input_select.studio_guests] is set to 'Empty', or if the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is at least as high as the maximum ambient light threshold set in Studio Bedroom Ambient Max [input_number.studio_bedroom_ambient_max].",
|
|
"action": "It will briefly turn the Studio Night Light [light.studio_night_light] on and then off, with a very short delay between the commands. After a 10-second wait, it checks if the light is still on. If it is, it sends a notification suggesting the short delay might be too brief."
|
|
},
|
|
"human_like": "Turns off the studio night light at the start of each hour if the room is empty or it's bright enough, and alerts if the light fails to turn off.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_outdoor_christmas_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When the template condition evaluates to true, which requires that Christmas Mode [input_boolean.christmas_mode] is on AND Christmas Outdoor [input_boolean.christmas_outdoor] is on AND Sun [sun.sun] is below_horizon. CONDITIONS: None. ACTIONS: Turn on Christmas Outdoor Light [light.christmas_outdoor].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers whenever a specific set of conditions becomes true: the Christmas Mode [input_boolean.christmas_mode] is switched on, the Christmas Outdoor [input_boolean.christmas_outdoor] is switched on, and the sun [sun.sun] has set (is below the horizon).",
|
|
"conditions": "There are no additional conditions to check after the trigger.",
|
|
"action": "Turns on the Christmas Outdoor Light [light.christmas_outdoor]."
|
|
},
|
|
"human_like": "Turns on the outdoor Christmas lights when Christmas mode is active, the outdoor lights are enabled, and it's after sunset.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "control_all_day_christmas_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 07:30:00 OR when the time is 22:30:00 OR when Home Assistant starts. CONDITIONS: ((Jon Person [person.jon] is home AND the trigger is not 'night' AND the time is after 07:30:00 AND before 22:29:59 AND All Day Christmas Lights [binary_sensor.all_day_christmas_lights] is on) OR (the trigger is not 'morning' AND the time is after 22:30:00 AND before 07:29:59 AND All Day Christmas Lights [binary_sensor.all_day_christmas_lights] is on)). ACTIONS: Wait for a random delay between 2 and 15 seconds. Then, if the time is after 07:30:00 AND before 22:29:59, turn off Control Christmas Lights [automation.control_christmas_lights], run the script Turn On [script.turn_on], and turn off Family Room Lamp [light.family_room_lamp]. Otherwise, run the script turn_off_christmas_lights and turn on Control Christmas Lights [automation.control_christmas_lights].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at 7:30 AM, at 10:30 PM, or when Home Assistant starts up.",
|
|
"conditions": "For the automation to proceed, the All Day Christmas Lights [binary_sensor.all_day_christmas_lights] must be on. Additionally, if the trigger is the morning time or Home Assistant start, Jon Person [person.jon] must be home and the current time must be between 7:30 AM and 10:29:59 PM. If the trigger is the night time, the current time must be between 10:30 PM and 7:29:59 AM.",
|
|
"action": "After a random delay of 2 to 15 seconds, if it is daytime (between 7:30 AM and 10:29:59 PM), the automation will disable the standard Christmas lights control, turn on the Christmas lights via a script, and turn off the Family Room Lamp [light.family_room_lamp]. If it is nighttime (between 10:30 PM and 7:29:59 AM), it will turn off the Christmas lights via a script and re-enable the standard Christmas lights control automation."
|
|
},
|
|
"human_like": "Manages Christmas lights based on the time of day and occupancy, turning them on during the day and off at night while adjusting other lights and automations accordingly.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_christmas_plugs",
|
|
"result": {
|
|
"structured": "TRIGGER: When Christmas Mode [input_boolean.christmas_mode] changes to off. CONDITIONS: None. ACTIONS: Set variable 'christmas_plugs' to the list of entity IDs from the group Christmas Plugs Group [group.christmas_plugs]. For each entity in the list 'christmas_plugs', turn off that entity.",
|
|
"natural_language": {
|
|
"trigger": "When the Christmas Mode [input_boolean.christmas_mode] is turned off.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation first creates a list of all the individual plugs or devices that are part of the Christmas Plugs Group [group.christmas_plugs]. It then goes through each item in that list one by one and turns it off."
|
|
},
|
|
"human_like": "Turns off all the plugs in the Christmas group when Christmas Mode is disabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_on_office_bookcase_via_alexa",
|
|
"result": {
|
|
"structured": "TRIGGER: When Alexa HA Plug [input_boolean.alexa_ha_plug] turns on. CONDITIONS: None. ACTIONS: Play the routine named 'HA Office Bookcase On' on the Family Room Echo Media Player [media_player.family_room_echo].",
|
|
"natural_language": {
|
|
"trigger": "When the Alexa HA Plug [input_boolean.alexa_ha_plug] is turned on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Plays a specific Alexa routine called 'HA Office Bookcase On' on the Family Room Echo Media Player [media_player.family_room_echo]."
|
|
},
|
|
"human_like": "When a virtual switch is turned on, it triggers an Alexa routine to turn on the office bookcase lights.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "turn_off_office_bookcase_via_alexa",
|
|
"result": {
|
|
"structured": "TRIGGER: When Alexa HA Plug [input_boolean.alexa_ha_plug] changes to off. CONDITIONS: None. ACTIONS: Play the routine named 'HA Office Bookcase Off' on Family Room Echo Media Player [media_player.family_room_echo].",
|
|
"natural_language": {
|
|
"trigger": "When the Alexa HA Plug [input_boolean.alexa_ha_plug] is turned off.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "Plays a specific Alexa routine called 'HA Office Bookcase Off' on the Family Room Echo Media Player [media_player.family_room_echo]."
|
|
},
|
|
"human_like": "Uses an Alexa routine to turn off the office bookcase when a virtual switch is toggled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "stop_bath_time",
|
|
"result": {
|
|
"structured": "TRIGGER: When Bath Time Timer [timer.bath_time] finishes. ACTIONS: Turn on Run Studio Motion Based Light [automation.run_studio_motion_based_light].",
|
|
"natural_language": {
|
|
"trigger": "When the Bath Time Timer [timer.bath_time] finishes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Turns on the automation named Run Studio Motion Based Light [automation.run_studio_motion_based_light]."
|
|
},
|
|
"human_like": "Restarts the studio motion light automation when the bath timer finishes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_guest_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When David Person [person.david] OR Sarah Person [person.sarah] OR Mike Person [person.mike] changes state to home (adult trigger) OR When Skylar Person [person.skylar] changes state to home (child trigger). ACTIONS: 1. Set variable 'guest' to the friendly name of the arriving person. Set variable 'suite' to the state of the input_select matching the guest's name in lowercase plus '_guest_suite'. 2. IF (guest is not 'Mike' OR current hour is 16 or later) THEN run script.add_guest_to_suite with data guest and suite. 3. IF the trigger id is 'adult' THEN: a. Run script Open Garage Door North [script.open_garage_door_north] with variable use_info_message set to true. b. IF Sun [sun.sun] is below_horizon THEN: i. Turn on Driveway Light [light.driveway] AND Front Floodlight [light.front_floodlight]. ii. Start Guest Arrival Cleanup Timer [timer.guest_arrival_cleanup] for 30 minutes.",
|
|
"natural_language": {
|
|
"trigger": "When any adult (David, Sarah, or Mike) or the child (Skylar) arrives home, as detected by their person entity changing state to 'home'.",
|
|
"conditions": "There are no explicit conditions separate from the triggers. The actions include conditional checks: the guest assignment script only runs if the arriving guest is not named Mike, or if it is Mike, only after 4 PM. Additional actions for adult arrivals depend on whether the sun has set.",
|
|
"action": "Upon arrival, the system identifies the guest and their assigned suite. It may run a script to add the guest to that suite, but only if they are not Mike or if it's after 4 PM. If an adult arrives, the system opens the north garage door with a notification. If it's after sunset, it also turns on the driveway and front floodlights and starts a 30-minute cleanup timer."
|
|
},
|
|
"human_like": "Welcomes family members home by opening the garage door for adults, turning on outdoor lights if it's dark, and optionally assigning a guest suite, with special timing rules for Mike.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_guest_departure",
|
|
"result": {
|
|
"structured": "TRIGGER: When David Person [person.david] OR Sarah Person [person.sarah] OR Mike Person [person.mike] changes state from home (adult trigger) OR When Skylar Person [person.skylar] changes state from home (child trigger). CONDITIONS: None. ACTIONS: Set variable 'guest' to the friendly name of the triggering person. Set variable 'suite' to 'Studio' if the guest is listed in Studio Guests Select [input_select.studio_guests], otherwise 'Penthouse'. Execute script.remove_guest_from_suite with data guest and suite. If the trigger id is 'adult', then execute script.close_garage_door_north [script.close_garage_door_north] with use_info_message set to true AND turn off Outdoor Lights [light.outdoor_lights].",
|
|
"natural_language": {
|
|
"trigger": "When either David Person [person.david], Sarah Person [person.sarah], or Mike Person [person.mike] leaves home, or when Skylar Person [person.skylar] leaves home.",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "The automation first identifies the departing guest by name and determines which suite they were staying in (Studio or Penthouse) based on a guest list. It then removes the guest from the suite's records. If the departing person is an adult (David, Sarah, or Mike), it also closes the north garage door with a notification and turns off the outdoor lights."
|
|
},
|
|
"human_like": "Manages guest departures by updating guest lists and, for adults, also securing the home by closing the garage door and turning off outdoor lights.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "modify_occupied_guest_suites",
|
|
"result": {
|
|
"structured": "TRIGGER: When David Guest Suite Select [input_select.david_guest_suite] changes state to null OR When Mike Guest Suite Select [input_select.mike_guest_suite] changes state to null OR When Sarah Guest Suite Select [input_select.sarah_guest_suite] changes state to null OR When Skylar Guest Suite Select [input_select.skylar_guest_suite] changes state to null. CONDITIONS: The person entity corresponding to the triggering guest (person.david, person.mike, person.sarah, or person.skylar) is home. ACTIONS: Execute script.remove_guest_from_suite with guest set to the triggering guest name and suite set to the previous state of the triggering input_select. Execute script.add_guest_to_suite with guest set to the triggering guest name and suite set to the new state of the triggering input_select. If Switch Guest Suites [input_boolean.switch_guest_suites] is on, then fire the event switch_guest_suites_complete.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers whenever the selection for a guest suite (David, Mike, Sarah, or Skylar) is changed to 'null'.",
|
|
"conditions": "The automation only proceeds if the person associated with the changed selection (e.g., person.david for David's suite) is currently at home.",
|
|
"action": "First, it runs a script to remove the guest from their previously assigned suite. Then, it runs a script to add the guest to their newly selected suite. Finally, if the 'Switch Guest Suites' [input_boolean.switch_guest_suites] option is turned on, it signals the completion of the suite switch by firing a custom event."
|
|
},
|
|
"human_like": "Updates guest suite assignments when a guest's selected suite is changed, ensuring the guest is at home and optionally signaling the completion of a suite switch.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "modify_thermostat_hold_metrics",
|
|
"result": {
|
|
"structured": "TRIGGER: When Penthouse Nights Occupied [input_number.penthouse_nights_occupied] changes state to null OR When David Temp Range [sensor.david_temp_range] changes state to null OR When Mike Temp Range [sensor.mike_temp_range] changes state to null OR When Sarah Temp Range [sensor.sarah_temp_range] changes state to null OR When Skylar Temp Range [sensor.skylar_temp_range] changes state to null. CONDITIONS: (Trigger is from Penthouse Nights Occupied [input_number.penthouse_nights_occupied] AND Penthouse Occupied [binary_sensor.penthouse_occupied] is on) OR (Trigger is NOT from Penthouse Nights Occupied [input_number.penthouse_nights_occupied] AND the capitalized trigger ID is a current option in Penthouse Guests Select [input_select.penthouse_guests]). ACTIONS: IF Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] is idle, THEN start Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] for a duration equal to the value of Thermostat Metrics Delay Minutes [input_number.thermostat_metrics_delay_minutes] minutes AND turn on Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered when any of the following sensors change their state to null: Penthouse Nights Occupied [input_number.penthouse_nights_occupied], David Temp Range [sensor.david_temp_range], Mike Temp Range [sensor.mike_temp_range], Sarah Temp Range [sensor.sarah_temp_range], or Skylar Temp Range [sensor.skylar_temp_range].",
|
|
"conditions": "The automation proceeds only if either of two conditions is met. First, if the trigger came from the Penthouse Nights Occupied sensor and the Penthouse Occupied [binary_sensor.penthouse_occupied] is currently on. Second, if the trigger came from any of the temperature range sensors and the capitalized name of that sensor (like 'David', 'Mike', etc.) is currently selected as an option in the Penthouse Guests Select [input_select.penthouse_guests] dropdown.",
|
|
"action": "If the Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] is not currently running, the action starts this timer for a number of minutes specified by the Thermostat Metrics Delay Minutes [input_number.thermostat_metrics_delay_minutes] input, and it also turns on the Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started] indicator."
|
|
},
|
|
"human_like": "Starts a delay timer for thermostat adjustments when occupancy or guest-specific temperature preferences are updated, ensuring changes are applied after a waiting period.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_thermostat_metrics_delay_timer_expiration",
|
|
"result": {
|
|
"structured": "TRIGGER: When timer.thermostat_metrics_delay [timer.thermostat_metrics_delay] finishes OR when Home Assistant starts. CONDITIONS: Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] is idle AND Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started] is on. ACTIONS: Run script.modify_penthouse_thermostat_hold AND turn off Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered either when the Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] finishes, or when the Home Assistant system starts up.",
|
|
"conditions": "The automation only proceeds if the Thermostat Metrics Delay Timer [timer.thermostat_metrics_delay] is currently idle and the Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started] is turned on.",
|
|
"action": "It runs a script named 'modify_penthouse_thermostat_hold' and then turns off the Thermostat Metrics Delay Timer Started [input_boolean.thermostat_metrics_delay_timer_started]."
|
|
},
|
|
"human_like": "This automation runs a thermostat adjustment script and cleans up a timer flag when a delay timer finishes or when the system restarts.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_thermostat_hold_delay_timer_expiration",
|
|
"result": {
|
|
"structured": "TRIGGER: When timer Thermostat Hold Delay Timer [timer.thermostat_hold_delay] finishes OR when Home Assistant starts. CONDITIONS: Thermostat Hold Delay Timer [timer.thermostat_hold_delay] is idle AND Thermostat Hold Delay Timer Started [input_boolean.thermostat_hold_delay_timer_started] is on. ACTIONS: Execute script set_penthouse_thermostat_hold AND turn off Thermostat Hold Delay Timer Started [input_boolean.thermostat_hold_delay_timer_started].",
|
|
"natural_language": {
|
|
"trigger": "The automation runs when the Thermostat Hold Delay Timer [timer.thermostat_hold_delay] finishes its countdown, or when Home Assistant first starts up.",
|
|
"conditions": "It checks that the Thermostat Hold Delay Timer [timer.thermostat_hold_delay] is currently idle (not running) and that the Thermostat Hold Delay Timer Started [input_boolean.thermostat_hold_delay_timer_started] indicator is turned on.",
|
|
"action": "It runs a script named 'set_penthouse_thermostat_hold' and then turns off the Thermostat Hold Delay Timer Started [input_boolean.thermostat_hold_dimer_started] indicator."
|
|
},
|
|
"human_like": "This automation runs a thermostat hold script and resets the timer status when the hold delay timer finishes or when the system restarts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "modify_active_studio_lamps",
|
|
"result": {
|
|
"structured": "TRIGGER: When Preferred Studio Lamps Select [input_select.preferred_studio_lamps] changes state. CONDITIONS: Studio Occupied [binary_sensor.studio_occupied] is on AND Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] value is less than Studio Bedroom Ambient Min [input_number.studio_bedroom_ambient_min] value. ACTIONS: Set variable 'preference' to the current state of Preferred Studio Lamps Select [input_select.preferred_studio_lamps]. Set variable 'sarah_s_lamp_operation' to 'on' if preference is 'Sarah's' or 'Both', otherwise 'off'. Set variable 'skylar_s_lamp_operation' to 'on' if preference is 'Skylar's' or 'Both', otherwise 'off'. Turn Sarah's Lamp [light.sarah_s_lamp] to the state defined by 'sarah_s_lamp_operation'. Turn Skylar's Lamp [light.skylar_s_lamp] to the state defined by 'skylar_s_lamp_operation'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the selection in the Preferred Studio Lamps Select [input_select.preferred_studio_lamps] is changed.",
|
|
"conditions": "The Studio Occupied [binary_sensor.studio_occupied] sensor must indicate the room is occupied, and the ambient light level measured by the Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] must be below the minimum brightness threshold set in Studio Bedroom Ambient Min [input_number.studio_bedroom_ambient_min].",
|
|
"action": "The automation reads the new lamp preference. It then determines whether to turn on or off Sarah's Lamp [light.sarah_s_lamp] and Skylar's Lamp [light.skylar_s_lamp] based on that selection. If 'Sarah's' or 'Both' is chosen, Sarah's lamp is turned on; otherwise, it's turned off. If 'Skylar's' or 'Both' is chosen, Skylar's lamp is turned on; otherwise, it's turned off."
|
|
},
|
|
"human_like": "Automatically adjusts the studio desk lamps based on the selected preference, but only when the room is occupied and the ambient light is too low.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_virtual_device_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following input_booleans changes state: Virtual David [input_boolean.virtual_david] OR Virtual Maryam [input_boolean.virtual_maryam] OR Virtual Mike [input_boolean.virtual_mike] OR Virtual Sarah [input_boolean.virtual_sarah] OR Virtual Skylar [input_boolean.virtual_skylar]. CONDITIONS: None. ACTIONS: Set variable 'new_state' to 'home' if the triggering entity's new state is 'on', otherwise set it to 'not_home'. Set variable 'topic_suffix' to the triggering entity's entity_id without the 'input_boolean.' prefix. Publish the value of 'new_state' to the MQTT topic 'homeassistant/device_tracker/{topic_suffix}'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of any of the virtual person input booleans (Virtual David [input_boolean.virtual_david], Virtual Maryam [input_boolean.virtual_maryam], Virtual Mike [input_boolean.virtual_mike], Virtual Sarah [input_boolean.virtual_sarah], or Virtual Skylar [input_boolean.virtual_skylar]) changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation determines a new device tracker state: 'home' if the input boolean was turned on, or 'not_home' if it was turned off. It then constructs an MQTT topic based on which person's boolean changed and publishes the new state to that topic, effectively updating a virtual device tracker."
|
|
},
|
|
"human_like": "Updates a virtual device tracker via MQTT whenever a virtual person's presence switch is toggled on or off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_jon_phone_stationary_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Galaxy Wifi Connection [sensor.jon_galaxy_wifi_connection] changes state. CONDITIONS: None. ACTIONS: Execute the blueprint 'devices/update_phone_tracker.yaml' with inputs: wifi_entity = sensor.jon_galaxy_wifi_connection, ssid = White Rabbit, topic_suffix = jon_phone_stationary.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Jon Galaxy Wifi Connection [sensor.jon_galaxy_wifi_connection] changes its state.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Runs a pre-defined blueprint called 'devices/update_phone_tracker.yaml'. This blueprint is configured to use the Jon Galaxy Wifi Connection sensor, look for the Wi-Fi network named 'White Rabbit', and use the identifier 'jon_phone_stationary' in its messaging."
|
|
},
|
|
"human_like": "Updates a phone tracker for Jon when his phone's Wi-Fi connection changes, using a predefined automation blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_mike_phone_stationary_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: When Mike Galaxy Wifi Connection [sensor.mike_galaxy_wifi_connection] changes state. CONDITIONS: None. ACTIONS: Execute the blueprint 'devices/update_phone_tracker.yaml' with inputs: wifi_entity set to sensor.mike_galaxy_wifi_connection, ssid set to 'White Rabbit', and topic_suffix set to 'mike_phone_stationary'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Mike Galaxy Wifi Connection [sensor.mike_galaxy_wifi_connection] changes.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Runs a pre-defined automation blueprint called 'update_phone_tracker.yaml', which uses the wifi connection sensor, the network name 'White Rabbit', and a unique identifier 'mike_phone_stationary' to manage a phone tracking function."
|
|
},
|
|
"human_like": "Uses Mike's phone's WiFi connection to update a stationary tracker when he connects to or disconnects from the home network.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_sarah_phone_stationary_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: When Sarah Pixel Wifi Connection [sensor.sarah_pixel_wi_fi_connection] changes state. CONDITIONS: (Sarah Pixel Wifi Connection [sensor.sarah_pixel_wi_fi_connection] is connected to SSID 'White Rabbit') OR (Sarah Pixel Wifi Connection [sensor.sarah_pixel_wi_fi_connection] is not connected to SSID 'White Rabbit'). ACTIONS: Update the device tracker entity for Sarah's phone (topic suffix 'sarah_phone_stationary') based on the Wi-Fi connection status.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the Wi-Fi connection status of Sarah Pixel Wifi Connection [sensor.sarah_pixel_wi_fi_connection] changes.",
|
|
"conditions": "The automation checks if the device is connected to the Wi-Fi network named 'White Rabbit' or if it is disconnected from that network.",
|
|
"action": "It updates a device tracker for Sarah's phone (identified by the suffix 'sarah_phone_stationary') to reflect whether the phone is stationary (likely at home) based on its connection to the home Wi-Fi."
|
|
},
|
|
"human_like": "Tracks when Sarah's phone is at home by monitoring its connection to the home Wi-Fi network 'White Rabbit'.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_david_phone_stationary_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: When David's Latest Phone Wifi Connection [sensor.david_s_latest_phone_wi_fi_connection] changes state. CONDITIONS: None. ACTIONS: Execute the blueprint 'devices/update_phone_tracker.yaml' with inputs: wifi_entity set to sensor.david_s_latest_phone_wi_fi_connection, ssid set to 'White Rabbit', and topic_suffix set to 'david_phone_stationary'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the sensor David's Latest Phone Wifi Connection [sensor.david_s_latest_phone_wi_fi_connection] changes.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Runs a predefined blueprint called 'update_phone_tracker.yaml', which will manage a phone tracker. The blueprint is configured to use the David's Latest Phone Wifi Connection sensor, look for the Wi-Fi network named 'White Rabbit', and use the identifier 'david_phone_stationary' for its internal messaging."
|
|
},
|
|
"human_like": "Updates a tracker for David's phone when its Wi-Fi connection changes, specifically monitoring for the 'White Rabbit' network.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_child_tag_scan",
|
|
"result": {
|
|
"structured": "TRIGGER: When tag with ID 0c6d2dfd-4ad7-4281-9ec0-54756ed2d539 is scanned OR When Skylar Tag Scan Button [input_button.skylar_tag_scan] state changes. CONDITIONS: None. ACTIONS: Set variable tracker_entity to 'device_tracker.skylar_nfc_tag', set variable new_state to 'home' if tracker_entity is not 'home' otherwise 'not_home', set variable topic_suffix to 'skylar_nfc_tag', set variable toggle_action to 'on' if new_state is 'home' otherwise 'off', then publish MQTT message to topic 'homeassistant/device_tracker/skylar_nfc_tag' with payload equal to new_state.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when a specific NFC tag with ID 0c6d2dfd-4ad7-4281-9ec0-54756ed2d539 is scanned, or when the Skylar Tag Scan Button [input_button.skylar_tag_scan] is pressed (state change).",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "It calculates a tracker entity name based on the trigger ID, determines a new state for that tracker (toggling between 'home' and 'not_home'), and publishes that new state to a specific MQTT topic to update the device tracker's location."
|
|
},
|
|
"human_like": "Toggles Skylar's location status between home and not_home when their NFC tag is scanned or a button is pressed, updating the device tracker via MQTT.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "set_sleep_start",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Sleeping [binary_sensor.jon_sleeping] turns on. CONDITIONS: None. ACTIONS: Set Sleep Start Datetime [input_datetime.sleep_start] to the current date and time.",
|
|
"natural_language": {
|
|
"trigger": "When the Jon Sleeping [binary_sensor.jon_sleeping] sensor indicates that Jon has started sleeping.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "Records the current time by setting the Sleep Start Datetime [input_datetime.sleep_start]."
|
|
},
|
|
"human_like": "Records the time when Jon starts sleeping.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_jon_awake",
|
|
"result": {
|
|
"structured": "TRIGGER: When Jon Sleeping [binary_sensor.jon_sleeping] changes from on to off. CONDITIONS: None. ACTIONS: 1. Calculate sleep duration variable from Sleep Start Datetime [input_datetime.sleep_start] and current time. 2. Create a list of Alexa media player entities, excluding 'This Device' and 'Everywhere'. 3. Turn off Nighttime [input_boolean.nighttime] and Sleeptime [input_boolean.sleeptime]. 4. Run script Reset Bedtime Environment [script.reset_bedtime_environment]. 5. Set Sleep Duration [input_number.sleep_duration] to the calculated duration. 6. Wait 500 milliseconds. 7. Set variables for normal_volume (0.5) and quiet_volume (0.3). 8. For each Alexa media player in the list, set its volume to quiet_volume if it is Master Bedroom Echo Media Player [media_player.master_bedroom_echo], otherwise to normal_volume, but only if its current volume level is not already at the target value. 9. Loop, doing nothing, until Master Bedroom Echo Do Not Disturb Switch [switch.master_bedroom_echo_do_not_disturb_switch] is off. 10. Parse Sleep Duration Display [sensor.sleep_duration_display] into hours and minutes, and check Mobile Tag Registry Keys [sensor.mobile_tag_registry_keys] for calendar-related tags. 11. Send a voice notification to the master_bedroom with the sleep duration and a reminder about calendar items if relevant. 12. If Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] is below Family Room Ambient Max [input_number.family_room_ambient_max], activate Voice Assistants On Dim Scene [scene.voice_assistants_on_dim]; otherwise activate Voice Assistants On Bright Scene [scene.voice_assistants_on_bright]. 13. Wait until Modify Master Suite [script.modify_master_suite] is off. 14. Set Master Bedroom Echo Media Player [media_player.master_bedroom_echo] volume to normal_volume. 15. Run script script.turn_on_lights_per_conditions with parameters for Kitchen Island Light [light.kitchen_island] and Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light] using Kitchen Ambient Min [input_number.kitchen_ambient_min] as the minimum lux threshold.",
|
|
"natural_language": {
|
|
"trigger": "The automation starts when the Jon Sleeping [binary_sensor.jon_sleeping] sensor changes from 'on' (sleeping) to 'off' (awake).",
|
|
"conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon the trigger.",
|
|
"action": "Upon waking, the system calculates the sleep duration based on the Sleep Start Datetime [input_datetime.sleep_start]. It then turns off the Nighttime [input_boolean.nighttime] and Sleeptime [input_boolean.sleeptime] flags and runs a script to reset the bedtime environment. The calculated sleep duration is saved. After a brief delay, it adjusts the volume on all Alexa media players, setting the Master Bedroom Echo Media Player [media_player.master_bedroom_echo] to a quieter volume and others to a normal level. It then waits for the Master Bedroom Echo Do Not Disturb Switch [switch.master_bedroom_echo_do_not_disturb_switch] to be turned off. Next, it prepares a morning voice announcement stating the sleep duration and, if calendar appointments are detected via Mobile Tag Registry Keys [sensor.mobile_tag_registry_keys], adds a reminder. Depending on the ambient light level from Downstairs Sensor Ambient Light [sensor.downstairs_sensor_ambient_light], it activates either a dim or bright scene for voice assistants. It waits for the Modify Master Suite [script.modify_master_suite] script to finish, then sets the master bedroom echo volume back to normal. Finally, it runs a script to turn on the Kitchen Island Light [light.kitchen_island] based on the ambient light level and a configured minimum threshold from Kitchen Ambient Min [input_number.kitchen_ambient_min]."
|
|
},
|
|
"human_like": "This automation manages the morning routine when Jon wakes up, announcing sleep duration, adjusting lights and volumes, and turning on kitchen lights if needed.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "resume_cinema",
|
|
"result": {
|
|
"structured": "TRIGGER: When Shield TV Media Player [media_player.shield_tv] changes from paused OR idle to playing AND remains in playing for 2 seconds. CONDITIONS: Theater Open [input_boolean.theater_open] is on. ACTIONS: Execute script Restore Lighting On Resume [script.restore_lighting_on_resume].",
|
|
"natural_language": {
|
|
"trigger": "When the Shield TV Media Player [media_player.shield_tv] starts playing after being either paused or idle, and stays in the playing state for at least two seconds.",
|
|
"conditions": "The automation only runs if the Theater Open [input_boolean.theater_open] is switched on.",
|
|
"action": "Runs the script named Restore Lighting On Resume [script.restore_lighting_on_resume]."
|
|
},
|
|
"human_like": "When the TV in the theater starts playing, it restores the lighting to the previous scene, but only if the theater is marked as open.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "close_cinema",
|
|
"result": {
|
|
"structured": "TRIGGER: When Harmony Hub Sensor [sensor.harmony_hub] changes state to PowerOff. CONDITIONS: Theater Open [input_boolean.theater_open] is on. ACTIONS: Execute the Close Cinema [script.close_cinema] script.",
|
|
"natural_language": {
|
|
"trigger": "When the Harmony Hub Sensor [sensor.harmony_hub] reports that the activity has changed to 'PowerOff'.",
|
|
"conditions": "The automation only runs if the Theater Open [input_boolean.theater_open] is currently set to 'on'.",
|
|
"action": "Runs the 'Close Cinema' [script.close_cinema] script to shut down the theater equipment."
|
|
},
|
|
"human_like": "Automatically runs the cinema shutdown routine when the Harmony Hub turns off, but only if the theater is marked as open.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_cinema_usage_delay",
|
|
"result": {
|
|
"structured": "TRIGGER: When timer Cinema Usage Delay Timer [timer.cinema_usage_delay] finishes. CONDITIONS: None. ACTIONS: If Theater Open [input_boolean.theater_open] is off, then run script Open Cinema [script.open_cinema]. Otherwise, run script Close Cinema [script.close_cinema].",
|
|
"natural_language": {
|
|
"trigger": "When the Cinema Usage Delay Timer [timer.cinema_usage_delay] finishes.",
|
|
"conditions": "There are no additional conditions.",
|
|
"action": "Checks the state of Theater Open [input_boolean.theater_open]. If it is off, it runs the Open Cinema [script.open_cinema] script. If it is on, it runs the Close Cinema [script.close_cinema] script."
|
|
},
|
|
"human_like": "After a delay timer finishes, it either opens or closes the cinema based on whether the theater is currently marked as open.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_projector_error",
|
|
"result": {
|
|
"structured": "TRIGGER: When a system log event occurs with name 'custom_components.epson_projector_link.projector.projector' and level 'ERROR'. CONDITION: The event message contains the text 'Lamp ON failure'. ACTIONS: Set variable delay_time to 2 minutes 30 seconds. Turn on Projector Error Handling [input_boolean.projector_error_handling]. Send a voice announcement to the family_room and theater rooms stating 'Projector lamp error detected. Please wait a few minutes while I try to fix it.'. Wait for the duration of delay_time. Send a TTS notification to the family_room and theater rooms stating 'I'm resetting the projector.'. Turn on Projector Plug Powered Off [input_boolean.projector_plug_powered_off]. Turn off Projector Switch [switch.projector]. Wait for 30 seconds. Turn on Projector Switch [switch.projector]. Wait for 1 second. Turn off Projector Plug Powered Off [input_boolean.projector_plug_powered_off]. Send a TTS notification to the family_room and theater rooms stating 'I'm turning the projector back on. Keep your fingers crossed!'. Wait for 5 seconds. Send the 'PowerOn' command to the Epson Projector device via Remote Harmony Hub [remote.harmony_hub]. Wait until Epson Projector Media Player [media_player.epson_projector] state is 'warmup' or 'on' OR Projector Active [input_boolean.projector_active] is 'on', with a timeout of delay_time. If the wait condition is met, then turn off Projector Error Handling [input_boolean.projector_error_handling].",
|
|
"natural_language": {
|
|
"trigger": "When the system logs an ERROR event from the custom projector integration.",
|
|
"conditions": "The error message must contain the specific phrase 'Lamp ON failure'.",
|
|
"action": "The automation first sets a delay timer and marks that error handling is in progress. It then notifies users in the family room and theater via voice about the error and the upcoming reset. After a waiting period, it announces it is resetting the projector. It proceeds to cycle the projector's power by first marking the plug as powered off, turning off the switch, waiting, turning the switch back on, and marking the plug as powered on. It then sends an encouraging notification and sends a power-on command via the Harmony remote. Finally, it waits for the projector to enter a 'warmup' or 'on' state, or for a manual active flag to be set. If successful, it clears the error handling flag."
|
|
},
|
|
"human_like": "Automatically attempts to recover from a specific projector lamp error by power cycling the device and notifying users, with a series of timed steps and status checks.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "toggle_projector_active",
|
|
"result": {
|
|
"structured": "TRIGGER: When Projector Power Sensor [sensor.projector_power] remains above 250 for 10 seconds OR When Projector Power Sensor [sensor.projector_power] remains below 250 for 10 seconds. CONDITIONS: None. ACTIONS: Set variable 'projector_state1' to the state of Epson Projector Media Player [media_player.epson_projector]. Set variable 'projector_error1' to the state of Projector Error Handling [input_boolean.projector_error_handling]. Set variable 'projector_active1' to the state of Projector Active [input_boolean.projector_active]. Turn Projector Active [input_boolean.projector_active] on (if trigger id is 'on') or off (if trigger id is 'off'). Wait for 1 second. Set variable 'projector_state2' to the state of Epson Projector Media Player [media_player.epson_projector]. Set variable 'projector_error2' to the state of Projector Error Handling [input_boolean.projector_error_handling]. Set variable 'projector_active2' to the state of Projector Active [input_boolean.projector_active]. Log an info message containing the string 'Projector active changed from ' concatenated with the value of 'projector_active1', concatenated with ' to ', concatenated with the value of 'projector_active2'.",
|
|
"natural_language": {
|
|
"trigger": "When the Projector Power Sensor [sensor.projector_power] stays above 250 watts for 10 seconds, or when it stays below 250 watts for 10 seconds.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, the automation captures the current states of the Epson Projector Media Player [media_player.epson_projector], the Projector Error Handling [input_boolean.projector_error_handling] flag, and the Projector Active [input_boolean.projector_active] flag. It then turns the Projector Active [input_boolean.projector_active] flag on or off, depending on which power threshold triggered the automation. After a one-second delay, it captures the states of those same three entities again. Finally, it writes an informational log entry showing how the Projector Active [input_boolean.projector_active] flag changed from its initial to its final state."
|
|
},
|
|
"human_like": "Toggles a flag indicating if the projector is active based on its power consumption, and logs the change for debugging.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "determine_projector_state",
|
|
"result": {
|
|
"structured": "TRIGGER: When the template evaluates to true: (Epson Projector Media Player [media_player.epson_projector] state is 'warmup' OR 'on') AND Projector Error Handling [input_boolean.projector_error_handling] is off) OR Projector Active [input_boolean.projector_active] is on. OR When the timer Projector Status Timer [timer.projector_status] finishes. CONDITIONS: None. ACTIONS: If the trigger ID is 'success', then cancel Projector Status Timer [timer.projector_status] and run the script Perform Post Open Tasks [script.perform_post_open_tasks]. Otherwise, if the trigger ID is 'failure', then check the condition: NOT ((Epson Projector Media Player [media_player.epson_projector] state is 'warmup' OR 'on') AND Projector Error Handling [input_boolean.projector_error_handling] is off) OR Projector Active [input_boolean.projector_active] is on). If this condition is true, then run the script Turn On [script.turn_on] with data to send a voice notification stating 'I'm sorry, but I failed to fix a projector lamp error.' to the voice assistant in the family_room and theater rooms.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in two ways. First, when a template condition is met: either the Epson Projector Media Player [media_player.epson_projector] is in the 'warmup' or 'on' state while the Projector Error Handling [input_boolean.projector_error_handling] is turned off, or the Projector Active [input_boolean.projector_active] is turned on. Second, when the Projector Status Timer [timer.projector_status] finishes its countdown.",
|
|
"conditions": "There are no separate conditions defined for this automation.",
|
|
"action": "If the trigger was the successful template condition, the automation cancels the Projector Status Timer [timer.projector_status] and runs the Perform Post Open Tasks [script.perform_post_open_tasks] script. If the trigger was the timer finishing, the automation checks if the projector is not in a good state (i.e., it's not in 'warmup' or 'on' with error handling off, and the projector is not marked as active). If that's the case, it runs a script to send a voice notification to the family room and theater, apologizing for failing to fix a projector lamp error."
|
|
},
|
|
"human_like": "This automation monitors the projector's status, either confirming it's ready and running post-tasks, or sending a failure notification if a timer expires and the projector isn't working correctly.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "log_projector_state",
|
|
"result": {
|
|
"structured": "TRIGGER: When Epson Projector Media Player [media_player.epson_projector] changes state. CONDITIONS: None. ACTIONS: Write a log entry with level 'info' containing the message 'Projector state changed from <previous_state> to <new_state>'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the Epson Projector Media Player [media_player.epson_projector] changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Creates a system log entry at the 'info' level, recording the projector's previous and new state in the message."
|
|
},
|
|
"human_like": "Logs every state change of the Epson projector to the system log for monitoring.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_turn_on_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When Marantz SR7012 Media Player [media_player.marantz_sr7012] turns on (state changes from 'off' to 'on'). ACTIONS: Wait 30 seconds, then set the volume of Marantz SR7012 Media Player [media_player.marantz_sr7012] to 60%.",
|
|
"natural_language": {
|
|
"trigger": "When the Marantz SR7012 Media Player [media_player.marantz_sr7012] is turned on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "After waiting 30 seconds, the automation sets the volume of the Marantz SR7012 Media Player [media_player.marantz_sr7012] to 60%."
|
|
},
|
|
"human_like": "Automatically sets the receiver to a comfortable volume level shortly after it is turned on.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_application_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When Selected App Volume [input_number.selected_app_volume] changes to null. CONDITIONS: None. ACTIONS: Set variable 'selected_app' to the value of Volume Application Select [input_select.volume_application] with spaces replaced by underscores and converted to lowercase. Set variable 'selected_app_volume_entity' to the string 'input_number.' concatenated with the 'selected_app' variable value and '_volume'. Call script Set Application Volume [script.set_application_volume] with data: volume_entity set to the 'selected_app_volume_entity' variable and volume set to the state value that triggered the automation.",
|
|
"natural_language": {
|
|
"trigger": "When the Selected App Volume [input_number.selected_app_volume] changes to a null or empty state.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, it creates a variable based on the currently selected application from the Volume Application Select [input_select.volume_application], formatting its name by replacing spaces with underscores and making it lowercase. Then, it constructs the name of the corresponding volume entity for that application. Finally, it runs the Set Application Volume [script.set_application_volume] script, passing it the constructed entity name and the volume value that caused the trigger."
|
|
},
|
|
"human_like": "Initializes the volume for a selected application by mapping a generic volume input to the specific application's volume control.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_amazon_prime_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When the Home Assistant system starts. CONDITIONS: None. ACTIONS: Initialize volume settings for the Amazon Prime application on the NVIDIA Shield.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant first starts up.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Initializes the volume settings for the Amazon Prime application on the NVIDIA Shield device."
|
|
},
|
|
"human_like": "Sets up the correct volume level for Amazon Prime on the Shield TV when the system boots.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_amc_plus_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not explicitly defined in the provided automation snippet. The automation uses a blueprint 'theater/shield_app_volume.yaml' with input 'appl_name' set to 'AMC+'. The blueprint's triggers are not specified here. CONDITIONS: Not explicitly defined in the provided automation snippet. The blueprint may contain its own conditions. ACTIONS: Not explicitly defined in the provided automation snippet. The blueprint will execute actions based on its internal logic.",
|
|
"natural_language": {
|
|
"trigger": "The automation uses a blueprint, so the specific triggers are defined within the 'theater/shield_app_volume.yaml' file and are not detailed in this snippet.",
|
|
"conditions": "The automation uses a blueprint, so any conditions are defined within the 'theater/shield_app_volume.yaml' file and are not detailed in this snippet.",
|
|
"action": "The automation uses a blueprint, so the specific actions are defined within the 'theater/shield_app_volume.yaml' file and are not detailed in this snippet. The blueprint is configured to target the 'AMC+' application."
|
|
},
|
|
"human_like": "This automation initializes the volume settings for the AMC+ app using a pre-defined theater blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_disney_plus_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not defined in the provided automation YAML (uses a blueprint). CONDITIONS: Not defined in the provided automation YAML (uses a blueprint). ACTIONS: Not defined in the provided automation YAML (uses a blueprint).",
|
|
"natural_language": {
|
|
"trigger": "The automation uses a blueprint, so the specific triggers are not detailed in the provided YAML.",
|
|
"conditions": "The automation uses a blueprint, so the specific conditions are not detailed in the provided YAML.",
|
|
"action": "The automation uses a blueprint, so the specific actions are not detailed in the provided YAML."
|
|
},
|
|
"human_like": "This automation initializes the volume settings for the Disney+ app using a pre-defined theater control blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_espn_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not explicitly defined in the provided automation snippet; the automation uses a blueprint. ACTIONS: Execute the blueprint 'theater/shield_app_volume.yaml' with the input parameter 'appl_name' set to 'ESPN'.",
|
|
"natural_language": {
|
|
"trigger": "The automation uses a blueprint, so the specific triggers are defined within the blueprint file 'theater/shield_app_volume.yaml' and are not detailed here.",
|
|
"conditions": "The automation uses a blueprint, so any conditions are defined within the blueprint file 'theater/shield_app_volume.yaml' and are not detailed here.",
|
|
"action": "The automation initializes volume settings for the ESPN application by calling the 'theater/shield_app_volume.yaml' blueprint with the application name set to 'ESPN'."
|
|
},
|
|
"human_like": "Sets up the volume level for the ESPN app using a predefined theater control blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_hbo_max_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not explicitly defined in the provided automation snippet. The automation uses a blueprint 'theater/shield_app_volume.yaml' with input 'app_name: HBO Max'. The blueprint's internal triggers are not specified here. CONDITIONS: Not explicitly defined in the provided automation snippet. The blueprint may contain its own conditions. ACTIONS: Not explicitly defined in the provided automation snippet. The blueprint is expected to perform actions related to setting or initializing volume for the HBO Max application.",
|
|
"natural_language": {
|
|
"trigger": "The automation uses a blueprint, so the specific triggers are defined within the 'theater/shield_app_volume.yaml' file and are not detailed in this snippet.",
|
|
"conditions": "The automation uses a blueprint, so any conditions are defined within the 'theater/shield_app_volume.yaml' file and are not detailed in this snippet.",
|
|
"action": "The automation uses a blueprint to perform actions related to initializing or controlling the volume for the HBO Max application, but the specific actions are not detailed in this snippet."
|
|
},
|
|
"human_like": "Sets up volume control for the HBO Max app using a pre-defined theater blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_hulu_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When the automation is manually triggered or enabled. CONDITIONS: None. ACTIONS: Initialize volume settings for the Hulu application on the NVIDIA Shield using the 'theater/shield_app_volume.yaml' blueprint.",
|
|
"natural_language": {
|
|
"trigger": "This automation is triggered manually or when it is first enabled.",
|
|
"conditions": "There are no conditions that must be met for this automation to run.",
|
|
"action": "It initializes the volume settings for the Hulu application on the NVIDIA Shield device by executing the predefined 'theater/shield_app_volume.yaml' blueprint."
|
|
},
|
|
"human_like": "Sets up the correct volume level for the Hulu app on the Shield TV when activated.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_kodi_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not defined in the provided automation snippet. CONDITIONS: Not defined in the provided automation snippet. ACTIONS: Execute the blueprint 'theater/shield_app_volume.yaml' with the input parameter 'appl_name' set to 'Kodi'.",
|
|
"natural_language": {
|
|
"trigger": "This automation uses a blueprint, so the specific triggers are defined within the blueprint file 'theater/shield_app_volume.yaml' and are not detailed here.",
|
|
"conditions": "This automation uses a blueprint, so any conditions are defined within the blueprint file 'theater/shield_app_volume.yaml' and are not detailed here.",
|
|
"action": "This automation runs the 'theater/shield_app_volume.yaml' blueprint, configured to manage volume for the application named 'Kodi'."
|
|
},
|
|
"human_like": "Initializes the volume settings for the Kodi media player application using a pre-defined theater automation blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_netflix_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not explicitly defined in the provided automation snippet; the automation uses a blueprint named 'theater/shield_app_volume.yaml' with the input 'appl_name: Netflix'. The blueprint's triggers are not detailed here. CONDITIONS: Not explicitly defined in the provided automation snippet; conditions are defined within the referenced blueprint. ACTIONS: Not explicitly defined in the provided automation snippet; actions are defined within the referenced blueprint. The automation initializes volume settings for the Netflix application via the blueprint.",
|
|
"natural_language": {
|
|
"trigger": "The trigger for this automation is not specified in the provided YAML. It is defined within the referenced blueprint 'theater/shield_app_volume.yaml'.",
|
|
"conditions": "The conditions for this automation are not specified in the provided YAML. They are defined within the referenced blueprint 'theater/shield_app_volume.yaml'.",
|
|
"action": "The action for this automation is not specified in the provided YAML. It is defined within the referenced blueprint 'theater/shield_app_volume.yaml'. The overall purpose is to initialize volume settings for the Netflix application."
|
|
},
|
|
"human_like": "Sets up the volume for the Netflix app using a predefined theater automation template.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_paramount_plus_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not specified in provided automation snippet (blueprint-based automation). CONDITIONS: Not specified in provided automation snippet (blueprint-based automation). ACTIONS: Not specified in provided automation snippet (blueprint-based automation).",
|
|
"natural_language": {
|
|
"trigger": "The trigger is defined by the blueprint 'theater/shield_app_volume.yaml' and is not detailed in the provided automation snippet.",
|
|
"conditions": "The conditions are defined by the blueprint 'theater/shield_app_volume.yaml' and are not detailed in the provided automation snippet.",
|
|
"action": "The actions are defined by the blueprint 'theater/shield_app_volume.yaml' and are not detailed in the provided automation snippet."
|
|
},
|
|
"human_like": "This automation uses a blueprint to manage the volume for the Paramount+ app on a Shield device.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_peacock_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not explicitly defined in the provided automation snippet. The automation uses a blueprint 'theater/shield_app_volume.yaml' which may define its own triggers. CONDITIONS: Not explicitly defined in the provided automation snippet. The automation uses a blueprint which may define its own conditions. ACTIONS: Not explicitly defined in the provided automation snippet. The automation uses a blueprint which may define its own actions. The automation passes the input 'appl_name' with the value 'Peacock' to the blueprint.",
|
|
"natural_language": {
|
|
"trigger": "The trigger is not specified in the provided automation. It is defined by the blueprint 'theater/shield_app_volume.yaml'.",
|
|
"conditions": "The conditions are not specified in the provided automation. They are defined by the blueprint 'theater/shield_app_volume.yaml'.",
|
|
"action": "The actions are not specified in the provided automation. They are defined by the blueprint 'theater/shield_app_volume.yaml'. This automation instance provides the blueprint with the application name 'Peacock'."
|
|
},
|
|
"human_like": "This automation initializes volume settings for the Peacock app using a pre-defined theater blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_youtube_tv_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When the automation is triggered by the blueprint 'theater/shield_app_volume.yaml' with the input 'appl_name' set to 'Youtube TV'. CONDITIONS: As defined by the referenced blueprint. ACTIONS: As defined by the referenced blueprint.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered based on the logic defined in the external blueprint 'theater/shield_app_volume.yaml', specifically for the application 'Youtube TV'.",
|
|
"conditions": "The conditions are defined within the referenced blueprint.",
|
|
"action": "The actions are defined within the referenced blueprint."
|
|
},
|
|
"human_like": "This automation uses a pre-built blueprint to manage the volume for the Youtube TV app on a media device.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_bluray_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: Not specified in automation. CONDITIONS: Not specified in automation. ACTIONS: Use blueprint 'theater/harmony_device_volume.yaml' with input device_name set to 'BD Player'.",
|
|
"natural_language": {
|
|
"trigger": "The automation does not define a specific trigger; it is likely triggered by an event or condition defined within the referenced blueprint.",
|
|
"conditions": "The automation does not define any conditions; any conditions are likely defined within the referenced blueprint.",
|
|
"action": "The automation executes the 'theater/harmony_device_volume.yaml' blueprint, which is configured to manage the volume for a device named 'BD Player'."
|
|
},
|
|
"human_like": "Initializes the volume settings for the Blu-ray player using a predefined theater automation blueprint.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "initialize_laserdisc_volume",
|
|
"result": {
|
|
"structured": "TRIGGER: When the automation is initialized or reloaded. CONDITIONS: None. ACTIONS: Initialize the volume settings for the LD Player using the 'theater/harmony_device_volume.yaml' blueprint.",
|
|
"natural_language": {
|
|
"trigger": "This automation runs when Home Assistant starts up or when the automation configuration is reloaded.",
|
|
"conditions": "There are no conditions that must be met for this automation to run.",
|
|
"action": "It initializes the volume settings for the LD Player by applying the configuration defined in the 'theater/harmony_device_volume.yaml' blueprint."
|
|
},
|
|
"human_like": "Sets up the initial volume for the Laserdisc player when the system starts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "save_feature_movie_name",
|
|
"result": {
|
|
"structured": "TRIGGER: When Kodi Movies Select [input_select.kodi_movies] changes state. CONDITIONS: (Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration] is off) AND (the new state of Kodi Movies Select [input_select.kodi_movies] is not 'Select' AND is not 'unknown'). ACTIONS: Write a debug log message containing the new state of Kodi Movies Select [input_select.kodi_movies] and set the value of Current Feature Text [input_text.current_feature] to the new state.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the selection in the Kodi Movies Select [input_select.kodi_movies] dropdown changes.",
|
|
"conditions": "The Kodi Movie List Restoration [input_boolean.kodi_movie_list_restoration] switch must be off, and the new movie selection must not be 'Select' or 'unknown'.",
|
|
"action": "Logs the selected movie name as a debug message and saves the selected name into the Current Feature Text [input_text.current_feature] field."
|
|
},
|
|
"human_like": "Saves the name of a selected Kodi movie to a text field for later use, but only when a specific restoration mode is disabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "process_kodi_command_result",
|
|
"result": {
|
|
"structured": "TRIGGER: When a Kodi call method result event occurs with result_ok true AND input method VideoLibrary.GetMovies OR When a Kodi call method result event occurs with result_ok true AND input method VideoLibrary.GetMusicVideos OR When a Kodi call method result event occurs with result_ok true AND input method VideoLibrary.GetMovieSets OR When a Kodi call method result event occurs with result_ok false. CONDITIONS: None. ACTIONS: If the trigger id is 'movies', then if the result total is 1, run script.process_single_kodi_movie_result with the result data; else if the result total is greater than 1, run script.process_all_kodi_movies_result with the result data; else write a warning log message. If the trigger id is 'videos', run script.process_kodi_videos_result with the result data. If the trigger id is 'sets', turn on Kodi Activated [input_boolean.kodi_activated]. For any other trigger id (i.e., 'bad'), write a warning log message about the failed method call.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered by a Kodi call method result event. It can be triggered in four ways: when a successful result (result_ok true) is received for the VideoLibrary.GetMovies method, when a successful result is received for the VideoLibrary.GetMusicVideos method, when a successful result is received for the VideoLibrary.GetMovieSets method, or when any Kodi call method result event indicates a failure (result_ok false).",
|
|
"conditions": "There are no conditions that must be met for the actions to run; the automation proceeds directly based on which trigger fired.",
|
|
"action": "Depending on which trigger fired, the automation performs different actions. If the successful GetMovies result triggered it, it checks the total number of movies in the result. If there is exactly one movie, it processes it as a single movie. If there is more than one, it processes all movies. If there are zero movies, it logs a warning. If the successful GetMusicVideos result triggered it, it processes the music videos result. If the successful GetMovieSets result triggered it, it turns on the Kodi Activated [input_boolean.kodi_activated] switch. If the trigger was a failed Kodi call (result_ok false), it logs a warning message specifying which method call failed."
|
|
},
|
|
"human_like": "This automation processes the results of Kodi media library queries, handling successful movie, music video, and movie set lookups, and logs warnings for failures.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_kodi_video_call_error",
|
|
"result": {
|
|
"structured": "TRIGGER: When a system log event occurs with name 'homeassistant.components.kodi.media_player' and level 'WARNING'. CONDITIONS: The log message contains the text 'TransportError trying to run API method media_player.kodi.VideoLibrary.GetMusicVideos'. ACTIONS: Turn on Kodi Video Call Error [input_boolean.kodi_video_call_error].",
|
|
"natural_language": {
|
|
"trigger": "When a warning-level log event is generated for the Kodi media player component.",
|
|
"conditions": "The specific warning message must contain the phrase 'TransportError trying to run API method media_player.kodi.VideoLibrary.GetMusicVideos'.",
|
|
"action": "Sets the Kodi Video Call Error [input_boolean.kodi_video_call_error] flag to on."
|
|
},
|
|
"human_like": "Flags a Kodi video call error when a specific transport error warning appears in the system logs.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "update_last_alexa_device",
|
|
"result": {
|
|
"structured": "TRIGGER: When the last_called attribute of any of the following media players changes to true: Family Room Echo Media Player [media_player.family_room_echo], Master Bedroom Echo Media Player [media_player.master_bedroom_echo], Office Echo Media Player [media_player.office_echo], Penthouse Echo Media Player [media_player.penthouse_echo], Studio Echo Media Player [media_player.studio_echo], or Theater Echo Media Player [media_player.theater_echo]. CONDITIONS: None. ACTIONS: Fire the event update_last_alexa_sensor.",
|
|
"natural_language": {
|
|
"trigger": "Whenever any of the specified Alexa devices (Family Room Echo Media Player [media_player.family_room_echo], Master Bedroom Echo Media Player [media_player.master_bedroom_echo], Office Echo Media Player [media_player.office_echo], Penthouse Echo Media Player [media_player.penthouse_echo], Studio Echo Media Player [media_player.studio_echo], or Theater Echo Media Player [media_player.theater_echo]) becomes the last called device, indicated by its 'last_called' attribute turning true.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Triggers a custom event named 'update_last_alexa_sensor'."
|
|
},
|
|
"human_like": "Tracks which Alexa device was last used by triggering an event whenever one of them is activated.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "update_last_nabu_device",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following entities changes state from 'listening' to 'processing': Family Room Nabu Assist Satellite [assist_satellite.family_room_nabu_assist_satellite], Office Nabu Assist Satellite [assist_satellite.office_nabu_assist_satellite], Studio Nabu Assist Satellite [assist_satellite.studio_nabu_assist_satellite], or Theater Nabu Assist Satellite [assist_satellite.theater_nabu_assist_satellite]. CONDITIONS: None. ACTIONS: First, if the current value of Last Nabu Device Text [input_text.last_nabu_device] is equal to the entity_id of the triggering satellite, then set Last Nabu Device Text [input_text.last_nabu_device] to 'reset'. Then, set Last Nabu Device Text [input_text.last_nabu_device] to the entity_id of the triggering satellite.",
|
|
"natural_language": {
|
|
"trigger": "When any of the Nabu Assist Satellites (Family Room, Office, Studio, or Theater) transitions from a 'listening' state to a 'processing' state.",
|
|
"conditions": "There are no additional conditions that must be met for this automation to run.",
|
|
"action": "First, it checks if the Last Nabu Device Text [input_text.last_nabu_device] currently shows the same satellite that triggered the automation. If it does, it sets the text to 'reset'. Then, regardless of the check, it updates the Last Nabu Device Text [input_text.last_nabu_device] to show the entity ID of the satellite that just started processing."
|
|
},
|
|
"human_like": "Tracks which Nabu satellite is currently processing voice commands, resetting the tracker if the same device triggers again.",
|
|
"complexity": "medium"
|
|
}
|
|
}
|
|
] |