1302 lines
135 KiB
JSON
1302 lines
135 KiB
JSON
[
|
|
{
|
|
"id": "als_auto_error_cleanup",
|
|
"result": {
|
|
"structured": "TRIGGER: Every hour (time pattern: hours: /1). CONDITIONS: ALS system error detected [binary_sensor.als_system_error_detected] is on. ACTIONS: For each room in the list (bedroom, kitchen, bathroom, hallway, laundry, livingroom): Set variable 'room' to the current item. Set variable 'error_entity' to input_text.als_error_{{ room }}. IF (The state of error_entity is not empty, 'unknown', or 'unavailable') AND (The corresponding target brightness sensor (sensor.{{ room_name }}_target_brightness) is not 'unknown' or 'unavailable') THEN call service input_text.set_value on error_entity with an empty value.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every hour.",
|
|
"conditions": "The automation only proceeds if the ALS system error detected [binary_sensor.als_system_error_detected] is in the 'on' state, indicating an error is present.",
|
|
"action": "For each of the specified rooms (bedroom, kitchen, bathroom, hallway, laundry, livingroom), the automation checks if an error message exists for that room and if the room's target brightness sensor is reporting a valid state. If both conditions are true, it clears the error message for that room by setting its value to empty."
|
|
},
|
|
"human_like": "Automatically clears resolved lighting system error messages for each room every hour, but only if the system is still in an error state.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_teach_button_bridge",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS teach now button [input_button.als_teach_now] is pressed. CONDITIONS: None. ACTIONS: Set variable 'sel' to the current state of ALS teaching room select [input_select.als_teaching_room]. Set variable 'room_key' by mapping the value of 'sel' to a lowercase room key (default 'kitchen'). Set variable 'brightness' to the integer value of the state of ALS teaching brightness [input_number.als_teaching_brightness] (default 50). Call pyscript.als_teach_room with data: room = '{{ room_key }}', brightness = '{{ brightness }}'. Set the value of ALS last teach status [input_text.als_last_teach_status] to 'Taught {{ room_key }} → {{ brightness }}% at {{ current_time }}'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS teach now button [input_button.als_teach_now] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation first reads the currently selected room from the ALS teaching room select [input_select.als_teaching_room] and the desired brightness level from the ALS teaching brightness [input_number.als_teaching_brightness]. It then converts the room name to a specific key (like 'bedroom' or 'kitchen') and uses these values to run a script called 'als_teach_room'. Finally, it updates the ALS last teach status [input_text.als_last_teach_status] with a message confirming which room was taught, the brightness percentage, and the time the action was performed."
|
|
},
|
|
"human_like": "Activates the ALS teaching process for a selected room and brightness level when the 'teach now' button is pressed, and logs the action.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_reload_pyscript_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS reload pyscript button [input_button.als_reload_pyscript] changes state. CONDITIONS: None. ACTIONS: Reload pyscript AND set the value of ALS last teach status [input_text.als_last_teach_status] to 'Pyscript reloaded at [current time formatted as HH:MM:SS]'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS reload pyscript button [input_button.als_reload_pyscript] is pressed or its state changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It reloads the pyscript environment and then updates the ALS last teach status [input_text.als_last_teach_status] text field with a timestamp showing when the reload occurred."
|
|
},
|
|
"human_like": "Reloads the pyscript system and logs the time of the reload when a specific button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_run_test_engine_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS run test engine button [input_button.als_run_test_engine] changes state. CONDITIONS: None. ACTIONS: Execute the pyscript.parallel_test_run_now service. Then, set the value of ALS last teach status [input_text.als_last_teach_status] to 'Test engine wrote values at [current_time]' where [current_time] is the current time formatted as HH:MM:SS.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS run test engine button [input_button.als_run_test_engine] is pressed or changes state.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "First, it runs the test engine by calling the pyscript.parallel_test_run_now service. Then, it updates the ALS last teach status [input_text.als_last_teach_status] text field with a message confirming the test engine ran, including the current time."
|
|
},
|
|
"human_like": "Runs the test engine and logs the time it was executed when the designated button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "home_state_evaluation",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time pattern matches every 5 minutes OR When the state of working today sensor [binary_sensor.working_today] changes OR When the state of iPhone 15 tracker [device_tracker.iphone15] changes OR When the state of work iPhone tracker [device_tracker.work_iphone] changes. CONDITIONS: (home state select [input_select.home_state] is NOT 'Night') AND (manual home state override [input_boolean.manual_home_state_override] is NOT 'on') AND (calculated home mode sensor [sensor.calculated_home_mode] state is NOT 'unknown' AND NOT 'unavailable'). ACTIONS: Run script evaluate_home_mode.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every 5 minutes, or whenever there is a change in the state of the working today sensor [binary_sensor.working_today], the iPhone 15 tracker [device_tracker.iphone15], or the work iPhone tracker [device_tracker.work_iphone].",
|
|
"conditions": "The automation only proceeds if the home state select [input_select.home_state] is not set to 'Night', the manual home state override [input_boolean.manual_home_state_override] is not turned on, and the calculated home mode sensor [sensor.calculated_home_mode] has a valid state (it is not 'unknown' or 'unavailable').",
|
|
"action": "Calls the script named 'evaluate_home_mode' to perform the home state evaluation."
|
|
},
|
|
"human_like": "Automatically updates the home state every 5 minutes or when key device states change, unless it's night time or a manual override is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "apple_tv_night_mode_trigger",
|
|
"result": {
|
|
"structured": "TRIGGER: When bedroom media player [media_player.bedroom] changes from off, unknown, unavailable, or standby to playing, paused, or idle AND remains in the new state for 8 seconds. CONDITIONS: The current time is between 20:00:00 and 23:00:00 AND both phones home sensor [binary_sensor.both_phones_home] is on AND apple tv bedroom night control [input_boolean.apple_tv_bedroom_night_control] is on AND home state select [input_select.home_state] is NOT set to 'Night'. ACTIONS: Set home state select [input_select.home_state] to 'Night'.",
|
|
"natural_language": {
|
|
"trigger": "When the bedroom media player [media_player.bedroom] starts playing, becomes paused, or becomes idle after being off, unknown, unavailable, or in standby, and stays in that new state for 8 seconds.",
|
|
"conditions": "The automation only runs if it is between 8:00 PM and 11:00 PM, the both phones home sensor [binary_sensor.both_phones_home] indicates both phones are at home, the apple tv bedroom night control [input_boolean.apple_tv_bedroom_night_control] is turned on, and the home state select [input_select.home_state] is not already set to 'Night'.",
|
|
"action": "Changes the home state to 'Night' by setting the home state select [input_select.home_state] to that option."
|
|
},
|
|
"human_like": "Automatically switches the home to 'Night' mode when the bedroom Apple TV is used in the evening, provided both phones are home and night control is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "night_mode_11pm_failsafe",
|
|
"result": {
|
|
"structured": "TRIGGER: At 23:00:00 daily. CONDITIONS: both phones home sensor [binary_sensor.both_phones_home] is on AND home state select [input_select.home_state] is NOT set to 'Night'. ACTIONS: Set home state select [input_select.home_state] to 'Night'.",
|
|
"natural_language": {
|
|
"trigger": "Every day at 11:00 PM.",
|
|
"conditions": "If the both phones home sensor [binary_sensor.both_phones_home] indicates that both phones are at home, and the home state select [input_select.home_state] is not already set to 'Night'.",
|
|
"action": "Changes the home state to 'Night' by updating the home state select [input_select.home_state]."
|
|
},
|
|
"human_like": "Ensures the home is set to Night mode at 11 PM if everyone is home and it's not already in that state.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "learn_evening_transition_time",
|
|
"result": {
|
|
"structured": "TRIGGER: When evening mode override [input_boolean.evening_mode_override] turns on. CONDITIONS: None. ACTIONS: Set the value of manual evening elevation setting [input_number.manual_evening_elevation_setting] to the current elevation of the sun [sun.sun].",
|
|
"natural_language": {
|
|
"trigger": "When the evening mode override [input_boolean.evening_mode_override] is switched on.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It records the current sun elevation by setting the manual evening elevation setting [input_number.manual_evening_elevation_setting] to the current elevation value of the sun [sun.sun]."
|
|
},
|
|
"human_like": "Records the sun's elevation when evening mode is manually activated, to learn a preferred transition time.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "reset_evening_override_at_night",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes to Night. CONDITIONS: evening mode override [input_boolean.evening_mode_override] is on. ACTIONS: Turn off evening mode override [input_boolean.evening_mode_override].",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes to 'Night'.",
|
|
"conditions": "If the evening mode override [input_boolean.evening_mode_override] is currently switched on.",
|
|
"action": "Turns off the evening mode override [input_boolean.evening_mode_override]."
|
|
},
|
|
"human_like": "Automatically turns off the evening mode override when the home state is set to Night.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_end_early_morning_mode",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS morning transition ready [binary_sensor.als_morning_transition_ready] turns on. CONDITIONS: home state select [input_select.home_state] is set to 'Early Morning'. ACTIONS: Set home state select [input_select.home_state] to 'Day'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS morning transition ready [binary_sensor.als_morning_transition_ready] sensor becomes active (turns on).",
|
|
"conditions": "The current home state, as shown by home state select [input_select.home_state], must be 'Early Morning'.",
|
|
"action": "Changes the home state to 'Day' by updating the home state select [input_select.home_state]."
|
|
},
|
|
"human_like": "Switches the home state from 'Early Morning' to 'Day' when the morning transition sensor indicates it's time.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "sun_elevation_history_tracker",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 15 minutes (at minutes divisible by 15). CONDITIONS: None. ACTIONS: Set the value of sun elevation history [input_number.sun_elevation_history] to the current elevation attribute of sun sun [sun.sun].",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every 15 minutes, on the minute.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It records the current sun elevation by updating the sun elevation history [input_number.sun_elevation_history] input number with the latest value from the sun sun [sun.sun] entity."
|
|
},
|
|
"human_like": "Updates a history tracker with the sun's elevation every 15 minutes.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "enhanced_8am_failsafe",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is 08:00:00. CONDITIONS: (home state select [input_select.home_state] is NOT (Day OR Away)) AND (both phones home sensor [binary_sensor.both_phones_home] is on). ACTIONS: Set home state select [input_select.home_state] to Day AND log an event '8 AM Failsafe' with message 'WARNING: Forced Day mode - system was stuck in [previous home state] mode'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers daily at 8:00 AM.",
|
|
"conditions": "It checks if the home state select [input_select.home_state] is not currently set to either 'Day' or 'Away' mode, and also verifies that the both phones home sensor [binary_sensor.both_phones_home] is on, indicating both phones are at home.",
|
|
"action": "It forces the home state to 'Day' mode by selecting that option on the home state select [input_select.home_state] and creates a logbook entry named '8 AM Failsafe' with a warning message stating the system was forced into Day mode from its previous state."
|
|
},
|
|
"human_like": "Ensures the home is set to Day mode at 8 AM if it's stuck in another mode and both phones are home.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "sleep_in_ramp_start",
|
|
"result": {
|
|
"structured": "TRIGGER: When sleep in ramp active [input_boolean.sleep_in_ramp_active] turns on. CONDITIONS: sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] is on AND home state select [input_select.home_state] is Night. ACTIONS: Set variables based on sun elevation, sun elevation rate sensor [sensor.sun_elevation_rate], current day threshold [input_number.current_day_threshold], minutes to day mode elevation [sensor.minutes_to_day_mode_elevation], current time, workday ramp base duration [input_number.workday_ramp_base_duration], offday ramp base duration [input_number.offday_ramp_base_duration], and current season sensor [sensor.current_season] to calculate a final ramp duration. Then, set ramp start time [input_datetime.ramp_start_time] to the current time. Set calculated ramp duration [input_number.calculated_ramp_duration] to the final calculated duration. Set ramp calculated end time [input_datetime.ramp_calculated_end_time] to the current time plus the final duration in minutes. Set first kitchen motion today [input_datetime.first_kitchen_motion_today] to the current time. Turn on daily motion lock [input_boolean.daily_motion_lock]. Change home state select [input_select.home_state] to Early Morning.",
|
|
"natural_language": {
|
|
"trigger": "When the sleep in ramp active [input_boolean.sleep_in_ramp_active] is turned on.",
|
|
"conditions": "The sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] must be on, and the home state select [input_select.home_state] must be set to Night.",
|
|
"action": "The automation calculates a smart duration for the sleep-in ramp using multiple factors: the current sun elevation, the rate of change of the sun, the target elevation threshold, the time until a specific sun elevation is reached, the current time to determine if it's a work window, and the current season. Based on these calculations, it determines a final ramp duration. It then records the start time, stores the calculated duration, calculates and records the end time, logs the current time as the first kitchen motion of the day, activates a daily motion lock, and changes the home state to Early Morning."
|
|
},
|
|
"human_like": "Starts a smart morning wake-up light sequence when activated at night, calculating the ramp duration based on sunrise timing, day of the week, and season.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "sleep_in_ramp_complete",
|
|
"result": {
|
|
"structured": "TRIGGER: When sleep in ramp active [input_boolean.sleep_in_ramp_active] is on AND sleep in ramp progress [sensor.sleep_in_ramp_progress] is greater than or equal to 100% AND this condition remains true for 5 seconds OR When calculated home mode [sensor.calculated_home_mode] changes to Day. CONDITIONS: sleep in ramp active [input_boolean.sleep_in_ramp_active] is on. ACTIONS: Set variable 'is_non_work_day' based on first kitchen motion today [input_datetime.first_kitchen_motion_today] and working today sensor [binary_sensor.working_today]. Turn off sleep in ramp active [input_boolean.sleep_in_ramp_active]. Set home state select [input_select.home_state] to Day. IF (is_non_work_day is true AND kitchen WLED enable [input_boolean.kitchen_wled_enable] is on) THEN turn off sink WLED light [light.sink_wled] AND turn off fridge strip light [light.frig_strip] AND log to logbook. Log to logbook with completion details.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in two ways. First, when the sleep in ramp is active and its progress sensor reaches or exceeds 100%, and this state holds for five seconds. Second, when the overall home mode changes to 'Day'.",
|
|
"conditions": "The automation only runs if the sleep in ramp is currently active.",
|
|
"action": "The automation first calculates whether today is a non-work day. This is determined by checking the time of the first kitchen motion today; if it occurred outside a specific early morning work window, or if the motion time is unknown, it checks a separate 'working today' sensor. It then deactivates the sleep in ramp, sets the home state to 'Day', and logs the completion. If today is a non-work day and the kitchen WLED feature is enabled, it also turns off the sink and fridge strip lights and logs that action."
|
|
},
|
|
"human_like": "Completes the 'sleep-in' morning routine by turning off the ramp and setting the home to Day mode, optionally turning off decorative kitchen lights on non-work days.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "daily_motion_reset",
|
|
"result": {
|
|
"structured": "TRIGGER: At midnight (00:00:00). CONDITIONS: None. ACTIONS: Turn off daily motion lock [input_boolean.daily_motion_lock] AND Clear the date/time value of first kitchen motion today [input_datetime.first_kitchen_motion_today].",
|
|
"natural_language": {
|
|
"trigger": "Every day at midnight.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Turns off the daily motion lock [input_boolean.daily_motion_lock] and resets the first kitchen motion today [input_datetime.first_kitchen_motion_today] tracker by clearing its value."
|
|
},
|
|
"human_like": "Resets the daily motion tracking system at midnight to prepare for a new day.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_temperature_ramp_start",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes to Evening. CONDITIONS: enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] is on AND home state select [input_select.home_state] is Evening. ACTIONS: Set evening ramp started [input_datetime.evening_ramp_started] to the current date and time AND set evening ramp start temp [input_number.evening_ramp_start_temp] to the integer value of intelligent temperature master [sensor.intelligent_temperature_master] (defaulting to 4000).",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes to 'Evening'.",
|
|
"conditions": "The enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] must be turned on, and the home state select [input_select.home_state] must currently be set to 'Evening'.",
|
|
"action": "Records the current time in the evening ramp started [input_datetime.evening_ramp_started] input and sets the evening ramp start temp [input_number.evening_ramp_start_temp] to the current value of the intelligent temperature master [sensor.intelligent_temperature_master] sensor, using 4000 as a fallback if the value is not available."
|
|
},
|
|
"human_like": "Starts the evening temperature ramp by recording the start time and the current master temperature when the home enters Evening mode, provided the ramp feature is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_temperature_ramp_apply_existing",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes to Evening. CONDITIONS: enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] is on. ACTIONS: Wait 2 seconds. THEN, IF (lamp 1 [light.lamp_1] is on OR lamp 2 [light.lamp_2] is on) THEN turn on lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] with color temperature from evening temperature ramp sensor [sensor.evening_temperature_ramp] (default 4000K) and a 10-second transition. IF closet light [light.closet] is on THEN turn on closet light [light.closet] with color temperature from evening temperature ramp sensor [sensor.evening_temperature_ramp] (default 4000K) and a 10-second transition.",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes to Evening.",
|
|
"conditions": "The enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] must be switched on.",
|
|
"action": "After a 2-second delay, if either lamp 1 [light.lamp_1] or lamp 2 [light.lamp_2] is currently on, both lamps are adjusted to a warmer color temperature based on the value from the evening temperature ramp sensor [sensor.evening_temperature_ramp], with a smooth 10-second transition. Separately, if the closet light [light.closet] is on, it is also adjusted to the same color temperature with a 10-second transition."
|
|
},
|
|
"human_like": "When Evening mode starts, it gradually warms the color of any lights that are already on, making the lighting more comfortable for the evening.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_temperature_ramp_cleanup",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes from Evening OR When the time is 00:00:00 (midnight). CONDITIONS: enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] is on. ACTIONS: Clear the datetime value of evening ramp started [input_datetime.evening_ramp_started] AND Set the value of evening ramp start temp [input_number.evening_ramp_start_temp] to 4000.",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes away from the 'Evening' mode, or when the clock strikes midnight at 00:00:00.",
|
|
"conditions": "The automation only runs if the enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] is switched on.",
|
|
"action": "It resets the automation's tracking data by clearing the evening ramp started [input_datetime.evening_ramp_started] timestamp and setting the evening ramp start temp [input_number.evening_ramp_start_temp] to a value of 4000."
|
|
},
|
|
"human_like": "Resets the evening temperature ramp data when the home leaves 'Evening' mode or at midnight, provided the ramp feature is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_smooth_temperature_ramp_start",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes to Evening OR when evening temperature ramp sensor [sensor.evening_temperature_ramp] changes state. CONDITIONS: home state select [input_select.home_state] is Evening AND enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] is on AND (lamp 1 [light.lamp_1] is on OR lamp 2 [light.lamp_2] is on OR closet light [light.closet] is on). ACTIONS: Start script Evening Smooth Temperature Ramp [script.evening_smooth_temperature_ramp].",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes to 'Evening', or when the evening temperature ramp sensor [sensor.evening_temperature_ramp] changes its value.",
|
|
"conditions": "The home state select [input_select.home_state] must be set to 'Evening', the enable evening temperature ramp [input_boolean.enable_evening_temperature_ramp] must be turned on, and at least one of the following lights must be on: lamp 1 [light.lamp_1], lamp 2 [light.lamp_2], or the closet light [light.closet].",
|
|
"action": "Starts the script called Evening Smooth Temperature Ramp [script.evening_smooth_temperature_ramp]."
|
|
},
|
|
"human_like": "Starts a gradual color temperature change for the evening lights when the home is in 'Evening' mode, the feature is enabled, and at least one relevant light is on.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "evening_smooth_temperature_ramp_stop",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes from Evening. CONDITIONS: None. ACTIONS: Turn off Evening Smooth Temperature Ramp [script.evening_smooth_temperature_ramp] AND log a message to the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the home state select [input_select.home_state] changes away from the 'Evening' setting.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Stops the Evening Smooth Temperature Ramp [script.evening_smooth_temperature_ramp] and records a log entry confirming the action."
|
|
},
|
|
"human_like": "Stops the evening temperature adjustment routine when the home state is no longer set to 'Evening'.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "kitchen_pyscript_morning_ramp_trigger",
|
|
"result": {
|
|
"structured": "TRIGGER: When kitchen motion sensor P1 [binary_sensor.aqara_motion_sensor_p1_occupancy] OR kitchen iris fridge occupancy [binary_sensor.kitchen_iris_frig_occupancy] detects motion (state changes to 'on'). CONDITIONS: sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] is on AND home state select [input_select.home_state] is set to 'Night'. ACTIONS: Execute the pyscript action 'morning_ramp_first_motion', passing the triggering entity's ID as the 'sensor' data variable.",
|
|
"natural_language": {
|
|
"trigger": "When either the kitchen motion sensor P1 [binary_sensor.aqara_motion_sensor_p1_occupancy] or the kitchen iris fridge occupancy [binary_sensor.kitchen_iris_frig_occupancy] detects motion.",
|
|
"conditions": "The 'sleep in ramp system enable' [input_boolean.sleep_in_ramp_system_enable] must be turned on, and the overall home state [input_select.home_state] must be set to 'Night'.",
|
|
"action": "Runs a PyScript routine called 'morning_ramp_first_motion', providing the specific motion sensor that triggered the automation as an input."
|
|
},
|
|
"human_like": "Starts a morning lighting ramp-up script when motion is detected in the kitchen during the night, provided the system is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "livingroom_auto_lights_main",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes state OR When living room target brightness [sensor.living_room_target_brightness] changes state. CONDITIONS: living room auto lights enable [input_boolean.livingroom_auto_lights_enable] is on AND home state select [input_select.home_state] is NOT Away. ACTIONS: Set variables: target_brightness from living room target brightness [sensor.living_room_target_brightness] and target_temperature from evening temperature ramp sensor [sensor.evening_temperature_ramp]. IF target_brightness > 0 THEN turn on lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] with brightness_pct = target_brightness and color_temp_kelvin = target_temperature. IF target_brightness == 0 THEN turn off lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] with a transition of 5 seconds.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers whenever the home state select [input_select.home_state] changes, or when the living room target brightness [sensor.living_room_target_brightness] sensor updates its value.",
|
|
"conditions": "The automation only runs if the living room auto lights enable [input_boolean.livingroom_auto_lights_enable] is switched on, and the home state select [input_select.home_state] is not set to 'Away'.",
|
|
"action": "It first reads the target brightness from the living room target brightness [sensor.living_room_target_brightness] sensor and the target color temperature from the evening temperature ramp sensor [sensor.evening_temperature_ramp]. If the target brightness is greater than zero, it turns on lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] to that brightness percentage and color temperature. If the target brightness is zero, it turns off both lamps with a 5-second fade-out."
|
|
},
|
|
"human_like": "Automatically adjusts the living room lights based on the target brightness and home state, keeping them off when the home is set to 'Away'.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "living_room_weather_transition",
|
|
"result": {
|
|
"structured": "TRIGGER: When living room target brightness [sensor.living_room_target_brightness] changes state. CONDITIONS: enable weather transitions [input_boolean.enable_weather_transitions] is on AND (lamp 1 [light.lamp_1] is on OR lamp 2 [light.lamp_2] is on) AND home state select [input_select.home_state] is Day AND the absolute difference between the new and previous brightness values is greater than 10. ACTIONS: Set variable transition_seconds to the value of weather transition duration minutes [input_number.weather_transition_duration_minutes] multiplied by 60. Then, turn on lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] to the new brightness percentage (the trigger's target state) using a transition lasting transition_seconds.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the living room target brightness [sensor.living_room_target_brightness] sensor reports a new value.",
|
|
"conditions": "The automation is only active if the feature is enabled via the enable weather transitions [input_boolean.enable_weather_transitions] switch. At least one of the living room lamps (lamp 1 [light.lamp_1] or lamp 2 [light.lamp_2]) must already be on. The overall home state, as indicated by home state select [input_select.home_state], must be set to 'Day'. Finally, the change in the target brightness value must be significant, meaning the absolute difference between the new and old brightness levels is more than 10 percent.",
|
|
"action": "First, it calculates a transition duration in seconds based on the value set in weather transition duration minutes [input_number.weather_transition_duration_minutes]. Then, it smoothly adjusts both lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] to the new target brightness level over the calculated period."
|
|
},
|
|
"human_like": "Smoothly adjusts the brightness of the living room lamps when the weather-based target brightness changes significantly during the day, creating a gradual transition.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "living_room_evening_ramp_control",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes to Evening OR When home state select [input_select.home_state] changes from Evening. CONDITIONS: living room evening ramp enabled [input_boolean.living_room_evening_ramp_enabled] is on. ACTIONS: If the trigger was the change to Evening, then start the ALS Living Room Evening Ramp [script.als_living_room_evening_ramp]. If the trigger was the change from Evening, then stop the ALS Living Room Evening Ramp [script.als_living_room_evening_ramp].",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers when the home state select [input_select.home_state] changes to 'Evening', or when it changes away from 'Evening'.",
|
|
"conditions": "The automation only runs if the living room evening ramp enabled [input_boolean.living_room_evening_ramp_enabled] is switched on.",
|
|
"action": "If the home state changed to 'Evening', the automation starts the ALS Living Room Evening Ramp [script.als_living_room_evening_ramp]. If the home state changed from 'Evening' to something else, the automation stops the ALS Living Room Evening Ramp [script.als_living_room_evening_ramp]."
|
|
},
|
|
"human_like": "Manages the living room's evening lighting ramp by starting it when the home enters 'Evening' mode and stopping it when it leaves that mode, provided the feature is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "laundry_motion_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When laundry iris occupancy [binary_sensor.laundry_iris_occupancy] changes to on. CONDITIONS: (laundry motion automation [input_boolean.laundry_motion_automation] is on) AND (home state select [input_select.home_state] is NOT Away) AND (the previous state of laundry iris occupancy [binary_sensor.laundry_iris_occupancy] is known and not unavailable). ACTIONS: Turn on laundry room light [light.laundry_room] with brightness percentage set to the integer value of laundry room target brightness [sensor.laundry_room_target_brightness].",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected, indicated by the laundry iris occupancy [binary_sensor.laundry_iris_occupancy] turning on.",
|
|
"conditions": "The automation must be enabled via the laundry motion automation [input_boolean.laundry_motion_automation] switch, the home state select [input_select.home_state] must not be set to 'Away', and the motion sensor's previous state must be a valid, known state (not 'unknown' or 'unavailable').",
|
|
"action": "Turns on the laundry room light [light.laundry_room], setting its brightness to the percentage value stored in the laundry room target brightness [sensor.laundry_room_target_brightness] sensor."
|
|
},
|
|
"human_like": "Automatically turns on the laundry room light with a specific brightness when motion is detected, but only if the automation is enabled and the home is not in 'Away' mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "laundry_motion_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When laundry iris occupancy [binary_sensor.laundry_iris_occupancy] stops detecting motion (state changes to 'off') AND remains in that state for a duration equal to the value of laundry motion timeout [input_number.laundry_motion_timeout] seconds (default 30). CONDITIONS: laundry motion automation [input_boolean.laundry_motion_automation] is 'on' AND laundry room light [light.laundry_room] is 'on' AND home state select [input_select.home_state] is NOT 'Away'. ACTIONS: Turn off laundry room light [light.laundry_room] with a transition time of 3 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When the laundry iris occupancy [binary_sensor.laundry_iris_occupancy] sensor reports no motion and stays in that state for a period of time. The length of this period is determined by the value of the laundry motion timeout [input_number.laundry_motion_timeout] input, defaulting to 30 seconds.",
|
|
"conditions": "The automation must be enabled, which is indicated by the laundry motion automation [input_boolean.laundry_motion_automation] being set to 'on'. The laundry room light [light.laundry_room] must also be on. Finally, the overall home state, as set by home state select [input_select.home_state], must not be 'Away'.",
|
|
"action": "Turns off the laundry room light [light.laundry_room] with a smooth, 3-second fade-out transition."
|
|
},
|
|
"human_like": "Automatically turns off the laundry room lights a short time after motion is no longer detected, but only when someone is home.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "laundry_mode_transitions",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes state. CONDITIONS: None. ACTIONS: If the new state of home state select [input_select.home_state] is 'Away', then turn off laundry room light [light.laundry_room]. OR If the new state of home state select [input_select.home_state] is 'Night' AND laundry room light [light.laundry_room] is on, then turn on laundry room light [light.laundry_room] with brightness percentage set to the integer value of laundry room target brightness [sensor.laundry_room_target_brightness] and a transition time of 5 seconds.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the home state select [input_select.home_state] changes to a new value.",
|
|
"conditions": "There are no separate conditions; the logic is embedded within the action choices.",
|
|
"action": "If the home mode changes to 'Away', the automation turns off the laundry room light [light.laundry_room]. If the home mode changes to 'Night' and the laundry room light [light.laundry_room] is already on, it adjusts the light to a specific brightness level (taken from the laundry room target brightness [sensor.laundry_room_target_brightness] sensor) over a 5-second fade."
|
|
},
|
|
"human_like": "Adjusts the laundry room light based on the home mode, turning it off when away and dimming it to a preset level at night if it's already on.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "hallway_motion_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When hallway iris occupancy [binary_sensor.hallway_iris_occupancy] changes to on. CONDITIONS: hallway motion automation [input_boolean.hallway_motion_automation] is on AND home state select [input_select.home_state] is NOT Away AND the previous state of hallway iris occupancy [binary_sensor.hallway_iris_occupancy] is neither unknown nor unavailable. ACTIONS: Turn on hallway light [light.hallway] with brightness percentage set to the integer value of hallway target brightness [sensor.hallway_target_brightness].",
|
|
"natural_language": {
|
|
"trigger": "When the hallway iris occupancy [binary_sensor.hallway_iris_occupancy] sensor detects motion (changes to 'on').",
|
|
"conditions": "The hallway motion automation [input_boolean.hallway_motion_automation] must be enabled (set to 'on'), the home state select [input_select.home_state] must not be set to 'Away', and the motion sensor's previous state must be a valid reading (not 'unknown' or 'unavailable').",
|
|
"action": "Turn on the hallway light [light.hallway] and set its brightness to the percentage value stored in the hallway target brightness [sensor.hallway_target_brightness] sensor."
|
|
},
|
|
"human_like": "Turns on the hallway light to a pre-set brightness level when motion is detected, but only if the automation is enabled and the home is not in 'Away' mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "hallway_motion_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When hallway iris occupancy [binary_sensor.hallway_iris_occupancy] remains off for a duration defined by the hallway motion timeout [input_number.hallway_motion_timeout] value (default 30 seconds). CONDITIONS: (hallway motion automation [input_boolean.hallway_motion_automation] is on) AND (hallway light [light.hallway] is on) AND (NOT (home state select [input_select.home_state] is Away)). ACTIONS: Turn off hallway light [light.hallway] with a 3-second transition.",
|
|
"natural_language": {
|
|
"trigger": "When the hallway iris occupancy [binary_sensor.hallway_iris_occupancy] sensor reports no motion for a period of time. This timeout period is set by the hallway motion timeout [input_number.hallway_motion_timeout] number entity, defaulting to 30 seconds.",
|
|
"conditions": "The hallway motion automation [input_boolean.hallway_motion_automation] must be switched on, the hallway light [light.hallway] must currently be on, and the home state select [input_select.home_state] must not be set to 'Away'.",
|
|
"action": "Turns off the hallway light [light.hallway] with a smooth 3-second fade-out transition."
|
|
},
|
|
"human_like": "Automatically turns off the hallway lights a short time after motion is no longer detected, but only when the home is not in 'Away' mode and the automation is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bedroom_motion_lights",
|
|
"result": {
|
|
"structured": "TRIGGER: When bedroom X occupancy [binary_sensor.bedroom_x_occupancy] changes to on (motion detected). CONDITIONS: bedroom motion automation [input_boolean.bedroom_motion_automation] is on AND home state select [input_select.home_state] is NOT Away AND the previous state of the trigger entity (bedroom X occupancy [binary_sensor.bedroom_x_occupancy]) is known and not unavailable. ACTIONS: Turn on closet light [light.closet] with brightness percentage set to the integer value of bedroom target brightness [sensor.bedroom_target_brightness] and color temperature in Kelvin set to the integer value of the 'temperature' attribute of bedroom target brightness [sensor.bedroom_target_brightness] (default 3000 if not available).",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected, indicated by the bedroom X occupancy [binary_sensor.bedroom_x_occupancy] sensor turning on.",
|
|
"conditions": "The automation is enabled, as the bedroom motion automation [input_boolean.bedroom_motion_automation] is set to on. The home is not in 'Away' mode, meaning the home state select [input_select.home_state] is not set to Away. The motion sensor's previous state was valid and not in an unknown or unavailable state.",
|
|
"action": "Turns on the closet light [light.closet], setting its brightness to the percentage value stored in the bedroom target brightness [sensor.bedroom_target_brightness] sensor and its color temperature to the value from that sensor's 'temperature' attribute, defaulting to 3000 Kelvin if the attribute is not available."
|
|
},
|
|
"human_like": "Turns on the closet light with a preset brightness and color when motion is detected in the bedroom, provided the home is not in 'Away' mode and the automation is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bedroom_motion_off",
|
|
"result": {
|
|
"structured": "TRIGGER: When bedroom X occupancy [binary_sensor.bedroom_x_occupancy] changes to 'off' and remains off for a duration defined by the bedroom motion timeout [input_number.bedroom_motion_timeout] (default 30 seconds). CONDITIONS: bedroom motion automation [input_boolean.bedroom_motion_automation] is 'on' AND closet light [light.closet] is 'on' AND home state select [input_select.home_state] is NOT 'Away'. ACTIONS: Turn off closet light [light.closet] with a transition time of 2 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When the bedroom X occupancy [binary_sensor.bedroom_x_occupancy] sensor stops detecting motion and remains in the 'off' state for a configurable period of time (the duration is taken from the bedroom motion timeout [input_number.bedroom_motion_timeout] setting, defaulting to 30 seconds).",
|
|
"conditions": "The bedroom motion automation [input_boolean.bedroom_motion_automation] must be switched on, the closet light [light.closet] must currently be on, and the overall home state select [input_select.home_state] must not be set to 'Away'.",
|
|
"action": "Turns off the closet light [light.closet], fading it out over a period of 2 seconds."
|
|
},
|
|
"human_like": "Automatically turns off the closet light a short time after motion is no longer detected, but only when the home is not set to 'Away' and the automation is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bedroom_mode_transitions",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes state. CONDITIONS: None. ACTIONS: If the new state of home state select [input_select.home_state] is 'Away', then turn off closet light [light.closet]. OR If the new state of home state select [input_select.home_state] is 'Night' AND closet light [light.closet] is on, then turn on closet light [light.closet] with brightness percentage set to the integer value from bedroom target brightness [sensor.bedroom_target_brightness] and color temperature in Kelvin set to the integer value from the 'temperature' attribute of bedroom target brightness [sensor.bedroom_target_brightness], defaulting to 3000.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the home state select [input_select.home_state] changes.",
|
|
"conditions": "There are no additional conditions; the actions are determined solely by the new state of the home mode.",
|
|
"action": "If the home mode changes to 'Away', the closet light [light.closet] is turned off. If the home mode changes to 'Night' and the closet light [light.closet] is currently on, it is turned on to a specific brightness and color temperature. The brightness is taken from the bedroom target brightness [sensor.bedroom_target_brightness] sensor, and the color temperature is taken from that same sensor's 'temperature' attribute, with a default fallback of 3000 Kelvin."
|
|
},
|
|
"human_like": "Adjusts the closet light based on the home mode, turning it off when leaving or setting a night-time ambiance when needed.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_motion_on",
|
|
"result": {
|
|
"structured": "TRIGGER: When bathroom motion combined [binary_sensor.bathroom_motion_combined] changes to 'on'. CONDITIONS: (bathroom motion automation [input_boolean.bathroom_motion_automation] is 'on') AND (NOT (home state select [input_select.home_state] is 'Away')) AND (The previous state of the triggering entity is not 'unknown' or 'unavailable'). ACTIONS: Turn on bathroom 2 main lights [light.bathroom_2_main_lights] with brightness percentage set to the integer value of bathroom target brightness [sensor.bathroom_target_brightness].",
|
|
"natural_language": {
|
|
"trigger": "When motion is detected in the bathroom, as indicated by the bathroom motion combined [binary_sensor.bathroom_motion_combined] sensor turning on.",
|
|
"conditions": "The automation must be enabled via the bathroom motion automation [input_boolean.bathroom_motion_automation] switch, the home must not be in the 'Away' mode as set by home state select [input_select.home_state], and the motion sensor's previous state must have been a valid reading (not 'unknown' or 'unavailable').",
|
|
"action": "Turns on the main bathroom lights, bathroom 2 main lights [light.bathroom_2_main_lights], setting their brightness to the target level defined by the bathroom target brightness [sensor.bathroom_target_brightness] sensor."
|
|
},
|
|
"human_like": "Automatically turns on the bathroom lights to a preset brightness when motion is detected, but only when someone is home and the automation is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_door_closes",
|
|
"result": {
|
|
"structured": "TRIGGER: When bathroom contact sensor [binary_sensor.bathroom_contact_contact] becomes closed (off) AND remains so for 2 seconds. CONDITIONS: (bathroom motion automation [input_boolean.bathroom_motion_automation] is on) AND (NOT (home state select [input_select.home_state] is Away)). ACTIONS: Turn on bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] AND Turn on bathroom 2 main lights [light.bathroom_2_main_lights] to 100% brightness.",
|
|
"natural_language": {
|
|
"trigger": "When the bathroom contact sensor [binary_sensor.bathroom_contact_contact] detects the door has been closed for at least two seconds.",
|
|
"conditions": "The bathroom motion automation [input_boolean.bathroom_motion_automation] must be enabled, and the home state select [input_select.home_state] must not be set to 'Away'.",
|
|
"action": "Activates a hold mode by turning on bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] and turns on the bathroom 2 main lights [light.bathroom_2_main_lights] to full brightness."
|
|
},
|
|
"human_like": "When the bathroom door closes, it turns the lights on to full brightness and enables a hold mode, provided the home is not in 'Away' state and motion automation is active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_door_opens",
|
|
"result": {
|
|
"structured": "TRIGGER: When bathroom contact sensor [binary_sensor.bathroom_contact_contact] becomes open (on) and remains so for 2 seconds. CONDITIONS: (bathroom motion automation [input_boolean.bathroom_motion_automation] is on) AND (bathroom 2 main lights [light.bathroom_2_main_lights] is on) AND NOT (home state select [input_select.home_state] is Away). ACTIONS: Turn off bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] AND turn on bathroom 2 main lights [light.bathroom_2_main_lights] with brightness percentage set to the integer value of bathroom target brightness [sensor.bathroom_target_brightness] and a transition time of 5 seconds.",
|
|
"natural_language": {
|
|
"trigger": "When the bathroom contact sensor [binary_sensor.bathroom_contact_contact] detects the door has been open for at least 2 seconds.",
|
|
"conditions": "If the bathroom motion automation [input_boolean.bathroom_motion_automation] is enabled, the bathroom 2 main lights [light.bathroom_2_main_lights] are currently on, and the home state select [input_select.home_state] is not set to 'Away'.",
|
|
"action": "Disables the hold mode for 100% brightness by turning off bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold], and then adjusts the bathroom 2 main lights [light.bathroom_2_main_lights] to the target brightness level defined by bathroom target brightness [sensor.bathroom_target_brightness], fading the change over 5 seconds."
|
|
},
|
|
"human_like": "When the bathroom door opens, it disables the full brightness hold and smoothly returns the lights to their smart brightness setting, provided the home is not in 'Away' mode.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_motion_clear",
|
|
"result": {
|
|
"structured": "TRIGGER: When bathroom motion combined [binary_sensor.bathroom_motion_combined] remains off (no motion) for 30 seconds. CONDITIONS: (bathroom motion automation [input_boolean.bathroom_motion_automation] is on) AND (bathroom 2 main lights [light.bathroom_2_main_lights] is on) AND (bathroom contact sensor [binary_sensor.bathroom_contact_contact] is on). ACTIONS: Turn off bathroom 2 main lights [light.bathroom_2_main_lights] with a 3-second transition.",
|
|
"natural_language": {
|
|
"trigger": "When the bathroom motion combined [binary_sensor.bathroom_motion_combined] sensor detects no motion for a continuous period of 30 seconds.",
|
|
"conditions": "If the bathroom motion automation [input_boolean.bathroom_motion_automation] is enabled, the bathroom 2 main lights [light.bathroom_2_main_lights] are currently on, and the bathroom contact sensor [binary_sensor.bathroom_contact_contact] reports that the door is open.",
|
|
"action": "Turn off the bathroom 2 main lights [light.bathroom_2_main_lights] with a smooth 3-second fade-out."
|
|
},
|
|
"human_like": "Automatically turns off the bathroom lights 30 seconds after motion stops, but only when the door is open and the automation is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "bathroom_hold_mode_timeout",
|
|
"result": {
|
|
"structured": "TRIGGER: When bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] turns on and remains on for a duration equal to the value of bathroom hold timeout [input_number.bathroom_hold_timeout] (default 30 minutes). CONDITIONS: bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] is on. ACTIONS: Turn off bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] AND log a message '⏰ Hold mode timed out and was automatically disabled.' to the logbook under the name 'Bathroom Hold Mode'.",
|
|
"natural_language": {
|
|
"trigger": "When the bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] is switched on and stays on for a specific amount of time. This duration is taken from the bathroom hold timeout [input_number.bathroom_hold_timeout] setting, defaulting to 30 minutes.",
|
|
"conditions": "The automation only proceeds if the bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] is still on when the trigger condition is met.",
|
|
"action": "Turns off the bathroom 100 percent hold [input_boolean.bathroom_100_percent_hold] and creates an entry in the logbook with the name 'Bathroom Hold Mode' and the message '⏰ Hold mode timed out and was automatically disabled.'"
|
|
},
|
|
"human_like": "Acts as a safety timer to automatically turn off the bathroom's 100% hold mode after a set period to prevent it from being left on indefinitely.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_system_error_capture",
|
|
"result": {
|
|
"structured": "TRIGGER: When a system log event occurs with level ERROR OR When a system log event occurs with level CRITICAL OR When a system log event occurs with level WARNING. CONDITIONS: ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] is on. ACTIONS: Call the pyscript.process_als_error service with data: message (from trigger event), level (from trigger event), and source (from trigger event name or 'Unknown').",
|
|
"natural_language": {
|
|
"trigger": "When the Home Assistant system logs generate an event with a level of ERROR, CRITICAL, or WARNING.",
|
|
"conditions": "The automation only runs if the ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] switch is turned on.",
|
|
"action": "Sends the error details, including the message, severity level, and source, to a custom script called pyscript.process_als_error for further classification and handling."
|
|
},
|
|
"human_like": "Captures and processes system log warnings and errors for diagnostics when the feature is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "routine_timing_capture",
|
|
"result": {
|
|
"structured": "TRIGGER: When lamp 1 [light.lamp_1] OR lamp 2 [light.lamp_2] remains off for 5 seconds. CONDITIONS: home state select [input_select.home_state] is Early Morning AND lamp 1 [light.lamp_1] is off AND lamp 2 [light.lamp_2] is off AND (the time since lamp 1 [light.lamp_1] last changed state is greater than 30 seconds AND the time since lamp 2 [light.lamp_2] last changed state is greater than 30 seconds). ACTIONS: Set variable 'completion_time' to the current time and variable 'day_type' to 'work' if workday sensor [binary_sensor.workday_sensor] is on, otherwise 'weekend'. Then, call the pyscript action 'store_routine_timing' with the completion time and a confidence of 90.0%. Then, log a logbook entry titled 'Routine Learning' with a message. Then, if ALS verbose logging [input_boolean.als_verbose_logging] is on, create a persistent notification.",
|
|
"natural_language": {
|
|
"trigger": "When either lamp 1 [light.lamp_1] or lamp 2 [light.lamp_2] has been turned off and remains off for at least five seconds.",
|
|
"conditions": "The home must be in 'Early Morning' mode, as indicated by home state select [input_select.home_state]. Both lamp 1 [light.lamp_1] and lamp 2 [light.lamp_2] must currently be off. Additionally, both lights must have been turned off more than 30 seconds ago, ensuring they have been off for a stable period.",
|
|
"action": "The automation records the current time as the completion time and determines if it's a workday or weekend based on the workday sensor [binary_sensor.workday_sensor]. It then stores this routine timing data with a 90% confidence score, logs the event in the logbook, and, if ALS verbose logging [input_boolean.als_verbose_logging] is enabled, it also creates a persistent notification with the details."
|
|
},
|
|
"human_like": "Learns and logs the typical time when the living room lights are turned off in the early morning, helping to establish a routine pattern.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "manual_routine_completion",
|
|
"result": {
|
|
"structured": "TRIGGER: When manual routine capture [input_boolean.manual_routine_capture] turns on. CONDITIONS: home state select [input_select.home_state] is in state 'Early Morning'. ACTIONS: Set variable 'completion_time' to the current time formatted as HH:MM:SS, then call the pyscript action 'store_routine_timing' with the completion_time_str and a confidence_pct of 75.0, then log a message '📊 Manual routine completion captured at {{ completion_time }}' to the logbook, then turn off manual routine capture [input_boolean.manual_routine_capture].",
|
|
"natural_language": {
|
|
"trigger": "When the manual routine capture [input_boolean.manual_routine_capture] is turned on.",
|
|
"conditions": "The home state select [input_select.home_state] must be set to 'Early Morning'.",
|
|
"action": "The automation records the current time, stores this routine timing data with 75% confidence via a pyscript, logs a message to the logbook confirming the capture, and then turns the manual routine capture switch back off."
|
|
},
|
|
"human_like": "Manually logs the completion time of a morning routine when the home is in 'Early Morning' state.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "health_pills_auto_refresh",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following entities changes state: ALS Error Feed Kitchen [input_text.als_error_feed_kitchen], ALS Error Feed Bedroom [input_text.als_error_feed_bedroom], ALS Error Feed Living Room [input_text.als_error_feed_livingroom], ALS Error Feed Bathroom [input_text.als_error_feed_bathroom], ALS Error Feed Hallway [input_text.als_error_feed_hallway], ALS Error Feed Laundry [input_text.als_error_feed_laundry], ALS Error Kitchen [input_text.als_error_kitchen], ALS Error Bedroom [input_text.als_error_bedroom], ALS Error Living Room [input_text.als_error_livingroom], ALS Error Bathroom [input_text.als_error_bathroom], ALS Error Hallway [input_text.als_error_hallway], ALS Error Laundry [input_text.als_error_laundry]. CONDITIONS: The state of the triggering entity before the change is different from the state after the change. ACTIONS: Wait for 1 second, then call the service pyscript.refresh_all_health_calculations.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of any of the ALS error feed or ALS error text inputs for the kitchen, bedroom, living room, bathroom, hallway, or laundry rooms changes.",
|
|
"conditions": "The change must be an actual change in the text value, meaning the new state is different from the previous state.",
|
|
"action": "After a brief one-second delay, trigger a script to refresh all health calculations."
|
|
},
|
|
"human_like": "Automatically updates health calculations whenever error data for any room is changed.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "periodic_health_validation",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time pattern matches every 6 hours. CONDITIONS: Health Monitoring Auto Test [input_boolean.health_monitoring_auto_test] is on. ACTIONS: Execute script verify_health_system_accuracy.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every six hours, based on a time pattern.",
|
|
"conditions": "It only runs if the Health Monitoring Auto Test [input_boolean.health_monitoring_auto_test] is switched on.",
|
|
"action": "It runs the script named 'verify_health_system_accuracy'."
|
|
},
|
|
"human_like": "Runs a system health check every six hours, but only if automatic health monitoring is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_health_status_notifications",
|
|
"result": {
|
|
"structured": "TRIGGER: When global health status [sensor.global_health_status] remains in a new state for 30 seconds. CONDITIONS: (smart notifications enabled [input_boolean.smart_notifications_enabled] is on) AND (the previous state is different from the new state) AND (the previous state is not 'unknown' or 'unavailable'). ACTIONS: Call the pyscript service 'pyscript.handle_health_status_notification' with data containing the current status, previous status, and a JSON object of attributes from global health status [sensor.global_health_status] (status_text, affected_rooms, total_error_count, summary).",
|
|
"natural_language": {
|
|
"trigger": "When the global health status [sensor.global_health_status] sensor remains in a stable new state for 30 seconds.",
|
|
"conditions": "If the smart notifications enabled [input_boolean.smart_notifications_enabled] switch is on, the health status has genuinely changed from its previous value, and the previous status was not an 'unknown' or 'unavailable' state.",
|
|
"action": "Sends a detailed notification by calling a custom script (pyscript.handle_health_status_notification) with the new and old status values, along with additional health status details like the status text, affected rooms, error count, and a summary."
|
|
},
|
|
"human_like": "Sends a smart notification when the system's overall health status changes, but only if notifications are enabled and the change is meaningful.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "test_smart_notifications",
|
|
"result": {
|
|
"structured": "TRIGGER: When notification debug mode [input_boolean.notification_debug_mode] changes from off to on. CONDITIONS: smart notifications enabled [input_boolean.smart_notifications_enabled] is on. ACTIONS: Execute pyscript.test_notification_system, wait 5 seconds, then turn off notification debug mode [input_boolean.notification_debug_mode].",
|
|
"natural_language": {
|
|
"trigger": "When the notification debug mode [input_boolean.notification_debug_mode] is manually switched on.",
|
|
"conditions": "The smart notifications enabled [input_boolean.smart_notifications_enabled] switch must also be on.",
|
|
"action": "Runs a script to test the notification system, waits for five seconds, and then automatically turns the notification debug mode [input_boolean.notification_debug_mode] back off."
|
|
},
|
|
"human_like": "Manually triggers a test of the notification system when debug mode is enabled, then automatically resets the debug switch.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "update_quiet_hours_status",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time changes (every minute) OR When quiet hours start [input_datetime.quiet_hours_start] changes state OR When quiet hours end [input_datetime.quiet_hours_end] changes state OR When quiet hours enabled [input_boolean.quiet_hours_enabled] changes state. CONDITIONS: None. ACTIONS: Execute the pyscript action 'update_quiet_hours_status'.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every minute, or whenever the quiet hours start time, quiet hours end time, or the quiet hours enabled toggle changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Calls a custom pyscript function named 'update_quiet_hours_status' to determine and update the current quiet hours status."
|
|
},
|
|
"human_like": "Updates the system's quiet hours status every minute or when the schedule settings are changed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "diagnostic_dashboard_auto_refresh",
|
|
"result": {
|
|
"structured": "TRIGGER: When global health status [sensor.global_health_status] changes state OR when ALS learning status [input_text.als_learning_status] changes state OR when learning performance metrics [input_text.learning_performance_metrics] changes state OR every 5 minutes (time pattern). CONDITIONS: diagnostic dashboard enabled [input_boolean.diagnostic_dashboard_enabled] is on. ACTIONS: Wait 1 second, then execute the script refresh_dashboard_data.",
|
|
"natural_language": {
|
|
"trigger": "The automation is triggered whenever the global health status [sensor.global_health_status], the ALS learning status [input_text.als_learning_status], or the learning performance metrics [input_text.learning_performance_metrics] change their state. It is also triggered every 5 minutes on a schedule.",
|
|
"conditions": "The automation only runs if the diagnostic dashboard enabled [input_boolean.diagnostic_dashboard_enabled] is turned on.",
|
|
"action": "After a brief one-second delay, the automation runs the script named refresh_dashboard_data to update the dashboard information."
|
|
},
|
|
"human_like": "Automatically refreshes the diagnostic dashboard every 5 minutes or when key system status data changes, but only when the dashboard feature is enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "learning_status_monitor",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 2 minutes (time pattern). CONDITIONS: ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] is on. ACTIONS: Execute pyscript.update_learning_system_status AND execute pyscript.update_learning_performance_metrics.",
|
|
"natural_language": {
|
|
"trigger": "Every two minutes.",
|
|
"conditions": "The ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] switch must be turned on.",
|
|
"action": "Runs two scripts: pyscript.update_learning_system_status and pyscript.update_learning_performance_metrics."
|
|
},
|
|
"human_like": "Runs diagnostic updates for the ALS learning system every two minutes when diagnostics are enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "health_status_change_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When global health status [sensor.global_health_status] changes state from 🟩 OR 🟨 OR 🟥 to 🟩 OR 🟨 OR 🟥. CONDITIONS: (The previous state is different from the new state) AND (smart notifications enabled [input_boolean.smart_notifications_enabled] is on). ACTIONS: Wait 30 seconds, then call pyscript.handle_health_status_notification with the current status, previous status, and the new status's attributes.",
|
|
"natural_language": {
|
|
"trigger": "When the global health status [sensor.global_health_status] changes from any of the three states (🟩, 🟨, or 🟥) to any of those same three states.",
|
|
"conditions": "If the state change is an actual change (the new state is different from the old state) and the smart notifications enabled [input_boolean.smart_notifications_enabled] switch is turned on.",
|
|
"action": "After a 30-second delay, it sends a notification by calling a script named 'pyscript.handle_health_status_notification', providing it with the new status, the old status, and the attributes of the new status."
|
|
},
|
|
"human_like": "Sends a smart notification when the system's overall health status changes, but only if notifications are enabled.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "quiet_hours_status_updater",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time pattern matches every 5 minutes OR When the state of quiet hours enabled [input_boolean.quiet_hours_enabled] changes OR When the state of quiet hours start [input_datetime.quiet_hours_start] changes OR When the state of quiet hours end [input_datetime.quiet_hours_end] changes. CONDITIONS: None. ACTIONS: Call the pyscript.update_quiet_hours_status service.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every five minutes, or whenever the quiet hours enabled [input_boolean.quiet_hours_enabled], quiet hours start [input_datetime.quiet_hours_start], or quiet hours end [input_datetime.quiet_hours_end] entities change their state.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It calls a custom script service named pyscript.update_quiet_hours_status to update the quiet hours suppression status."
|
|
},
|
|
"human_like": "This automation periodically updates the quiet hours status and also does so whenever the quiet hours settings are changed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "diagnostic_system_maintenance",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 4 hours (time pattern). CONDITIONS: ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] is on. ACTIONS: Execute pyscript.perform_diagnostic_maintenance AND Execute script.refresh_dashboard_data.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every four hours, based on a time pattern.",
|
|
"conditions": "It only proceeds if the ALS diagnostics enabled [input_boolean.als_diagnostics_enabled] is switched on.",
|
|
"action": "Performs diagnostic system maintenance by running the pyscript.perform_diagnostic_maintenance action and then refreshes dashboard data by running the script.refresh_dashboard_data action."
|
|
},
|
|
"human_like": "Runs periodic diagnostic maintenance and dashboard updates every four hours when diagnostics are enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "diagnostic_config_change_handler",
|
|
"result": {
|
|
"structured": "TRIGGER: When any of the following input numbers change state: error retention days [input_number.error_retention_days], max errors per room [input_number.max_errors_per_room], health check interval [input_number.health_check_interval], error threshold warning [input_number.error_threshold_warning], or error threshold critical [input_number.error_threshold_critical]. CONDITIONS: None. ACTIONS: Wait 2 seconds, then execute the script refresh_dashboard_data, and finally log a message '⚙️ Configuration updated - dashboard refreshed' in the logbook under the name 'ALS Diagnostics'.",
|
|
"natural_language": {
|
|
"trigger": "When the value of any of the diagnostic configuration settings changes. These settings are: error retention days [input_number.error_retention_days], max errors per room [input_number.max_errors_per_room], health check interval [input_number.health_check_interval], error threshold warning [input_number.error_threshold_warning], and error threshold critical [input_number.error_threshold_critical].",
|
|
"conditions": "There are no conditions that must be met for the actions to run.",
|
|
"action": "After a brief 2-second delay, the system refreshes the dashboard data by running the 'refresh_dashboard_data' script. It then records a log entry in the logbook under the name 'ALS Diagnostics' with the message '⚙️ Configuration updated - dashboard refreshed'."
|
|
},
|
|
"human_like": "Refreshes the diagnostic dashboard and logs the change whenever any of the system's diagnostic configuration settings are updated.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "maintenance_periodic_health_check",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time pattern matches every 15 minutes (minutes: /15). CONDITIONS: maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] is on. ACTIONS: Call service pyscript.maintenance_health_check with data {debug_mode: true if maintenance debug mode [input_boolean.maintenance_debug_mode] is on, else false}. Then, log an entry to the logbook with name 'ALS Maintenance' and message 'Periodic health check completed'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every 15 minutes, on the minute (e.g., 0, 15, 30, 45).",
|
|
"conditions": "The automation only proceeds if the maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] is turned on.",
|
|
"action": "It performs a health check by calling a custom script (pyscript.maintenance_health_check). The debug mode for this check is enabled only if the maintenance debug mode [input_boolean.maintenance_debug_mode] is on. After the check, it records a completion message in the system logbook."
|
|
},
|
|
"human_like": "Runs a system health check every 15 minutes when automated maintenance is enabled, optionally in debug mode, and logs the result.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "maintenance_periodic_cleanup",
|
|
"result": {
|
|
"structured": "TRIGGER: Every hour (on the hour). CONDITIONS: maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] is on AND (IF maintenance last cleanup time [input_datetime.maintenance_last_cleanup_time] is unknown THEN true ELSE (the number of hours since the last cleanup time is greater than or equal to the value of maintenance cleanup interval hours [input_number.maintenance_cleanup_interval_hours])). ACTIONS: Call service pyscript.maintenance_automated_cleanup with parameters: retention_days = value of maintenance error retention days [input_number.maintenance_error_retention_days], max_entries = value of maintenance max error entries [input_number.maintenance_max_error_entries], debug_mode = true IF maintenance debug mode [input_boolean.maintenance_debug_mode] is on ELSE false. THEN set maintenance last cleanup time [input_datetime.maintenance_last_cleanup_time] to the current datetime. THEN increment Maintenance Cleanup Runs [counter.maintenance_cleanup_runs]. THEN log an entry in the logbook with name 'ALS Maintenance' and message 'Automated cleanup completed'.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs every hour, on the hour.",
|
|
"conditions": "The automation only proceeds if the maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] is switched on. It also checks if enough time has passed since the last cleanup. If the last cleanup time is unknown, it proceeds. Otherwise, it calculates the hours elapsed since the last cleanup and compares it to the configured interval in maintenance cleanup interval hours [input_number.maintenance_cleanup_interval_hours]. The automation runs only if the elapsed time meets or exceeds the configured interval.",
|
|
"action": "The automation performs a series of actions. First, it triggers a custom cleanup script (pyscript.maintenance_automated_cleanup), passing in the number of days to retain errors from maintenance error retention days [input_number.maintenance_error_retention_days], the maximum number of error entries from maintenance max error entries [input_number.maintenance_max_error_entries], and a debug flag based on whether maintenance debug mode [input_boolean.maintenance_debug_mode] is on. Then, it updates the timestamp for maintenance last cleanup time [input_datetime.maintenance_last_cleanup_time] to the current time. Next, it increments the counter Maintenance Cleanup Runs [counter.maintenance_cleanup_runs] to track how many times this has run. Finally, it creates a logbook entry with the name 'ALS Maintenance' and the message 'Automated cleanup completed'."
|
|
},
|
|
"human_like": "This automation runs a scheduled system cleanup task every hour, but only if the feature is enabled and the configured time interval has passed since the last cleanup.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "maintenance_performance_alert",
|
|
"result": {
|
|
"structured": "TRIGGER: When maintenance system health [sensor.maintenance_system_health] remains below 50 for 5 minutes. CONDITIONS: maintenance performance monitoring [input_boolean.maintenance_performance_monitoring] is on. ACTIONS: Create a persistent notification with title 'ALS System Performance Warning' and a message containing the current system health percentage, and log an entry in the logbook for ALS Maintenance with the current health percentage.",
|
|
"natural_language": {
|
|
"trigger": "When the maintenance system health [sensor.maintenance_system_health] sensor reports a value below 50% for a continuous period of 5 minutes.",
|
|
"conditions": "If the maintenance performance monitoring [input_boolean.maintenance_performance_monitoring] switch is turned on.",
|
|
"action": "Creates a persistent notification with the title 'ALS System Performance Warning' and a message showing the current system health percentage, suggesting manual cleanup or adjustment of retention settings. It also records an event in the logbook under the name 'ALS Maintenance' with a message indicating the performance alert was triggered and the current health percentage."
|
|
},
|
|
"human_like": "Sends an alert and logs a warning when the system's health score drops below 50% for five minutes, provided performance monitoring is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "maintenance_data_buildup_prevention",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS total error count [sensor.als_total_error_count] exceeds the value of maintenance max error entries [input_number.maintenance_max_error_entries]. CONDITIONS: maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] is on. ACTIONS: Call service pyscript.maintenance_emergency_cleanup with target_count set to 80% of maintenance max error entries [input_number.maintenance_max_error_entries] and debug_mode set to true if maintenance debug mode [input_boolean.maintenance_debug_mode] is on. Create a persistent notification with title 'ALS Emergency Cleanup Triggered' and a message stating the error count was reduced. Log an entry to the logbook with name 'ALS Maintenance' and message 'Emergency cleanup triggered - Error count exceeded limit'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS total error count [sensor.als_total_error_count] rises above the maximum error entry limit defined by maintenance max error entries [input_number.maintenance_max_error_entries].",
|
|
"conditions": "The automation only runs if the automatic cleanup feature is enabled, which is indicated by maintenance auto cleanup enabled [input_boolean.maintenance_auto_cleanup_enabled] being turned on.",
|
|
"action": "It performs an emergency cleanup by calling a script to reduce the error count to 80% of the maximum limit, optionally enabling debug mode if maintenance debug mode [input_boolean.maintenance_debug_mode] is on. It then creates a persistent notification to inform the user of the cleanup and logs the event in the logbook."
|
|
},
|
|
"human_like": "Automatically triggers an emergency cleanup and sends a notification when the system's error count gets too high, helping to prevent data buildup.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "unlock_door_on_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When iPhone 15 tracker [device_tracker.iphone15] enters zone.home OR when work iPhone tracker [device_tracker.work_iphone] enters zone.home. CONDITIONS: smart lock auto unlock [input_boolean.smart_lock_auto_unlock] is on. ACTIONS: Unlock Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock]. Send notification to mobile_app_iphone15 with message 'The front door was unlocked.'. Send notification to mobile_app_rrvqklh23h_iphone with message 'The front door was unlocked.'.",
|
|
"natural_language": {
|
|
"trigger": "When either the iPhone 15 tracker [device_tracker.iphone15] or the work iPhone tracker [device_tracker.work_iphone] enters the home zone.",
|
|
"conditions": "The smart lock auto unlock [input_boolean.smart_lock_auto_unlock] feature must be switched on.",
|
|
"action": "Unlock the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] and send a notification to both the iPhone 15 and the other iPhone stating 'The front door was unlocked.'."
|
|
},
|
|
"human_like": "Automatically unlocks the front door and sends a notification when a family phone arrives home, provided the auto-unlock feature is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_manual_amber_activate",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger] turns on. CONDITIONS: smart switch 1 amber mode enable [input_boolean.smart_switch_1_amber_mode_enable] is on. ACTIONS: Execute script smart_switch_1_amber_sequence, then turn off smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger], and log an entry in the logbook for Smart Switch 1 Amber with the message 'Manual amber mode activated' associated with the entity light.smart_switch_1.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger] is turned on.",
|
|
"conditions": "The smart switch 1 amber mode enable [input_boolean.smart_switch_1_amber_mode_enable] must be switched on.",
|
|
"action": "It runs the amber sequence script (script.smart_switch_1_amber_sequence), resets the manual trigger by turning it off, and creates a logbook entry for Smart Switch 1 Amber, noting that manual amber mode was activated for the light smart switch 1 [light.smart_switch_1]."
|
|
},
|
|
"human_like": "Manually activates the amber lighting sequence for Smart Switch 1 when its amber mode is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_manual_amber_activate",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger] turns on. CONDITIONS: smart switch 2 amber mode enable [input_boolean.smart_switch_2_amber_mode_enable] is on. ACTIONS: Execute script smart_switch_2_amber_sequence AND Turn off smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger] AND Log an entry in the logbook for smart switch 2 [light.smart_switch_2] with the message 'Manual amber mode activated'.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger] is turned on.",
|
|
"conditions": "The smart switch 2 amber mode enable [input_boolean.smart_switch_2_amber_mode_enable] must be switched on.",
|
|
"action": "Runs the 'smart_switch_2_amber_sequence' script, then turns off the manual trigger [input_boolean.smart_switch_2_manual_amber_trigger], and finally records a logbook entry for the smart switch 2 [light.smart_switch_2] stating 'Manual amber mode activated'."
|
|
},
|
|
"human_like": "Manually activates an amber light sequence for the smart switch, provided the amber mode is enabled, and logs the action.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 activate amber button [input_button.smart_switch_1_activate_amber] is pressed. CONDITIONS: None. ACTIONS: Execute script smart_switch_1_amber_sequence.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 activate amber button [input_button.smart_switch_1_activate_amber] is pressed.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Runs the script named smart_switch_1_amber_sequence."
|
|
},
|
|
"human_like": "Runs a specific sequence of actions when the amber button on Smart Switch 1 is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 normal mode button [input_button.smart_switch_1_normal_mode] is pressed. CONDITIONS: None. ACTIONS: Turn on smart switch 1 [light.smart_switch_1] with brightness set to 80% and color temperature set to 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 normal mode button [input_button.smart_switch_1_normal_mode] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Turns on the smart switch 1 [light.smart_switch_1] light, setting it to 80% brightness and a color temperature of 4000 Kelvin."
|
|
},
|
|
"human_like": "Pressing the 'normal mode' button on the smart switch turns on the connected light to a bright, neutral white setting.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 activate amber button [input_button.smart_switch_2_activate_amber] is pressed. CONDITIONS: None. ACTIONS: Execute the script smart_switch_2_amber_sequence [script.smart_switch_2_amber_sequence].",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 activate amber button [input_button.smart_switch_2_activate_amber] is pressed.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Runs the script named smart_switch_2_amber_sequence [script.smart_switch_2_amber_sequence]."
|
|
},
|
|
"human_like": "Pressing the amber button on Smart Switch 2 runs a predefined sequence of actions.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 normal mode button [input_button.smart_switch_2_normal_mode] is pressed. CONDITIONS: None. ACTIONS: Turn on smart switch 2 [light.smart_switch_2] with brightness at 80% and color temperature at 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 normal mode button [input_button.smart_switch_2_normal_mode] is pressed.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Turns on the smart switch 2 [light.smart_switch_2] light, setting its brightness to 80% and its color temperature to 4000 Kelvin."
|
|
},
|
|
"human_like": "Pressing the 'normal mode' button on the smart switch turns on the connected light with a standard brightness and color temperature.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "both_switches_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When both switches amber button [input_button.both_switches_amber] is pressed (state change). CONDITIONS: None. ACTIONS: Execute the script both_switches_amber_mode.",
|
|
"natural_language": {
|
|
"trigger": "When the both switches amber button [input_button.both_switches_amber] is pressed.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Runs the script named both_switches_amber_mode."
|
|
},
|
|
"human_like": "Pressing the amber button on the switches runs a specific script for the living room.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "both_switches_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When both switches normal button [input_button.both_switches_normal] is pressed. CONDITIONS: None. ACTIONS: Turn on smart switch 1 [light.smart_switch_1] AND smart switch 2 [light.smart_switch_2] with brightness set to 80% and color temperature set to 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the both switches normal button [input_button.both_switches_normal] is pressed.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Turns on both the smart switch 1 [light.smart_switch_1] and smart switch 2 [light.smart_switch_2] lights, setting their brightness to 80% and their color temperature to 4000 Kelvin."
|
|
},
|
|
"human_like": "Turns on two living room lights to a bright, neutral white when a specific button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_auto_error_cleanup",
|
|
"result": {
|
|
"structured": "TRIGGER: Every hour (time pattern: hours: /1). CONDITIONS: ALS system error detected [binary_sensor.als_system_error_detected] is on. ACTIONS: For each room in the list (bedroom, kitchen, bathroom, hallway, laundry, livingroom): 1. Define variable 'room' as the current list item. 2. Define variable 'error_entity' as input_text.als_error_{{ room }}. 3. IF (the state of error_entity is not empty, 'unknown', or 'unavailable') AND (the corresponding target brightness sensor for the room is not 'unknown' or 'unavailable'), THEN clear the error by setting the value of error_entity to an empty string. The target brightness sensor is derived from the room name: for 'livingroom' it is sensor.living_room_target_brightness, for 'laundry' it is sensor.laundry_room_target_brightness, for others it is sensor.{{ room }}_target_brightness.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs automatically every hour.",
|
|
"conditions": "It only proceeds if the ALS system error detected [binary_sensor.als_system_error_detected] is in the 'on' state, indicating an error is present.",
|
|
"action": "The automation processes a list of rooms: bedroom, kitchen, bathroom, hallway, laundry, and livingroom. For each room, it checks two things: first, that the corresponding error text entity for that room is not empty, unknown, or unavailable; and second, that the target brightness sensor for that room is not unknown or unavailable. If both checks pass, it clears the error by setting the error text entity's value to an empty string. The target brightness sensor name is adjusted for 'livingroom' to 'living_room' and for 'laundry' to 'laundry_room'."
|
|
},
|
|
"human_like": "Automatically clears resolved lighting system errors for all rooms once an hour, but only if the overall system error flag is active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_teach_button_bridge",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS teach now button [input_button.als_teach_now] is pressed. CONDITIONS: None. ACTIONS: Set variable 'sel' to the current state of ALS teaching room select [input_select.als_teaching_room]. Set variable 'room_key' to the lowercase room name mapped from 'sel' (defaulting to 'kitchen'). Set variable 'brightness' to the integer value of ALS teaching brightness [input_number.als_teaching_brightness] (defaulting to 50). Call pyscript.als_teach_room with data: room = '{{ room_key }}' and brightness = '{{ brightness }}'. Set the value of ALS last teach status [input_text.als_last_teach_status] to 'Taught {{ room_key }} → {{ brightness }}% at {{ current_time }}'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS teach now button [input_button.als_teach_now] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "The automation first reads the currently selected room from the ALS teaching room select [input_select.als_teaching_room] and converts it to a lowercase key (e.g., 'Living Room' becomes 'livingroom'). It also reads the desired brightness percentage from the ALS teaching brightness [input_number.als_teaching_brightness] input. It then calls a custom script named 'als_teach_room' with the selected room key and brightness value. Finally, it updates the ALS last teach status [input_text.als_last_teach_status] text field with a message confirming which room was taught, at what brightness, and the time the action was performed."
|
|
},
|
|
"human_like": "Starts a room teaching process for the Adaptive Lighting System (ALS) with the selected room and brightness when the 'Teach Now' button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_reload_pyscript_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS reload pyscript button [input_button.als_reload_pyscript] changes state. CONDITIONS: None. ACTIONS: Reload pyscript AND Set value of ALS last teach status [input_text.als_last_teach_status] to 'Pyscript reloaded at [current time formatted as HH:MM:SS]'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS reload pyscript button [input_button.als_reload_pyscript] is pressed or its state changes.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Reloads all pyscript files and then updates the ALS last teach status [input_text.als_last_teach_status] text field to show the time the reload occurred."
|
|
},
|
|
"human_like": "Reloads the pyscript system and logs the time of the reload when a button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "als_run_test_engine_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When ALS run test engine button [input_button.als_run_test_engine] is pressed (state change). CONDITIONS: None. ACTIONS: Execute the pyscript.parallel_test_run_now action AND set the value of ALS last teach status [input_text.als_last_teach_status] to 'Test engine wrote values at [current time in HH:MM:SS format]'.",
|
|
"natural_language": {
|
|
"trigger": "When the ALS run test engine button [input_button.als_run_test_engine] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "It runs a test engine script via the 'pyscript.parallel_test_run_now' action and then updates the ALS last teach status [input_text.als_last_teach_status] text field with a timestamp showing when the test was run."
|
|
},
|
|
"human_like": "Runs a test engine script and logs the time it was executed when a button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "pyscript_to_home_state_ui_authoritative",
|
|
"result": {
|
|
"structured": "TRIGGER: When pyscript home state [pyscript.home_state] changes state. CONDITIONS: The current state of pyscript home state [pyscript.home_state] is different from the current state of home state select [input_select.home_state]. ACTIONS: Set the option of home state select [input_select.home_state] to match the current state of pyscript home state [pyscript.home_state].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the pyscript home state [pyscript.home_state] entity changes its state.",
|
|
"conditions": "Only if the current state of the pyscript home state [pyscript.home_state] is different from the current state of the home state select [input_select.home_state] dropdown.",
|
|
"action": "Updates the home state select [input_select.home_state] dropdown to show the same state as the pyscript home state [pyscript.home_state]."
|
|
},
|
|
"human_like": "Keeps the user interface's home state selector in sync with the authoritative backend state.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "home_state_ui_to_pyscript_override_only",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes state. CONDITIONS: manual home state override [input_boolean.manual_home_state_override] is on AND home state select [input_select.home_state] state is not equal to pyscript home state [pyscript.home_state] state. ACTIONS: Call pyscript.set_home_mode with mode set to the current state of home state select [input_select.home_state].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the home state select [input_select.home_state] changes its selected value.",
|
|
"conditions": "The manual home state override [input_boolean.manual_home_state_override] must be turned on, and the current state of the home state select [input_select.home_state] must be different from the current state of the pyscript home state [pyscript.home_state].",
|
|
"action": "Calls a pyscript function named set_home_mode, passing the newly selected state from the home state select [input_select.home_state] as the mode parameter."
|
|
},
|
|
"human_like": "When manual override is active, this automation synchronizes the selected home state from the user interface to the underlying system controller.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "home_state_ui_guard_override_off_strict",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state select [input_select.home_state] changes state. CONDITIONS: manual home state override [input_boolean.manual_home_state_override] is off AND (home state select [input_select.home_state] current state is not equal to pyscript home state [pyscript.home_state] current state). ACTIONS: Set home state select [input_select.home_state] to the current state of pyscript home state [pyscript.home_state].",
|
|
"natural_language": {
|
|
"trigger": "Whenever the home state select [input_select.home_state] dropdown changes its selected value.",
|
|
"conditions": "If the manual home state override [input_boolean.manual_home_state_override] is switched off, and the current value of the home state select [input_select.home_state] does not match the current value reported by the pyscript home state [pyscript.home_state].",
|
|
"action": "Updates the home state select [input_select.home_state] dropdown to match the value from the pyscript home state [pyscript.home_state]."
|
|
},
|
|
"human_like": "Automatically corrects the displayed home state in the user interface to match the system's calculated state, but only when manual override is not active.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "home_state_reconciler_authoritative",
|
|
"result": {
|
|
"structured": "TRIGGER: When home state diverged [binary_sensor.home_state_diverged] changes to on. CONDITIONS: manual home state override [input_boolean.manual_home_state_override] is off. ACTIONS: Set home state select [input_select.home_state] to the current state of pyscript home state [pyscript.home_state].",
|
|
"natural_language": {
|
|
"trigger": "When the sensor indicating a divergence in the home state, home state diverged [binary_sensor.home_state_diverged], turns on.",
|
|
"conditions": "If the manual override switch, manual home state override [input_boolean.manual_home_state_override], is currently off.",
|
|
"action": "Updates the main home state selector, home state select [input_select.home_state], to match the authoritative state calculated by pyscript home state [pyscript.home_state]."
|
|
},
|
|
"human_like": "Automatically corrects the displayed home state to match the system's authoritative calculation when a discrepancy is detected and manual override is not active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "home_state_startup_sync",
|
|
"result": {
|
|
"structured": "TRIGGER: When Home Assistant starts OR When a pyscript reload event occurs. CONDITIONS: pyscript home state [pyscript.home_state] is not unknown, unavailable, or empty. ACTIONS: Set home state select [input_select.home_state] to the current state of pyscript home state [pyscript.home_state].",
|
|
"natural_language": {
|
|
"trigger": "When Home Assistant first starts up, or when a pyscript reload event is triggered.",
|
|
"conditions": "If the pyscript home state [pyscript.home_state] entity has a known and available value (it is not 'unknown', 'unavailable', or an empty string).",
|
|
"action": "Synchronize the home state select [input_select.home_state] dropdown to match the current value of the pyscript home state [pyscript.home_state] entity."
|
|
},
|
|
"human_like": "Synchronizes the main home state dropdown with the underlying pyscript state when Home Assistant starts or after a script reload.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "sleep_in_ramp_start",
|
|
"result": {
|
|
"structured": "TRIGGER: When sleep in ramp active [input_boolean.sleep_in_ramp_active] turns on. CONDITIONS: sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] is on AND home state select [input_select.home_state] is Night. ACTIONS: Calculate a final ramp duration using multiple variables: current sun elevation, sun elevation rate sensor [sensor.sun_elevation_rate], current day threshold [input_number.current_day_threshold], minutes to day mode elevation [sensor.minutes_to_day_mode_elevation], current time to determine if within a work window (04:50-05:00), workday ramp base duration [input_number.workday_ramp_base_duration], offday ramp base duration [input_number.offday_ramp_base_duration], and current season sensor [sensor.current_season]. The calculation logic selects a duration based on sun rate, elevation forecast, or a seasonal default, then applies adjustments and caps. Then, set ramp start time [input_datetime.ramp_start_time] to current time, set calculated ramp duration [input_number.calculated_ramp_duration] to the final calculated value, set ramp calculated end time [input_datetime.ramp_calculated_end_time] to current time plus the final duration, set first kitchen motion today [input_datetime.first_kitchen_motion_today] to current time, turn on daily motion lock [input_boolean.daily_motion_lock], and set home state select [input_select.home_state] to Early Morning.",
|
|
"natural_language": {
|
|
"trigger": "The automation starts when the sleep in ramp active [input_boolean.sleep_in_ramp_active] is turned on.",
|
|
"conditions": "Two conditions must be met: the sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] must be on, and the home state select [input_select.home_state] must be set to Night.",
|
|
"action": "The automation performs a complex calculation to determine a final ramp duration. It considers the current sun elevation and its rate of change, the target elevation threshold, the forecasted minutes until a daytime elevation is reached, and the current time to see if it falls within a specific workday window (between 4:50 AM and 5:00 AM). It uses different base durations for workdays and off-days. The calculation then chooses a duration based on the most reliable sun data, with fallbacks to season-based defaults (Winter, Spring/Fall, Summer). This duration is further adjusted with multipliers and minimum/maximum limits. Finally, it records the start time, saves the calculated duration and its projected end time, logs the current time as the first kitchen motion of the day, activates a daily motion lock, and changes the home state to Early Morning."
|
|
},
|
|
"human_like": "Starts a smart, gradually brightening morning light routine when activated during the night, calculating the optimal duration based on sunrise timing and whether it's a workday.",
|
|
"complexity": "high"
|
|
}
|
|
},
|
|
{
|
|
"id": "sleep_in_ramp_complete",
|
|
"result": {
|
|
"structured": "TRIGGER: When (sleep in ramp active [input_boolean.sleep_in_ramp_active] is on AND sleep in ramp progress [sensor.sleep_in_ramp_progress] is greater than or equal to 100) AND remains true for 5 seconds OR When calculated home mode [sensor.calculated_home_mode] changes to Day. CONDITIONS: sleep in ramp active [input_boolean.sleep_in_ramp_active] is on. ACTIONS: Set variable motion_time_str to the state of first kitchen motion today [input_datetime.first_kitchen_motion_today]. Set variable is_non_work_day to true if the motion_time_str is valid and the time is NOT between 04:50 and 05:00 inclusive, OR if motion_time_str is invalid and working today sensor [binary_sensor.working_today] is off; otherwise false. Turn off sleep in ramp active [input_boolean.sleep_in_ramp_active]. Set home state select [input_select.home_state] to Day. If is_non_work_day is true AND kitchen WLED enable [input_boolean.kitchen_wled_enable] is on, then turn off sink WLED light [light.sink_wled] and fridge strip light [light.frig_strip] and log a message. Log a completion message.",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers in two ways: first, when the sleep in ramp active [input_boolean.sleep_in_ramp_active] is on and the sleep in ramp progress [sensor.sleep_in_ramp_progress] reaches or exceeds 100%, and this condition holds for 5 seconds. Second, when the calculated home mode [sensor.calculated_home_mode] changes to 'Day'.",
|
|
"conditions": "The automation only proceeds if the sleep in ramp active [input_boolean.sleep_in_ramp_active] is currently on.",
|
|
"action": "The automation first calculates whether today is a non-work day based on the time of the first kitchen motion today [input_datetime.first_kitchen_motion_today] or the status of the working today sensor [binary_sensor.working_today]. It then turns off the sleep in ramp active [input_boolean.sleep_in_ramp_active] flag, sets the home state select [input_select.home_state] to 'Day'. If it's a non-work day and the kitchen WLED enable [input_boolean.kitchen_wled_enable] is on, it also turns off the sink WLED light [light.sink_wled] and fridge strip light [light.frig_strip] and logs this action. Finally, it logs a general message indicating the ramp is complete."
|
|
},
|
|
"human_like": "Completes the 'sleep-in' morning routine by turning off the ramp indicator and switching the home to Day mode, and optionally turns off kitchen accent lights if it's not a work day.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "daily_motion_reset",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time is exactly midnight (00:00:00). CONDITIONS: None. ACTIONS: Turn off daily motion lock [input_boolean.daily_motion_lock] AND reset first kitchen motion today [input_datetime.first_kitchen_motion_today] to an empty value.",
|
|
"natural_language": {
|
|
"trigger": "The automation runs at exactly midnight every day.",
|
|
"conditions": "There are no conditions that must be met for the automation to proceed.",
|
|
"action": "It turns off the daily motion lock [input_boolean.daily_motion_lock] and clears the stored time for the first kitchen motion today [input_datetime.first_kitchen_motion_today]."
|
|
},
|
|
"human_like": "Resets daily motion tracking at midnight by clearing the motion lock and the first motion timestamp.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "kitchen_pyscript_morning_ramp_trigger",
|
|
"result": {
|
|
"structured": "TRIGGER: When kitchen motion sensor P1 [binary_sensor.aqara_motion_sensor_p1_occupancy] OR kitchen iris fridge occupancy [binary_sensor.kitchen_iris_frig_occupancy] changes to 'on'. CONDITIONS: sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] is 'on' AND pyscript home state [pyscript.home_state] is 'Night'. ACTIONS: Execute pyscript.morning_ramp_first_motion with sensor data set to the entity_id that triggered the automation.",
|
|
"natural_language": {
|
|
"trigger": "When either the kitchen motion sensor P1 [binary_sensor.aqara_motion_sensor_p1_occupancy] or the kitchen iris fridge occupancy [binary_sensor.kitchen_iris_frig_occupancy] detects motion and changes its state to 'on'.",
|
|
"conditions": "The sleep in ramp system enable [input_boolean.sleep_in_ramp_system_enable] must be turned on, and the overall home state [pyscript.home_state] must be set to 'Night'.",
|
|
"action": "Runs a PyScript function called 'morning_ramp_first_motion', passing the entity ID of the motion sensor that triggered the event as a parameter."
|
|
},
|
|
"human_like": "Starts a morning lighting ramp-up when motion is detected in the kitchen at night, provided the system is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "unlock_door_on_arrival",
|
|
"result": {
|
|
"structured": "TRIGGER: When iPhone 15 tracker [device_tracker.iphone15] enters zone.home OR when work iPhone tracker [device_tracker.work_iphone] enters zone.home. CONDITIONS: smart lock auto unlock [input_boolean.smart_lock_auto_unlock] is on. ACTIONS: Log an event for Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] with a message, unlock Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock], send a notification to mobile_app_iphone15, and send a notification to mobile_app_rrvqklh23h_iphone.",
|
|
"natural_language": {
|
|
"trigger": "When either the iPhone 15 tracker [device_tracker.iphone15] or the work iPhone tracker [device_tracker.work_iphone] enters the home zone.",
|
|
"conditions": "The smart lock auto unlock [input_boolean.smart_lock_auto_unlock] switch must be turned on.",
|
|
"action": "Logs an event for the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock], unlocks the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock], and sends a notification to two mobile devices stating the front door was unlocked due to arrival."
|
|
},
|
|
"human_like": "Automatically unlocks the front door when either of the designated iPhones arrives home, provided the auto-unlock feature is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "auto_lock_when_door_closes",
|
|
"result": {
|
|
"structured": "TRIGGER: When front door contact sensor [binary_sensor.front_door_contact_contact] changes from open (on) to closed (off). CONDITIONS: smart lock auto lock [input_boolean.smart_lock_auto_lock] is on AND Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] is unlocked. ACTIONS: Log an event in the logbook for Smart Lock with message 'Door closed → locking now', lock Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock], send a notification to mobile_app_iphone15 with message 'The front door auto-locked instantly after closing.', and send a notification to mobile_app_rrvqklh23h_iphone with the same message.",
|
|
"natural_language": {
|
|
"trigger": "When the front door contact sensor [binary_sensor.front_door_contact_contact] transitions from being open to being closed.",
|
|
"conditions": "The smart lock auto lock [input_boolean.smart_lock_auto_lock] feature must be enabled, and the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] must currently be unlocked.",
|
|
"action": "Records the event in the logbook, locks the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock], and sends a notification to two mobile devices stating that the front door has auto-locked."
|
|
},
|
|
"human_like": "Automatically locks the front door as soon as it closes, provided the auto-lock feature is turned on.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "track_last_departed_phone",
|
|
"result": {
|
|
"structured": "TRIGGER: When iPhone 15 tracker [device_tracker.iphone15] leaves zone.home OR when work iPhone tracker [device_tracker.work_iphone] leaves zone.home. CONDITIONS: None. ACTIONS: If the trigger was iPhone 15 tracker [device_tracker.iphone15] leaving, set smart lock last departed [input_text.smart_lock_last_departed] value to 'iphone15' and log a message 'Last departed set to iphone15'. If the trigger was work iPhone tracker [device_tracker.work_iphone] leaving, set smart lock last departed [input_text.smart_lock_last_departed] value to 'work_iphone' and log a message 'Last departed set to work_iphone'.",
|
|
"natural_language": {
|
|
"trigger": "When either the iPhone 15 tracker [device_tracker.iphone15] or the work iPhone tracker [device_tracker.work_iphone] leaves the home zone.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Depending on which phone left, the automation updates a text field to record the last phone that departed. If the iPhone 15 left, it sets the smart lock last departed [input_text.smart_lock_last_departed] to 'iphone15' and logs this event. If the work iPhone left, it sets the value to 'work_iphone' and logs that event instead."
|
|
},
|
|
"human_like": "Keeps track of which phone was the last to leave the home, logging the information for use by other automations.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "away_enforce_after_5min",
|
|
"result": {
|
|
"structured": "TRIGGER: When both phones home sensor [binary_sensor.both_phones_home] becomes not_home (off) AND remains so for 5 minutes. CONDITIONS: (smart lock away enforce [input_boolean.smart_lock_away_enforce] is on) AND (both phones home sensor [binary_sensor.both_phones_home] is off) AND (front door contact sensor [binary_sensor.front_door_contact_contact] is closed (off)). ACTIONS: First, log an entry for Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] with message 'Away 5-min check running'. Then, if Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] is unlocked, lock it. If the lock was unlocked, then based on the value of smart lock last departed [input_text.smart_lock_last_departed]: if the value is 'iphone15', send a notification to mobile app iphone15 with message 'Away check: Door was still unlocked after 5 minutes, locking now.'; if the value is 'work_iphone', send a notification to mobile app rrvqklh23h_iphone with the same message.",
|
|
"natural_language": {
|
|
"trigger": "When the both phones home sensor [binary_sensor.both_phones_home] indicates that both phones have been away from home for a continuous period of 5 minutes.",
|
|
"conditions": "The automation only runs if the smart lock away enforce [input_boolean.smart_lock_away_enforce] is turned on, the both phones home sensor [binary_sensor.both_phones_home] is still reporting that both phones are away, and the front door contact sensor [binary_sensor.front_door_contact_contact] is closed.",
|
|
"action": "First, a log entry is created for the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock]. Then, if the lock is found to be unlocked, it is locked. If the lock was unlocked, a notification is sent to the specific phone that was last recorded as having departed, using the value stored in smart lock last departed [input_text.smart_lock_last_departed]. The notification informs the user that the door was unlocked and has now been locked."
|
|
},
|
|
"human_like": "Automatically locks the front door and notifies the last person who left if the home has been empty for 5 minutes and the door is unlocked.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "away_door_left_open",
|
|
"result": {
|
|
"structured": "TRIGGER: When front door contact sensor [binary_sensor.front_door_contact_contact] becomes open (on) AND remains open for 2 minutes. CONDITIONS: both phones home sensor [binary_sensor.both_phones_home] is off (away). ACTIONS: Log an event for Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] with message 'Door left open 2+ min while away'. THEN, based on the value of smart lock last departed [input_text.smart_lock_last_departed]: IF value is 'iphone15', send a notification to mobile_app_iphone15 with message 'Away alert: The front door has been left open for 2 minutes.' OR IF value is 'work_iphone', send a notification to mobile_app_rrvqklh23h_iphone with the same message.",
|
|
"natural_language": {
|
|
"trigger": "When the front door contact sensor [binary_sensor.front_door_contact_contact] is detected as open and stays open for at least two minutes.",
|
|
"conditions": "The automation only proceeds if the both phones home sensor [binary_sensor.both_phones_home] indicates that both phones are away (state is off).",
|
|
"action": "First, a logbook entry is created for the Aqara smart lock U100 [lock.aqara_smart_lock_u100_lock] noting the door was left open. Then, depending on which phone was last recorded as departing, a notification is sent to that specific phone. If the smart lock last departed [input_text.smart_lock_last_departed] value is 'iphone15', a notification is sent to the iPhone 15. If the value is 'work_iphone', a notification is sent to the work iPhone."
|
|
},
|
|
"human_like": "Sends an alert to the last person who left if the front door is left open for two minutes while nobody is home.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_manual_amber_activate",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger] is turned on. CONDITIONS: smart switch 1 amber mode enable [input_boolean.smart_switch_1_amber_mode_enable] is on. ACTIONS: Execute script script.smart_switch_1_amber_sequence, turn off smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger], and log an entry in the logbook for Smart Switch 1 Amber with the message 'Manual amber mode activated' for the entity light.smart_switch_1.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 manual amber trigger [input_boolean.smart_switch_1_manual_amber_trigger] is switched on.",
|
|
"conditions": "The smart switch 1 amber mode enable [input_boolean.smart_switch_1_amber_mode_enable] must also be switched on.",
|
|
"action": "It runs the 'smart_switch_1_amber_sequence' script, then turns off the manual amber trigger to reset it, and finally creates a logbook entry for the Smart Switch 1 Amber light, recording that the manual amber mode was activated."
|
|
},
|
|
"human_like": "Manually activates an amber lighting sequence for Smart Switch 1 when amber mode is enabled, logs the action, and resets the trigger.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_manual_amber_activate",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger] turns on. CONDITIONS: smart switch 2 amber mode enable [input_boolean.smart_switch_2_amber_mode_enable] is on. ACTIONS: Execute script script.smart_switch_2_amber_sequence, turn off smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger], and log an entry 'Manual amber mode activated' for smart switch 2 [light.smart_switch_2] in the logbook.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 manual amber trigger [input_boolean.smart_switch_2_manual_amber_trigger] is turned on.",
|
|
"conditions": "The smart switch 2 amber mode enable [input_boolean.smart_switch_2_amber_mode_enable] must be switched on.",
|
|
"action": "It runs the amber sequence script (script.smart_switch_2_amber_sequence), resets the manual trigger by turning it off, and records a logbook entry stating 'Manual amber mode activated' for the smart switch 2 light [light.smart_switch_2]."
|
|
},
|
|
"human_like": "Manually activates an amber lighting sequence for Smart Switch 2 when its amber mode is enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 activate amber button [input_button.smart_switch_1_activate_amber] is pressed. CONDITIONS: None. ACTIONS: Execute script smart_switch_1_amber_sequence.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 activate amber button [input_button.smart_switch_1_activate_amber] is pressed.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Runs the script named smart_switch_1_amber_sequence."
|
|
},
|
|
"human_like": "Runs a specific sequence of actions when the amber button on the smart switch is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_1_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 1 normal mode button [input_button.smart_switch_1_normal_mode] is pressed (state change). CONDITIONS: None. ACTIONS: Turn on smart switch 1 [light.smart_switch_1] with brightness set to 80% and color temperature set to 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 1 normal mode button [input_button.smart_switch_1_normal_mode] is pressed.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Turns on the smart switch 1 [light.smart_switch_1] light, setting its brightness to 80% and its color temperature to 4000 Kelvin."
|
|
},
|
|
"human_like": "Pressing the 'normal mode' button turns on the living room light to a bright, neutral white setting.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 activate amber button [input_button.smart_switch_2_activate_amber] is pressed. CONDITIONS: None. ACTIONS: Execute the script smart_switch_2_amber_sequence.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 activate amber button [input_button.smart_switch_2_activate_amber] is pressed.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Runs the script named smart_switch_2_amber_sequence."
|
|
},
|
|
"human_like": "Runs a specific sequence of actions when the amber button on Smart Switch 2 is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "smart_switch_2_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When smart switch 2 normal mode button [input_button.smart_switch_2_normal_mode] is pressed. CONDITIONS: None. ACTIONS: Turn on smart switch 2 [light.smart_switch_2] with brightness set to 80% and color temperature set to 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the smart switch 2 normal mode button [input_button.smart_switch_2_normal_mode] is pressed.",
|
|
"conditions": "There are no conditions for this automation.",
|
|
"action": "Turns on the smart switch 2 [light.smart_switch_2] light, setting it to 80% brightness and a color temperature of 4000 Kelvin."
|
|
},
|
|
"human_like": "Pressing the 'normal mode' button on the smart switch turns on the connected light to a standard brightness and color temperature.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "both_switches_amber_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When both switches amber button [input_button.both_switches_amber] changes state. CONDITIONS: None. ACTIONS: Execute script both_switches_amber_mode [script.both_switches_amber_mode].",
|
|
"natural_language": {
|
|
"trigger": "When the both switches amber button [input_button.both_switches_amber] is pressed or its state changes.",
|
|
"conditions": "There are no conditions that must be met.",
|
|
"action": "Runs the script named both_switches_amber_mode [script.both_switches_amber_mode]."
|
|
},
|
|
"human_like": "Runs a specific script when the amber button on the living room switches is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "both_switches_normal_button",
|
|
"result": {
|
|
"structured": "TRIGGER: When both switches normal button [input_button.both_switches_normal] is pressed. CONDITIONS: None. ACTIONS: Turn on smart switch 1 [light.smart_switch_1] and smart switch 2 [light.smart_switch_2] with brightness set to 80% and color temperature set to 4000 Kelvin.",
|
|
"natural_language": {
|
|
"trigger": "When the both switches normal button [input_button.both_switches_normal] is pressed.",
|
|
"conditions": "There are no conditions that need to be met.",
|
|
"action": "Turns on both the smart switch 1 [light.smart_switch_1] and smart switch 2 [light.smart_switch_2] lights, setting their brightness to 80% and their color temperature to 4000 Kelvin."
|
|
},
|
|
"human_like": "Turns on two living room lights with a preset brightness and color temperature when a specific button is pressed.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "trial_gate_yaml_home_state_eval",
|
|
"result": {
|
|
"structured": "TRIGGER: When use pyscript home state [input_boolean.use_pyscript_home_state] changes state. CONDITIONS: None. ACTIONS: If use pyscript home state [input_boolean.use_pyscript_home_state] is on, then turn off Home State Evaluation [automation.home_state_evaluation] and log a message 'Disabled YAML Home State Evaluation (toggle ON)'. If use pyscript home state [input_boolean.use_pyscript_home_state] is off, then turn on Home State Evaluation [automation.home_state_evaluation] and log a message 'Enabled YAML Home State Evaluation (toggle OFF)'.",
|
|
"natural_language": {
|
|
"trigger": "Whenever the state of the input boolean 'use pyscript home state' [input_boolean.use_pyscript_home_state] changes.",
|
|
"conditions": "There are no additional conditions; the automation runs immediately upon the trigger.",
|
|
"action": "Based on the new state of the toggle, it either disables or enables the 'Home State Evaluation' automation. If the toggle is turned on, it disables the YAML-based evaluation and logs a message. If the toggle is turned off, it enables the YAML-based evaluation and logs a different message."
|
|
},
|
|
"human_like": "This automation toggles the 'Home State Evaluation' automation on or off based on a user-controlled switch, logging which mode is active.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "monitor_dryer_running",
|
|
"result": {
|
|
"structured": "TRIGGER: When dryer electric power [sensor.dryer_dryer_electric_w_value] rises above 50 watts OR When dryer electric power [sensor.dryer_dryer_electric_w_value] drops below 50 watts AND remains below for 2 minutes. CONDITIONS: None. ACTIONS: If the trigger was dryer_start, then turn on dryer running [input_boolean.dryer_running] and log a message 'Dryer started running'. If the trigger was dryer_stop, then turn off dryer running [input_boolean.dryer_running], log a message 'Dryer finished running', and execute the script script.send_dryer_done_notification.",
|
|
"natural_language": {
|
|
"trigger": "When the dryer's power consumption, monitored by dryer electric power [sensor.dryer_dryer_electric_w_value], exceeds 50 watts, or when it falls below 50 watts and stays below that level for at least two minutes.",
|
|
"conditions": "There are no additional conditions that must be met for the automation to proceed.",
|
|
"action": "If the dryer's power consumption exceeded 50 watts, the automation marks the dryer as running by turning on dryer running [input_boolean.dryer_running] and logs a 'Dryer started running' message. If the dryer's power consumption stayed below 50 watts for two minutes, the automation marks the dryer as not running by turning off dryer running [input_boolean.dryer_running], logs a 'Dryer finished running' message, and runs a script to send a notification that the dryer is done."
|
|
},
|
|
"human_like": "Tracks when the dryer starts and stops running based on its power consumption, updating a status indicator and sending a notification when it's finished.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "simple_washer_done",
|
|
"result": {
|
|
"structured": "TRIGGER: When washer power [sensor.washer_power] remains below 8 for 1 minute. CONDITIONS: washer notifications [input_boolean.washer_notifications] is on AND dryer reminder enable [input_boolean.dryer_reminder_enable] is on. ACTIONS: Execute script.send_washer_done_notification.",
|
|
"natural_language": {
|
|
"trigger": "When the washer power [sensor.washer_power] stays below 8 watts for at least one minute.",
|
|
"conditions": "The washer notifications [input_boolean.washer_notifications] must be turned on, and the dryer reminder enable [input_boolean.dryer_reminder_enable] must also be turned on.",
|
|
"action": "Runs the script 'send_washer_done_notification' to announce and send notifications."
|
|
},
|
|
"human_like": "Sends a notification when the washing machine finishes its cycle, provided notifications are enabled.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "dryer_reminder_every_15min",
|
|
"result": {
|
|
"structured": "TRIGGER: Every 15 minutes (at minutes divisible by 15). CONDITIONS: washer notifications [input_boolean.washer_notifications] is on AND dryer reminder enable [input_boolean.dryer_reminder_enable] is on AND clothes in dryer pending [input_boolean.clothes_in_dryer_pending] is on AND current time is between 08:00:00 and 21:00:00. ACTIONS: Execute script send_iphone_notification with title '🔔 Reminder: Dryer?' and message 'Don't forget - did you move the clothes to the dryer?', including action buttons '✅ Yes, all moved!' (CLOTHES_IN_DRYER_YES) and '⏰ Remind me later' (CLOTHES_REMIND_30MIN).",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers every 15 minutes, on the hour, quarter past, half past, and quarter to.",
|
|
"conditions": "All of the following must be true: the washer notifications [input_boolean.washer_notifications] are enabled, the dryer reminder enable [input_boolean.dryer_reminder_enable] is turned on, the clothes in dryer pending [input_boolean.clothes_in_dryer_pending] flag is set to on, and the current time is between 8:00 AM and 9:00 PM.",
|
|
"action": "Sends a notification to an iPhone with a reminder to move clothes to the dryer, providing two interactive buttons: one to confirm the clothes have been moved and another to be reminded again in 30 minutes."
|
|
},
|
|
"human_like": "Sends a reminder notification every 15 minutes during the day to check if laundry has been moved from the washer to the dryer.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_clothes_in_dryer_yes",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action CLOTHES_IN_DRYER_YES. CONDITIONS: None. ACTIONS: Execute script.handle_confirmation with data: boolean_entity set to clothes in dryer pending [input_boolean.clothes_in_dryer_pending], title set to '👍 Perfect!', message set to 'Great job! No more reminders.'.",
|
|
"natural_language": {
|
|
"trigger": "When the user taps the 'CLOTHES_IN_DRYER_YES' action button on a mobile app notification.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Runs a confirmation handling script, which will set the clothes in dryer pending [input_boolean.clothes_in_dryer_pending] state and send a notification with the title '👍 Perfect!' and the message 'Great job! No more reminders.'."
|
|
},
|
|
"human_like": "Stops laundry reminders when the user confirms that the clothes are in the dryer.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_dryer_remind_30min",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event with action CLOTHES_REMIND_30MIN is received. CONDITIONS: None. ACTIONS: Execute the script handle_snooze with parameters: boolean_entity = clothes in dryer pending [input_boolean.clothes_in_dryer_pending], snooze_title = '⏰ Snoozed!', snooze_message = 'I'll remind you again in 30 minutes.', reminder_title = '🔔 Snooze Over!', reminder_message = 'Did you move the clothes to the dryer now?', reminder_actions = [{'action': 'CLOTHES_IN_DRYER_YES', 'title': '✅ Yes, all moved!'}, {'action': 'CLOTHES_REMIND_30MIN', 'title': '⏰ Remind me later'}].",
|
|
"natural_language": {
|
|
"trigger": "When you tap the 'Remind me later' action (CLOTHES_REMIND_30MIN) on a mobile app notification.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Runs a script called 'handle_snooze' which will snooze the 'clothes in dryer pending' [input_boolean.clothes_in_dryer_pending] reminder. It will send a confirmation notification saying 'Snoozed!' and then send a follow-up notification in 30 minutes asking if the clothes have been moved, with options to confirm or snooze again."
|
|
},
|
|
"human_like": "Snoozes a laundry reminder for 30 minutes when you tap the 'Remind me later' button on your phone.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "washer_cleaning_after_cycle",
|
|
"result": {
|
|
"structured": "TRIGGER: When washer power [sensor.washer_power] remains below 8 for 1 minute. CONDITIONS: washer notifications [input_boolean.washer_notifications] is on AND washer cleaning reminder enable [input_boolean.washer_cleaning_reminder_enable] is on AND washer cleaning pending [input_boolean.washer_cleaning_pending] is off AND current time is between 08:00:00 and 21:00:00. ACTIONS: Calculate days since washer last cleaned [input_datetime.washer_last_cleaned]. IF days_since_cleaned >= 30 THEN turn on washer cleaning pending [input_boolean.washer_cleaning_pending] AND send iPhone notification with title '🧽 Washer Maintenance Time!' and a message prompting for a cleaning cycle, including action buttons '✅ Just cleaned it!' and '🌙 Remind me tonight'.",
|
|
"natural_language": {
|
|
"trigger": "When the washer power [sensor.washer_power] stays below 8 watts for one minute, indicating the wash cycle has finished.",
|
|
"conditions": "All of the following must be true: the washer notifications [input_boolean.washer_notifications] are enabled, the washer cleaning reminder enable [input_boolean.washer_cleaning_reminder_enable] is on, there is no pending cleaning reminder (washer cleaning pending [input_boolean.washer_cleaning_pending] is off), and the current time is between 8 AM and 9 PM.",
|
|
"action": "First, it calculates how many days have passed since the washer was last cleaned, using the washer last cleaned [input_datetime.washer_last_cleaned] date. If it has been 30 days or more, it marks a reminder as pending by turning on washer cleaning pending [input_boolean.washer_cleaning_pending] and sends a notification to an iPhone. The notification asks if it's time for a cleaning cycle and provides buttons to confirm the cleaning was done or to be reminded later."
|
|
},
|
|
"human_like": "Sends a reminder to clean the washing machine after a wash cycle finishes, but only if it's been 30 days since the last cleaning and during daytime hours.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "washer_cleaning_nag_hourly",
|
|
"result": {
|
|
"structured": "TRIGGER: When the time matches the pattern of minutes equal to 0 (every hour). CONDITIONS: washer notifications [input_boolean.washer_notifications] is on AND washer cleaning reminder enable [input_boolean.washer_cleaning_reminder_enable] is on AND washer cleaning pending [input_boolean.washer_cleaning_pending] is on AND the current time is after 09:00:00 AND before 21:00:00. ACTIONS: Execute script.send_iphone_notification with title '🔔 Cleaning Reminder' and message 'Don't forget - your washer needs a cleaning cycle soon!', including two action buttons: '✅ Just cleaned it!' (action WASHER_CLEANED_YES) and '🌙 Remind me tonight' (action WASHER_CLEAN_REMIND_LATER).",
|
|
"natural_language": {
|
|
"trigger": "The automation triggers at the start of every hour (when the minutes are zero).",
|
|
"conditions": "All of the following must be true: the washer notifications [input_boolean.washer_notifications] are enabled, the washer cleaning reminder enable [input_boolean.washer_cleaning_reminder_enable] is turned on, the washer cleaning pending [input_boolean.washer_cleaning_pending] status is on, and the current time is between 9:00 AM and 9:00 PM.",
|
|
"action": "Sends a notification to an iPhone with a reminder message about the washer needing a cleaning cycle, providing two interactive buttons to either confirm the cleaning was done or to request a reminder later in the evening."
|
|
},
|
|
"human_like": "Sends an hourly reminder during the day to clean the washer, but only if reminders are enabled and a cleaning is still pending.",
|
|
"complexity": "medium"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_washer_cleaned_yes",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action event occurs with action value 'WASHER_CLEANED_YES'. CONDITIONS: None. ACTIONS: Turn off washer cleaning pending [input_boolean.washer_cleaning_pending] AND set washer last cleaned [input_datetime.washer_last_cleaned] to today's date AND execute script.handle_confirmation with parameters boolean_entity: input_boolean.washer_cleaning_pending, title: '🌟 Excellent!', message: 'Thanks! I'll remind you again in 30 days.'.",
|
|
"natural_language": {
|
|
"trigger": "When you tap the 'WASHER_CLEANED_YES' action on a notification sent to the mobile app.",
|
|
"conditions": "There are no conditions; the automation runs immediately when the trigger occurs.",
|
|
"action": "It turns off the washer cleaning pending [input_boolean.washer_cleaning_pending] flag, updates the washer last cleaned [input_datetime.washer_last_cleaned] date to today, and runs a confirmation script that shows a success message thanking you and indicating the next reminder will be in 30 days."
|
|
},
|
|
"human_like": "Stops washer cleaning reminders and logs the cleaning date when you confirm the washer has been cleaned via a mobile notification.",
|
|
"complexity": "low"
|
|
}
|
|
},
|
|
{
|
|
"id": "handle_washer_clean_remind_tonight",
|
|
"result": {
|
|
"structured": "TRIGGER: When a mobile app notification action with action type WASHER_CLEAN_REMIND_LATER is received. CONDITIONS: None. ACTIONS: Execute script.handle_snooze with parameters: set boolean_entity to washer cleaning pending [input_boolean.washer_cleaning_pending], snooze_title to '🌙 Got it!', snooze_message to 'I'll remind you tonight about washer cleaning.', delay_time to '19:00:00', reminder_title to '🌆 Evening Reminder!', reminder_message to 'Good time to run a washer cleaning cycle tonight?', and reminder_actions to a list containing action WASHER_CLEANED_YES with title '✅ Just cleaned it!' and action WASHER_CLEAN_REMIND_LATER with title '📅 Maybe tomorrow'.",
|
|
"natural_language": {
|
|
"trigger": "When you tap the 'WASHER_CLEAN_REMIND_LATER' action on a mobile app notification.",
|
|
"conditions": "There are no additional conditions that must be met.",
|
|
"action": "Runs a script called 'handle_snooze' which will temporarily acknowledge the reminder. It sets the washer cleaning pending [input_boolean.washer_cleaning_pending] status, sends a confirmation message, and schedules a new reminder notification for 7:00 PM. The evening reminder will ask if it's a good time to clean the washer and provide action buttons to confirm the task or postpone it again."
|
|
},
|
|
"human_like": "Snoozes a washer cleaning reminder until the evening when you tap the 'remind later' option on your phone.",
|
|
"complexity": "low"
|
|
}
|
|
}
|
|
] |