2121 lines
268 KiB
JSON
2121 lines
268 KiB
JSON
[
|
|
{
|
|
"id": "appliance_cycle_complete_consolidated",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes from running to complete OR When dryer status 2 [sensor.dryer_status_2] changes from Running to Complete OR When dishwasher power state [sensor.dishwasher_power_state] changes from running to idle. CONDITIONS: The state of the triggering appliance must match its expected completion state (i.e., if the trigger is washing_machine, then washing machine status [sensor.washing_machine_status] must be complete; if the trigger is dryer, then dryer status 2 [sensor.dryer_status_2] must be Complete; if the trigger is dishwasher, then dishwasher power state [sensor.dishwasher_power_state] must be idle). ACTIONS: If the trigger is washing_machine, then run send appliance notification script [script.send_appliance_notification] with variables for the Washing Machine and send a TTS notification via notify.alexa_media_everywhere. If the trigger is dryer, then run send appliance notification script [script.send_appliance_notification] with variables for the Dryer and send a TTS notification via notify.alexa_media_everywhere. If the trigger is dishwasher, then run send appliance notification script [script.send_appliance_notification] with variables for the Dishwasher.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered when the washing machine status [sensor.washing_machine_status] changes from 'running' to 'complete', or when the dryer status 2 [sensor.dryer_status_2] changes from 'Running' to 'Complete', or when the dishwasher power state [sensor.dishwasher_power_state] changes from 'running' to 'idle'.",
|
|
"conditions": "A condition checks that the sensor which triggered the automation is indeed in its completed state. For example, if the washing machine triggered it, the condition verifies the washing machine status [sensor.washing_machine_status] is 'complete'.",
|
|
"action": "Depending on which appliance finished, a specific notification is sent. For the washing machine, it runs a script to send a notification and also sends a text-to-speech announcement via Alexa. For the dryer, it does the same with a message about preventing wrinkles. For the dishwasher, it runs the notification script but does not send an Alexa announcement."
|
|
},
|
|
"human_like": "Sends a notification when the washing machine, dryer, or dishwasher finishes its cycle, with custom messages for each appliance.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "stop_appliance_reminders_handler_consolidated",
|
|
"result": {
|
|
"structured": "TRIGGER: When stop dishwasher reminders button [input_button.stop_dishwasher_reminders] is pressed OR When stop washing machine reminders button [input_button.stop_washing_machine_reminders] is pressed OR When stop dryer reminders button [input_button.stop_dryer_reminders] is pressed. CONDITIONS: None. ACTIONS: If the trigger was the stop dishwasher reminders button [input_button.stop_dishwasher_reminders], then clear mobile notifications tagged 'dishwasher_complete', turn on dishwasher reminders stopped boolean [input_boolean.dishwasher_reminders_stopped] (continue on error), send a mobile notification 'Dishwasher Reminders Stopped', and send a TTS announcement via Alexa. If the trigger was the stop washing machine reminders button [input_button.stop_washing_machine_reminders], then clear mobile notifications tagged 'washing_machine_complete', turn on washing machine reminders stopped boolean [input_boolean.washing_machine_reminders_stopped] (continue on error), send a mobile notification 'Washing Machine Reminders Stopped', and send a TTS announcement via Alexa. If the trigger was the stop dryer reminders button [input_button.stop_dryer_reminders], then clear mobile notifications tagged 'dryer_complete', turn on dryer reminders stopped boolean [input_boolean.dryer_reminders_stopped] (continue on error), send a mobile notification 'Dryer Reminders Stopped', and send a TTS announcement via Alexa.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered when the stop dishwasher reminders button [input_button.stop_dishwasher_reminders], the stop washing machine reminders button [input_button.stop_washing_machine_reminders], or the stop dryer reminders button [input_button.stop_dryer_reminders] is pressed.",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "Depending on which button was pressed, the automation performs a specific set of actions. For the dishwasher button, it clears any existing dishwasher completion notifications from the mobile app, marks that dishwasher reminders have been stopped by turning on the corresponding boolean, sends a new mobile notification confirming the reminders are stopped, and makes an Alexa announcement. For the washing machine button, it performs the same sequence but for washing machine reminders. For the dryer button, it performs the same sequence but for dryer reminders."
|
|
},
|
|
"human_like": "This automation handles the 'stop reminders' buttons for the dishwasher, washing machine, and dryer. When pressed, it clears old notifications, marks reminders as disabled, and sends a confirmation.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1742241925341'",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer machine state [sensor.dryer_machine_state] changes from run to stop. CONDITIONS: None. ACTIONS: Send a notification to mobile_app_pixel_9_pro_xl with title 'Dryer' and message 'Dryer is finished'.",
|
|
"natural_language": {
|
|
"trigger": "When the dryer machine state [sensor.dryer_machine_state] changes from 'run' to 'stop'.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Sends a notification to the mobile app (mobile_app_pixel_9_pro_xl) with the title 'Dryer' and the message 'Dryer is finished'."
|
|
},
|
|
"human_like": "Sends a phone notification when the dryer finishes its cycle.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1737217638878'",
|
|
"result": {
|
|
"structured": "TRIGGER: When eye of sauron motion detection [binary_sensor.eye_of_sauron_motion_detection] changes to on (motion detected). CONDITIONS: None. ACTIONS: Turn on pantry light [light.pantry_light].",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected by the eye of sauron motion detection [binary_sensor.eye_of_sauron_motion_detection].",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Turns on the pantry light [light.pantry_light]."
|
|
},
|
|
"human_like": "Automatically turns on the pantry light when motion is detected.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1736972664016'",
|
|
"result": {
|
|
"structured": "TRIGGER: When garage door opener always on switch [switch.tp_link_power_strip_8bba_garage_door_opener_always_on] turns off. CONDITIONS: None. ACTIONS: Turn on garage door opener always on switch [switch.tp_link_power_strip_8bba_garage_door_opener_always_on].",
|
|
"natural_language": {
|
|
"trigger": "When the garage door opener always on switch [switch.tp_link_power_strip_8bba_garage_door_opener_always_on] is turned off.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Immediately turns the garage door opener always on switch [switch.tp_link_power_strip_8bba_garage_door_opener_always_on] back on."
|
|
},
|
|
"human_like": "Ensures the garage door opener's power supply is always kept on by immediately restoring power if it gets turned off.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1742733210353'",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is exactly 07:00:00. CONDITIONS: None. ACTIONS: Turn on hall light [light.hall_light].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 7:00 AM.",
|
|
"conditions": "There are no conditions.",
|
|
"action": "Turns on the hall light [light.hall_light]."
|
|
},
|
|
"human_like": "Turns on the hall light every morning at 7 AM.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_scan_trigger",
|
|
"result": {
|
|
"structured": "TRIGGER: When bluetooth scan button [input_button.bluetooth_scan] changes state. CONDITIONS: None. ACTIONS: Create a persistent notification with title 'BLE Scan Started' and message 'BLE device scan initiated. Custom Python scripts will handle the scanning process.' with notification_id 'ble_scan_started'.",
|
|
"natural_language": {
|
|
"trigger": "When the bluetooth scan button [input_button.bluetooth_scan] is pressed or changes state.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Creates a notification on the Home Assistant interface with the title 'BLE Scan Started' and a message stating that a BLE device scan has been initiated and that custom Python scripts will handle the scanning process."
|
|
},
|
|
"human_like": "Shows a notification when the Bluetooth scan button is pressed to indicate that a device scan has started.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_device_selection_helper",
|
|
"result": {
|
|
"structured": "TRIGGER: When selected ble device text [input_text.selected_ble_device] changes state. CONDITIONS: The new state is not empty AND the new state is not 'unknown'. ACTIONS: Create a persistent notification with title 'BLE Device Selected' and a message indicating the selected device name.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the text value of the input field 'selected ble device text' [input_text.selected_ble_device] changes.",
|
|
"conditions": "The new value in the text field must not be empty and must not be the word 'unknown'.",
|
|
"action": "A notification titled 'BLE Device Selected' is created. The message informs the user which device was selected and prompts them to configure it via the dashboard."
|
|
},
|
|
"human_like": "Shows a notification when a new BLE device is selected from the list, prompting the user to configure it.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_discovery_startup",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Wait 30 seconds, then set discovered ble devices text [input_text.discovered_ble_devices] to an empty JSON object '{}', then create a persistent notification with title 'BLE Discovery Ready' and message 'Enhanced BLE Device Discovery system initialized. Access the utility dashboard at /lovelace/ble-utility' with notification_id 'ble_discovery_ready'.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant finishes starting up.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "After a 30-second delay, it clears the list of discovered BLE devices by setting the discovered ble devices text [input_text.discovered_ble_devices] to an empty JSON object. It then creates a persistent notification to inform the user that the BLE discovery system is ready and provides a link to the utility dashboard."
|
|
},
|
|
"human_like": "Initializes the BLE device discovery system when Home Assistant starts, clearing the device list and notifying the user.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_car_detection_processor",
|
|
"result": {
|
|
"structured": "TRIGGER: When an MQTT message is received on topic 'xbg'. CONDITIONS: The MQTT message payload is valid JSON. ACTIONS: Choose the first matching condition from the following list: 1) IF (ble driveway car 1 mac text [input_text.ble_driveway_car_1_mac] is not empty AND a device with the corresponding MAC address exists in the payload AND its RSSI value is greater than ble car1 rssi threshold number [input_number.ble_car1_rssi_threshold]) THEN turn on ble car1 present boolean [input_boolean.ble_car1_present] AND set ble car1 rssi number [input_number.ble_car1_rssi] to that device's RSSI value. 2) IF (ble driveway car 2 mac text [input_text.ble_driveway_car_2_mac] is not empty AND a device with the corresponding MAC address exists in the payload AND its RSSI value is greater than ble car2 rssi threshold number [input_number.ble_car2_rssi_threshold]) THEN turn on ble car2 present boolean [input_boolean.ble_car2_present] AND set ble car2 rssi number [input_number.ble_car2_rssi] to that device's RSSI value. 3) IF (ble driveway car 3 mac text [input_text.ble_driveway_car_3_mac] is not empty AND a device with the corresponding MAC address exists in the payload AND its RSSI value is greater than ble car3 rssi threshold number [input_number.ble_car3_rssi_threshold]) THEN turn on ble car3 present boolean [input_boolean.ble_car3_present] AND set ble car3 rssi number [input_number.ble_car3_rssi] to that device's RSSI value. 4) IF (ble street car mac text [input_text.ble_street_car_mac] is not empty AND a device with the corresponding MAC address exists in the payload AND its RSSI value is greater than ble street car rssi threshold number [input_number.ble_street_car_rssi_threshold]) THEN turn on ble street car present boolean [input_boolean.ble_street_car_present] AND set ble street car rssi number [input_number.ble_street_car_rssi] to that device's RSSI value. DEFAULT (if no conditions match): Turn off all car presence booleans (ble car1 present boolean [input_boolean.ble_car1_present], ble car2 present boolean [input_boolean.ble_car2_present], ble car3 present boolean [input_boolean.ble_car3_present], ble street car present boolean [input_boolean.ble_street_car_present]) AND set all car RSSI numbers (ble car1 rssi number [input_number.ble_car1_rssi], ble car2 rssi number [input_number.ble_car2_rssi], ble car3 rssi number [input_number.ble_car3_rssi], ble street car rssi number [input_number.ble_street_car_rssi]) to -100.",
|
|
"natural_language": {
|
|
"trigger": "Whenever an MQTT message arrives on the topic named 'xbg'.",
|
|
"conditions": "The message must contain a valid JSON payload.",
|
|
"action": "The automation checks the list of Bluetooth devices in the message against four predefined car MAC addresses. For each car, if its MAC address is configured and not empty, and a device with that MAC is found in the list with a signal strength (RSSI) above its specific threshold, it marks that car as present and records the current RSSI value. The cars checked are: Car 1 (using ble driveway car 1 mac text [input_text.ble_driveway_car_1_mac]), Car 2 (using ble driveway car 2 mac text [input_text.ble_driveway_car_2_mac]), Car 3 (using ble driveway car 3 mac text [input_text.ble_driveway_car_3_mac]), and a street car (using ble street car mac text [input_text.ble_street_car_mac]). If none of the cars meet their criteria, it turns off the 'present' status for all cars and sets their recorded RSSI values to -100."
|
|
},
|
|
"human_like": "Listens for Bluetooth scan data and updates the presence status and signal strength for up to four known cars, depending on whether their Bluetooth signals are strong enough.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_system_health_monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 10 minutes (time pattern). CONDITIONS: ble garage door automation boolean [input_boolean.ble_garage_door_automation] is on. ACTIONS: If (ble gateway raw data sensor [sensor.ble_gateway_raw_data] has a value AND (current time minus ble gateway raw data sensor [sensor.ble_gateway_raw_data] last_changed) is greater than 600 seconds) THEN log a warning message '⚠️ BLE Gateway offline - Safe mode active' AND turn off ble car1 present boolean [input_boolean.ble_car1_present], ble car2 present boolean [input_boolean.ble_car2_present], ble car3 present boolean [input_boolean.ble_car3_present], and ble street car present boolean [input_boolean.ble_street_car_present] (continue on error). OTHERWISE log an info message '✅ BLE System operational'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every 10 minutes.",
|
|
"conditions": "The automation only runs if the ble garage door automation boolean [input_boolean.ble_garage_door_automation] is turned on.",
|
|
"action": "The automation checks if the ble gateway raw data sensor [sensor.ble_gateway_raw_data] exists and has not been updated for more than 10 minutes. If this is the case, it logs a warning message about the BLE gateway being offline and activates a safe mode by turning off the presence booleans for all monitored cars (ble car1 present boolean [input_boolean.ble_car1_present], ble car2 present boolean [input_boolean.ble_car2_present], ble car3 present boolean [input_boolean.ble_car3_present], and ble street car present boolean [input_boolean.ble_street_car_present]), ignoring any errors during this process. If the gateway data is recent, it simply logs an informational message confirming the BLE system is operational."
|
|
},
|
|
"human_like": "This automation periodically checks the health of the BLE gateway system. If the gateway appears offline, it logs a warning and resets car presence indicators to a safe state.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_system_startup",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Wait for 1 minute, then turn on ble garage door automation boolean [input_boolean.ble_garage_door_automation], turn on driveway car 1 beacon enabled boolean [input_boolean.driveway_car_1_beacon_enabled], turn on driveway car 2 beacon enabled boolean [input_boolean.driveway_car_2_beacon_enabled], turn on driveway car 3 beacon enabled boolean [input_boolean.driveway_car_3_beacon_enabled], write an info log message '🚀 BLE system initialized at [current_time]', and write an info log message '[current_time] - BLE System started'.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant starts up.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "After waiting for one minute, the automation turns on the ble garage door automation boolean [input_boolean.ble_garage_door_automation], the driveway car 1 beacon enabled boolean [input_boolean.driveway_car_1_beacon_enabled], the driveway car 2 beacon enabled boolean [input_boolean.driveway_car_2_beacon_enabled], and the driveway car 3 beacon enabled boolean [input_boolean.driveway_car_3_beacon_enabled]. It then logs two informational messages to the system log, one indicating the BLE system has been initialized and the other confirming the BLE system has started, both including the current time."
|
|
},
|
|
"human_like": "Automatically activates the BLE garage and car beacon systems and logs their startup shortly after Home Assistant boots up.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_garage_door_driveway_car_1_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car1 present boolean [input_boolean.ble_car1_present] changes to on. CONDITIONS: ble garage door automation boolean [input_boolean.ble_garage_door_automation] is on AND driveway car 1 beacon enabled boolean [input_boolean.driveway_car_1_beacon_enabled] is on AND garage door manual override boolean [input_boolean.garage_door_manual_override] is off AND (IF ble garage door night disable boolean [input_boolean.ble_garage_door_night_disable] is on THEN current hour is NOT between ble garage door night start hour number [input_number.ble_garage_door_night_start_hour] (inclusive) AND ble garage door night end hour number [input_number.ble_garage_door_night_end_hour] (exclusive) ELSE true) AND (IF ble garage door last activation text [input_text.ble_garage_door_last_activation] is 'Never' THEN true ELSE time since last activation is greater than ble garage door cooldown minutes number [input_number.ble_garage_door_cooldown_minutes] minutes) AND ble car1 rssi number [input_number.ble_car1_rssi] is greater than -100 AND less than 0. ACTIONS: Wait for ble garage door arrival delay number [input_number.ble_garage_door_arrival_delay] seconds, then open garage door cover [cover.garage_door], then set ble garage door last activation text [input_text.ble_garage_door_last_activation] to the current timestamp, then set ble driveway car 1 last seen text [input_text.ble_driveway_car_1_last_seen] to the current timestamp, then set ble garage door recent events text [input_text.ble_garage_door_recent_events] to a message indicating the garage opened for Driveway Car 1, then set ble garage door system status text [input_text.ble_garage_door_system_status] to a status message.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the system detects that the car's Bluetooth beacon is present, indicated by the ble car1 present boolean [input_boolean.ble_car1_present] turning on.",
|
|
"conditions": "Several conditions must be met: the main garage door automation must be enabled via ble garage door automation boolean [input_boolean.ble_garage_door_automation]; the specific beacon for this car must be enabled via driveway car 1 beacon enabled boolean [input_boolean.driveway_car_1_beacon_enabled]; any manual override for the garage door must be off via garage door manual override boolean [input_boolean.garage_door_manual_override]. If a night-time disable feature is active via ble garage door night disable boolean [input_boolean.ble_garage_door_night_disable], the current time must be outside the configured night-time window defined by ble garage door night start hour number [input_number.ble_garage_door_night_start_hour] and ble garage door night end hour number [input_number.ble_garage_door_night_end_hour]. A cooldown period must have passed since the last activation, checked against ble garage door last activation text [input_text.ble_garage_door_last_activation] and ble garage door cooldown minutes number [input_number.ble_garage_door_cooldown_minutes]. Finally, the Bluetooth signal strength for the car, ble car1 rssi number [input_number.ble_car1_rssi], must be within an acceptable range (above -100 and below 0).",
|
|
"action": "After a configurable delay set by ble garage door arrival delay number [input_number.ble_garage_door_arrival_delay], the garage door is opened via garage door cover [cover.garage_door]. The system then logs this event by updating several text entities: it records the timestamp of this activation in ble garage door last activation text [input_text.ble_garage_door_last_activation], updates the last seen time for the car in ble driveway car 1 last seen text [input_text.ble_driveway_car_1_last_seen], adds a recent event note in ble garage door recent events text [input_text.ble_garage_door_recent_events], and sets a system status message in ble garage door system status text [input_text.ble_garage_door_system_status]."
|
|
},
|
|
"human_like": "Automatically opens the garage door when your car arrives home, provided it's not nighttime, the system is enabled, and a safety cooldown has passed.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_garage_door_driveway_car_2_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car2 present boolean [input_boolean.ble_car2_present] turns on. CONDITIONS: ble garage door automation boolean [input_boolean.ble_garage_door_automation] is on AND driveway car 2 beacon enabled boolean [input_boolean.driveway_car_2_beacon_enabled] is on AND garage door manual override boolean [input_boolean.garage_door_manual_override] is off AND (IF ble garage door night disable boolean [input_boolean.ble_garage_door_night_disable] is on THEN the current hour is NOT within the night period defined by ble garage door night start hour number [input_number.ble_garage_door_night_start_hour] and ble garage door night end hour number [input_number.ble_garage_door_night_end_hour] ELSE true) AND (IF ble garage door last activation text [input_text.ble_garage_door_last_activation] is 'Never' THEN true ELSE the time since the last activation is greater than the cooldown period defined by ble garage door cooldown minutes number [input_number.ble_garage_door_cooldown_minutes]) AND ble car2 rssi number [input_number.ble_car2_rssi] is between -100 and 0 (exclusive). ACTIONS: Wait for a delay defined by ble garage door arrival delay number [input_number.ble_garage_door_arrival_delay] seconds, then open garage door cover [cover.garage_door], set ble garage door last activation text [input_text.ble_garage_door_last_activation] to the current timestamp, set ble driveway car 2 last seen text [input_text.ble_driveway_car_2_last_seen] to the current timestamp, set ble garage door recent events text [input_text.ble_garage_door_recent_events] to a message indicating the garage opened for Driveway Car 2, and set ble garage door system status text [input_text.ble_garage_door_system_status] to a status message.",
|
|
"natural_language": {
|
|
"trigger": "When the system detects that the car's beacon is present, indicated by the ble car2 present boolean [input_boolean.ble_car2_present] turning on.",
|
|
"conditions": "Several conditions must be met: the overall garage door automation must be enabled via ble garage door automation boolean [input_boolean.ble_garage_door_automation]; the specific beacon for this car must be enabled via driveway car 2 beacon enabled boolean [input_boolean.driveway_car_2_beacon_enabled]; any manual override must be off via garage door manual override boolean [input_boolean.garage_door_manual_override]; if a night-time disable feature is active, the current time must be outside the configured night hours; a cooldown period must have passed since the last garage door activation; and the signal strength of the car's beacon, ble car2 rssi number [input_number.ble_car2_rssi], must be within an acceptable range (stronger than -100).",
|
|
"action": "After a configurable delay, the automation will open the garage door [cover.garage_door] and then update several log and status entities to record the event, including the time of activation, the last time the car was seen, a recent events log, and the system status."
|
|
},
|
|
"human_like": "Automatically opens the garage door when Car 2 arrives home, provided the system is enabled and various safety and timing conditions are satisfied.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_garage_door_driveway_car_3_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car3 present boolean [input_boolean.ble_car3_present] turns on. CONDITIONS: ble garage door automation boolean [input_boolean.ble_garage_door_automation] is on AND driveway car 3 beacon enabled boolean [input_boolean.driveway_car_3_beacon_enabled] is on AND garage door manual override boolean [input_boolean.garage_door_manual_override] is off AND (IF ble garage door night disable boolean [input_boolean.ble_garage_door_night_disable] is on THEN the current hour is NOT within the night period defined by ble garage door night start hour number [input_number.ble_garage_door_night_start_hour] and ble garage door night end hour number [input_number.ble_garage_door_night_end_hour] ELSE true) AND (IF ble garage door last activation text [input_text.ble_garage_door_last_activation] is 'Never' THEN true ELSE the time elapsed since the last activation is greater than the cooldown period defined by ble garage door cooldown minutes number [input_number.ble_garage_door_cooldown_minutes]) AND ble car3 rssi number [input_number.ble_car3_rssi] is between -100 and 0 (exclusive). ACTIONS: Wait for a delay specified by ble garage door arrival delay number [input_number.ble_garage_door_arrival_delay] seconds, then open garage door cover [cover.garage_door], then set ble garage door last activation text [input_text.ble_garage_door_last_activation] to the current timestamp, then set ble driveway car 3 last seen text [input_text.ble_driveway_car_3_last_seen] to the current timestamp, then set ble garage door recent events text [input_text.ble_garage_door_recent_events] to a message indicating the garage opened for Driveway Car 3, then set ble garage door system status text [input_text.ble_garage_door_system_status] to a status message.",
|
|
"natural_language": {
|
|
"trigger": "When the system detects that the car's beacon is present, indicated by the ble car3 present boolean [input_boolean.ble_car3_present] turning on.",
|
|
"conditions": "Several conditions must be met: the overall garage door automation must be enabled via ble garage door automation boolean [input_boolean.ble_garage_door_automation]; the specific beacon for this car must be enabled via driveway car 3 beacon enabled boolean [input_boolean.driveway_car_3_beacon_enabled]; a manual override must not be active, meaning garage door manual override boolean [input_boolean.garage_door_manual_override] is off. If the night disable feature is turned on via ble garage door night disable boolean [input_boolean.ble_garage_door_night_disable], the current time must be outside the configured night-time window. A cooldown period must have passed since the last garage door activation, using the timestamp stored in ble garage door last activation text [input_text.ble_garage_door_last_activation] and the duration in ble garage door cooldown minutes number [input_number.ble_garage_door_cooldown_minutes]. Finally, the signal strength of the car's beacon, ble car3 rssi number [input_number.ble_car3_rssi], must be within an acceptable range (above -100 and below 0).",
|
|
"action": "After a configurable delay (specified by ble garage door arrival delay number [input_number.ble_garage_door_arrival_delay]), the garage door is opened. The system then logs this event by updating several text fields: it records the current time as the last activation, updates the last seen time for the car's beacon, adds a recent event note, and updates the overall system status message."
|
|
},
|
|
"human_like": "Automatically opens the garage door when Car 3 arrives, provided all safety and timing conditions are met.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_street_car_tracking",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble street car present boolean [input_boolean.ble_street_car_present] turns on OR when ble street car present boolean [input_boolean.ble_street_car_present] turns off. CONDITIONS: street car beacon enabled boolean [input_boolean.street_car_beacon_enabled] is on. ACTIONS: Set ble street car last seen text [input_text.ble_street_car_last_seen] to the current date and time (YYYY-MM-DD HH:MM:SS) AND set ble garage door recent events text [input_text.ble_garage_door_recent_events] to the current time (HH:MM:SS) appended with ' - Street car home' if the trigger state is 'on', otherwise ' - Street car away'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the ble street car present boolean [input_boolean.ble_street_car_present] changes its state, either turning on or turning off.",
|
|
"conditions": "The automation only runs if the street car beacon enabled boolean [input_boolean.street_car_beacon_enabled] is currently switched on.",
|
|
"action": "Updates the ble street car last seen text [input_text.ble_street_car_last_seen] with the current timestamp. It also logs the event in ble garage door recent events text [input_text.ble_garage_door_recent_events], recording the time and whether the car is 'home' or 'away' based on the state change."
|
|
},
|
|
"human_like": "Logs the car's presence status and updates a timestamp whenever the car's Bluetooth beacon reports it arriving or leaving, provided tracking is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_garage_door_system_startup",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Set ble garage door system status text [input_text.ble_garage_door_system_status] to 'System started at <current datetime> - Monitoring 4 vehicles' AND Set ble garage door recent events text [input_text.ble_garage_door_recent_events] to '<current time> - System initialized'.",
|
|
"natural_language": {
|
|
"trigger": "When the Home Assistant system starts up.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Updates the ble garage door system status text [input_text.ble_garage_door_system_status] with a timestamp and a message indicating it is monitoring 4 vehicles, and also updates the ble garage door recent events text [input_text.ble_garage_door_recent_events] with the current time and an initialization message."
|
|
},
|
|
"human_like": "Initializes the BLE garage door monitoring system by updating status logs when Home Assistant starts.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_gateway_offline_alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble gateway status sensor [sensor.ble_gateway_status] changes to 'offline' AND remains in that state for 5 minutes. CONDITIONS: None. ACTIONS: Set the value of ble garage door system status text [input_text.ble_garage_door_system_status] to 'WARNING: BLE Gateway offline since <current_time>'. Set the value of ble garage door recent events text [input_text.ble_garage_door_recent_events] to '<current_time> - BLE Gateway OFFLINE'. Create a persistent notification with title 'BLE Gateway Offline' and message 'April Brother BLE Gateway at 192.168.1.82 has been offline for 5 minutes' with notification_id 'ble_gateway_offline'.",
|
|
"natural_language": {
|
|
"trigger": "When the ble gateway status sensor [sensor.ble_gateway_status] reports a status of 'offline' and stays in that state for a continuous period of five minutes.",
|
|
"conditions": "There are no conditions that must be met for the action to run; the automation executes as soon as the trigger occurs.",
|
|
"action": "It updates the ble garage door system status text [input_text.ble_garage_door_system_status] with a warning message including the current time. It also logs the event in the ble garage door recent events text [input_text.ble_garage_door_recent_events] with a timestamp. Finally, it creates a persistent notification on the Home Assistant interface to alert the user that the BLE Gateway has been offline for five minutes."
|
|
},
|
|
"human_like": "Sends an alert and updates status logs when the BLE Gateway device goes offline for five minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_gateway_online_recovery",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble gateway status sensor [sensor.ble_gateway_status] changes to online. CONDITIONS: None. ACTIONS: Set ble garage door system status text [input_text.ble_garage_door_system_status] to 'System operational - BLE Gateway reconnected at [current_time]'. Set ble garage door recent events text [input_text.ble_garage_door_recent_events] to '[current_time] - BLE Gateway back online'. Dismiss the persistent notification with ID 'ble_gateway_offline'.",
|
|
"natural_language": {
|
|
"trigger": "When the ble gateway status sensor [sensor.ble_gateway_status] reports that the gateway is back online.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Updates the ble garage door system status text [input_text.ble_garage_door_system_status] to indicate the system is operational and notes the reconnection time. It also logs the event in the ble garage door recent events text [input_text.ble_garage_door_recent_events] and clears any existing 'BLE gateway offline' notification."
|
|
},
|
|
"human_like": "Clears the offline alert and updates the system status when the BLE gateway reconnects.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_driveway_car_1_last_seen_update",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car1 present boolean [input_boolean.ble_car1_present] changes to on. CONDITIONS: None. ACTIONS: Set the value of ble driveway car 1 last seen text [input_text.ble_driveway_car_1_last_seen] to the current date and time formatted as YYYY-MM-DD HH:MM:SS.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the ble car1 present boolean [input_boolean.ble_car1_present] turns on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Updates the ble driveway car 1 last seen text [input_text.ble_driveway_car_1_last_seen] with the current timestamp."
|
|
},
|
|
"human_like": "Records the time when Car 1's Bluetooth beacon is detected in the driveway.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_driveway_car_2_last_seen_update",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car2 present boolean [input_boolean.ble_car2_present] changes to on. CONDITIONS: None. ACTIONS: Set the value of ble driveway car 2 last seen text [input_text.ble_driveway_car_2_last_seen] to the current date and time in the format 'YYYY-MM-DD HH:MM:SS'.",
|
|
"natural_language": {
|
|
"trigger": "When the ble car2 present boolean [input_boolean.ble_car2_present] turns on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Updates the ble driveway car 2 last seen text [input_text.ble_driveway_car_2_last_seen] with the current timestamp."
|
|
},
|
|
"human_like": "Records the last time Car 2 was detected in the driveway by updating a timestamp.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "ble_driveway_car_3_last_seen_update",
|
|
"result": {
|
|
"structured": "TRIGGER: When ble car3 present boolean [input_boolean.ble_car3_present] turns on. CONDITIONS: None. ACTIONS: Set the value of ble driveway car 3 last seen text [input_text.ble_driveway_car_3_last_seen] to the current date and time formatted as 'YYYY-MM-DD HH:MM:SS'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the ble car3 present boolean [input_boolean.ble_car3_present] changes its state to on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Updates the ble driveway car 3 last seen text [input_text.ble_driveway_car_3_last_seen] with the current timestamp."
|
|
},
|
|
"human_like": "Records the last time Car 3 was detected in the driveway by updating a timestamp.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "climate_schedule_morning_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When the current hour equals the value of climate schedule morning hour number [input_number.climate_schedule_morning_hour] AND the current minute is 0. CONDITIONS: climate automation enabled boolean [input_boolean.climate_automation_enabled] is on AND away mode boolean [input_boolean.away_mode] is off AND climate mode select [input_select.climate_mode] is 'Auto Schedule'. ACTIONS: Turn off climate night mode boolean [input_boolean.climate_night_mode] AND run script climate set all zones temperature script [script.climate_set_all_zones_temperature] with the temperature set to the integer value of target temperature day number [input_number.target_temperature_day] AND set the value of climate status reason text [input_text.climate_status_reason] to 'Morning schedule activated at [current time in HH:MM format]' AND set the datetime of climate last schedule change datetime [input_datetime.climate_last_schedule_change] to the current datetime.",
|
|
"natural_language": {
|
|
"trigger": "At the start of the hour that matches the value set in climate schedule morning hour number [input_number.climate_schedule_morning_hour].",
|
|
"conditions": "The climate automation must be enabled, indicated by climate automation enabled boolean [input_boolean.climate_automation_enabled] being on. The away mode boolean [input_boolean.away_mode] must be off, and the climate mode select [input_select.climate_mode] must be set to 'Auto Schedule'.",
|
|
"action": "Disables the night mode by turning off climate night mode boolean [input_boolean.climate_night_mode]. It then sets the temperature for all climate zones to the daytime target value stored in target temperature day number [input_number.target_temperature_day] by running the script climate set all zones temperature script [script.climate_set_all_zones_temperature]. It updates the status log in climate status reason text [input_text.climate_status_reason] with a message confirming the morning schedule activation and the current time. Finally, it records the time of this change in climate last schedule change datetime [input_datetime.climate_last_schedule_change]."
|
|
},
|
|
"human_like": "Activates the daytime heating schedule at a specified morning hour, provided the system is in auto mode and no one is away.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "climate_schedule_evening_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When the current hour equals the value of climate schedule evening hour number [input_number.climate_schedule_evening_hour] AND the current minute equals 0. CONDITIONS: climate automation enabled boolean [input_boolean.climate_automation_enabled] is on AND away mode boolean [input_boolean.away_mode] is off AND climate mode select [input_select.climate_mode] is 'Auto Schedule'. ACTIONS: Turn on climate night mode boolean [input_boolean.climate_night_mode], execute climate set all zones temperature script [script.climate_set_all_zones_temperature] with the temperature parameter set to the integer value of target temperature night number [input_number.target_temperature_night], set the value of climate status reason text [input_text.climate_status_reason] to 'Evening schedule activated at [current time in HH:MM format]', and set the datetime of climate last schedule change datetime [input_datetime.climate_last_schedule_change] to the current datetime.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at the start of the hour specified by the climate schedule evening hour number [input_number.climate_schedule_evening_hour].",
|
|
"conditions": "The automation only runs if the climate automation enabled boolean [input_boolean.climate_automation_enabled] is switched on, the away mode boolean [input_boolean.away_mode] is switched off, and the climate mode select [input_select.climate_mode] is set to 'Auto Schedule'.",
|
|
"action": "It activates the nighttime climate schedule by turning on the climate night mode boolean [input_boolean.climate_night_mode], running a script to set all climate zones to the target night temperature defined by target temperature night number [input_number.target_temperature_night], updating the climate status reason text [input_text.climate_status_reason] with a message confirming the schedule activation, and recording the current time in the climate last schedule change datetime [input_datetime.climate_last_schedule_change]."
|
|
},
|
|
"human_like": "Activates the evening heating schedule at a preset time, switching all zones to the nighttime temperature when the system is in auto mode and the home is not in away mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "climate_away_mode_activation_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When away mode boolean [input_boolean.away_mode] turns on. CONDITIONS: climate automation enabled boolean [input_boolean.climate_automation_enabled] is on. ACTIONS: Set climate mode select [input_select.climate_mode] to 'Away Mode'. Call service climate set all zones temperature script [script.climate_set_all_zones_temperature] with temperature set to the integer value of target temperature away number [input_number.target_temperature_away]. Set climate status reason text [input_text.climate_status_reason] to 'Away mode activated at [current time in HH:MM format]'. Set climate last schedule change datetime [input_datetime.climate_last_schedule_change] to the current date and time.",
|
|
"natural_language": {
|
|
"trigger": "When the away mode boolean [input_boolean.away_mode] is turned on.",
|
|
"conditions": "If the climate automation enabled boolean [input_boolean.climate_automation_enabled] is currently switched on.",
|
|
"action": "Changes the climate mode to 'Away Mode' via the climate mode select [input_select.climate_mode]. It then runs a script to set the temperature for all climate zones to the value stored in target temperature away number [input_number.target_temperature_away]. It also updates a status message in climate status reason text [input_text.climate_status_reason] to indicate the time the away mode was activated, and records the current time in climate last schedule change datetime [input_datetime.climate_last_schedule_change]."
|
|
},
|
|
"human_like": "Activates the climate away mode, setting all zones to a predefined away temperature and logging the change, when the home is set to away and climate automation is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "climate_away_mode_deactivation_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When away mode boolean [input_boolean.away_mode] changes to off. CONDITIONS: climate automation enabled boolean [input_boolean.climate_automation_enabled] is on AND climate mode select [input_select.climate_mode] is set to Away Mode. ACTIONS: Set climate mode select [input_select.climate_mode] to Auto Schedule, execute climate apply current schedule script [script.climate_apply_current_schedule], and set climate status reason text [input_text.climate_status_reason] to 'Returned from away mode at [current time in HH:MM format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the away mode boolean [input_boolean.away_mode] is turned off.",
|
|
"conditions": "The climate automation enabled boolean [input_boolean.climate_automation_enabled] must be on, and the climate mode select [input_select.climate_mode] must currently be set to 'Away Mode'.",
|
|
"action": "Changes the climate mode select [input_select.climate_mode] to 'Auto Schedule', runs the climate apply current schedule script [script.climate_apply_current_schedule] to apply the normal schedule, and updates the climate status reason text [input_text.climate_status_reason] with a message stating the time the system returned from away mode."
|
|
},
|
|
"human_like": "Switches the climate system back to its normal schedule and logs the time when the home's away mode is disabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "curatron_calibration_reminder",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 09:00:00 OR When curatron calibration due binary sensor [binary_sensor.curatron_calibration_due] turns on. CONDITIONS: curatron calibration due binary sensor [binary_sensor.curatron_calibration_due] is on AND the current weekday is Monday OR Wednesday OR Friday. ACTIONS: Send a notification to mobile_app_pixel_9_pro_xl with title '🌡️ Curatron Calibration Due' and a message containing calibration details, including the last calibration date from curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] and the current offset, and provide action buttons. Create a persistent notification with ID 'curatron_calibration_due' containing calibration details, including the status from curatron humidity calibration status sensor [sensor.curatron_humidity_calibration_status] and days since calibration.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers either at 9:00 AM every day, or whenever the curatron calibration due binary sensor [binary_sensor.curatron_calibration_due] indicates that calibration is due by turning on.",
|
|
"conditions": "For the automation to proceed, the curatron calibration due binary sensor [binary_sensor.curatron_calibration_due] must be in the 'on' state, and the current day must be a Monday, Wednesday, or Friday.",
|
|
"action": "The automation sends a rich notification to a mobile device, providing details about the overdue humidity sensor calibration, including the last calibration date and current offset, and offers action buttons to mark it as done or snooze. It also creates a persistent notification in Home Assistant with more detailed calibration information and a reminder to schedule maintenance."
|
|
},
|
|
"human_like": "Sends a weekly reminder on specific weekdays when the Curatron humidity sensor calibration is overdue, providing details and actionable options.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "curatron_calibration_completed",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action 'calibration_done'. CONDITIONS: None. ACTIONS: Set curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] to the current date and time, dismiss the persistent notification with ID 'curatron_calibration_due', and send a notification to mobile_app_pixel_9_pro_xl with title '✅ Curatron Calibration Updated' and a message confirming the update and the next due date.",
|
|
"natural_language": {
|
|
"trigger": "When the user taps the 'calibration_done' action on a mobile app notification.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It updates the calibration timestamp to the current date and time, dismisses the 'curatron_calibration_due' notification, and sends a confirmation notification to the user's phone with the new calibration date and the next due date."
|
|
},
|
|
"human_like": "Updates the Curatron calibration date and notifies the user when they mark the calibration as complete.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "curatron_calibration_snoozed",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action 'calibration_snooze'. CONDITIONS: None. ACTIONS: Dismiss the persistent notification with ID 'curatron_calibration_due' AND send a notification to mobile_app_pixel_9_pro_xl with title '⏰ Curatron Calibration Snoozed' and message 'Calibration reminder snoozed for 1 week. Will remind again next Monday.' with tag 'curatron_calibration_snoozed'.",
|
|
"natural_language": {
|
|
"trigger": "When a user interacts with a mobile app notification and selects the 'calibration_snooze' action.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "The automation dismisses the existing persistent notification about the calibration being due, and then sends a new notification to the user's phone confirming the reminder has been snoozed for one week."
|
|
},
|
|
"human_like": "Snoozes the Curatron calibration reminder for one week when the user taps the snooze action in the notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "curatron_humidity_validation_alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When curatron humidity accuracy validation sensor [sensor.curatron_humidity_accuracy_validation] changes to Below Range OR Above Range OR Invalid Reading AND remains in that state for 30 minutes. CONDITIONS: curatron humidity accuracy validation sensor [sensor.curatron_humidity_accuracy_validation] is NOT Within Range. ACTIONS: Send a notification to mobile_app_pixel_9_pro_xl with title '⚠️ Curatron Humidity Alert' and a message containing the validation status, current humidity percentage, and expected range. Also, create a logbook entry for curatron humidity sensor [sensor.curatron_humidity] recording the validation failure and the current reading.",
|
|
"natural_language": {
|
|
"trigger": "When the curatron humidity accuracy validation sensor [sensor.curatron_humidity_accuracy_validation] reports a status of 'Below Range', 'Above Range', or 'Invalid Reading' and that status persists for 30 minutes.",
|
|
"conditions": "The automation only runs if the curatron humidity accuracy validation sensor [sensor.curatron_humidity_accuracy_validation] is not reporting a status of 'Within Range'.",
|
|
"action": "Sends a mobile notification with details about the humidity sensor alert, including the validation status and the current humidity percentage. It also logs the event in the Home Assistant logbook for the curatron humidity sensor [sensor.curatron_humidity]."
|
|
},
|
|
"human_like": "Sends an alert if the Curatron's humidity sensor reading is out of its expected range for a prolonged period.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "curatron_initial_calibration_setup",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts. CONDITIONS: curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] is in an unknown state. ACTIONS: Set the date and time of curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] to the current date and time AND log an entry named 'Curatron Calibration Setup' with a message stating the initial calibration date and time and an offset correction.",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant first starts up.",
|
|
"conditions": "Only if the curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] has not been set and is in an unknown state.",
|
|
"action": "Sets the initial calibration date to today's current date and time for curatron last calibration date datetime [input_datetime.curatron_last_calibration_date] and creates a logbook entry confirming the setup with the specific time and an offset correction."
|
|
},
|
|
"human_like": "Sets up the initial calibration date for the Curatron device when Home Assistant starts for the first time after installation.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "device_health_scheduler",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 00:00:00 (midnight). CONDITIONS: device health scheduler enabled boolean [input_boolean.device_health_scheduler_enabled] is on. ACTIONS: Fire the event 'device_health_schedule_trigger' with data: task_type 'reset_counters' and schedule_time '00:00:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'daily_setup' and schedule_time '00:05:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'weekly_analysis' and schedule_time '01:00:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'weekly_report' and schedule_time '02:00:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'quarterly_review' and schedule_time '02:00:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'monthly_maintenance' and schedule_time '03:00:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'daily_summary' and schedule_time '07:30:00'. Fire the event 'device_health_schedule_trigger' with data: task_type 'end_of_day_report' and schedule_time '23:55:00'.",
|
|
"natural_language": {
|
|
"trigger": "Every day at midnight (00:00:00).",
|
|
"conditions": "The device health scheduler enabled boolean [input_boolean.device_health_scheduler_enabled] must be switched on.",
|
|
"action": "It fires a series of eight custom events named 'device_health_schedule_trigger', each with a specific task type and a scheduled time. The tasks are: reset counters (at 00:00), daily setup (at 00:05), weekly analysis (at 01:00), weekly report (at 02:00), quarterly review (at 02:00), monthly maintenance (at 03:00), daily summary (at 07:30), and an end-of-day report (at 23:55)."
|
|
},
|
|
"human_like": "A daily scheduler that triggers a sequence of device health monitoring and reporting tasks at specific times throughout the day, but only if the scheduler is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "device_health_monitor_optimized",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following entities becomes unavailable and remains unavailable for 1 minute: lock front door [lock.front_door], climate family room [climate.family_room], climate master bedroom [climate.master_bedroom], climate upstairs [climate.upstairs], feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump], wroommicrousb water level sensor [sensor.wroommicrousb_water_level], curatron plug switch [switch.curatron_plug], rm4 pro remote [remote.rm4_pro] OR When an event of type 'device_health_schedule_trigger' occurs. CONDITIONS: device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] is on. ACTIONS: If the trigger is 'device_offline' AND the triggered entity has a 'critical' tag, then run send critical device notification script [script.send_critical_device_notification] with parameters. If the trigger is 'device_offline' AND the triggered entity does NOT have a 'critical' tag AND its domain is one of ['light', 'switch', 'sensor', 'binary_sensor', 'lock', 'climate', 'camera'], then increment device notifications standard today counter [counter.device_notifications_standard_today]. If the trigger is 'scheduled_task', then: If the event data task_type is 'daily_summary' AND daily summary notifications enabled boolean [input_boolean.daily_summary_notifications_enabled] is on, then run send device health daily summary script [script.send_device_health_daily_summary]. Else if the event data task_type is 'weekly_report' AND it is Sunday AND weekly summary notifications enabled boolean [input_boolean.weekly_summary_notifications_enabled] is on, then run send device health weekly report script [script.send_device_health_weekly_report]. Else if the event data task_type is 'daily_summary' OR 'weekly_report', then increment device health optimized triggers counter [counter.device_health_optimized_triggers]. For any other case, log an informational system message.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in two ways. First, when any of the specified devices (like the lock front door, climate family room, or feed pump smart plug) becomes unavailable and stays that way for at least one minute. Second, when a scheduled event named 'device_health_schedule_trigger' occurs.",
|
|
"conditions": "The automation only runs if the device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] is turned on.",
|
|
"action": "Depending on what triggered the automation, different actions are taken. If a device goes offline and is tagged as 'critical', a critical notification script is run. If a non-critical device from a common domain (like lights, switches, or sensors) goes offline, a daily counter for standard notifications is incremented. For scheduled tasks, if it's a daily summary and those notifications are enabled, a daily summary script is run. If it's a weekly report on a Sunday and weekly notifications are enabled, a weekly report script is run. If a scheduled task is for a summary or report but the specific notifications are not enabled, a general trigger counter is incremented. In all other cases, the details are logged for information."
|
|
},
|
|
"human_like": "This automation intelligently monitors device health, sending critical alerts for tagged devices, counting standard offline events, and generating scheduled daily or weekly summaries when enabled.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "setup_notification_channels",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts (event: start) OR When a scheduled daily setup event (device_health_schedule_trigger) with task_type 'daily_setup' occurs. CONDITIONS: The last setup time stored in notification channels last setup datetime [input_datetime.notification_channels_last_setup] is unknown, unavailable, empty, or more than 24 hours have passed since that time. ACTIONS: Set the current datetime on notification channels last setup datetime [input_datetime.notification_channels_last_setup] (continues on error). Send a notification to mobile app 'mobile_app_pixel_9_pro_xl' to create a 'critical_alerts' channel with high importance, red LED, and a specific vibration pattern. Send a notification to create a 'device_summaries' channel with default importance, blue LED, and a specific vibration pattern. Send a notification to create a 'device_recovery' channel with low importance, green LED, and a specific vibration pattern. Write an info-level log entry stating 'Device Health: Mobile app notification channels configured for proper routing'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers either when Home Assistant starts up, or when a scheduled daily setup event for device health occurs.",
|
|
"conditions": "It only runs if the last recorded setup time for the notification channels is either missing, invalid, or if at least 24 hours have passed since the last setup.",
|
|
"action": "It first updates the timestamp for the last setup. Then, it sends three configuration commands to the mobile app 'mobile_app_pixel_9_pro_xl' to create distinct notification channels for critical alerts, device summaries, and device recovery, each with specific names, descriptions, priorities, and alert styles. Finally, it logs an informational message confirming the configuration."
|
|
},
|
|
"human_like": "Sets up and refreshes notification channels on a mobile device for different types of device health alerts, ensuring they are properly categorized and delivered.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "device_health_recovery_monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the monitored devices (lock front door [lock.front_door], climate family room [climate.family_room], climate master bedroom [climate.master_bedroom], climate upstairs [climate.upstairs], feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump], or rm4 pro remote [remote.rm4_pro]) changes state from 'unavailable' and remains available for 1 minute. CONDITIONS: device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] is on AND the triggering entity's domain (e.g., 'light', 'switch', 'sensor', 'binary_sensor', 'lock', 'climate', 'camera') is in the allowed list. ACTIONS: First, attempt to dismiss any existing persistent notification with ID 'critical_device_' followed by the entity ID (with '.' replaced by '_'), ignoring errors. Then, IF the triggering entity has a 'critical' tag in its attributes, send a mobile notification with details about the device's restoration.",
|
|
"natural_language": {
|
|
"trigger": "When any of the specified devices—lock front door [lock.front_door], climate family room [climate.family_room], climate master bedroom [climate.master_bedroom], climate upstairs [climate.upstairs], feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump], or rm4 pro remote [remote.rm4_pro]—transitions from being unavailable to available and stays that way for at least one minute.",
|
|
"conditions": "The automation only runs if device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] is turned on, and if the device that triggered the automation belongs to one of the supported types: lights, switches, sensors, binary sensors, locks, climate devices, or cameras.",
|
|
"action": "First, it tries to clear any existing 'critical device' notification for that specific device. Then, if the device has been tagged as 'critical' in its attributes, it sends a detailed notification to a mobile device confirming the device is back online, including how long it was offline and the time it was restored."
|
|
},
|
|
"human_like": "Sends a recovery notification when a previously offline critical device comes back online, but only if device health alerts are enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_daily_counters",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type device_health_schedule_trigger occurs with event_data containing task_type: reset_counters. CONDITIONS: None. ACTIONS: Reset the following counters: notifications sent today counter [counter.notifications_sent_today], critical alerts today counter [counter.critical_alerts_today], device notifications critical today counter [counter.device_notifications_critical_today], device notifications suppressed today counter [counter.device_notifications_suppressed_today], device notifications standard today counter [counter.device_notifications_standard_today]. Then increment device health optimized triggers counter [counter.device_health_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled event is triggered specifically to reset counters.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Resets five daily notification counters to zero and increments a separate counter that tracks how many times this reset has been performed."
|
|
},
|
|
"human_like": "Resets the daily notification counters at a scheduled time, keeping track of how often this maintenance task runs.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "daily_notification_system_report",
|
|
"result": {
|
|
"structured": "TRIGGER: When event device_health_schedule_trigger occurs with event_data.task_type equal to 'end_of_day_report'. CONDITIONS: device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] is on AND system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is on. ACTIONS: Create a persistent notification with title '📊 Daily Notification System Report' and a detailed message containing formatted statistics from notification system performance stats sensor [sensor.notification_system_performance_stats]. IF (notification system performance stats sensor [sensor.notification_system_performance_stats] attribute 'critical_today' > 5 OR notification system performance stats sensor [sensor.notification_system_performance_stats] attribute 'system_health' == 'needs_attention') THEN send a mobile notification via notify.mobile_app_pixel_9_pro_xl with an alert summary. THEN increment device health optimized triggers counter [counter.device_health_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered by a scheduled event named 'device_health_schedule_trigger' that is configured to run at the end of the day.",
|
|
"conditions": "It only runs if both the device health notifications enabled boolean [input_boolean.device_health_notifications_enabled] and the system monitoring enabled boolean [input_boolean.system_monitoring_enabled] are turned on.",
|
|
"action": "It creates a detailed persistent notification report titled 'Daily Notification System Report', which includes statistics like deployment status, system health, counts of notifications sent and suppressed, and device offline statuses pulled from the notification system performance stats sensor [sensor.notification_system_performance_stats]. If the report shows more than 5 critical notifications today or if the system health is 'needs_attention', it also sends an alert notification to a mobile device. Finally, it increments a counter that tracks how many times this optimized report has been triggered."
|
|
},
|
|
"human_like": "Generates and delivers a daily summary report on the notification system's performance, and sends a mobile alert if critical issues are detected.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "weekly_notification_system_analysis",
|
|
"result": {
|
|
"structured": "TRIGGER: When event device_health_schedule_trigger occurs with event_data.task_type equal to weekly_analysis. CONDITIONS: (Time is Sunday) AND (system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is on). ACTIONS: Set variables: current_critical from sensor.notification_system_performance_stats attribute 'critical_today', current_suppressed from sensor.notification_system_performance_stats attribute 'suppressed_today', system_health from sensor.notification_system_performance_stats attribute 'system_health', efficiency_score from sensor.notification_system_performance_stats attribute 'efficiency_score'. Then, create a persistent notification with ID 'weekly_system_analysis' containing a formatted weekly performance report. Then, send a notification to mobile_app_pixel_9_pro_xl with channel 'device_summaries' and priority 'normal' containing a summary of the system health, efficiency, and critical alerts.",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled device health task triggers a weekly analysis event.",
|
|
"conditions": "The automation runs only on Sundays and if the system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is turned on.",
|
|
"action": "First, it gathers performance data from the notification system performance stats sensor [sensor.notification_system_performance_stats], including today's critical alerts, suppressed notifications, overall system health, and efficiency score. It then creates a detailed persistent notification with a weekly report, including performance metrics, health assessment, and optimization recommendations. Finally, it sends a summary notification to a mobile device."
|
|
},
|
|
"human_like": "Sends a weekly performance summary and health report for the notification system every Sunday.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "monthly_notification_system_maintenance",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type device_health_schedule_trigger occurs with event_data containing task_type equal to monthly_maintenance. CONDITIONS: (The current day of the month is the 1st) AND (system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is on). ACTIONS: 1. Write an info-level system log message: 'Starting monthly notification system maintenance for tag-based system'. 2. Reset the following counters: notifications sent today counter [counter.notifications_sent_today], critical alerts today counter [counter.critical_alerts_today], device notifications critical today counter [counter.device_notifications_critical_today], device notifications suppressed today counter [counter.device_notifications_suppressed_today], device notifications standard today counter [counter.device_notifications_standard_today]. 3. Create a logbook entry with name 'Monthly Maintenance' and message 'Monthly notification system health check completed - counters reset'. 4. Set variables: current_efficiency from notification system performance stats sensor [sensor.notification_system_performance_stats] attribute 'efficiency_score', system_health from notification system performance stats sensor [sensor.notification_system_performance_stats] attribute 'system_health', critical_devices_count from device health categories sensor [sensor.device_health_categories] attribute 'critical_devices' length, total_monitored from device health categories sensor [sensor.device_health_categories] attribute 'total_monitored'. 5. Create a persistent notification with ID 'monthly_maintenance_report', a title including the current month and year, and a detailed message reporting system status, performance, and recommendations. 6. Send a notification to mobile_app_pixel_9_pro_xl with channel 'device_summaries' and normal priority, containing a summary of system health and efficiency.",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled monthly maintenance event for device health is triggered.",
|
|
"conditions": "The automation only runs if it is the first day of the month and the system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is turned on.",
|
|
"action": "The automation performs a comprehensive monthly maintenance routine for the tag-based notification system. It starts by logging the maintenance start. It then resets several daily counters that track notifications and alerts. A logbook entry is created to record the maintenance completion. It gathers current system performance data, including efficiency score, health status, and device counts. A detailed persistent notification is created, serving as a full report on system status, completed tasks, performance evaluation, and recommendations for the next month. Finally, a summary notification is sent to a mobile device."
|
|
},
|
|
"human_like": "Runs a monthly health check and reset for the notification system on the first day of the month, generating a detailed report and sending a summary alert.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "quarterly_notification_system_review",
|
|
"result": {
|
|
"structured": "TRIGGER: When the event device_health_schedule_trigger occurs with event_data task_type equal to quarterly_review. CONDITIONS: (The current month is January, April, July, or October AND the current day is the 1st) AND (system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is on). ACTIONS: Set variables for quarter, year, system_health, efficiency_score, deployment_status, critical_devices, and total_devices. Create a persistent notification with a detailed quarterly system review report. Send a notification to mobile_app_pixel_9_prol_xl with a summary and action buttons.",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled quarterly review event is triggered.",
|
|
"conditions": "If the current date is the first day of January, April, July, or October, and the system monitoring enabled boolean [input_boolean.system_monitoring_enabled] is turned on.",
|
|
"action": "The automation compiles a comprehensive quarterly report on the tag-based notification system's performance. It creates a detailed persistent notification with metrics like system health, efficiency, deployment status, and device counts. It also sends a summary notification to a mobile device with options to schedule a review or dismiss the alert."
|
|
},
|
|
"human_like": "Generates and sends a detailed quarterly performance review for the notification system on the first day of each quarter.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "dryer_started_detection_smartthings_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer status 2 [sensor.dryer_status_2] changes from Idle OR Standby OR Starting to Running. CONDITIONS: dryer running boolean [input_boolean.dryer_running] is off AND dryer machine state [sensor.dryer_machine_state] is not unknown AND is not unavailable. ACTIONS: Turn on dryer running boolean [input_boolean.dryer_running], set dryer last started datetime [input_datetime.dryer_last_started] to the current date and time, set dryer state reason text [input_text.dryer_state_reason] to a string containing the current time and the states of dryer machine state [sensor.dryer_machine_state] and dryer job state sensor [sensor.dryer_job_state], and turn off dryer reminders stopped boolean [input_boolean.dryer_reminders_stopped].",
|
|
"natural_language": {
|
|
"trigger": "When the dryer status 2 [sensor.dryer_status_2] changes from a non-running state (Idle, Standby, or Starting) to Running.",
|
|
"conditions": "If the dryer running boolean [input_boolean.dryer_running] is currently off, and the dryer machine state [sensor.dryer_machine_state] is a known and available value (not 'unknown' or 'unavailable').",
|
|
"action": "Marks the dryer as running by turning on the dryer running boolean [input_boolean.dryer_running], records the start time in the dryer last started datetime [input_datetime.dryer_last_started], logs a descriptive reason including the current time and the dryer's machine and job states in the dryer state reason text [input_text.dryer_state_reason], and ensures reminder notifications are active by turning off the dryer reminders stopped boolean [input_boolean.dryer_reminders_stopped]."
|
|
},
|
|
"human_like": "Detects when the dryer starts a cycle and updates the system to track its running status, start time, and reason, while re-enabling reminders.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "dryer_finished_detection_smartthings_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer status 2 [sensor.dryer_status_2] changes to state 'Complete' AND remains in that state for a duration defined by the value of dryer completion delay minutes number [input_number.dryer_completion_delay_minutes] (default 2 minutes). CONDITIONS: dryer running boolean [input_boolean.dryer_running] is on AND dryer machine state [sensor.dryer_machine_state] is not 'unknown' AND is not 'unavailable'. ACTIONS: Turn off dryer running boolean [input_boolean.dryer_running], set dryer last finished datetime [input_datetime.dryer_last_finished] to the current date and time, set dryer state reason text [input_text.dryer_state_reason] to a string containing the current time and the states of dryer machine state [sensor.dryer_machine_state] and dryer job state sensor [sensor.dryer_job_state], and execute the script dryer notify complete script [script.dryer_notify_complete].",
|
|
"natural_language": {
|
|
"trigger": "When the dryer status 2 [sensor.dryer_status_2] sensor reports the state 'Complete' and stays in that state for a configurable number of minutes (default is 2 minutes).",
|
|
"conditions": "The dryer must be marked as running, meaning the dryer running boolean [input_boolean.dryer_running] is on. Also, the dryer machine state [sensor.dryer_machine_state] sensor must have a valid reading, meaning it is not 'unknown' or 'unavailable'.",
|
|
"action": "It turns off the dryer running boolean [input_boolean.dryer_running] to indicate the cycle has ended, records the current time in the dryer last finished datetime [input_datetime.dryer_last_finished], logs a detailed reason for the state change in dryer state reason text [input_text.dryer_state_reason], and runs a notification script called dryer notify complete script [script.dryer_notify_complete]."
|
|
},
|
|
"human_like": "Detects when the SmartThings-connected dryer finishes its cycle and then logs the completion, updates the system status, and sends a notification.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "dryer_reminder_automation_smartthings_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] remains on for 5 minutes OR When dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] remains on for 15 minutes OR When dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] remains on for 30 minutes. CONDITIONS: dryer reminders stopped boolean [input_boolean.dryer_reminders_stopped] is off AND dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] is on. ACTIONS: Execute dryer send reminder script [script.dryer_send_reminder].",
|
|
"natural_language": {
|
|
"trigger": "When the dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] has been reporting the cycle as complete (on) for either 5, 15, or 30 minutes.",
|
|
"conditions": "The dryer reminders stopped boolean [input_boolean.dryer_reminders_stopped] must be off, and the dryer cycle complete binary sensor [binary_sensor.dryer_cycle_complete] must still be on at the time the trigger fires.",
|
|
"action": "Runs the dryer send reminder script [script.dryer_send_reminder]."
|
|
},
|
|
"human_like": "Sends periodic reminders at 5, 15, and 30 minutes after the dryer cycle completes, as long as reminders are not manually stopped.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "database_hourly_backup_peak",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time matches the pattern: minutes = 0 (i.e., at the start of every hour). CONDITIONS: The current time is between 07:00:00 and 23:00:00 AND the current hour modulo 4 equals 0 (i.e., the hour is divisible by 4). ACTIONS: Execute database backup shell command [shell_command.database_backup].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at the start of every hour (when the minutes are zero).",
|
|
"conditions": "It only runs if the current time is between 7:00 AM and 11:00 PM, and if the current hour is divisible by 4 (e.g., 8:00, 12:00, 16:00, 20:00).",
|
|
"action": "It performs a database backup by executing the database backup shell command [shell_command.database_backup]."
|
|
},
|
|
"human_like": "Creates a database backup every four hours during the day and evening.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "database_backup_retention_management",
|
|
"result": {
|
|
"structured": "TRIGGER: At 04:00:00 daily. CONDITIONS: None. ACTIONS: Execute database retention shell command [shell_command.database_retention].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 4:00 AM.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Runs the database retention shell command [shell_command.database_retention]."
|
|
},
|
|
"human_like": "Manages database backup retention by running a cleanup script every morning at 4 AM.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "error_scenario_test_orchestrator",
|
|
"result": {
|
|
"structured": "TRIGGER: When error scenario testing active boolean [input_boolean.error_scenario_testing_active] turns on. CONDITIONS: None. ACTIONS: If error test results text [input_text.error_test_results] has a value, then set its value to 'Error scenario testing started at [current time in HH:MM:SS format]'. Log an event named 'Error Test' with message 'Starting error scenario testing suite'. Select the 'Notification Failure' option for error test scenario select [input_select.error_test_scenario]. Wait for 2 seconds. Turn on simulate notification failure boolean [input_boolean.simulate_notification_failure].",
|
|
"natural_language": {
|
|
"trigger": "When the error scenario testing active boolean [input_boolean.error_scenario_testing_active] is switched on.",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "First, if the error test results text [input_text.error_test_results] already contains a value, it is updated to show the time the test started. Then, a logbook entry named 'Error Test' is created with the message 'Starting error scenario testing suite'. Next, the error test scenario select [input_select.error_test_scenario] is set to the 'Notification Failure' option. After a two-second delay, the simulate notification failure boolean [input_boolean.simulate_notification_failure] is turned on."
|
|
},
|
|
"human_like": "Starts a coordinated error scenario test by logging the start time, selecting a test scenario, and activating a failure simulation after a short delay.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_notification_failure_scenario",
|
|
"result": {
|
|
"structured": "TRIGGER: When simulate notification failure boolean [input_boolean.simulate_notification_failure] turns on. CONDITIONS: error scenario testing active boolean [input_boolean.error_scenario_testing_active] is on. ACTIONS: Log 'Testing notification failure scenarios' to the logbook. IF error test results text [input_text.error_test_results] has a value, THEN append the mobile notification services status from test notification availability sensor [sensor.test_notification_availability] to its value. Log 'Testing notification error handling' to the logbook. IF error test results text [input_text.error_test_results] has a value, THEN append a notification test pass/fail result based on the existence of notify services to its value. Wait for 10 seconds. Turn off simulate notification failure boolean [input_boolean.simulate_notification_failure]. Log 'Notification failure test completed' to the logbook. Set error test scenario select [input_select.error_test_scenario] to 'Device Offline'. Wait for 2 seconds. Turn on simulate device offline boolean [input_boolean.simulate_device_offline].",
|
|
"natural_language": {
|
|
"trigger": "When the simulate notification failure boolean [input_boolean.simulate_notification_failure] is turned on.",
|
|
"conditions": "The error scenario testing active boolean [input_boolean.error_scenario_testing_active] must be in the 'on' state.",
|
|
"action": "The automation logs an initial message, then conditionally appends the current mobile notification service status to the error test results text [input_text.error_test_results] if it exists. It logs another message, then conditionally appends a pass/fail result for notification service availability. After a 10-second delay, it turns off the trigger boolean, logs a completion message, changes the error test scenario select [input_select.error_test_scenario] to 'Device Offline', waits 2 seconds, and finally turns on the simulate device offline boolean [input_boolean.simulate_device_offline]."
|
|
},
|
|
"human_like": "Runs a test sequence for notification failures when activated, logging results and automatically moving on to the next device offline test scenario.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_device_offline_scenario",
|
|
"result": {
|
|
"structured": "TRIGGER: When simulate device offline boolean [input_boolean.simulate_device_offline] turns on. CONDITIONS: error scenario testing active boolean [input_boolean.error_scenario_testing_active] is on. ACTIONS: 1. Log a message 'Testing device offline scenarios' to the logbook. 2. If error test results text [input_text.error_test_results] has a value, then append the current device connectivity status from test device connectivity status sensor [sensor.test_device_connectivity_status] to its value. 3. If error test results text [input_text.error_test_results] has a value, then append the count of unavailable entities (excluding sensor.test_device_connectivity_status, sensor.error_test_status, and input_text.error_test_results) to its value. 4. Log a message 'Testing automation resilience to device failures' to the logbook. 5. Wait for 10 seconds. 6. Turn off simulate device offline boolean [input_boolean.simulate_device_offline]. 7. Log a message 'Device offline test completed' to the logbook. 8. Set error test scenario select [input_select.error_test_scenario] to 'Sensor Unavailable'. 9. Wait for 2 seconds. 10. Turn on simulate sensor unavailable boolean [input_boolean.simulate_sensor_unavailable].",
|
|
"natural_language": {
|
|
"trigger": "When the simulate device offline boolean [input_boolean.simulate_device_offline] is turned on.",
|
|
"conditions": "The error scenario testing active boolean [input_boolean.error_scenario_testing_active] must be on.",
|
|
"action": "The automation logs the start of the test, then conditionally updates the error test results text [input_text.error_test_results] with the current device connectivity status and a count of unavailable entities. It logs another message, waits 10 seconds, turns off the simulate device offline boolean, logs completion, changes the error test scenario select [input_select.error_test_scenario] to 'Sensor Unavailable', waits 2 seconds, and finally turns on the simulate sensor unavailable boolean [input_boolean.simulate_sensor_unavailable] to start the next test scenario."
|
|
},
|
|
"human_like": "This automation runs a test sequence to simulate a device going offline, logs the results, and then sets up the next test for sensor unavailability.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_sensor_unavailable_scenario",
|
|
"result": {
|
|
"structured": "TRIGGER: When simulate sensor unavailable boolean [input_boolean.simulate_sensor_unavailable] turns on. CONDITIONS: error scenario testing active boolean [input_boolean.error_scenario_testing_active] is on. ACTIONS: Log 'Testing sensor unavailable scenarios' to the logbook. IF error test results text [input_text.error_test_results] has a value, THEN set its value to its current value appended with '| Sensor availability test: PASS if sensors exist else FAIL - No sensors found'. Log 'Testing template sensor error resilience' to the logbook. IF error test results text [input_text.error_test_results] has a value, THEN set its value to its current value appended with '| Problem sensors: count of sensors with state unknown or unavailable'. Wait for 10 seconds. Turn off simulate sensor unavailable boolean [input_boolean.simulate_sensor_unavailable]. Log 'Sensor unavailable test completed' to the logbook. Set error test scenario select [input_select.error_test_scenario] to 'None'. IF error test results text [input_text.error_test_results] has a value, THEN set its value to its current value appended with '| Error scenario testing completed at [current time]'. Turn off error scenario testing active boolean [input_boolean.error_scenario_testing_active]. Log 'All error scenario tests completed' to the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the simulate sensor unavailable boolean [input_boolean.simulate_sensor_unavailable] is turned on.",
|
|
"conditions": "The error scenario testing active boolean [input_boolean.error_scenario_testing_active] must be in the 'on' state.",
|
|
"action": "First, a log entry is created. Then, if the error test results text [input_text.error_test_results] has a value, it is updated to append a line about sensor availability. Another log entry is made. If the results text has a value, it is updated again to append a count of problematic sensors. After a 10-second delay, the simulate sensor unavailable boolean is turned off, and a completion log is made. The error test scenario select [input_select.error_test_scenario] is set to 'None'. If the results text has a value, it is updated with a final completion timestamp. Finally, the error scenario testing active boolean is turned off, and a final log entry is created."
|
|
},
|
|
"human_like": "Runs a test to check how the system handles unavailable sensors, logs the process, and updates a results log.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "continuous_error_monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 30 minutes (time pattern on minutes divisible by 30). CONDITIONS: error scenario testing active boolean [input_boolean.error_scenario_testing_active] is off. ACTIONS: Execute check error log health shell command [shell_command.check_error_log_health] (continuing on error) AND log an entry to the logbook with name 'Error Monitor' and a message containing counts of entities (excluding sensor.test_device_connectivity_status and sensor.error_test_status) that are in state 'unavailable' or 'unknown'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every 30 minutes, on the hour and half-hour.",
|
|
"conditions": "It only runs if the error scenario testing active boolean [input_boolean.error_scenario_testing_active] is turned off.",
|
|
"action": "It first runs the check error log health shell command [shell_command.check_error_log_health], and even if that command fails, the automation continues. Then, it creates a logbook entry titled 'Error Monitor' that reports how many entities (excluding the test device connectivity status sensor [sensor.test_device_connectivity_status] and the sensor.error_test_status) are currently 'unavailable' or in an 'unknown' state."
|
|
},
|
|
"human_like": "Checks for system errors and logs the health of entities every 30 minutes, but only when error testing is not active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_error_recovery_validation",
|
|
"result": {
|
|
"structured": "TRIGGER: When all devices group [group.all_devices] changes from unavailable to on OR When all devices group [group.all_devices] changes from unknown to on. CONDITIONS: None. ACTIONS: Log an entry with name 'Error Recovery' and message 'Device recovery detected: [triggered entity]', wait for 30 seconds, then log another entry with name 'Error Recovery' and message 'Recovery validation completed for [triggered entity]'.",
|
|
"natural_language": {
|
|
"trigger": "When the all devices group [group.all_devices] transitions from being unavailable to on, or from being unknown to on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, it logs a message to the logbook noting that a device recovery was detected, including the specific entity that triggered it. Then, after a 30-second delay, it logs a second message confirming that the recovery validation process has been completed for that entity."
|
|
},
|
|
"human_like": "Logs a recovery event when the system detects that a group of devices has come back online from an error state.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_auto_relock",
|
|
"result": {
|
|
"structured": "TRIGGER: When lock front door [lock.front_door] changes from locked to unlocked. CONDITIONS: front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] is on. ACTIONS: Wait for a delay equal to the value of front door auto relock delay number [input_number.front_door_auto_relock_delay] seconds. Then, if lock front door [lock.front_door] is still unlocked AND front door sensor window door is open binary sensor [binary_sensor.front_door_sensor_window_door_is_open] is closed (off), perform the following: Lock lock front door [lock.front_door], send a notification to mobile_app_pixel_9_pro_xl with a title and message, and write a system log entry.",
|
|
"natural_language": {
|
|
"trigger": "When the lock front door [lock.front_door] is unlocked from a locked state.",
|
|
"conditions": "The automation is only active if the front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] is turned on.",
|
|
"action": "After a configurable delay (taken from front door auto relock delay number [input_number.front_door_auto_relock_delay]), the automation checks if the door is still unlocked and if the front door sensor window door is open binary sensor [binary_sensor.front_door_sensor_window_door_is_open] reports the door is closed. If both checks pass, it locks the door, sends a notification to a mobile device confirming the auto-lock, and logs the event to the system log."
|
|
},
|
|
"human_like": "Automatically re-locks the front door after a short delay if it's left unlocked and closed, and sends a notification.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_unlocked_alarm",
|
|
"result": {
|
|
"structured": "TRIGGER: When lock front door [lock.front_door] changes from locked to unlocked AND remains unlocked for a duration defined by front door alarm delay number [input_number.front_door_alarm_delay] minutes. CONDITIONS: front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] is on. ACTIONS: Send a high-priority security alert notification to mobile_app_pixel_9_pro_xl. Send a high-priority security alert notification with critical sound to mobile_app_iphone. Announce a security alert via Alexa on kitchen echo show media player [media_player.kitchen_echo_show], living room echo media player [media_player.living_room_echo], and master bedroom echo media player [media_player.master_bedroom_echo]. Create a persistent notification with details including the relative time unlocked and the status of front door sensor window door is open binary sensor [binary_sensor.front_door_sensor_window_door_is_open]. Log a warning message to the system log. THEN, WHILE lock front door [lock.front_door] remains unlocked, repeat the following sequence every 2 minutes: Send a repeat high-priority alert to mobile_app_pixel_9_pro_xl and announce a warning via Alexa on kitchen echo show media player [media_player.kitchen_echo_show].",
|
|
"natural_language": {
|
|
"trigger": "When the lock front door [lock.front_door] unlocks and stays unlocked for a number of minutes specified by the front door alarm delay number [input_number.front_door_alarm_delay].",
|
|
"conditions": "The automation only runs if the front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] is turned on.",
|
|
"action": "Sends multiple security alerts: a high-priority notification to a Pixel phone and an iPhone, an Alexa announcement to several Echo devices, and creates a persistent notification in Home Assistant showing how long the door has been unlocked and the door's open/closed status. It also logs a warning. If the door stays unlocked, it will repeat sending alerts to the Pixel phone and an announcement to the kitchen Echo every two minutes until the door is locked again."
|
|
},
|
|
"human_like": "Sends escalating security alerts if the front door is left unlocked for too long, notifying phones, smart speakers, and creating a log entry.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_mobile_action_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action LOCK_DOOR. CONDITIONS: None. ACTIONS: Lock lock front door [lock.front_door] AND send a notification to mobile_app_pixel_9_pro_xl with title '✅ Door Locked' and message 'Front door has been locked remotely'.",
|
|
"natural_language": {
|
|
"trigger": "When a user taps the 'LOCK_DOOR' action button in a mobile app notification.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Locks the front door [lock.front_door] and sends a confirmation notification to a specific mobile device, confirming the door has been locked."
|
|
},
|
|
"human_like": "Locks the front door and sends a confirmation notification when the lock action is triggered from a mobile app.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_update_unlock_counter",
|
|
"result": {
|
|
"structured": "TRIGGER: When lock front door [lock.front_door] changes from locked to unlocked. CONDITIONS: front door activity logging boolean [input_boolean.front_door_activity_logging] is on. ACTIONS: Increment front door unlock count today number [input_number.front_door_unlock_count_today] AND set front door last unlocked datetime [input_datetime.front_door_last_unlocked] to current date and time.",
|
|
"natural_language": {
|
|
"trigger": "When the lock front door [lock.front_door] is unlocked from a locked state.",
|
|
"conditions": "If the front door activity logging boolean [input_boolean.front_door_activity_logging] is turned on.",
|
|
"action": "Increases the front door unlock count today number [input_number.front_door_unlock_count_today] by one and updates the front door last unlocked datetime [input_datetime.front_door_last_unlocked] to the current date and time."
|
|
},
|
|
"human_like": "Logs each time the front door is unlocked by incrementing a counter and recording the timestamp, provided logging is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_update_autolock_counter",
|
|
"result": {
|
|
"structured": "TRIGGER: When lock front door [lock.front_door] changes from unlocked to locked AND remains locked for 1 second. CONDITIONS: (front door activity logging boolean [input_boolean.front_door_activity_logging] is on) AND (front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] is on) AND (front door last unlocked datetime [input_datetime.front_door_last_unlocked] is not unknown/unavailable AND the time elapsed since its value is less than or equal to 120 seconds). ACTIONS: Increment front door auto lock count today number [input_number.front_door_auto_lock_count_today] AND set front door last locked datetime [input_datetime.front_door_last_locked] to the current date and time.",
|
|
"natural_language": {
|
|
"trigger": "When the front door lock [lock.front_door] is locked and stays locked for at least one second after being unlocked.",
|
|
"conditions": "If the front door activity logging boolean [input_boolean.front_door_activity_logging] is turned on, the front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] is also on, and the door was unlocked less than or equal to two minutes ago, as recorded by the front door last unlocked datetime [input_datetime.front_door_last_unlocked].",
|
|
"action": "Increments the counter for today's automatic locks on the front door auto lock count today number [input_number.front_door_auto_lock_count_today] and updates the timestamp for the last time the door was locked on the front door last locked datetime [input_datetime.front_door_last_locked]."
|
|
},
|
|
"human_like": "Counts and logs an automatic lock event for the front door when it locks shortly after being unlocked, provided auto-relock and logging are enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_update_alarm_counter",
|
|
"result": {
|
|
"structured": "TRIGGER: When lock front door [lock.front_door] changes from locked to unlocked AND remains unlocked for a duration equal to the value (in minutes) of front door alarm delay number [input_number.front_door_alarm_delay]. CONDITIONS: front door activity logging boolean [input_boolean.front_door_activity_logging] is on AND front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] is on. ACTIONS: Increment the value of front door alarm count today number [input_number.front_door_alarm_count_today].",
|
|
"natural_language": {
|
|
"trigger": "When the lock front door [lock.front_door] becomes unlocked and stays unlocked for a specific number of minutes, which is determined by the value set in the front door alarm delay number [input_number.front_door_alarm_delay].",
|
|
"conditions": "Both the front door activity logging boolean [input_boolean.front_door_activity_logging] and the front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] must be switched on.",
|
|
"action": "Increases the count stored in the front door alarm count today number [input_number.front_door_alarm_count_today] by one."
|
|
},
|
|
"human_like": "Counts how many times the front door is left unlocked for too long, when the alarm system is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_reset_daily_counters",
|
|
"result": {
|
|
"structured": "TRIGGER: At 00:00:00 (midnight). CONDITIONS: None. ACTIONS: Set the value of front door unlock count today number [input_number.front_door_unlock_count_today], front door auto lock count today number [input_number.front_door_auto_lock_count_today], and front door alarm count today number [input_number.front_door_alarm_count_today] to 0.",
|
|
"natural_language": {
|
|
"trigger": "Every day at midnight.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Resets the daily counters for front door unlocks, auto-locks, and alarms to zero."
|
|
},
|
|
"human_like": "Resets the daily front door usage counters at midnight.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "front_door_security_mode_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When front door security mode select [input_select.front_door_security_mode] changes state. CONDITIONS: None. ACTIONS: If front door security mode select [input_select.front_door_security_mode] is Full Security, then turn on front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled], front door alarm enabled boolean [input_boolean.front_door_alarm_enabled], and front door notifications enabled boolean [input_boolean.front_door_notifications_enabled]. If front door security mode select [input_select.front_door_security_mode] is Auto-Lock Only, then turn on front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] AND turn off front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] and front door notifications enabled boolean [input_boolean.front_door_notifications_enabled]. If front door security mode select [input_select.front_door_security_mode] is Notifications Only, then turn off front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled] and front door alarm enabled boolean [input_boolean.front_door_alarm_enabled] AND turn on front door notifications enabled boolean [input_boolean.front_door_notifications_enabled]. If front door security mode select [input_select.front_door_security_mode] is Disabled, then turn off front door auto relock enabled boolean [input_boolean.front_door_auto_relock_enabled], front door alarm enabled boolean [input_boolean.front_door_alarm_enabled], and front door notifications enabled boolean [input_boolean.front_door_notifications_enabled].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the front door security mode select [input_select.front_door_security_mode] changes to a new state.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Depending on the new security mode, different sets of features are enabled or disabled. If the mode is set to 'Full Security', all three features (auto-relock, alarm, and notifications) are turned on. If the mode is 'Auto-Lock Only', only the auto-relock feature is turned on, while the alarm and notifications are turned off. If the mode is 'Notifications Only', only the notifications feature is turned on, and both auto-relock and alarm are turned off. Finally, if the mode is set to 'Disabled', all three features are turned off."
|
|
},
|
|
"human_like": "This automation manages the front door's security features by automatically enabling or disabling auto-relock, alarm, and notification settings based on the selected security mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_storage_full_notification",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 storage full binary sensor [binary_sensor.globe_g1_storage_full] becomes on and remains on for 2 minutes. CONDITIONS: globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is on AND globe g1 notification allowed binary sensor [binary_sensor.globe_g1_notification_allowed] is on AND NOT (night mode active binary sensor [binary_sensor.night_mode_active] is on). ACTIONS: Send an announcement via notify.alexa_media to everywhere media player [media_player.everywhere] with a storage full message. Send a high-priority mobile notification to mobile_app_pixel_9_prol_xl with title and message. Send a high-priority mobile notification to mobile_app_iphone with title, message, and an action button. Create a persistent notification with ID globe_g1_storage_full. Set the datetime of globe g1 last notification datetime [input_datetime.globe_g1_last_notification] to the current time. Log an entry in the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 storage full binary sensor [binary_sensor.globe_g1_storage_full] detects that the storage is full and remains in that state for two minutes.",
|
|
"conditions": "The automation will only proceed if notifications for the Globe G1 are enabled via the globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled], if notifications are currently allowed as indicated by the globe g1 notification allowed binary sensor [binary_sensor.globe_g1_notification_allowed], and if night mode is not active, meaning the night mode active binary sensor [binary_sensor.night_mode_active] is off.",
|
|
"action": "The system will send multiple alerts: an Alexa announcement to the everywhere media player [media_player.everywhere], high-priority push notifications to two mobile devices (one with an action button to mark the task as done), create a persistent notification in the Home Assistant interface, update the timestamp for the last notification in the globe g1 last notification datetime [input_datetime.globe_g1_last_notification], and record the event in the logbook."
|
|
},
|
|
"human_like": "Sends urgent multi-platform alerts when the Globe G1 litter box waste drawer has been full for two minutes, provided notifications are enabled and it's not nighttime.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_litter_low_notification",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 litter low binary sensor [binary_sensor.globe_g1_litter_low] becomes on and remains on for 5 minutes. CONDITIONS: (globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is on) AND (globe g1 notification allowed binary sensor [binary_sensor.globe_g1_notification_allowed] is on) AND (NOT (night mode active binary sensor [binary_sensor.night_mode_active] is on)). ACTIONS: Send an announcement via Alexa to everywhere media player [media_player.everywhere] with a message about low litter. Send a mobile notification to pixel_9_pro_xl with title and message. Send a mobile notification to iphone with title, message, and an action button. Set the globe g1 last notification datetime [input_datetime.globe_g1_last_notification] to the current time. Log an entry in the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 litter low binary sensor [binary_sensor.globe_g1_litter_low] reports that the litter level is low and stays in that state for at least five minutes.",
|
|
"conditions": "The automation only runs if the globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is turned on, the globe g1 notification allowed binary sensor [binary_sensor.globe_g1_notification_allowed] is on, and the night mode active binary sensor [binary_sensor.night_mode_active] is not active.",
|
|
"action": "It sends an Alexa announcement to the everywhere media player [media_player.everywhere] and mobile notifications to two phones. It also updates the timestamp for the last notification and creates a logbook entry."
|
|
},
|
|
"human_like": "Sends alerts via Alexa and mobile phones when the Globe G1 litter box is low on litter for five minutes, provided notifications are enabled and it's not night time.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_error_state_notification",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] changes to state 'Error'. CONDITIONS: globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is on. ACTIONS: Send a critical announcement via Alexa to everywhere media player [media_player.everywhere]. Send a high-priority mobile notification to mobile_app_pixel_9_pro_xl. Send a high-priority mobile notification to mobile_app_iphone. Create a persistent notification with ID 'globe_g1_error_state'. Set the datetime of globe g1 last notification datetime [input_datetime.globe_g1_last_notification] to the current time. Log an entry in the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the Globe G1 litter box's status sensor [sensor.globe_g1_status_derived] changes to 'Error'.",
|
|
"conditions": "Only if the notification toggle for the Globe G1 [input_boolean.globe_g1_notifications_enabled] is switched on.",
|
|
"action": "Sends a critical voice announcement to all Alexa devices in the 'everywhere' group [media_player.everywhere], sends high-priority push notifications to two mobile phones (Pixel 9 Pro XL and an iPhone), creates a persistent notification within Home Assistant, records the current time as the last notification timestamp [input_datetime.globe_g1_last_notification], and logs the event in the Home Assistant logbook."
|
|
},
|
|
"human_like": "Immediately alerts you via voice, phone, and on-screen notifications when the Globe G1 litter box reports an error, provided notifications are enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_track_cat_visits",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] changes to state 'Cat Inside'. CONDITIONS: None. ACTIONS: Increment globe g1 visits today number [input_number.globe_g1_visits_today] AND log an entry to logbook with name 'Globe G1 Usage' and message 'Cat visit detected - daily counter incremented'.",
|
|
"natural_language": {
|
|
"trigger": "When the sensor that tracks the status of the Globe G1 device [sensor.globe_g1_status_derived] reports that a cat is inside.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Increments the daily visit counter for the Globe G1 [input_number.globe_g1_visits_today] and creates a logbook entry titled 'Globe G1 Usage' with the message 'Cat visit detected - daily counter incremented'."
|
|
},
|
|
"human_like": "Tracks when a cat uses the Globe G1 device by incrementing a daily counter and logging the event.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_track_cleaning_cycles",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] changes to 'Processing Waste'. CONDITIONS: None. ACTIONS: Increment globe g1 cycles today number [input_number.globe_g1_cycles_today] AND log an entry to the logbook with name 'Globe G1 Usage' and message 'Cleaning cycle started - daily counter incremented'.",
|
|
"natural_language": {
|
|
"trigger": "When the sensor tracking the Globe G1's status changes to indicate it is 'Processing Waste'.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Increments a daily counter for the Globe G1's cleaning cycles and records a logbook entry noting the start of a cleaning cycle."
|
|
},
|
|
"human_like": "Keeps track of how many cleaning cycles the Globe G1 waste unit has performed each day.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_cleaning_cycle_complete",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] changes from 'Processing Waste' to 'Standby'. CONDITIONS: None. ACTIONS: Log an entry to the logbook with the name 'Globe G1 Operation' and the message 'Cleaning cycle completed successfully'.",
|
|
"natural_language": {
|
|
"trigger": "When the status of the Globe G1 changes from 'Processing Waste' to 'Standby'.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Creates a logbook entry titled 'Globe G1 Operation' with the message 'Cleaning cycle completed successfully'."
|
|
},
|
|
"human_like": "Logs a successful cleaning cycle completion for the Globe G1 device.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_handle_empty_storage",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 empty storage button [button.globe_g1_empty_storage] attribute 'last_triggered' changes. CONDITIONS: None. ACTIONS: Execute script globe g1 mark storage emptied [script.globe_g1_mark_storage_emptied] AND dismiss persistent notification with ID 'globe_g1_storage_full'.",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 empty storage button [button.globe_g1_empty_storage] is pressed, indicated by a change in its 'last_triggered' attribute.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Runs the 'globe g1 mark storage emptied' script [script.globe_g1_mark_storage_emptied] and dismisses any persistent notification with the ID 'globe_g1_storage_full'."
|
|
},
|
|
"human_like": "Handles the press of the 'empty storage' button for the Globe G1 by marking the storage as emptied and clearing a related full-storage notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_handle_refill_litter",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 refill litter button [button.globe_g1_refill_litter] is pressed (state attribute 'last_triggered' changes). CONDITIONS: None. ACTIONS: Execute globe g1 mark litter refilled script [script.globe_g1_mark_litter_refilled].",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 refill litter button [button.globe_g1_refill_litter] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Runs the globe g1 mark litter refilled script [script.globe_g1_mark_litter_refilled]."
|
|
},
|
|
"human_like": "When the litter refill button is pressed, it runs a script to mark the litter as refilled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_daily_reset",
|
|
"result": {
|
|
"structured": "TRIGGER: When the current time matches the time set in globe g1 daily reset datetime [input_datetime.globe_g1_daily_reset]. CONDITIONS: None. ACTIONS: Execute globe g1 daily reset script [script.globe_g1_daily_reset].",
|
|
"natural_language": {
|
|
"trigger": "When the current time of day (hours, minutes, and seconds) exactly matches the time configured in the globe g1 daily reset datetime [input_datetime.globe_g1_daily_reset].",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Runs the predefined script named globe g1 daily reset script [script.globe_g1_daily_reset]."
|
|
},
|
|
"human_like": "Resets daily usage counters automatically at a scheduled time each day.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_mobile_action_empty",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action 'globe_g1_empty'. CONDITIONS: None. ACTIONS: Execute globe g1 mark storage emptied script [script.globe_g1_mark_storage_emptied] AND send a notification to mobile app iphone with title '✅ Globe G1 Updated' and message 'Storage marked as emptied. Thank you!' with tag 'globe_g1_confirm'.",
|
|
"natural_language": {
|
|
"trigger": "When a user taps the 'globe_g1_empty' action button on a notification sent to the mobile app.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "First, it runs the 'globe g1 mark storage emptied' script [script.globe_g1_mark_storage_emptied]. Then, it sends a confirmation notification to the iPhone mobile app with a success message."
|
|
},
|
|
"human_like": "Confirms and logs that a storage container has been emptied when the user taps the corresponding button in a mobile notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_mobile_action_refill",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action 'globe_g1_refill'. CONDITIONS: None. ACTIONS: Execute script globe g1 mark litter refilled script [script.globe_g1_mark_litter_refilled] AND send a notification to mobile app iphone [notify.mobile_app_iphone] with title '✅ Globe G1 Updated' and message 'Litter marked as refilled. Thank you!' with tag 'globe_g1_confirm'.",
|
|
"natural_language": {
|
|
"trigger": "When a user taps the 'globe_g1_refill' action button on a notification sent to their mobile app.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Runs the script 'globe g1 mark litter refilled script' [script.globe_g1_mark_litter_refilled] and then sends a confirmation notification to the iPhone with the title '✅ Globe G1 Updated' and a thank you message."
|
|
},
|
|
"human_like": "Confirms and logs a litter refill for the Globe G1 device when the user taps a button in a mobile notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_connection_lost",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] becomes unavailable AND remains unavailable for 30 minutes. CONDITIONS: globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is on. ACTIONS: Send a notification to mobile_app_pixel_9_pro_xl with title '📶 Globe G1 Offline' and message 'Litter box has been offline for 30+ minutes. Check WiFi connection.', send a notification to mobile_app_iphone with title '📶 Globe G1 Offline - KRISTY' and message 'Litter box has been offline for 30+ minutes. Check WiFi connection.', and log an entry in the logbook with name 'Globe G1 Connection' and message 'Device offline for 30+ minutes - notification sent'.",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 status derived sensor [sensor.globe_g1_status_derived] reports as unavailable and stays that way for at least 30 minutes.",
|
|
"conditions": "The globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] must be turned on.",
|
|
"action": "Sends a notification to a Pixel 9 Pro XL and an iPhone, alerting that the litter box has been offline for over 30 minutes and to check the WiFi connection, and records the event in the logbook."
|
|
},
|
|
"human_like": "Sends an alert if the Globe G1 litter box loses its WiFi connection for more than 30 minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_connection_restored",
|
|
"result": {
|
|
"structured": "TRIGGER: When globe g1 status derived sensor [sensor.globe_g1_status_derived] changes from state 'unavailable'. CONDITIONS: The new state after the trigger is defined AND is not 'unavailable'. ACTIONS: Log an entry in the logbook with name 'Globe G1 Connection' and message 'Device connection restored - status: [new state value or unknown]'.",
|
|
"natural_language": {
|
|
"trigger": "When the globe g1 status derived sensor [sensor.globe_g1_status_derived] changes from being unavailable.",
|
|
"conditions": "If the new state after the change is a valid, defined state and is not 'unavailable'.",
|
|
"action": "Creates a logbook entry named 'Globe G1 Connection' with a message confirming the device connection has been restored, including the new status value if available."
|
|
},
|
|
"human_like": "Logs when the Globe G1 device comes back online after being unavailable.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "globe_g1_maintenance_reminder",
|
|
"result": {
|
|
"structured": "TRIGGER: At 09:00:00 daily. CONDITIONS: (globe g1 next maintenance datetime [input_datetime.globe_g1_next_maintenance] is not 'unknown' AND not 'unavailable' AND its scheduled datetime is less than or equal to the current time) AND (globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] is on). ACTIONS: Send an announcement via notify.alexa_media to everywhere media player [media_player.everywhere] with the message 'Scheduled maintenance is due for the Globe G1 litter box. Please perform routine cleaning and inspection.' AND Send a notification via notify.mobile_app_pixel_9_pro_xl with title '🔧 Globe G1 Maintenance' and message 'Scheduled maintenance is due. Perform routine cleaning.' AND Send a notification via notify.mobile_app_iphone with title '🔧 Globe G1 Maintenance - KRISTY' and message 'Scheduled maintenance is due. Perform routine cleaning.'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 9:00 AM.",
|
|
"conditions": "Two conditions must be met. First, the globe g1 next maintenance datetime [input_datetime.globe_g1_next_maintenance] must have a valid date and time set, and that scheduled date and time must be today or in the past. Second, the globe g1 notifications enabled boolean [input_boolean.globe_g1_notifications_enabled] must be turned on.",
|
|
"action": "If the conditions are satisfied, the automation sends three notifications. It sends an Alexa announcement to the everywhere media player [media_player.everywhere] with a detailed maintenance reminder. It also sends a push notification to a Pixel 9 Pro XL phone and to an iPhone, both with a title and message about the maintenance being due."
|
|
},
|
|
"human_like": "Sends reminders at 9 AM when scheduled maintenance for the Globe G1 litter box is due, provided notifications are enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "system_health_status_reporter",
|
|
"result": {
|
|
"structured": "TRIGGER: At the start of every hour (when minutes equal 0). CONDITIONS: The current time is between 08:00:00 AND 22:00:00. ACTIONS: Log a system health report containing the states of: appliance system status sensor [sensor.appliance_system_status], integration health status sensor [sensor.integration_health_status], integration health percentage sensor [sensor.integration_health_percentage], unavailable entities sensor [sensor.unavailable_entities], pitboss grill status sensor [sensor.pitboss_grill_status], prusa mini printer status sensor [sensor.prusa_mini_printer_status], bluetooth sensor status sensor [sensor.bluetooth_sensor_status], and everywhere media player [media_player.everywhere]. If any state is unavailable, the default value 'Unknown' is used.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at the beginning of every hour.",
|
|
"conditions": "The automation only runs if the current time is between 8:00 AM and 10:00 PM.",
|
|
"action": "The action creates a detailed logbook entry reporting the current status of various system health sensors. It reports the status of the appliance system, integration health, integration health percentage, unavailable entities, the PitBoss grill, the Prusa Mini printer, Bluetooth sensors, and the Alexa media group. If any sensor's state is unavailable, it is reported as 'Unknown'."
|
|
},
|
|
"human_like": "Logs a comprehensive system health report every hour during the day, summarizing the status of appliances, integrations, and key devices.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "health_monitor_critical_integration_health_drop",
|
|
"result": {
|
|
"structured": "TRIGGER: When integration health percentage sensor [sensor.integration_health_percentage] remains below 90% for 5 minutes. CONDITIONS: The current time is between 08:00:00 and 22:00:00. ACTIONS: Send a high-priority notification to mobile_app_pixel_9_pro_xl with title '⚠️ Integration Health Drop' and a message containing the current health percentage and the count of unavailable entities from unavailable entities sensor [sensor.unavailable_entities].",
|
|
"natural_language": {
|
|
"trigger": "When the integration health percentage sensor [sensor.integration_health_percentage] reports a value below 90% for a continuous period of five minutes.",
|
|
"conditions": "The automation only runs if the current time is between 8:00 AM and 10:00 PM.",
|
|
"action": "Sends a high-priority alert to the user's mobile device, notifying them that the system health has dropped and providing the current health percentage and the number of unavailable entities."
|
|
},
|
|
"human_like": "Sends a daytime alert to your phone if the overall system health drops below 90% for five minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "critical_system_failure_alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When system health ok binary sensor [binary_sensor.system_health_ok] remains off for 5 minutes. CONDITIONS: None. ACTIONS: Send a high-priority notification to mobile_app_pixel_9_pro_xl with title '🚨 CRITICAL SYSTEM FAILURE' and a message to check integrations. Also, create a logbook entry named 'CRITICAL FAILURE'.",
|
|
"natural_language": {
|
|
"trigger": "When the system health ok binary sensor [binary_sensor.system_health_ok] reports a failure (off) and remains in that state for at least five minutes.",
|
|
"conditions": "There are no additional conditions for this automation.",
|
|
"action": "Sends a critical alert notification to a mobile device with instructions to check the system integrations and also records the event in the Home Assistant logbook."
|
|
},
|
|
"human_like": "Sends an urgent alert to your phone and logs an event if the overall system health remains in a failed state for five minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "tuya_connection_monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 30 minutes. CONDITIONS: At least one sensor entity exists whose entity_id contains the substring 'tuya'. ACTIONS: Write an info-level log entry containing the count of sensor entities whose entity_id contains 'tuya' and whose state is not 'unavailable'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every 30 minutes.",
|
|
"conditions": "The automation only runs if there is at least one sensor device whose name contains the word 'tuya'.",
|
|
"action": "It writes a message to the system log, recording how many of those Tuya sensor devices are currently online (i.e., not in an 'unavailable' state)."
|
|
},
|
|
"human_like": "Checks the connectivity of Tuya devices every half hour and logs how many are online.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_schedule_controller",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 04:00:00 (morning_fertigation) OR when the time is 20:00:00 (evening_fertigation). CONDITIONS: None. ACTIONS: Turn on waste pump enabled boolean [input_boolean.waste_pump_enabled] AND turn on hydroponics active period boolean [input_boolean.hydroponics_active_period] AND fire the 'hydroponics_fertigation' event with event_data type set to 'morning_fertigation' if the trigger was the morning time, otherwise 'evening_fertigation'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at two specific times of day: 4:00 AM and 8:00 PM.",
|
|
"conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon the scheduled time.",
|
|
"action": "It enables the waste pump by turning on waste pump enabled boolean [input_boolean.waste_pump_enabled], activates the hydroponics system period by turning on hydroponics active period boolean [input_boolean.hydroponics_active_period], and signals a fertigation event, specifying whether it is a morning or evening cycle."
|
|
},
|
|
"human_like": "Activates the hydroponics fertigation system twice a day, at 4 AM and 8 PM, to manage plant feeding.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_hydroponics_management",
|
|
"result": {
|
|
"structured": "TRIGGER: When a hydroponics_fertigation event occurs OR When waste pump enabled boolean [input_boolean.waste_pump_enabled] turns on OR When waste pump enabled boolean [input_boolean.waste_pump_enabled] turns off OR When wroommicrousb reservoir current volume sensor [sensor.wroommicrousb_reservoir_current_volume] remains below 5 for 5 minutes OR When wroommicrousb reservoir water temp sensor [sensor.wroommicrousb_reservoir_water_temp] remains above 30 for 2 minutes OR When wroommicrousb reservoir water temp sensor [sensor.wroommicrousb_reservoir_water_temp] remains below 5 for 2 minutes. CONDITIONS: (feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump] is not unavailable, unknown, or empty) OR (The trigger is low_water OR high_temp OR low_temp). ACTIONS: Based on the trigger, perform one of the following: If triggered by fertigation_event, run environmental run fertigation cycle script [script.environmental_run_fertigation_cycle] with duration from hydroponics feed pump duration number [input_number.hydroponics_feed_pump_duration] and cycle_type from event data, then log a system message. If triggered by waste_pump_on, turn on waste pump smart plug [switch.tp_link_smart_plug_c82e_waste_pump]. If triggered by waste_pump_off, turn off waste pump smart plug [switch.tp_link_smart_plug_c82e_waste_pump] and turn off hydroponics active period boolean [input_boolean.hydroponics_active_period]. If triggered by low_water, run send system notification script [script.send_system_notification] with a low water warning. If triggered by high_temp OR low_temp, run send system notification script [script.send_system_notification] with a temperature warning. If triggered by schedule_trigger (Note: This trigger is not defined in the provided YAML, but is referenced in a condition. The action is: If hydroponics active period boolean [input_boolean.hydroponics_active_period] is on, fire a hydroponics_fertigation_trigger event with a calculated cycle_type and duration).",
|
|
"natural_language": {
|
|
"trigger": "The automation can start in several ways: when a specific 'hydroponics_fertigation' event is received, when the waste pump enabled boolean [input_boolean.waste_pump_enabled] is turned on or off, when the water volume in the reservoir [sensor.wroommicrousb_reservoir_current_volume] stays below 5 liters for five minutes, or when the water temperature [sensor.wroommicrousb_reservoir_water_temp] stays above 30°C or below 5°C for two minutes.",
|
|
"conditions": "For the automation to proceed, either the feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump] must be in a known state (not unavailable, unknown, or empty), or the trigger must be one of the low water, high temperature, or low temperature alerts.",
|
|
"action": "Depending on what caused the automation to run, different actions are taken. For a fertigation event, it runs a fertigation cycle script and logs the completion. If the waste pump is enabled, it turns on the waste pump. If the waste pump is disabled, it turns off the waste pump and also marks the active period as over. For a low water alert, it sends a system notification. For a high or low temperature alert, it sends a temperature warning notification. There is also a conditional action for a schedule trigger (though not explicitly defined in the triggers) which, if the active period is on, calculates and fires a new fertigation event."
|
|
},
|
|
"human_like": "Manages a hydroponics system by running watering cycles, controlling pumps, and sending alerts for low water or unsafe temperatures based on various triggers.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_fertigation_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type 'hydroponics_fertigation_trigger' occurs. CONDITIONS: None. ACTIONS: Log the start of the fertigation cycle, including water volume and temperature sensor status. IF (wroommicrousb reservoir current volume sensor [sensor.wroommicrousb_reservoir_current_volume] is available AND current volume is less than 10 liters) THEN send a mobile notification about low water level. IF (wroommicrousb reservoir current volume sensor [sensor.wroommicrousb_reservoir_current_volume] is NOT available OR wroommicrousb reservoir water temp sensor [sensor.wroommicrousb_reservoir_water_temp] is NOT available) THEN create a persistent notification about sensor issues. THEN run the environmental run fertigation cycle script [script.environmental_run_fertigation_cycle] with the event's duration and cycle_type data. THEN increment the environmental optimized triggers counter [counter.environmental_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "When a 'hydroponics_fertigation_trigger' event is received, signaling the start of a fertigation cycle.",
|
|
"conditions": "There are no specific conditions that must be met for the automation to run; it executes immediately upon the trigger event.",
|
|
"action": "The automation first logs the start of the cycle, noting the current water volume and temperature if the sensors are available. If the water volume sensor is working and reports a level below 10 liters, it sends a warning notification to a mobile device. If either the water volume or temperature sensor is unavailable, it creates a persistent notification to alert the user of the sensor problem. It then runs the main fertigation cycle script using the duration and cycle type provided by the trigger event. Finally, it increments a counter that tracks how many times this optimized fertigation process has been triggered."
|
|
},
|
|
"human_like": "Manages automated plant feeding cycles by starting the fertigation process, checking water levels and sensor health, and logging the activity.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_safety_alerts",
|
|
"result": {
|
|
"structured": "TRIGGER: When wroommicrousb reservoir current volume sensor [sensor.wroommicrousb_reservoir_current_volume] remains below 5.0 for 1 minute OR When wroommicrousb reservoir water temp sensor [sensor.wroommicrousb_reservoir_water_temp] remains above 30 for 2 minutes OR When wroommicrousb reservoir water temp sensor [sensor.wroommicrousb_reservoir_water_temp] remains below 5 for 2 minutes. CONDITIONS: None. ACTIONS: Choose action based on trigger: If triggered by low_water, then send a high-priority mobile notification 'Hydroponics Low Water Alert', turn off feed pump smart plug [switch.tp_link_smart_plug_c82e_feed_pump], and create a persistent notification. If triggered by high_temp, then send a high-priority mobile notification 'Hydroponics High Temp Alert'. If triggered by low_temp, then send a high-priority mobile notification 'Hydroponics Low Temp Alert'.",
|
|
"natural_language": {
|
|
"trigger": "The automation activates when the water level in the reservoir remains critically low for one minute, or when the water temperature remains too high or too low for two minutes.",
|
|
"conditions": "There are no additional conditions; the automation runs whenever any of the triggers occur.",
|
|
"action": "Depending on which trigger fired: For a low water level, it sends a high-priority alert to a mobile device, turns off the feed pump for safety, and creates a persistent system notification. For a high water temperature, it sends a high-priority mobile alert. For a low water temperature, it sends a similar high-priority mobile alert."
|
|
},
|
|
"human_like": "Sends safety alerts and takes protective actions when the hydroponic reservoir water level is too low or the water temperature is outside a safe range.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_grow_light_scheduler",
|
|
"result": {
|
|
"structured": "TRIGGER: At 06:00:00 daily. CONDITIONS: environmental systems enabled boolean [input_boolean.environmental_systems_enabled] is on. ACTIONS: Fire event 'environmental_grow_lights_control' with data action: 'on', schedule_time: '07:00:00' AND fire event 'environmental_grow_lights_control' with data action: 'off', schedule_time: '19:00:00'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every day at 6:00 AM.",
|
|
"conditions": "It only proceeds if the environmental systems enabled boolean [input_boolean.environmental_systems_enabled] is turned on.",
|
|
"action": "It sends two control events for the grow lights: one to schedule them to turn on at 7:00 AM, and another to schedule them to turn off at 7:00 PM."
|
|
},
|
|
"human_like": "Schedules the grow lights to turn on in the morning and off in the evening, but only if the overall environmental systems are enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "environmental_grow_light_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type environmental_grow_lights_control is received. CONDITIONS: None. ACTIONS: Wait until the current time matches the schedule_time provided in the event data, with a timeout of 1 hour. Then, if the event action is 'on', turn on all switches with label grow_lights and log an informational message. If the event action is 'off', turn off all switches with label grow_lights and log an informational message.",
|
|
"natural_language": {
|
|
"trigger": "When a custom event named environmental_grow_lights_control is fired.",
|
|
"conditions": "There are no explicit conditions.",
|
|
"action": "The automation waits until the system clock reaches the exact time specified in the event data. It will wait for up to one hour. Once the time matches, it checks the action from the event. If the action is 'on', it turns on all grow light switches and logs a message. If the action is 'off', it turns off all grow light switches and logs a message."
|
|
},
|
|
"human_like": "Turns grow lights on or off at a scheduled time received from an event, with a one-hour waiting window to synchronize with the clock.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "integration_test_orchestrator",
|
|
"result": {
|
|
"structured": "TRIGGER: When integration testing active boolean [input_boolean.integration_testing_active] turns on. CONDITIONS: None. ACTIONS: Set integration test results text [input_text.integration_test_results] value to 'Integration testing started at [current time in HH:MM:SS format]' AND Log an entry in the logbook with name 'Integration Test' and message 'Starting cross-domain integration tests' AND Turn on test appliance lighting coordination boolean [input_boolean.test_appliance_lighting_coordination].",
|
|
"natural_language": {
|
|
"trigger": "When the integration testing active boolean [input_boolean.integration_testing_active] is turned on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation first updates the integration test results text [input_text.integration_test_results] with a message that includes the current time. It then creates a logbook entry named 'Integration Test' with the message 'Starting cross-domain integration tests'. Finally, it turns on the test appliance lighting coordination boolean [input_boolean.test_appliance_lighting_coordination]."
|
|
},
|
|
"human_like": "Starts a suite of integration tests, logs the start time, and activates the first test module when testing is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_appliance_lighting_coordination",
|
|
"result": {
|
|
"structured": "TRIGGER: When test appliance lighting coordination boolean [input_boolean.test_appliance_lighting_coordination] turns on. CONDITIONS: integration testing active boolean [input_boolean.integration_testing_active] is on. ACTIONS: Log 'Testing appliance-lighting coordination' to logbook. Log 'Simulating dishwasher completion event' to logbook. Set integration test results text [input_text.integration_test_results] value to its current value appended with '| Pre-test Kitchen lights: ' and the current state of kitchen lights [light.kitchen_lights] (or 'N/A' if state is 'unknown'). Wait 15 seconds. Set integration test results text [input_text.integration_test_results] value to its current value appended with '| Post-event Kitchen lights: ' and the current state of kitchen lights [light.kitchen_lights] (or 'N/A' if state is 'unknown'). Turn off test appliance lighting coordination boolean [input_boolean.test_appliance_lighting_coordination]. Log 'Appliance-lighting coordination test completed' to logbook. Wait 2 seconds. Turn on test environmental notification flow boolean [input_boolean.test_environmental_notification_flow].",
|
|
"natural_language": {
|
|
"trigger": "When the test appliance lighting coordination boolean [input_boolean.test_appliance_lighting_coordination] is turned on.",
|
|
"conditions": "The integration testing active boolean [input_boolean.integration_testing_active] must be on.",
|
|
"action": "The automation logs the start of the test and simulates a dishwasher completion event. It then records the current state of the kitchen lights [light.kitchen_lights] (or 'N/A' if unknown) into the integration test results text [input_text.integration_test_results]. After a 15-second delay, it records the state of the kitchen lights again. It then turns off the test trigger, logs the test completion, waits 2 seconds, and finally activates the next test in the sequence by turning on the test environmental notification flow boolean [input_boolean.test_environmental_notification_flow]."
|
|
},
|
|
"human_like": "This automation runs a test to verify that appliance events correctly trigger lighting responses, logging the results and then starting the next test in the integration suite.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_environmental_notification_flow",
|
|
"result": {
|
|
"structured": "TRIGGER: When test environmental notification flow boolean [input_boolean.test_environmental_notification_flow] turns on. CONDITIONS: integration testing active boolean [input_boolean.integration_testing_active] is on. ACTIONS: Log 'Testing environmental notification flow' to the logbook. Append to integration test results text [input_text.integration_test_results] a count of available notification services. Log 'Simulating environmental alert scenario' to the logbook. Append to integration test results text [input_text.integration_test_results] the availability status of the mobile notification service. Wait for 10 seconds. Turn off test environmental notification flow boolean [input_boolean.test_environmental_notification_flow]. Log 'Environmental notification flow test completed' to the logbook. Append to integration test results text [input_text.integration_test_results] a completion timestamp. Turn off integration testing active boolean [input_boolean.integration_testing_active]. Log 'All integration tests completed successfully' to the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the test environmental notification flow boolean [input_boolean.test_environmental_notification_flow] is turned on.",
|
|
"conditions": "The integration testing active boolean [input_boolean.integration_testing_active] must be on.",
|
|
"action": "Logs a start message, appends the count of available notification services to the integration test results text [input_text.integration_test_results], logs a scenario simulation message, appends the mobile notification service availability to the results, waits for 10 seconds, turns off the test boolean, logs a completion message, appends a timestamp to the results, turns off the integration testing active boolean, and logs a final success message."
|
|
},
|
|
"human_like": "Runs a test sequence to verify environmental notification services are working, logs the results, and cleans up the test state.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_cross_domain_dependencies",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 03:30:00. CONDITIONS: integration testing active boolean [input_boolean.integration_testing_active] is off. ACTIONS: Log an entry with name 'Integration Test' and message 'Running automated dependency validation'. Log an entry with name 'Integration Test' and message 'Cross-domain entity validation simulated - {{ states | length }} total entities validated'. Execute the shell command validate automation conflicts shell command [shell_command.validate_automation_conflicts].",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at 3:30 AM every day.",
|
|
"conditions": "The automation only runs if the integration testing active boolean [input_boolean.integration_testing_active] is turned off.",
|
|
"action": "It logs two messages to the logbook: one stating 'Running automated dependency validation' and another stating 'Cross-domain entity validation simulated' with a count of all entities. Finally, it runs a shell command named validate automation conflicts shell command [shell_command.validate_automation_conflicts]."
|
|
},
|
|
"human_like": "Runs an automated integration test at 3:30 AM to validate cross-domain dependencies and log the results, but only if testing is not already active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "lighting_scheduler",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 00:00:00 (midnight). CONDITIONS: lighting scheduler enabled boolean [input_boolean.lighting_scheduler_enabled] is on. ACTIONS: Fire event 'lighting_schedule_trigger' with data task_type='morning_startup', schedule_time='07:00:00'. Fire event 'lighting_schedule_trigger' with data task_type='evening_lighting', schedule_time='19:00:00'. Fire event 'lighting_schedule_trigger' with data task_type='zwave_night_mode', schedule_time='22:00:00'. Fire event 'lighting_schedule_trigger' with data task_type='night_lighting', schedule_time='23:00:00'. Fire event 'lighting_schedule_trigger' with data task_type='zwave_day_mode', schedule_time='07:00:00'.",
|
|
"natural_language": {
|
|
"trigger": "At midnight (00:00:00).",
|
|
"conditions": "The lighting scheduler enabled boolean [input_boolean.lighting_scheduler_enabled] must be turned on.",
|
|
"action": "It triggers a series of five scheduled lighting events. It fires an event named 'lighting_schedule_trigger' for a morning startup at 7:00 AM, for evening lighting at 7:00 PM, for Z-Wave night mode at 10:00 PM, for night lighting at 11:00 PM, and for Z-Wave day mode at 7:00 AM."
|
|
},
|
|
"human_like": "At midnight, if the scheduler is enabled, it sets up the day's lighting schedule by triggering events for morning, evening, and night routines.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "lighting_manual_override_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When the brightness attribute changes for any of the following lights: kitchen led strips [light.kitchen_led_strips], rgbcw lightbulb 1 [light.rgbcw_lightbulb1], rgbcw lightbulb 2 [light.rgbcw_lightbulb2], rgbcw lightbulb 3 [light.rgbcw_lightbulb3], rgbcw lightbulb 4 [light.rgbcw_lightbulb4], rgbcw lightbulb 5 [light.rgbcw_lightbulb5], rgbcw lightbulb 6 [light.rgbcw_lightbulb6], rgbcw lightbulb 7 [light.rgbcw_lightbulb7], rgbcw lightbulb 8 [light.rgbcw_lightbulb8], rgbcw lightbulb 9 [light.rgbcw_lightbulb9], rgbcw lightbulb 10 [light.rgbcw_lightbulb10], rgbcw lightbulb 11 [light.rgbcw_lightbulb11] OR when the color_temp attribute changes for any of the same lights. CONDITIONS: The state change was initiated by a user (trigger.to_state.context.user_id is not none) OR the state change was initiated by a parent context (trigger.to_state.context.parent_id is not none). ACTIONS: Turn on manual lighting override boolean [input_boolean.manual_lighting_override] AND write an informational system log entry with the message 'Manual lighting override detected: {{ trigger.entity_id }}'.",
|
|
"natural_language": {
|
|
"trigger": "This automation is triggered when the brightness or color temperature of any of the listed lights changes. The lights include the kitchen led strips and the eleven rgbcw lightbulbs in the living room.",
|
|
"conditions": "The automation only proceeds if the change was made by a user, indicated by the presence of a user ID in the state change context, or if the change originated from a parent context.",
|
|
"action": "When triggered, the automation turns on the manual lighting override boolean to indicate a manual override is active and logs an informational message to the system log identifying which light triggered the override."
|
|
},
|
|
"human_like": "Detects when a user manually adjusts the brightness or color of specific lights and sets a system-wide manual override flag.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "scheduled_lights_control",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event lighting_schedule_trigger with task_type morning_startup occurs OR When an event lighting_schedule_trigger with task_type evening_lighting occurs OR When an event lighting_schedule_trigger with task_type night_lighting occurs OR When the sun sets OR When the sun rises with an offset of +15 minutes OR When the current time matches the time set in grow lights winter on time datetime [input_datetime.grow_lights_winter_on_time] OR When the current time matches the time set in grow lights winter off time datetime [input_datetime.grow_lights_winter_off_time]. CONDITIONS: Sun [sun.sun] is not unavailable, unknown, or empty. ACTIONS: Based on the trigger, execute one of the following sequences: 1. If triggered by morning_startup event: Turn on lights with label morning_lights_2 at 80% brightness, run led strips rf power on script [script.led_strips_rf_power_on], and create a persistent notification 'Good Morning'. 2. If triggered by evening_lighting event: Do nothing (empty sequence). 3. If triggered by night_lighting event: Turn off lights with label night_lights_2, run led strips rf power off script [script.led_strips_rf_power_off], and create a persistent notification 'Good Night'. 4. If triggered by sunset: Turn on porch light [light.porch_light] at 80% brightness, turn on hall light [light.hall_light] at 70% brightness, turn on walkway smart plug [switch.tp_link_smart_plug_5e5b_walkway], and if grow lights winter override boolean [input_boolean.grow_lights_winter_override] is off, turn off switches with label grow_lights. 5. If triggered by sunrise (with offset): Turn off porch light [light.porch_light], turn off hall light [light.hall_light], turn off walkway smart plug [switch.tp_link_smart_plug_5e5b_walkway], and if grow lights winter override boolean [input_boolean.grow_lights_winter_override] is off, turn on switches with label grow_lights. 6. If triggered by winter_on time AND grow lights winter override boolean [input_boolean.grow_lights_winter_override] is on: Turn on switches with label grow_lights and create a persistent notification 'Winter Grow Lights'. 7. If triggered by winter_off time AND grow lights winter override boolean [input_boolean.grow_lights_winter_override] is on: Turn off switches with label grow_lights and create a persistent notification 'Winter Grow Lights'. After the chosen sequence, always write a system log entry and, if the trigger was morning, evening, or night, increment lighting optimized triggers counter [counter.lighting_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "The automation can be triggered by several events: a custom lighting schedule event for morning startup, evening lighting, or night lighting; the sunset or sunrise (with a 15-minute offset for sunrise); or when the current time exactly matches a configured winter schedule time for turning grow lights on or off.",
|
|
"conditions": "The automation only runs if the Sun [sun.sun] entity is available and has a known state, ensuring it doesn't act on invalid sun data.",
|
|
"action": "Depending on which trigger fired, different sets of actions are performed. For a morning event, specific lights are turned on at 80% brightness, the kitchen LED strips are powered on via a script, and a 'Good Morning' notification is created. An evening event trigger does nothing. A night event turns off specific lights, powers off the LED strips, and creates a 'Good Night' notification. At sunset, the porch and hall lights are turned on at specific brightness levels, the walkway smart plug is turned on, and if the winter override is off, the grow lights are turned off. At sunrise (with offset), the porch and hall lights and walkway plug are turned off, and if the winter override is off, the grow lights are turned on. If the winter schedule time for turning lights on is reached and the winter override is active, the grow lights are turned on and a notification is sent. Similarly, if the winter schedule time for turning lights off is reached and the override is active, the grow lights are turned off and a notification is sent. Regardless of the trigger path, a log entry is always written, and if the trigger was one of the schedule events (morning, evening, or night), a counter tracking optimized lighting triggers is incremented."
|
|
},
|
|
"human_like": "This automation manages indoor and outdoor lighting on a daily schedule, responding to sunrise, sunset, and custom timed events to turn lights on and off, while also controlling grow lights on a separate winter schedule.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_power_on",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips power on button [input_button.led_strips_power_on] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf power on script [script.led_strips_rf_power_on].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the led strips power on button [input_button.led_strips_power_on] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be available and turned on.",
|
|
"action": "Runs the led strips rf power on script [script.led_strips_rf_power_on] to activate the LED strips via the RF remote."
|
|
},
|
|
"human_like": "Turns on the LED strips using the RF remote when the virtual power button is pressed, provided the remote is ready.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_power_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips power off button [input_button.led_strips_power_off] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf power off script [script.led_strips_rf_power_off].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips power off button [input_button.led_strips_power_off] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be available and in the 'on' state.",
|
|
"action": "Runs the led strips rf power off script [script.led_strips_rf_power_off] to deactivate the LED strips via RF."
|
|
},
|
|
"human_like": "Turns off the LED strips using an RF remote when the designated power off button is pressed, provided the remote is ready.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_brightness_up",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips brightness up button [input_button.led_strips_brightness_up] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf brightness up script [script.led_strips_rf_brightness_up].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips brightness up button [input_button.led_strips_brightness_up] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the script to increase the LED strip brightness via RF, called led strips rf brightness up script [script.led_strips_rf_brightness_up]."
|
|
},
|
|
"human_like": "Increases the brightness of the LED strips when the corresponding button is pressed, provided the RF remote is ready.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_brightness_down",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips brightness down button [input_button.led_strips_brightness_down] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf brightness down script [script.led_strips_rf_brightness_down].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips brightness down button [input_button.led_strips_brightness_down] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the led strips rf brightness down script [script.led_strips_rf_brightness_down] to decrease the brightness of the LED strips via RF signal."
|
|
},
|
|
"human_like": "Lowers the brightness of the LED strips when the dedicated brightness down button is pressed, provided the RF remote is active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_warmer",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips warmer button [input_button.led_strips_warmer] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf warmer script [script.led_strips_rf_warmer].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips warmer button [input_button.led_strips_warmer] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the led strips rf warmer script [script.led_strips_rf_warmer] to make the LED strips a warmer color temperature via the RF remote."
|
|
},
|
|
"human_like": "Pressing the warmer button makes the LED strips emit a warmer light color via the RF remote, provided the remote is on.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_cooler",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips cooler button [input_button.led_strips_cooler] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute script led strips rf cooler script [script.led_strips_rf_cooler].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips cooler button [input_button.led_strips_cooler] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the script named led strips rf cooler script [script.led_strips_rf_cooler] to make the LED strips a cooler color temperature via an RF signal."
|
|
},
|
|
"human_like": "Changes the LED strips to a cooler color temperature when the designated button is pressed, provided the RF remote is on.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_warm_white",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips warm white button [input_button.led_strips_warm_white] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf warm white script [script.led_strips_rf_warm_white].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips warm white button [input_button.led_strips_warm_white] is pressed or changes state.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the script named led strips rf warm white script [script.led_strips_rf_warm_white] to set the LED strips to a warm white color."
|
|
},
|
|
"human_like": "Changes the LED strips to a warm white color when the corresponding button is pressed, provided the remote is active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_neutral_white",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips neutral white button [input_button.led_strips_neutral_white] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf neutral white script [script.led_strips_rf_neutral_white].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips neutral white button [input_button.led_strips_neutral_white] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be turned on and available.",
|
|
"action": "Runs the script 'led strips rf neutral white script' [script.led_strips_rf_neutral_white] to set the LED strips to a neutral white color."
|
|
},
|
|
"human_like": "Changes the LED strips to a neutral white color when the corresponding button is pressed, provided the remote is available.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_button_cool_white",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips cool white button [input_button.led_strips_cool_white] changes state. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf cool white script [script.led_strips_rf_cool_white].",
|
|
"natural_language": {
|
|
"trigger": "When the led strips cool white button [input_button.led_strips_cool_white] is pressed.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be on and available.",
|
|
"action": "Runs the script led strips rf cool white script [script.led_strips_rf_cool_white] to set the LED strips to a cool white color via RF."
|
|
},
|
|
"human_like": "Changes the LED strips to a cool white color when the corresponding button is pressed, provided the remote is ready.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_morning_startup",
|
|
"result": {
|
|
"structured": "TRIGGER: When a lighting_schedule_trigger event occurs with event_data.task_type equal to 'morning_startup'. CONDITIONS: rm4 pro remote [remote.rm4_pro] is on. ACTIONS: Execute led strips rf power on script [script.led_strips_rf_power_on] AND increment lighting optimized triggers counter [counter.lighting_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled lighting event for the morning startup is triggered.",
|
|
"conditions": "The rm4 pro remote [remote.rm4_pro] must be in the 'on' state.",
|
|
"action": "Turns on the LED strips by running the led strips rf power on script [script.led_strips_rf_power_on] and then increments the lighting optimized triggers counter [counter.lighting_optimized_triggers] to track usage."
|
|
},
|
|
"human_like": "Turns on the LED strips every morning at 7 AM using adaptive lighting, provided the main remote is available.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "led_strips_manual_override_detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When led strips brightness level number [input_number.led_strips_brightness_level] changes state OR when led strips color temp number [input_number.led_strips_color_temp] changes state. CONDITIONS: The state change was initiated by a user (trigger.to_state.context.user_id is not none) AND led strips power status boolean [input_boolean.led_strips_power_status] is on. ACTIONS: Turn on manual lighting override boolean [input_boolean.manual_lighting_override] AND log an info message 'LED strips manual override detected'.",
|
|
"natural_language": {
|
|
"trigger": "When the brightness or color temperature of the LED strips changes, as indicated by the led strips brightness level number [input_number.led_strips_brightness_level] or the led strips color temp number [input_number.led_strips_color_temp].",
|
|
"conditions": "The change must have been initiated by a user (not by an automation or system process), and the LED strips must be powered on, as indicated by the led strips power status boolean [input_boolean.led_strips_power_status] being on.",
|
|
"action": "Activates a manual override flag by turning on the manual lighting override boolean [input_boolean.manual_lighting_override] and records an informational log entry stating 'LED strips manual override detected'."
|
|
},
|
|
"human_like": "Detects when someone manually adjusts the LED strips using a remote control and temporarily disables any automated lighting adjustments to respect the user's choice.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "zwave_led_night_mode_on",
|
|
"result": {
|
|
"structured": "TRIGGER: When event lighting_schedule_trigger occurs with event_data task_type equal to zwave_night_mode. CONDITIONS: None. ACTIONS: For each light entity in the list [hobby light [light.hobby_light], gavin light [light.gavin_light], pantry light [light.pantry_light], master light [light.master_light], nook light [light.nook_light], guest light [light.guest_light], porch light [light.porch_light], hall light [light.hall_light], linda light [light.linda_light]], if the corresponding input_boolean.zwave_led_darken_<light_name> is on AND the light entity's state is not 'unavailable' or 'unknown', then call service zwave_js.set_config_parameter on that light entity with parameter 7 and value 0 (continue on error). For each fan entity in the list [hobby fan [fan.hobby_fan], master fan [fan.master_fan], linda fan [fan.linda_fan], guest fan [fan.guest_fan], gavin fan [fan.gavin_fan]], if the corresponding input_boolean.zwave_led_darken_<fan_name> is on AND the fan entity's state is not 'unavailable' or 'unknown', then call service zwave_js.set_config_parameter on that fan entity with parameter 3 and value 0 (continue on error). Finally, increment the lighting optimized triggers counter [counter.lighting_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered by a specific lighting schedule event, 'lighting_schedule_trigger', which carries the data 'zwave_night_mode'.",
|
|
"conditions": "There are no explicit conditions that must be met before the actions run.",
|
|
"action": "The automation performs two main sequences. First, it goes through a list of lights, including hobby light [light.hobby_light], gavin light [light.gavin_light], pantry light [light.pantry_light], master light [light.master_light], nook light [light.nook_light], guest light [light.guest_light], porch light [light.porch_light], hall light [light.hall_light], and linda light [light.linda_light]. For each light, it checks if a corresponding control switch (input_boolean.zwave_led_darken_<light_name>) is turned on and if the light itself is in a valid state (not 'unavailable' or 'unknown'). If both checks pass, it sends a command to dim the light's LED indicator. Second, it repeats a similar process for a list of fans: hobby fan [fan.hobby_fan], master fan [fan.master_fan], linda fan [fan.linda_fan], guest fan [fan.guest_fan], and gavin fan [fan.gavin_fan], checking their control switches and states before dimming their LED indicators. Finally, it increments a counter that tracks how many times this optimization has run."
|
|
},
|
|
"human_like": "Turns off the indicator LEDs on selected Z-Wave lights and fans at night to reduce light pollution, based on individual per-device settings.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "zwave_led_day_mode_on",
|
|
"result": {
|
|
"structured": "TRIGGER: When event lighting_schedule_trigger occurs with event_data.task_type equal to zwave_day_mode. CONDITIONS: None. ACTIONS: Log 'Starting LED restoration for available devices' to logbook. Then, for each light entity in the list [hobby light [light.hobby_light], gavin light [light.gavin_light], pantry light [light.pantry_light], master light [light.master_light], nook light [light.nook_light], guest light [light.guest_light], porch light [light.porch_light], hall light [light.hall_light], linda light [light.linda_light]]: if the entity state is not 'unavailable' AND not 'unknown', then set Z-Wave configuration parameter 7 to value 1 for that entity (continue on error) and log 'Restored LED for [entity]'; otherwise, log 'Skipped unavailable device: [entity]'. Then, for each fan entity in the list [hobby fan [fan.hobby_fan], master fan [fan.master_fan], linda fan [fan.linda_fan], guest fan [fan.guest_fan], gavin fan [fan.gavin_fan]]: if the entity state is not 'unavailable' AND not 'unknown', then set Z-Wave configuration parameter 3 to value 1 for that entity (continue on error) and log 'Restored LED for [entity]'; otherwise, log 'Skipped unavailable device: [entity]'. Finally, increment the lighting optimized triggers counter [counter.lighting_optimized_triggers].",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered by a specific lighting schedule event called 'zwave_day_mode'.",
|
|
"conditions": "There are no conditions to check; the actions run immediately after the trigger.",
|
|
"action": "First, a log entry is created to indicate the start of the LED restoration process. Then, the automation processes a list of lights (hobby light [light.hobby_light], gavin light [light.gavin_light], pantry light [light.pantry_light], master light [light.master_light], nook light [light.nook_light], guest light [light.guest_light], porch light [light.porch_light], hall light [light.hall_light], and linda light [light.linda_light]). For each light that is available (not 'unavailable' or 'unknown'), it restores the Z-Wave LED to normal operation by setting a specific configuration parameter, and logs the action. If a light is unavailable, it logs that the device was skipped. Next, it processes a list of fans (hobby fan [fan.hobby_fan], master fan [fan.master_fan], linda fan [fan.linda_fan], guest fan [fan.guest_fan], and gavin fan [fan.gavin_fan]) in the same way, but with a different configuration parameter. Finally, it increments a counter named lighting optimized triggers counter [counter.lighting_optimized_triggers] to track the execution."
|
|
},
|
|
"human_like": "This automation restores the normal LED indicators on Z-Wave lights and fans at a scheduled time in the morning, skipping any devices that are currently unavailable.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "zwave_led_manual_control",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following input_booleans changes state: zwave led darken hobby light boolean [input_boolean.zwave_led_darken_hobby_light], zwave led darken gavin light boolean [input_boolean.zwave_led_darken_gavin_light], zwave led darken pantry light boolean [input_boolean.zwave_led_darken_pantry_light], zwave led darken master light boolean [input_boolean.zwave_led_darken_master_light], zwave led darken nook light boolean [input_boolean.zwave_led_darken_nook_light], zwave led darken guest light boolean [input_boolean.zwave_led_darken_guest_light], zwave led darken porch light boolean [input_boolean.zwave_led_darken_porch_light], zwave led darken hall light boolean [input_boolean.zwave_led_darken_hall_light], zwave led darken dining light boolean [input_boolean.zwave_led_darken_dining_light], zwave led darken linda light boolean [input_boolean.zwave_led_darken_linda_light], zwave led darken hobby fan boolean [input_boolean.zwave_led_darken_hobby_fan], zwave led darken master fan boolean [input_boolean.zwave_led_darken_master_fan], zwave led darken linda fan boolean [input_boolean.zwave_led_darken_linda_fan], zwave led darken guest fan boolean [input_boolean.zwave_led_darken_guest_fan], zwave led darken gavin fan boolean [input_boolean.zwave_led_darken_gavin_fan]. CONDITIONS: The current time is between 22:00:00 and 07:00:00. ACTIONS: Execute the script zwave led apply setting script [script.zwave_led_apply_setting] with data: input_boolean set to the triggering entity_id and new_state set to the new state of the triggering entity.",
|
|
"natural_language": {
|
|
"trigger": "When any of the 15 listed manual toggle switches for Z-Wave LED dimming (covering lights and fans in various rooms like hobby, gavin, pantry, master bedroom, nook, guest, porch, hall, dining, and linda) changes its state.",
|
|
"conditions": "The automation only runs if the current time is during the night, specifically between 10:00 PM and 7:00 AM.",
|
|
"action": "It immediately calls a script to apply the new LED setting, passing along which specific toggle was changed and its new state."
|
|
},
|
|
"human_like": "Applies manual changes to Z-Wave device LED brightness settings immediately, but only during nighttime hours.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "lighting_zwave_led_preset_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When zwave led night mode preset select [input_select.zwave_led_night_mode_preset] changes state. CONDITIONS: None. ACTIONS: Execute script zwave led apply preset script [script.zwave_led_apply_preset] with data preset set to the new state of the trigger entity.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the selected option in the zwave led night mode preset select [input_select.zwave_led_night_mode_preset] changes.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Runs the zwave led apply preset script [script.zwave_led_apply_preset], passing the newly selected preset value to it."
|
|
},
|
|
"human_like": "Applies a Z-Wave LED lighting preset whenever a different preset is selected from the dropdown menu.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "zwave_led_night_mode_coordination",
|
|
"result": {
|
|
"structured": "TRIGGER: When night mode active binary sensor [binary_sensor.night_mode_active] changes state. CONDITIONS: The state change is a transition (from_state is different from to_state). ACTIONS: If night mode active binary sensor [binary_sensor.night_mode_active] is on, then turn on sleep mode boolean [input_boolean.sleep_mode] and create a persistent notification with title 'Night Mode Active'. If night mode active binary sensor [binary_sensor.night_mode_active] is off, then turn off sleep mode boolean [input_boolean.sleep_mode], create a persistent notification with title 'Day Mode Active', wait 5 minutes, and then dismiss that notification.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the night mode active binary sensor [binary_sensor.night_mode_active] changes its state.",
|
|
"conditions": "The automation only runs if the sensor's state has actually changed from its previous value.",
|
|
"action": "If night mode becomes active, it turns on the sleep mode boolean [input_boolean.sleep_mode] and displays a notification confirming night mode is active. If night mode becomes inactive, it turns off the sleep mode boolean [input_boolean.sleep_mode], displays a notification that day mode is active, waits five minutes, and then automatically dismisses the day mode notification."
|
|
},
|
|
"human_like": "Coordinates lighting modes by turning on sleep mode and dimming LEDs when night mode is active, and restoring normal lighting when it's not.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "lighting_zwave_led_night_mode_notifications",
|
|
"result": {
|
|
"structured": "TRIGGER: When night mode active binary sensor [binary_sensor.night_mode_active] changes state. CONDITIONS: The state of night mode active binary sensor [binary_sensor.night_mode_active] has actually changed (trigger.from_state.state != trigger.to_state.state). ACTIONS: IF night mode active binary sensor [binary_sensor.night_mode_active] is on, THEN create a persistent notification with title 'Z-Wave LED Night Mode' and message 'Night mode is now active (10 PM - 7 AM). Selected LED indicators will be turned off.' with ID 'zwave_led_night_mode'. OTHERWISE IF night mode active binary sensor [binary_sensor.night_mode_active] is off, THEN create a persistent notification with title 'Z-Wave LED Day Mode' and message 'Day mode is now active. All LED indicators have been restored to normal operation.' with ID 'zwave_led_day_mode', wait for 5 minutes, THEN dismiss the notification with ID 'zwave_led_day_mode'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the night mode active binary sensor [binary_sensor.night_mode_active] changes.",
|
|
"conditions": "The change in the sensor's state must be a real transition; it cannot be a change to the same state it was already in.",
|
|
"action": "If night mode becomes active, a persistent notification is created to inform that LED indicators will be turned off. If night mode ends, a notification is created to announce that LED indicators are back to normal, and this notification is automatically dismissed after five minutes."
|
|
},
|
|
"human_like": "Sends a notification to inform you when the system enters or exits night mode, which controls the LED lights on Z-Wave devices.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1736869556746'",
|
|
"result": {
|
|
"structured": "TRIGGER: When the Sun [sun.sun] sets (sunset event) OR When the Sun [sun.sun] rises with a 15-minute offset (sunrise event). CONDITIONS: None. ACTIONS: Turn porch light [light.porch_light] on if the trigger was sunset, or turn it off if the trigger was sunrise. Then, if the trigger was sunset, turn hall light [light.hall_light] on at 100% brightness AND turn on walkway smart plug [switch.tp_link_smart_plug_5e5b_walkway]. If the trigger was sunrise, turn hall light [light.hall_light] off AND turn off walkway smart plug [switch.tp_link_smart_plug_5e5b_walkway]. If the trigger is neither sunset nor sunrise, log a message to the logbook.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at sunset, and also at sunrise but with a 15-minute delay.",
|
|
"conditions": "There are no conditions to evaluate; the automation runs immediately when triggered.",
|
|
"action": "It controls several lights and a switch based on the time of day. At sunset, it turns on the porch light [light.porch_light], turns on the hall light [light.hall_light] at full brightness, and switches on the walkway smart plug [switch.tp_link_smart_plug_5e5b_walkway]. At sunrise (after a 15-minute delay), it turns off the porch light, turns off the hall light, and switches off the walkway smart plug. If for some reason the trigger is not a sunset or sunrise event, it logs a message to the logbook."
|
|
},
|
|
"human_like": "Automatically turns on outdoor and hall lights at sunset, and turns them off in the morning after sunrise, with a slight delay for the morning turn-off.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1747693281652'",
|
|
"result": {
|
|
"structured": "TRIGGER: When an MQTT message is received on topic zigbee2mqtt/Kitchen_Dimmer/action OR When an MQTT message is received on topic zigbee2mqtt/LivingRoom_Dimmer/action. CONDITIONS: None. ACTIONS: First, log a debug message. Then, based on the trigger: IF trigger is kitchen_dimmer AND payload is 'on_press_release' THEN log and turn on kitchen lights [light.kitchen_lights]. IF trigger is kitchen_dimmer AND payload is 'off_press_release' THEN log and turn off kitchen lights [light.kitchen_lights]. IF trigger is living_room_dimmer AND payload is 'on_press_release' THEN log, turn on livingroom lights [light.livingroom_lights], and turn on rgbcw lightbulb 1 [light.rgbcw_lightbulb1], rgbcw lightbulb 2 [light.rgbcw_lightbulb2], rgbcw lightbulb 3 [light.rgbcw_lightbulb3], rgbcw lightbulb 4 [light.rgbcw_lightbulb4], rgbcw lightbulb 5 [light.rgbcw_lightbulb5]. IF trigger is living_room_dimmer AND payload is 'off_press_release' THEN log, turn off livingroom lights [light.livingroom_lights], and turn off rgbcw lightbulb 1 [light.rgbcw_lightbulb1], rgbcw lightbulb 2 [light.rgbcw_lightbulb2], rgbcw lightbulb 3 [light.rgbcw_lightbulb3], rgbcw lightbulb 4 [light.rgbcw_lightbulb4], rgbcw lightbulb 5 [light.rgbcw_lightbulb5]. IF trigger is kitchen_dimmer AND payload is 'up_press_release' THEN log and increase brightness of kitchen lights [light.kitchen_lights] by 10%. IF trigger is kitchen_dimmer AND payload is 'up_hold_release' THEN log and increase brightness of kitchen lights [light.kitchen_lights] by 30%. IF trigger is kitchen_dimmer AND payload is 'down_press_release' THEN log and decrease brightness of kitchen lights [light.kitchen_lights] by 10%. IF trigger is kitchen_dimmer AND payload is 'down_hold_release' THEN log and decrease brightness of kitchen lights [light.kitchen_lights] by 30%. IF trigger is living_room_dimmer AND payload is 'up_press_release' THEN log and increase brightness of livingroom lights [light.livingroom_lights] by 10%. IF trigger is living_room_dimmer AND payload is 'up_hold_release' THEN log and increase brightness of livingroom lights [light.livingroom_lights] by 30%. IF trigger is living_room_dimmer AND payload is 'down_press_release' THEN log and decrease brightness of livingroom lights [light.livingroom_lights] by 10%. IF trigger is living_room_dimmer AND payload is 'down_hold_release' THEN log and decrease brightness of livingroom lights [light.livingroom_lights] by 30%.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered when a message is received from either the Kitchen Dimmer or the Living Room Dimmer via MQTT.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, a debug log entry is created. Then, depending on which dimmer was pressed and the specific action, different sequences occur. For the Kitchen Dimmer: a single press and release of the 'on' button turns on the kitchen lights [light.kitchen_lights]; a single press and release of the 'off' button turns them off. Pressing and releasing the 'up' button increases the brightness of the kitchen lights by 10%, while holding and releasing it increases brightness by 30%. Pressing and releasing the 'down' button decreases brightness by 10%, while holding and releasing it decreases brightness by 30%. For the Living Room Dimmer: a single press and release of the 'on' button turns on the main livingroom lights [light.livingroom_lights] and also turns on five individual RGB+CW bulbs [light.rgbcw_lightbulb1, light.rgbcw_lightbulb2, light.rgbcw_lightbulb3, light.rgbcw_lightbulb4, light.rgbcw_lightbulb5]; a single press and release of the 'off' button turns all these lights off. Brightness control for the living room works similarly to the kitchen, but only adjusts the main livingroom lights [light.livingroom_lights], increasing or decreasing brightness by 10% for a press and 30% for a hold on the 'up' or 'down' buttons respectively."
|
|
},
|
|
"human_like": "Controls kitchen and living room lights using physical dimmer switches, allowing you to turn lights on/off and adjust brightness with single presses or holds.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "AI Suggestions - New Entity Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When an entity is created in the entity registry (event_type: entity_registry_updated, action: create) OR When an entity is updated in the entity registry (event_type: entity_registry_updated, action: update). CONDITIONS: (AI Suggestions - New Entity Detection [automation.ai_suggestions_new_entity_detection] has not been triggered in the last hour). ACTIONS: Call the service ai automation suggester [ai_automation_suggester.generate_suggestions].",
|
|
"natural_language": {
|
|
"trigger": "Whenever a new entity is registered (created) in Home Assistant, or whenever an existing entity's registry entry is updated.",
|
|
"conditions": "This automation will only run if it has been at least one hour since it was last triggered. This is determined by checking the last_triggered attribute of the automation itself, AI Suggestions - New Entity Detection [automation.ai_suggestions_new_entity_detection].",
|
|
"action": "Calls the AI automation suggester service [ai_automation_suggester.generate_suggestions] to generate new automation suggestions."
|
|
},
|
|
"human_like": "Automatically requests AI-generated automation ideas whenever new devices or entities are added or updated in the system, but not more than once per hour.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "notification_deduplication_cleanup_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: At 03:00:00 daily. CONDITIONS: notification deduplication enabled boolean [input_boolean.notification_deduplication_enabled] is on. ACTIONS: Set unified notification last hash text [input_text.unified_notification_last_hash] value to empty string. Set unified notification context text [input_text.unified_notification_context] value to empty string. Set notification system status text [input_text.notification_system_status] value to 'Deduplication cleaned at <current_time>'.",
|
|
"natural_language": {
|
|
"trigger": "Every day at 3:00 AM.",
|
|
"conditions": "The notification deduplication enabled boolean [input_boolean.notification_deduplication_enabled] must be switched on.",
|
|
"action": "Clears the stored notification deduplication data by setting the unified notification last hash text [input_text.unified_notification_last_hash] and unified notification context text [input_text.unified_notification_context] to empty values. It then updates the notification system status text [input_text.notification_system_status] with a timestamped message confirming the cleanup."
|
|
},
|
|
"human_like": "Clears old notification data every night to keep the deduplication system fresh.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "notification_rate_limit_reset_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: At the start of every hour (when minutes equal 0). CONDITIONS: None. ACTIONS: Set notification rate limit reset datetime [input_datetime.notification_rate_limit_reset] to the current time plus one hour AND Set notification system status text [input_text.notification_system_status] to 'Rate limit reset at [HH:MM]' where [HH:MM] is the current hour and minute.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at the start of every hour, precisely when the clock's minutes reach zero.",
|
|
"conditions": "There are no conditions that must be met for the automation to proceed.",
|
|
"action": "It updates the notification rate limit reset datetime [input_datetime.notification_rate_limit_reset] to be one hour ahead of the current time. It also updates the notification system status text [input_text.notification_system_status] to a message stating the time the reset occurred."
|
|
},
|
|
"human_like": "Resets the notification rate limit every hour and logs the reset time.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "notification_test_mode_reminder_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When notification test mode boolean [input_boolean.notification_test_mode] turns on AND remains on for 1 hour. CONDITIONS: None. ACTIONS: Send a notification to mobile_app_pixel_9_pro_xl with title '⚠️ Notification Test Mode' and message 'Notification test mode has been active for 1 hour. Consider disabling it.' using tag 'notification_test_reminder'.",
|
|
"natural_language": {
|
|
"trigger": "When the notification test mode boolean [input_boolean.notification_test_mode] is switched on and stays on for one hour.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Sends a notification to the mobile app (mobile_app_pixel_9_pro_xl) with a warning title and a message reminding the user that test mode has been active for an hour and should be disabled."
|
|
},
|
|
"human_like": "Sends a reminder notification after notification test mode has been left on for an hour.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_health_check",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 03:00:00 daily. CONDITIONS: None. ACTIONS: Execute postgresql health shell command [shell_command.postgresql_health], then wait for 30 seconds, then check if postgresql health status sensor [sensor.postgresql_health_status] state is 'error'. If true, execute send deduplicated notification script [script.send_deduplicated_notification] with data specifying appliance 'postgresql', priority 'critical', a title, a detailed message containing the sensor state and attributes, a tag, a channel, and a TTL.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every day at 3:00 AM.",
|
|
"conditions": "There are no conditions that must be met before the actions run.",
|
|
"action": "It first runs a shell command to check the PostgreSQL database health. After a 30-second delay, it checks the resulting status from the health check sensor. If the sensor reports an 'error' state, it sends a critical notification via a script. The notification includes details about the health status, connection information, and the last check time, and it is tagged for deduplication."
|
|
},
|
|
"human_like": "Checks the health of the PostgreSQL database every morning and sends a critical alert if a problem is detected.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_weekly_maintenance",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 02:00:00. CONDITIONS: (The day of the week is Sunday) AND (The value of postgresql database size mb sensor [sensor.postgresql_database_size_mb] is greater than 100). ACTIONS: Execute the postgresql maintenance shell command [shell_command.postgresql_maintenance], wait for 2 minutes, then run the send deduplicated notification script [script.send_deduplicated_notification] with data specifying the appliance as 'postgresql', priority as 'normal', a title, a message containing the current database size and health status, a tag, and a channel.",
|
|
"natural_language": {
|
|
"trigger": "Every day at 2:00 AM.",
|
|
"conditions": "The automation only runs if it is a Sunday, and if the postgresql database size mb sensor [sensor.postgresql_database_size_mb] reports a size greater than 100 MB.",
|
|
"action": "First, it runs the PostgreSQL maintenance shell command. After a two-minute delay, it sends a notification using the send deduplicated notification script [script.send_deduplicated_notification]. The notification confirms the maintenance is complete and includes the current database size and health status from the sensors."
|
|
},
|
|
"human_like": "Runs weekly PostgreSQL database maintenance and sends a status notification every Sunday morning, but only if the database is larger than 100 MB.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_hourly_backup_peak",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type postgresql_schedule_trigger occurs with event_data containing task_type: hourly_backup. CONDITIONS: postgresql scheduler enabled boolean [input_boolean.postgresql_scheduler_enabled] is on AND the event data field backup_type equals 'peak_hours'. ACTIONS: Execute the shell command postgresql backup shell command [shell_command.postgresql_backup] AND increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers].",
|
|
"natural_language": {
|
|
"trigger": "When a scheduled event specifically for an hourly PostgreSQL backup is received.",
|
|
"conditions": "The automation only runs if the postgresql scheduler enabled boolean [input_boolean.postgresql_scheduler_enabled] is turned on, and if the incoming event specifies that the backup type is for 'peak_hours'.",
|
|
"action": "Performs a PostgreSQL backup by running the postgresql backup shell command [shell_command.postgresql_backup] and then increments the postgresql phase3 triggers counter [counter.postgresql_phase3_triggers] to track the number of times this automation has run."
|
|
},
|
|
"human_like": "Creates an hourly PostgreSQL backup during peak usage hours when triggered by a scheduler event, provided the backup scheduler is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_backup_performance_alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When postgresql backup performance issue binary sensor [binary_sensor.postgresql_backup_performance_issue] turns on AND remains on for 2 minutes. CONDITIONS: None. ACTIONS: Execute send deduplicated notification script [script.send_deduplicated_notification] with data: appliance=postgresql, priority=high, title='⚠️ PostgreSQL Backup Performance Issue', message containing dynamic values from sensor.postgresql_backup_performance, sensor.postgresql_backup_duration_seconds, and sensor.postgresql_backup_performance attributes, tag=postgresql_backup_performance, channel='System Alerts'.",
|
|
"natural_language": {
|
|
"trigger": "When the postgresql backup performance issue binary sensor [binary_sensor.postgresql_backup_performance_issue] detects a problem and stays in the 'on' state for at least two minutes.",
|
|
"conditions": "There are no additional conditions; the automation runs immediately when the trigger condition is met.",
|
|
"action": "Sends a high-priority, deduplicated notification via the send deduplicated notification script [script.send_deduplicated_notification]. The notification includes details about the PostgreSQL backup status, such as the current performance state, backup duration, size, and last backup time. It also provides specific warnings if the backup is taking longer than five seconds or if it is failing."
|
|
},
|
|
"human_like": "Sends an alert when PostgreSQL backup performance degrades for a sustained period, providing detailed backup metrics in the notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_backup_retention_management",
|
|
"result": {
|
|
"structured": "TRIGGER: When an event of type postgresql_schedule_trigger occurs with event_data.task_type equal to retention_management. CONDITIONS: (postgresql scheduler enabled boolean [input_boolean.postgresql_scheduler_enabled] is on) AND (the event data schedule_time equals '04:00:00'). ACTIONS: Execute the shell command postgresql retention shell command [shell_command.postgresql_retention] AND increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers].",
|
|
"natural_language": {
|
|
"trigger": "When a specific scheduler event for PostgreSQL backup retention management is received.",
|
|
"conditions": "If the PostgreSQL scheduler is enabled via the input boolean, and the event data indicates the scheduled time is exactly 04:00:00.",
|
|
"action": "Runs the PostgreSQL retention management shell command and increments a counter that tracks how many times this phase of the automation has been triggered."
|
|
},
|
|
"human_like": "Manages PostgreSQL backup retention by running a cleanup task at 4 AM, but only if the scheduler is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "postgresql_scheduler",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 00:00:00 (midnight). CONDITIONS: postgresql scheduler enabled boolean [input_boolean.postgresql_scheduler_enabled] is on. ACTIONS: Set the datetime for postgresql scheduler last run datetime [input_datetime.postgresql_scheduler_last_run] to the current time. Wait for 4 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=retention_management, schedule_time=04:00:00. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers]. Wait for 3 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=hourly_backup, schedule_time=07:00:00, backup_type=peak_hours. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers]. Wait for 4 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=hourly_backup, schedule_time=11:00:00, backup_type=peak_hours. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers]. Wait for 4 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=hourly_backup, schedule_time=15:00:00, backup_type=peak_hours. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers]. Wait for 4 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=hourly_backup, schedule_time=19:00:00, backup_type=peak_hours. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers]. Wait for 4 hours. Fire an event 'postgresql_schedule_trigger' with data: task_type=hourly_backup, schedule_time=23:00:00, backup_type=peak_hours. Increment the counter postgresql phase3 triggers counter [counter.postgresql_phase3_triggers].",
|
|
"natural_language": {
|
|
"trigger": "At midnight (00:00:00).",
|
|
"conditions": "Only if the postgresql scheduler enabled boolean [input_boolean.postgresql_scheduler_enabled] is turned on.",
|
|
"action": "First, it records the current time in the postgresql scheduler last run datetime [input_datetime.postgresql_scheduler_last_run]. Then, it begins a series of scheduled tasks. After a 4-hour delay, it triggers a retention management task. After a 3-hour delay, it triggers the first of several hourly backup tasks for peak hours. This pattern continues, with 4-hour delays between each subsequent backup task, triggering them at 11:00, 15:00, 19:00, and 23:00. After each task trigger, it increments the postgresql phase3 triggers counter [counter.postgresql_phase3_triggers] to keep a count of how many tasks have been scheduled."
|
|
},
|
|
"human_like": "At midnight, if enabled, this automation schedules a series of database maintenance tasks (like backups and retention management) throughout the day, keeping track of how many tasks it has triggered.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "memory_pressure_notification",
|
|
"result": {
|
|
"structured": "TRIGGER: When memory pressure alert binary sensor [binary_sensor.memory_pressure_alert] turns on and remains on for 2 minutes. CONDITIONS: glances ram used percent sensor [sensor.glances_ram_used_percent] is greater than 75%. ACTIONS: Create a persistent notification with title '🔴 Memory Pressure Detected' and a message containing the current RAM usage percentage, free RAM in GB, and swap usage percentage.",
|
|
"natural_language": {
|
|
"trigger": "When the memory pressure alert binary sensor [binary_sensor.memory_pressure_alert] has been active for at least two minutes.",
|
|
"conditions": "If the current system memory usage, as reported by the glances ram used percent sensor [sensor.glances_ram_used_percent], is above 75 percent.",
|
|
"action": "Creates a persistent system notification with a red alert icon, showing the exact memory usage percentage, the amount of free RAM in gigabytes, and the current swap usage percentage, and suggests restarting Home Assistant or checking for memory-intensive processes."
|
|
},
|
|
"human_like": "Sends a detailed alert notification when the system has been under high memory pressure for two minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "memory_pressure_recovery",
|
|
"result": {
|
|
"structured": "TRIGGER: When memory pressure alert binary sensor [binary_sensor.memory_pressure_alert] turns off and remains off for 1 minute. CONDITIONS: glances ram used percent sensor [sensor.glances_ram_used_percent] reports a value less than 70%. ACTIONS: Dismiss the persistent notification with ID 'memory_pressure_alert' AND create a new persistent notification with ID 'memory_recovery' titled '✅ Memory Pressure Resolved' containing a message with the current memory usage percentage and system health score.",
|
|
"natural_language": {
|
|
"trigger": "When the memory pressure alert binary sensor [binary_sensor.memory_pressure_alert] turns off and stays off for at least one minute.",
|
|
"conditions": "The automation only proceeds if the current system memory usage, as reported by the glances ram used percent sensor [sensor.glances_ram_used_percent], is below 70 percent.",
|
|
"action": "First, it dismisses any existing notification with the ID 'memory_pressure_alert'. Then, it creates a new persistent notification titled '✅ Memory Pressure Resolved' which displays the current memory usage percentage and the system health score."
|
|
},
|
|
"human_like": "Clears the memory pressure alert and sends a notification when system memory usage returns to a normal level.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "daily_system_health_report",
|
|
"result": {
|
|
"structured": "TRIGGER: At 06:00:00 daily. CONDITIONS: None. ACTIONS: Log an entry named 'System Health' with a message containing the current values for: glances ram used percent sensor [sensor.glances_ram_used_percent] (rounded to 1 decimal place), glances cpu load sensor [sensor.glances_cpu_load] (rounded to 1 decimal place), glances disk used percent sensor [sensor.glances_disk_used_percent] (rounded to 1 decimal place), system health score sensor [sensor.system_health_score] (rounded to 1 decimal place), and memory status sensor [sensor.memory_status].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 6:00 AM.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Creates a logbook entry titled 'System Health' that reports the current system resource utilization. The message includes the percentage of RAM used from the glances ram used percent sensor [sensor.glances_ram_used_percent], the CPU load percentage from the glances cpu load sensor [sensor.glances_cpu_load], the disk usage percentage from the glances disk used percent sensor [sensor.glances_disk_used_percent], the overall system health score from the system health score sensor [sensor.system_health_score], and the current memory status from the memory status sensor [sensor.memory_status]. All numerical values are rounded to one decimal place."
|
|
},
|
|
"human_like": "Logs a daily system health report at 6 AM, showing memory, CPU, disk usage, and overall health status.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "'1742000000001'",
|
|
"result": {
|
|
"structured": "TRIGGER: When hide home icon binary sensor [binary_sensor.hide_home_icon] changes state. ACTIONS: Wait for 1 second, then update map entities sensor [sensor.map_entities], then create a persistent notification with title 'Map Entities Update' and message 'Map entities sensor refreshed: [current state of sensor.map_entities]' with notification_id 'map_entities_update'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the hide home icon binary sensor [binary_sensor.hide_home_icon] changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "After a one-second delay, the automation forces a refresh of the map entities sensor [sensor.map_entities] and then creates a persistent notification titled 'Map Entities Update' showing the current state of the sensor."
|
|
},
|
|
"human_like": "Refreshes the map display and sends a notification whenever the home icon presence changes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_framework_orchestrator",
|
|
"result": {
|
|
"structured": "TRIGGER: When system testing mode boolean [input_boolean.system_testing_mode] turns on. CONDITIONS: None. ACTIONS: Set test results summary text [input_text.test_results_summary] value to 'Test execution started at [current time formatted as HH:MM:SS]'. Select 'Appliance' option for current test domain select [input_select.current_test_domain]. Wait for 2 seconds. Turn on run appliance tests boolean [input_boolean.run_appliance_tests].",
|
|
"natural_language": {
|
|
"trigger": "When the system testing mode boolean [input_boolean.system_testing_mode] is turned on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It first updates the test results summary text [input_text.test_results_summary] with a timestamp indicating the test execution start. Then, it sets the current test domain select [input_select.current_test_domain] to 'Appliance'. After a brief two-second delay, it turns on the run appliance tests boolean [input_boolean.run_appliance_tests] to initiate the appliance test suite."
|
|
},
|
|
"human_like": "Starts the automated testing framework by initializing a summary log, selecting the appliance test domain, and launching the appliance tests when testing mode is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_appliance_domain_comprehensive",
|
|
"result": {
|
|
"structured": "TRIGGER: When run appliance tests boolean [input_boolean.run_appliance_tests] turns on. CONDITIONS: system testing mode boolean [input_boolean.system_testing_mode] is on. ACTIONS: Log 'Starting appliance domain tests' to logbook for run appliance tests boolean [input_boolean.run_appliance_tests]. Execute shell command validate appliance package shell command [shell_command.validate_appliance_package]. Wait 5 seconds. Turn on appliance test simulation boolean [input_boolean.appliance_test_simulation]. Set test appliance power simulation number [input_number.test_appliance_power_simulation] to 1200. Wait 10 seconds. Set test appliance power simulation number [input_number.test_appliance_power_simulation] to 5. Wait 5 seconds. Turn off appliance test simulation boolean [input_boolean.appliance_test_simulation]. Log 'Appliance domain tests completed' to logbook for run appliance tests boolean [input_boolean.run_appliance_tests]. Turn off run appliance tests boolean [input_boolean.run_appliance_tests]. Set current test domain select [input_select.current_test_domain] to 'Lighting'. Wait 2 seconds. Turn on run lighting tests boolean [input_boolean.run_lighting_tests].",
|
|
"natural_language": {
|
|
"trigger": "When the run appliance tests boolean [input_boolean.run_appliance_tests] is turned on.",
|
|
"conditions": "The system testing mode boolean [input_boolean.system_testing_mode] must be on.",
|
|
"action": "The automation logs the start of the tests, runs a validation shell command, then simulates an appliance power cycle by turning on a simulation boolean, setting a power value high, waiting, setting it low, and turning the simulation off. It logs the completion, turns off the test trigger, switches the current test domain to 'Lighting', and finally triggers the lighting tests."
|
|
},
|
|
"human_like": "This automation runs a comprehensive test sequence for appliance management, simulating power usage and automatically moving on to lighting tests.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_lighting_domain_comprehensive",
|
|
"result": {
|
|
"structured": "TRIGGER: When run lighting tests boolean [input_boolean.run_lighting_tests] turns on. CONDITIONS: system testing mode boolean [input_boolean.system_testing_mode] is on. ACTIONS: Log 'Starting lighting domain tests' to logbook for run lighting tests boolean [input_boolean.run_lighting_tests]. Execute validate lighting package shell command [shell_command.validate_lighting_package]. Wait 5 seconds. Log 'Testing LED RF command structure (simulation)' to logbook for run lighting tests boolean [input_boolean.run_lighting_tests]. Wait 10 seconds. Log 'Lighting domain tests completed' to logbook for run lighting tests boolean [input_boolean.run_lighting_tests]. Turn off run lighting tests boolean [input_boolean.run_lighting_tests]. Set current test domain select [input_select.current_test_domain] to 'Environmental'. Wait 2 seconds. Turn on run environmental tests boolean [input_boolean.run_environmental_tests].",
|
|
"natural_language": {
|
|
"trigger": "When the run lighting tests boolean [input_boolean.run_lighting_tests] is turned on.",
|
|
"conditions": "The system testing mode boolean [input_boolean.system_testing_mode] must be on.",
|
|
"action": "The automation logs the start of the tests, executes a shell command to validate the lighting package, waits, logs a simulation message, waits again, logs test completion, turns off the lighting test trigger, switches the current test domain to 'Environmental', waits briefly, and finally turns on the environmental tests."
|
|
},
|
|
"human_like": "This automation runs a comprehensive suite of lighting control tests when triggered, logs the progress, and then automatically starts the next set of environmental tests.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_environmental_domain_comprehensive",
|
|
"result": {
|
|
"structured": "TRIGGER: When run environmental tests boolean [input_boolean.run_environmental_tests] turns on. CONDITIONS: system testing mode boolean [input_boolean.system_testing_mode] is on. ACTIONS: Log a message 'Starting environmental domain tests' via logbook.log for entity run environmental tests boolean [input_boolean.run_environmental_tests], then execute shell command validate environmental package shell command [shell_command.validate_environmental_package], then wait 5 seconds, then log a message 'Validating hydroponics automation structure' via logbook.log for entity run environmental tests boolean [input_boolean.run_environmental_tests], then wait 10 seconds, then log a message 'Environmental domain tests completed' via logbook.log for entity run environmental tests boolean [input_boolean.run_environmental_tests], then turn off run environmental tests boolean [input_boolean.run_environmental_tests], then set current test domain select [input_select.current_test_domain] to option 'None', then set test results summary text [input_text.test_results_summary] to value 'All tests completed at {{ now().strftime('%H:%M:%S') }}', then turn off system testing mode boolean [input_boolean.system_testing_mode], then log a message 'Complete test suite execution finished' via logbook.log.",
|
|
"natural_language": {
|
|
"trigger": "When the run environmental tests boolean [input_boolean.run_environmental_tests] is turned on.",
|
|
"conditions": "The system testing mode boolean [input_boolean.system_testing_mode] must be on.",
|
|
"action": "Logs a start message, runs a shell command to validate the environmental package, waits 5 seconds, logs a validation message, waits 10 seconds, logs a completion message, turns off the test trigger, resets the current test domain to 'None', updates a summary text with the completion time, turns off the system testing mode, and logs a final completion message."
|
|
},
|
|
"human_like": "Runs a comprehensive test suite for environmental systems, logging progress and resetting test states upon completion.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_performance_monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 30 seconds (when seconds match /30 pattern). CONDITIONS: performance testing active boolean [input_boolean.performance_testing_active] is on. ACTIONS: Execute capture performance metrics shell command [shell_command.capture_performance_metrics].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every 30 seconds, based on the system clock.",
|
|
"conditions": "It only runs if the performance testing active boolean [input_boolean.performance_testing_active] is switched on.",
|
|
"action": "It runs the capture performance metrics shell command [shell_command.capture_performance_metrics] to collect system performance data."
|
|
},
|
|
"human_like": "Periodically captures system performance metrics while performance testing is active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_timeout_safety",
|
|
"result": {
|
|
"structured": "TRIGGER: When system testing mode boolean [input_boolean.system_testing_mode] remains on for a duration equal to the value of test timeout minutes number [input_number.test_timeout_minutes] (converted to integer minutes). CONDITIONS: None. ACTIONS: Log a message 'Test timeout reached - forcing shutdown' to the logbook under the name 'Test Framework'. Turn off run appliance tests boolean [input_boolean.run_appliance_tests], run lighting tests boolean [input_boolean.run_lighting_tests], run environmental tests boolean [input_boolean.run_environmental_tests], and system testing mode boolean [input_boolean.system_testing_mode]. Set the value of test results summary text [input_text.test_results_summary] to 'Tests TIMED OUT after X minutes', where X is the current value of test timeout minutes number [input_number.test_timeout_minutes].",
|
|
"natural_language": {
|
|
"trigger": "When the system testing mode boolean [input_boolean.system_testing_mode] is turned on and stays on for a specific period of time. This period is not fixed; it is determined by the current numeric value set in the test timeout minutes number [input_number.test_timeout_minutes] entity.",
|
|
"conditions": "There are no additional conditions that must be met for the automation to proceed.",
|
|
"action": "The automation first logs an entry to the system logbook, recording that the test timeout was reached and a forced shutdown is happening. It then turns off several testing-related switches: the run appliance tests boolean [input_boolean.run_appliance_tests], the run lighting tests boolean [input_boolean.run_lighting_tests], the run environmental tests boolean [input_boolean.run_environmental_tests], and the system testing mode boolean [input_boolean.system_testing_mode] itself. Finally, it updates the test results summary text [input_text.test_results_summary] to indicate that the tests timed out, including the exact timeout duration that was used."
|
|
},
|
|
"human_like": "Acts as a safety watchdog for automated tests, shutting them all down and logging a timeout if they run for longer than the allowed duration.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_dimmer_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: Every minute (time pattern with minutes divisible by 1). CONDITIONS: None. ACTIONS: Log a message 'Testing light entities...' for Test Dimmer Lights [automation.test_dimmer_lights]. Turn on livingroom lights [light.livingroom_lights] to 50% brightness. Wait 5 seconds. Turn on rgbcw lightbulb 1 [light.rgbcw_lightbulb1] AND rgbcw lightbulb 2 [light.rgbcw_lightbulb2] to 50% brightness. Wait 5 seconds. Turn off livingroom lights [light.livingroom_lights] AND rgbcw lightbulb 1 [light.rgbcw_lightbulb1] AND rgbcw lightbulb 2 [light.rgbcw_lightbulb2].",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every minute.",
|
|
"conditions": "There are no conditions; the automation runs unconditionally after the trigger.",
|
|
"action": "First, it logs a message to the logbook indicating it is testing light entities. Then, it turns on the livingroom lights [light.livingroom_lights] at 50% brightness. After a 5-second delay, it turns on both the rgbcw lightbulb 1 [light.rgbcw_lightbulb1] and rgbcw lightbulb 2 [light.rgbcw_lightbulb2] at 50% brightness. Following another 5-second delay, it turns off all the lights: the livingroom lights and both rgbcw bulbs."
|
|
},
|
|
"human_like": "This automation tests the dimmer lights by turning them on at half brightness and then off again in a sequence, running every minute.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher - Cycle Start Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] remains above 50 watts for 2 minutes. CONDITIONS: (dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is off) AND (appliance quiet hours enabled boolean [input_boolean.appliance_quiet_hours_enabled] is off OR current time is between 07:30:00 and 22:30:00). ACTIONS: Turn on dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]; Send announcement 'The dishwasher cycle has started.' via notify.alexa_media_everywhere; If everywhere media player [media_player.everywhere] is unavailable, send notification 'Dishwasher Started: Cycle started at [current time]' to mobile_app_pixel_9_pro_xl; Set appliance last announcement text [input_text.appliance_last_announcement] to 'Dishwasher cycle started'.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] detects power usage above 50 watts for a continuous period of two minutes.",
|
|
"conditions": "The dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] must be off, indicating a cycle has not already been announced. Additionally, either the appliance quiet hours enabled boolean [input_boolean.appliance_quiet_hours_enabled] is off, or the current time is between 7:30 AM and 10:30 PM.",
|
|
"action": "It marks the cycle as announced by turning on the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. It then sends an announcement via Alexa everywhere that the dishwasher cycle has started. If the everywhere media player [media_player.everywhere] is unavailable, it sends a notification to a mobile device with the start time. Finally, it logs the event by setting the appliance last announcement text [input_text.appliance_last_announcement] to 'Dishwasher cycle started'."
|
|
},
|
|
"human_like": "Announces when the dishwasher starts a cycle, ensuring it only notifies during appropriate hours and avoids duplicate announcements.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher Cycle Monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] remains below 5 watts for 5 minutes. CONDITIONS: dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] is below 5 watts. ACTIONS: First, check if the current time is between 07:30:00 and 22:30:00. If true, send an announcement via notify.alexa_media_everywhere stating the dishwasher cycle is complete and to open the door. Then, turn off dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. Then, wait for 30 minutes. After the delay, check if dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] state is not 'unknown' or 'unavailable' AND check if dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] is closed ('off') AND check if the current time is between 07:30:00 and 22:30:00. If all these conditions are true, send a reminder announcement via notify.alexa_media_everywhere that the dishwasher door is still closed.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher's power consumption, monitored by the dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w], stays below 5 watts for a continuous period of 5 minutes.",
|
|
"conditions": "The automation only runs if the dishwasher's power consumption is confirmed to be below 5 watts at the moment the trigger condition is met.",
|
|
"action": "First, it checks if it's between 7:30 AM and 10:30 PM. If it is, it sends an Alexa announcement to everywhere, stating the dishwasher cycle is complete and reminding someone to open the door for drying. It then turns off the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. After a 30-minute delay, it checks if the dishwasher door status is available and if the door is still closed. If the door is closed and it's still within the allowed time window (7:30 AM to 10:30 PM), it sends a second Alexa reminder to open the dishwasher door to help dishes dry faster."
|
|
},
|
|
"human_like": "Announces when the dishwasher finishes its cycle and sends a follow-up reminder if the door is left closed, but only during daytime hours to avoid disturbances.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher - Cycle Completion Announcement",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] changes from on to off. CONDITIONS: The current time is between 07:00:00 AND before 22:30:00. ACTIONS: Send an announcement via notify.alexa_media_everywhere with the message 'The dishwasher cycle is complete and ready to be unloaded.' AND Set the value of appliance last announcement text [input_text.appliance_last_announcement] to 'Dishwasher complete - [current_time_in_HH:MM_format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is turned off.",
|
|
"conditions": "The automation only runs if the current time is between 7:00 AM and 10:30 PM.",
|
|
"action": "It sends an announcement to all Alexa devices stating the dishwasher cycle is complete and ready to be unloaded, and then logs this event with a timestamp in the appliance last announcement text [input_text.appliance_last_announcement]."
|
|
},
|
|
"human_like": "Announces when the dishwasher cycle is finished during daytime and evening hours, and logs the time of the announcement.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher - Door Left Open Alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] becomes open (on) AND remains open for 4 hours. CONDITIONS: (dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] is not in state 'unknown' OR 'unavailable') AND (current time is after 07:30:00 AND before 22:30:00). ACTIONS: Send notification via notify.alexa_media_everywhere with message 'The dishwasher door has been open for 4 hours. You may want to close it now.'.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] detects the door is open and stays open for four hours.",
|
|
"conditions": "The sensor's state must be a valid reading, meaning it is not 'unknown' or 'unavailable'. Additionally, the current time must be between 7:30 AM and 10:30 PM, respecting quiet hours.",
|
|
"action": "Sends an announcement to all Alexa devices, stating 'The dishwasher door has been open for 4 hours. You may want to close it now.'."
|
|
},
|
|
"human_like": "Sends an Alexa announcement if the dishwasher door is left open for four hours during the day, to remind someone to close it.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Washing Machine - Cycle Start Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] remains above 100 watts for 2 minutes. CONDITIONS: The current time is between 07:30:00 and 22:30:00. ACTIONS: Send an announcement via notify.alexa_media_everywhere with the message 'Washing machine cycle has started. I'll let you know when it's finished.' AND Log an entry to the logbook with the name 'Washing Machine Monitoring' and a message containing the current power consumption.",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine's power consumption, measured by the washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w], stays above 100 watts for a continuous period of two minutes.",
|
|
"conditions": "The automation only runs if the current time is between 7:30 AM and 10:30 PM.",
|
|
"action": "It announces the start of the washing cycle via Alexa devices and logs the event with the current power consumption to the Home Assistant logbook."
|
|
},
|
|
"human_like": "Announces the start of a washing machine cycle during daytime hours and logs the event.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Washing Machine Cycle Monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] remains below 5 watts for 3 minutes. CONDITIONS: washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] is below 5 watts. ACTIONS: (IF current time is between 07:30:00 and 22:30:00 THEN send notification 'Washing machine cycle is complete! Time to move your clothes to the dryer.' via notify.alexa_media_everywhere) THEN wait 15 minutes THEN (IF current time is between 07:30:00 and 22:30:00 THEN send notification 'Reminder: Your laundry is still waiting in the washing machine.' via notify.alexa_media_everywhere) THEN wait 30 minutes THEN (IF current time is between 07:30:00 and 22:30:00 THEN send notification 'Final reminder: Please don't forget about your laundry in the washing machine.' via notify.alexa_media_everywhere).",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine's power consumption, measured by the washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w], stays below 5 watts for a continuous period of 3 minutes.",
|
|
"conditions": "The automation only proceeds if the washing machine electric consumption w sensor [sensor.washing_machine_electric_media_everywhere] is still below 5 watts at the moment the trigger is evaluated.",
|
|
"action": "If the current time is between 7:30 AM and 10:30 PM, it sends an Alexa announcement saying the washing cycle is complete. After a 15-minute delay, if still within the allowed time window, it sends a first reminder announcement. After another 30-minute delay, if still within the allowed time window, it sends a final reminder announcement. The automation respects quiet hours by not sending announcements outside the 7:30 AM to 10:30 PM window."
|
|
},
|
|
"human_like": "Announces when the washing machine finishes its cycle and sends polite reminders to move the laundry, but only during daytime hours to avoid disturbances.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Washing Machine - Cycle Completion Announcement",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] changes from 'on' to 'off'. CONDITIONS: The current time is between 07:00:00 and 22:30:00. ACTIONS: Send an announcement via notify.alexa_media_everywhere with the message 'The washing machine cycle is complete. Please move clothes to the dryer.' AND Set the value of appliance last announcement text [input_text.appliance_last_announcement] to 'Washer complete - ' followed by the current time in HH:MM format.",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is turned off.",
|
|
"conditions": "The automation only runs if the current time is between 7:00 AM and 10:30 PM.",
|
|
"action": "It sends an announcement to all Alexa devices stating the washing machine cycle is complete and asks to move clothes to the dryer. It also updates the appliance last announcement text [input_text.appliance_last_announcement] with a timestamped message."
|
|
},
|
|
"human_like": "Announces when the washing machine finishes its cycle during daytime and evening hours, and logs the event.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dryer - Cycle Start Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer machine state [sensor.dryer_machine_state] changes to 'run' OR when dryer job state sensor [sensor.dryer_job_state] changes to 'drying'. CONDITIONS: (dryer machine state [sensor.dryer_machine_state] is not 'unknown' AND is not 'unavailable') AND (dryer machine state [sensor.dryer_machine_state] is 'run') AND (current time is after 07:30:00 AND before 22:30:00). ACTIONS: Send an announcement via notify.alexa_media_everywhere with a message about the dryer cycle start, including the expected completion time from dryer completion time sensor [sensor.dryer_completion_time] if available, otherwise a generic message. Also, log an entry to the logbook with the dryer job state.",
|
|
"natural_language": {
|
|
"trigger": "When the dryer machine state [sensor.dryer_machine_state] changes to 'run', or when the dryer job state sensor [sensor.dryer_job_state] changes to 'drying'.",
|
|
"conditions": "If the dryer machine state [sensor.dryer_machine_state] is not 'unknown' or 'unavailable', the dryer machine state [sensor.dryer_machine_state] is currently 'run', and the current time is between 7:30 AM and 10:30 PM.",
|
|
"action": "Sends an Alexa announcement to all devices about the dryer cycle starting. The message includes the expected completion time from the dryer completion time sensor [sensor.dryer_completion_time] if it's available, otherwise it states a generic notification. It also logs the start event with the current job state to the Home Assistant logbook."
|
|
},
|
|
"human_like": "Announces when the dryer starts a cycle during daytime hours, providing an estimated finish time if available.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dryer - Cycle Completion Announcement",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer cycle announced boolean [input_boolean.dryer_cycle_announced] changes from on to off. CONDITIONS: The current time is between 07:00:00 and 22:30:00. ACTIONS: Send an announcement via notify.alexa_media_everywhere with the message 'The dryer cycle is complete. Please remove clothes to prevent wrinkles.' AND Set the value of appliance last announcement text [input_text.appliance_last_announcement] to 'Dryer complete - [current time in HH:MM format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the dryer cycle announced boolean [input_boolean.dryer_cycle_announced] is turned off.",
|
|
"conditions": "The automation only runs if the current time is between 7:00 AM and 10:30 PM.",
|
|
"action": "It sends an announcement to all Alexa devices stating the dryer cycle is complete and reminds to remove clothes. It also updates the appliance last announcement text [input_text.appliance_last_announcement] with the current time to log the event."
|
|
},
|
|
"human_like": "Announces when the dryer cycle finishes and logs the time, but only during daytime and evening hours to avoid disturbances.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Error Monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes to error OR When dryer status sensor [sensor.dryer_status] changes to error OR When dishwasher door status sensor [sensor.dishwasher_door_status] changes to error. CONDITIONS: None. ACTIONS: Send an Alexa announcement with the message 'Attention: [friendly_name of triggering entity] is reporting an error. Please check the appliance.' AND Create a persistent notification with title '🚨 Appliance Error' and message '[friendly_name of triggering entity] error at [current time in HH:MM format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the status of the washing machine [sensor.washing_machine_status], the dryer [sensor.dryer_status], or the dishwasher [sensor.dishwasher_door_status] changes to an error state.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It sends an announcement to all Alexa devices stating which appliance is reporting an error and asks someone to check it. It also creates a persistent notification on the Home Assistant interface with a warning emoji, the appliance's name, and the time the error occurred."
|
|
},
|
|
"human_like": "Announces and logs an alert when any major appliance reports an error, so you can check on it.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Monthly Maintenance Reminder",
|
|
"result": {
|
|
"structured": "TRIGGER: At 09:00:00 daily. CONDITIONS: The current day of the month is the 1st. ACTIONS: Send a notification via Alexa Media Everywhere [notify.alexa_media_everywhere] with a monthly appliance maintenance reminder message. Create a persistent notification [persistent_notification.create] with a title and detailed maintenance message.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 9:00 AM.",
|
|
"conditions": "The automation only proceeds if it is the first day of the month.",
|
|
"action": "It sends an announcement to all Alexa devices with a reminder to perform monthly appliance maintenance tasks. It also creates a persistent notification in the Home Assistant interface with a detailed list of the same tasks."
|
|
},
|
|
"human_like": "Sends a monthly reminder on the first of the month to perform routine maintenance on household appliances.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Off-Peak Energy Reminder",
|
|
"result": {
|
|
"structured": "TRIGGER: At 21:00:00 (9:00 PM). CONDITIONS: Day is Monday OR Tuesday OR Wednesday OR Thursday OR Friday. ACTIONS: Send a notification via Alexa Media Everywhere [notify.alexa_media_everywhere] with the message: 'Reminder: Off-peak energy hours start at 10 PM. Consider running the dishwasher or washing machine after 10 PM to save on energy costs.'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 9:00 PM.",
|
|
"conditions": "The automation only runs if the current day is a weekday (Monday, Tuesday, Wednesday, Thursday, or Friday).",
|
|
"action": "Sends a spoken announcement via Alexa Media Everywhere [notify.alexa_media_everywhere] reminding the user that off-peak energy hours begin at 10 PM and suggesting they run appliances like the dishwasher or washing machine after that time to save on energy costs."
|
|
},
|
|
"human_like": "Sends a weekday evening reminder to run energy-intensive appliances during off-peak hours to save money.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Maintenance Tracking",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher last filter clean datetime [input_datetime.dishwasher_last_filter_clean] OR washing machine last hose check datetime [input_datetime.washing_machine_last_hose_check] changes to a null value. CONDITIONS: None. ACTIONS: Send an Alexa announcement thanking the user for completing the maintenance task (the task name is derived from the friendly_name attribute of the triggering entity) AND set the appliance last announcement text [input_text.appliance_last_announcement] to 'Maintenance logged - [current_time]'.",
|
|
"natural_language": {
|
|
"trigger": "When the date/time for either the dishwasher last filter clean datetime [input_datetime.dishwasher_last_filter_clean] or the washing machine last hose check datetime [input_datetime.washing_machine_last_hose_check] is updated to a null value.",
|
|
"conditions": "There are no conditions that must be met for the action to run.",
|
|
"action": "Sends a voice announcement via Alexa to thank the user for completing the specific maintenance task (e.g., 'dishwasher filter clean' or 'washing machine hose check') and logs the event by updating the appliance last announcement text [input_text.appliance_last_announcement] with the current time."
|
|
},
|
|
"human_like": "Announces and logs a thank-you message when a user records that an appliance maintenance task has been completed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher - Cycle Start Detection Enhanced",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] remains above 50 watts for 3 minutes. CONDITIONS: (dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is off) AND (dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] is above 30 watts) AND (appliance quiet hours enabled boolean [input_boolean.appliance_quiet_hours_enabled] is off OR the current time is between 07:30:00 and 22:30:00). ACTIONS: Turn on dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. Set dishwasher cycle start datetime [input_datetime.dishwasher_cycle_start] to the current timestamp. Send an announcement via notify.alexa_media_everywhere with a message about the cycle start and current power consumption. If everywhere media player [media_player.everywhere] is unavailable, send a notification to mobile_app_pixel_9_pro_xl with a title and message. Set appliance last announcement text [input_text.appliance_last_announcement] to a string indicating the dishwasher cycle started and the current power consumption.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher's power consumption, measured by the dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w], stays above 50 watts for a continuous period of three minutes.",
|
|
"conditions": "The dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] must be off, indicating a cycle hasn't already been announced. The dishwasher's power consumption must also be above 30 watts at the time of checking. Furthermore, either the appliance quiet hours enabled boolean [input_boolean.appliance_quiet_hours_enabled] is turned off, or the current time is between 7:30 AM and 10:30 PM.",
|
|
"action": "The automation marks the cycle as announced by turning on the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. It records the start time by setting the dishwasher cycle start datetime [input_datetime.dishwasher_cycle_start] to the current moment. It then attempts to send an audio announcement via the everywhere media player [media_player.everywhere] with the current power consumption. If that media player is unavailable, it sends a push notification to a mobile device. Finally, it logs the event by updating the appliance last announcement text [input_text.appliance_last_announcement]."
|
|
},
|
|
"human_like": "Detects when the dishwasher starts a cycle based on its power usage and sends announcements, while respecting quiet hours to avoid disturbances.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dishwasher - Cycle Running Monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] remains below 15 W for 2 minutes. CONDITIONS: dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is on AND the elapsed time since dishwasher cycle start datetime [input_datetime.dishwasher_cycle_start] is more than 10 minutes. ACTIONS: Wait 8 minutes. Then, if dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] is below 10 W AND the current time is between 07:30:00 and 22:30:00, calculate the cycle duration from dishwasher cycle start datetime [input_datetime.dishwasher_cycle_start] and announce completion via notify.alexa_media_everywhere. Then, turn off dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced]. Wait 30 minutes. Then, if dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] is not unknown/unavailable AND dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] is off (closed) AND the current time is between 07:30:00 and 22:30:00, send a reminder via notify.alexa_media_everywhere.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher's power consumption, measured by dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w], stays below 15 watts for at least two minutes.",
|
|
"conditions": "The automation only runs if the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is switched on, and if the dishwasher cycle has been running for more than ten minutes, based on the start time stored in dishwasher cycle start datetime [input_datetime.dishwasher_cycle_start].",
|
|
"action": "After an 8-minute delay, the system checks if power consumption is still low (below 10 watts) and if it's daytime (between 7:30 AM and 10:30 PM). If so, it calculates how long the cycle ran and sends an Alexa announcement that the dishwasher is complete, reminding someone to open the door for drying. It then turns off the 'cycle announced' flag. After a further 30-minute wait, if the dishwasher door window door is open binary sensor [binary_sensor.dishwasher_door_window_door_is_open] reports the door is still closed and it's still daytime, it sends a second reminder to open the door."
|
|
},
|
|
"human_like": "Monitors the dishwasher's power usage to announce when a cycle is finished and reminds you to open the door for drying, only during daytime hours.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "Washing Machine - Cycle Start Detection Enhanced",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] remains above 100 watts for 3 minutes. CONDITIONS: (washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is off) AND (washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] is above 50 watts) AND (current time is after 07:30:00 AND before 22:30:00). ACTIONS: Turn on washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced]; Set washing machine cycle start datetime [input_datetime.washing_machine_cycle_start] to current timestamp; Send notification via notify.alexa_media_everywhere with message about cycle start and current power consumption; Log event 'Washing machine cycle started' with power consumption value to logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine's power consumption, measured by the washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w], stays above 100 watts for a continuous period of three minutes.",
|
|
"conditions": "If the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is currently off, indicating a cycle hasn't been announced yet, and the washing machine's power consumption is still above 50 watts, and the current time of day is between 7:30 AM and 10:30 PM.",
|
|
"action": "Marks the cycle as announced by turning on the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced], records the start time by setting the washing machine cycle start datetime [input_datetime.washing_machine_cycle_start] to the current moment, sends an Alexa announcement to all devices notifying that the washing machine cycle has started and stating the current power consumption, and finally logs the event with the power consumption details to the Home Assistant logbook."
|
|
},
|
|
"human_like": "Detects when the washing machine starts a cycle based on sustained high power usage during daytime hours, announces it, and logs the start time.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Washing Machine - Cycle Completion Enhanced",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] remains below 10 watts for 5 minutes. CONDITIONS: washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is on AND the elapsed time since washing machine cycle start datetime [input_datetime.washing_machine_cycle_start] is greater than 15 minutes. ACTIONS: Wait 10 minutes. THEN, if washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] is below 15 watts AND the current time is between 07:30:00 and 22:30:00, calculate the cycle duration from washing machine cycle start datetime [input_datetime.washing_machine_cycle_start] and send an Alexa announcement that the washing machine cycle is complete. THEN, turn off washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced]. THEN, wait 20 minutes. THEN, if the current time is between 07:30:00 and 22:30:00, send an Alexa reminder about the laundry. THEN, wait 40 minutes. THEN, if the current time is between 07:30:00 and 22:30:00, send a final Alexa reminder.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the washing machine's power consumption, measured by washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w], stays below 10 watts for a continuous period of 5 minutes.",
|
|
"conditions": "Two conditions must be met: first, the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] must be switched on, indicating a cycle is expected. Second, the automation checks the washing machine cycle start datetime [input_datetime.washing_machine_cycle_start] to ensure at least 15 minutes have passed since the cycle began, confirming it's a valid wash cycle and not a brief pause.",
|
|
"action": "After a 10-minute delay, the system checks if power consumption is still low (below 15 watts) and if the time is within the allowed window (between 7:30 AM and 10:30 PM). If so, it calculates how long the wash cycle took and sends an Alexa announcement stating the cycle is complete. It then turns off the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced]. Following this, after a 20-minute delay and another time check, a reminder announcement is sent. Finally, after a 40-minute delay and a final time check, a last reminder announcement is sent."
|
|
},
|
|
"human_like": "Announces when the washing machine finishes its cycle and sends follow-up reminders to move the laundry, but only during daytime hours.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dryer - Cycle Start Detection Enhanced",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer machine state [sensor.dryer_machine_state] changes to run OR when dryer job state sensor [sensor.dryer_job_state] changes to drying. CONDITIONS: (dryer machine state [sensor.dryer_machine_state] is not unknown AND is not unavailable) AND dryer machine state [sensor.dryer_machine_state] is run AND dryer cycle announced boolean [input_boolean.dryer_cycle_announced] is off AND the current time is between 07:30:00 and 22:30:00. ACTIONS: Turn on dryer cycle announced boolean [input_boolean.dryer_cycle_announced], set dryer cycle start datetime [input_datetime.dryer_cycle_start] to the current timestamp, send an Alexa announcement with a message about the dryer cycle start and expected completion time (if available), and log the event in the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the dryer machine state [sensor.dryer_machine_state] changes to 'run', or when the dryer job state sensor [sensor.dryer_job_state] changes to 'drying'.",
|
|
"conditions": "If the dryer machine state [sensor.dryer_machine_state] is not 'unknown' or 'unavailable', the dryer machine state [sensor.dryer_machine_state] is currently 'run', the dryer cycle announced boolean [input_boolean.dryer_cycle_announced] is off, and the current time is between 7:30 AM and 10:30 PM.",
|
|
"action": "The automation marks the cycle as announced by turning on the dryer cycle announced boolean [input_boolean.dryer_cycle_announced], records the start time by setting the dryer cycle start datetime [input_datetime.dryer_cycle_start] to the current time, sends an Alexa announcement with a message that includes the expected completion time if available, and logs the event in the logbook."
|
|
},
|
|
"human_like": "Announces and logs the start of a dryer cycle during daytime hours when the dryer begins running, and provides an estimated completion time if available.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Dryer - Cycle Completion Enhanced",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer machine state [sensor.dryer_machine_state] changes from run to stop OR When dryer job state sensor [sensor.dryer_job_state] changes from drying to none. CONDITIONS: (dryer cycle announced boolean [input_boolean.dryer_cycle_announced] is on) AND (dryer machine state [sensor.dryer_machine_state] is stop OR pause) AND (current time is between 07:00:00 and 22:30:00). ACTIONS: Wait for 2 minutes, then verify dryer machine state [sensor.dryer_machine_state] is stop OR pause, calculate the elapsed minutes since dryer cycle start datetime [input_datetime.dryer_cycle_start], send an announcement via notify.alexa_media_everywhere with the cycle duration, turn off dryer cycle announced boolean [input_boolean.dryer_cycle_announced], and update appliance last announcement text [input_text.appliance_last_announcement] with the completion details.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the dryer machine state [sensor.dryer_machine_state] changes from 'run' to 'stop', or when the dryer job state sensor [sensor.dryer_job_state] changes from 'drying' to 'none'.",
|
|
"conditions": "The automation checks that the dryer cycle announced boolean [input_boolean.dryer_cycle_announced] is turned on, that the dryer machine state [sensor.dryer_machine_state] is currently either 'stop' or 'pause', and that the current time is between 7:00 AM and 10:30 PM.",
|
|
"action": "After a 2-minute delay, it confirms the dryer is still stopped or paused, calculates how long the cycle lasted based on the dryer cycle start datetime [input_datetime.dryer_cycle_start], sends a voice announcement with the duration, turns off the dryer cycle announced boolean [input_boolean.dryer_cycle_announced], and logs the completion time and duration in the appliance last announcement text [input_text.appliance_last_announcement]."
|
|
},
|
|
"human_like": "Announces when the dryer cycle finishes during daytime hours, calculates the cycle duration, and logs the event.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Power Anomaly Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] power consumption exceeds 2000 watts OR When washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] power consumption exceeds 2500 watts. CONDITIONS: None. ACTIONS: Send an Alexa announcement stating the device name and its current power consumption is unusually high, and create a persistent notification with the device name, power consumption, and current time.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] reports a power consumption above 2000 watts, or when the washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] reports a power consumption above 2500 watts.",
|
|
"conditions": "There are no conditions that must be met for the automation to run.",
|
|
"action": "Sends a voice announcement to all Alexa devices stating that the triggering appliance is consuming an unusually high amount of power and requests a manual check. It also creates a persistent on-screen notification with the device name, the exact power consumption, and the time of the alert."
|
|
},
|
|
"human_like": "Alerts you via voice and notification if the dishwasher or washing machine is using an unusually high amount of electricity, helping to spot potential appliance faults.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Stuck Cycle Detection",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] remains on for 4 hours OR When washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] remains on for 3 hours. CONDITIONS: None. ACTIONS: Send an Alexa announcement stating the appliance (derived from the triggering entity ID) has been running for an unusually long time and create a persistent notification with a title '🕐 Long Cycle Alert' and a message containing the appliance name and the duration.",
|
|
"natural_language": {
|
|
"trigger": "When the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] has been turned on and stays on for four hours, or when the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] has been turned on and stays on for three hours.",
|
|
"conditions": "There are no additional conditions that must be met for this automation to run.",
|
|
"action": "Sends an announcement to all Alexa devices stating that the specific appliance (either the dishwasher or washing machine, depending on which triggered the automation) has been running for an unusually long time and asks someone to check on it. It also creates a persistent notification on the Home Assistant interface with a clock emoji and the title 'Long Cycle Alert', showing the appliance name and how many hours it has been running."
|
|
},
|
|
"human_like": "Alerts the household if the dishwasher or washing machine runs for an unusually long time, indicating a possible stuck cycle.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Smart Energy Optimization",
|
|
"result": {
|
|
"structured": "TRIGGER: At 20:30:00 daily. CONDITIONS: Day is Monday, Tuesday, Wednesday, Thursday, OR Friday AND dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is off AND washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is off. ACTIONS: Send a notification via notify.alexa_media_everywhere with a message. The message includes a general energy optimization tip about off-peak hours starting at 10 PM. If dishwasher electric consumption w sensor [sensor.dishwasher_electric_consumption_w] reports a value greater than 2 watts, the message includes a note that the dishwasher appears to be in standby and ready to run. If washing machine electric consumption w sensor [sensor.washing_machine_electric_consumption_w] reports a value greater than 2 watts, the message includes a note that the washing machine appears to be in standby and ready to run.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 8:30 PM.",
|
|
"conditions": "The automation only runs on weekdays (Monday through Friday). Additionally, it requires that the dishwasher cycle announced boolean [input_boolean.dishwasher_cycle_announced] is off and the washing machine cycle announced boolean [input_boolean.washing_machine_cycle_announced] is off, meaning no cycle announcement has been made for either appliance.",
|
|
"action": "Sends an announcement via Alexa to all devices. The message provides an energy optimization tip, reminding that off-peak hours start at 10 PM. It also checks the power consumption of the dishwasher and washing machine. If the dishwasher is using more than 2 watts, the message notes it appears to be in standby and ready. If the washing machine is using more than 2 watts, the message notes it appears to be in standby and ready. The suggestion is to run these appliances after 10 PM to save on energy costs."
|
|
},
|
|
"human_like": "On weekday evenings, this automation sends a voice reminder about off-peak energy hours and suggests running the dishwasher or washing machine if they seem ready.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Error Monitoring",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes to 'error' OR when dryer status sensor [sensor.dryer_status] changes to 'error' OR when dishwasher door status sensor [sensor.dishwasher_door_status] changes to 'error'. CONDITIONS: None. ACTIONS: Send an announcement via notify.alexa_media_everywhere with a message stating the appliance's friendly name is reporting an error, and create a persistent notification with a title '🚨 Appliance Error' and a message containing the appliance's friendly name and the current time.",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine status [sensor.washing_machine_status], the dryer status sensor [sensor.dryer_status], or the dishwasher door status sensor [sensor.dishwasher_door_status] changes its state to 'error'.",
|
|
"conditions": "There are no additional conditions that must be met for this automation to run.",
|
|
"action": "It sends an announcement to all Alexa devices stating which appliance is reporting an error and creates a persistent notification on the Home Assistant interface with an error icon, the appliance name, and the time of the error."
|
|
},
|
|
"human_like": "Announces and logs an error whenever the dishwasher, washing machine, or dryer reports a problem.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Monthly Maintenance Reminder",
|
|
"result": {
|
|
"structured": "TRIGGER: Daily at 09:00:00. CONDITIONS: The current day of the month is the 1st. ACTIONS: Send an announcement via notify.alexa_media_everywhere with the message 'Monthly appliance maintenance reminder: Please clean the dishwasher filter, check washing machine hoses, and clean the dryer lint trap.' AND Create a persistent notification with title '🔧 Monthly Appliance Maintenance' and a detailed message listing maintenance tasks.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 9:00 AM.",
|
|
"conditions": "It only proceeds if the current day of the month is the first day (e.g., the 1st).",
|
|
"action": "It sends an Alexa announcement to all devices with a monthly maintenance reminder message, and also creates a persistent notification in the Home Assistant interface with a detailed checklist of tasks."
|
|
},
|
|
"human_like": "Sends a monthly reminder on the first of the month to perform routine maintenance on household appliances.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "Appliance - Maintenance Tracking",
|
|
"result": {
|
|
"structured": "TRIGGER: When dishwasher last filter clean datetime [input_datetime.dishwasher_last_filter_clean] changes state OR when washing machine last hose check datetime [input_datetime.washing_machine_last_hose_check] changes state. CONDITIONS: None. ACTIONS: Send an announcement via notify.alexa_media_everywhere with a message thanking the user for completing the maintenance task (derived from the friendly name of the triggering entity) and set appliance last announcement text [input_text.appliance_last_announcement] to 'Maintenance logged - [current time in HH:MM format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the date and time for either the dishwasher's last filter clean [input_datetime.dishwasher_last_filter_clean] or the washing machine's last hose check [input_datetime.washing_machine_last_hose_check] is updated.",
|
|
"conditions": "There are no conditions that must be met for this automation to run.",
|
|
"action": "Sends a voice announcement to all Alexa devices thanking the user for completing the specific maintenance task (e.g., 'dishwasher filter clean' or 'washing machine hose check') and logs the time of this announcement in a text field called appliance last announcement text [input_text.appliance_last_announcement]."
|
|
},
|
|
"human_like": "Announces and logs a thank-you message whenever a major appliance maintenance task is recorded.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "washing_machine_started_detection_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes from Idle OR Standby to Running. CONDITIONS: washing machine running boolean [input_boolean.washing_machine_running] is off. ACTIONS: Turn on washing machine running boolean [input_boolean.washing_machine_running] AND Set washing machine last started datetime [input_datetime.washing_machine_last_started] to the current date and time AND Set washing machine state reason text [input_text.washing_machine_state_reason] to 'Cycle started at [current time in HH:MM format]' AND Turn off washing machine reminders stopped boolean [input_boolean.washing_machine_reminders_stopped].",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine status [sensor.washing_machine_status] changes from either 'Idle' or 'Standby' to 'Running'.",
|
|
"conditions": "The automation only runs if the washing machine running boolean [input_boolean.washing_machine_running] is currently off.",
|
|
"action": "It turns on the washing machine running boolean [input_boolean.washing_machine_running] to indicate a cycle is active, records the current time in the washing machine last started datetime [input_datetime.washing_machine_last_started], updates the washing machine state reason text [input_text.washing_machine_state_reason] with a message stating the cycle start time, and turns off the washing machine reminders stopped boolean [input_boolean.washing_machine_reminders_stopped] to ensure reminders are active."
|
|
},
|
|
"human_like": "Detects when the washing machine starts a cycle and updates the home system to track its status, start time, and re-enable reminders.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "washing_machine_finished_detection_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] remains in state 'Idle' for 2 minutes. CONDITIONS: washing machine running boolean [input_boolean.washing_machine_running] is on. ACTIONS: Turn off washing machine running boolean [input_boolean.washing_machine_running]. Set Washing Machine Last Finished [input_datetime.washing_machine_last_finished] to the current date and time. Set washing machine state reason text [input_text.washing_machine_state_reason] to 'Cycle completed at <current_time>'. Execute washing machine notify complete script [script.washing_machine_notify_complete].",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine status [sensor.washing_machine_status] reports 'Idle' and stays that way for two minutes.",
|
|
"conditions": "The automation only runs if the washing machine running boolean [input_boolean.washing_machine_running] is currently switched on.",
|
|
"action": "It turns off the washing machine running boolean [input_boolean.washing_machine_running], records the current time in the Washing Machine Last Finished [input_datetime.washing_machine_last_finished] input, updates the washing machine state reason text [input_text.washing_machine_state_reason] with a message indicating the cycle completion time, and runs the washing machine notify complete script [script.washing_machine_notify_complete]."
|
|
},
|
|
"human_like": "Detects when the washing machine has finished its cycle and updates the system, logs the finish time, and sends a notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "washing_machine_reminder_automation_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] remains on for 5 minutes OR When washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] remains on for 15 minutes OR When washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] remains on for 30 minutes. CONDITIONS: washing machine reminders stopped boolean [input_boolean.washing_machine_reminders_stopped] is off AND washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] is on. ACTIONS: Execute washing machine send reminder script [script.washing_machine_send_reminder].",
|
|
"natural_language": {
|
|
"trigger": "When the washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] has been reporting that the cycle is complete (on) for either 5 minutes, 15 minutes, or 30 minutes.",
|
|
"conditions": "The automation only runs if the washing machine reminders stopped boolean [input_boolean.washing_machine_reminders_stopped] is turned off, and the washing machine cycle complete binary sensor [binary_sensor.washing_machine_cycle_complete] is currently on.",
|
|
"action": "Runs the washing machine send reminder script [script.washing_machine_send_reminder] to send a notification."
|
|
},
|
|
"human_like": "Sends periodic reminders at 5, 15, and 30 minutes after the washing machine finishes its cycle, unless reminders have been manually stopped.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "washing_machine_sync_state_machine_v2",
|
|
"result": {
|
|
"structured": "TRIGGER: When washing machine status [sensor.washing_machine_status] changes state OR when washing machine running boolean [input_boolean.washing_machine_running] changes state. CONDITIONS: None. ACTIONS: Choose based on conditions: 1) If washing machine status [sensor.washing_machine_status] is Running, then set washing machine state select [input_select.washing_machine_state] to Running AND set washing machine state detailed select [input_select.washing_machine_state_detailed] to Washing. 2) If washing machine status [sensor.washing_machine_status] is Idle AND washing machine running boolean [input_boolean.washing_machine_running] is off AND the previous state of the trigger entity was Running OR Standby, then set washing machine state select [input_select.washing_machine_state] to Complete AND set washing machine state detailed select [input_select.washing_machine_state_detailed] to Complete. 3) If washing machine status [sensor.washing_machine_status] is Idle AND washing machine running boolean [input_boolean.washing_machine_running] is off, then set washing machine state select [input_select.washing_machine_state] to Idle AND set washing machine state detailed select [input_select.washing_machine_state_detailed] to Idle.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the washing machine status [sensor.washing_machine_status] changes, or when the washing machine running boolean [input_boolean.washing_machine_running] changes.",
|
|
"conditions": "There are no global conditions. The automation uses a choose action with internal conditions to decide which sequence to run.",
|
|
"action": "Depending on the current state, it updates the washing machine state selectors. If the status is 'Running', it sets both selectors to indicate the machine is washing. If the status is 'Idle', the running boolean is off, and the status was previously 'Running' or 'Standby', it sets both selectors to 'Complete'. Otherwise, if the status is 'Idle' and the running boolean is off, it sets both selectors to 'Idle'."
|
|
},
|
|
"human_like": "Synchronizes the washing machine's state selectors with its power monitoring sensor and running indicator, updating the display to show Running, Complete, or Idle.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "AI Suggestions - Weekly Review",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is exactly 03:00:00. CONDITIONS: The current day is Sunday. ACTIONS: Call service ai_automation_suggester.generate_suggestions with data {all_entities: true} AND Create a persistent notification with title 'Weekly Automation Review' and message 'The AI Automation Suggester has completed its weekly review. Check the suggestions sensor for new automation ideas!' with notification_id 'weekly_automation_review'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every day at 3:00 AM.",
|
|
"conditions": "The automation only proceeds if the current day is Sunday.",
|
|
"action": "It runs the AI automation suggester to scan all entities for new automation opportunities and then creates a notification to inform the user that the review is complete."
|
|
},
|
|
"human_like": "Runs a weekly AI-powered scan every Sunday morning to find new automation ideas and notifies you when it's done.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "morning_blinds_schedule",
|
|
"result": {
|
|
"structured": "TRIGGER: At 07:30:00. CONDITIONS: vacation mode boolean [input_boolean.vacation_mode] is off. ACTIONS: Execute morning routine windows script [script.morning_routine_windows].",
|
|
"natural_language": {
|
|
"trigger": "Every day at 7:30 AM.",
|
|
"conditions": "Only if the vacation mode boolean [input_boolean.vacation_mode] is turned off.",
|
|
"action": "Runs the morning routine windows script [script.morning_routine_windows]."
|
|
},
|
|
"human_like": "Opens the blinds in the morning at 7:30 AM, but only when the house is not in vacation mode.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_blinds_schedule",
|
|
"result": {
|
|
"structured": "TRIGGER: When sunset occurs with an offset of +30 minutes. CONDITIONS: vacation mode boolean [input_boolean.vacation_mode] is off. ACTIONS: Execute evening routine windows script [script.evening_routine_windows].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers 30 minutes after sunset.",
|
|
"conditions": "The automation only runs if the vacation mode boolean [input_boolean.vacation_mode] is turned off.",
|
|
"action": "It runs the evening routine windows script [script.evening_routine_windows]."
|
|
},
|
|
"human_like": "Closes the blinds in the evening, 30 minutes after sunset, but only when the house is not in vacation mode.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "blinds_battery_monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: When curtain 3 584c battery sensor [sensor.curtain_3_584c_battery] OR curtain 3 a3bd battery sensor [sensor.curtain_3_a3bd_battery] OR curtain 3 c019 battery sensor [sensor.curtain_3_c019_battery] OR curtain 3 fb63 battery sensor [sensor.curtain_3_fb63_battery] reports a battery level below 20% AND remains below that threshold for 1 hour. CONDITIONS: None. ACTIONS: Send a persistent notification with title 'Low Battery Warning' and a message containing the device's friendly name and current battery percentage, using a unique notification ID based on the triggering entity.",
|
|
"natural_language": {
|
|
"trigger": "When the battery level of any of the four specified curtain sensors (curtain 3 584c battery sensor [sensor.curtain_3_584c_battery], curtain 3 a3bd battery sensor [sensor.curtain_3_a3bd_battery], curtain 3 c019 battery sensor [sensor.curtain_3_c019_battery], or curtain 3 fb63 battery sensor [sensor.curtain_3_fb63_battery]) drops below 20% and stays there for at least one hour.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Creates a persistent notification alerting the user to the low battery. The notification's title is 'Low Battery Warning', and its message includes the friendly name of the specific device that triggered the alert and its current battery percentage. The notification is given a unique ID to prevent duplicate alerts for the same device."
|
|
},
|
|
"human_like": "Sends an alert when any of the window curtain batteries are low for an extended period, helping to ensure timely replacement.",
|
|
"complexity": "low"
|
|
}
|
|
}
|
|
] |