[ { "id": "LR Aircon", "result": { "structured": "TRIGGER: When the template evaluates to true because the time since the last change of LR AC flaps contact sensor [binary_sensor.lr_ac_flaps_contact] is less than 4 seconds OR when the state of LR AC mode selector [input_select.lr_ac_mode] changes. CONDITIONS: None (conditions are embedded within the choose action). ACTIONS: Choose one of two sequences based on which trigger fired. If the 'mode' trigger fired, execute a script based on the current state of LR AC mode selector [input_select.lr_ac_mode] (Powerful Heat, Normal Heat, Silent Heat, Manual Heat, Powerful Cool, Normal Cool, Silent Cool, Manual Cool, Normal Humidifier, Ai Auto, Man Auto, Fan, or Off). If the 'flaps' trigger fired, first check the condition that LR AC flaps contact sensor [binary_sensor.lr_ac_flaps_contact] is not in an 'unknown', 'unavailable', or 'none' state, then set LR AC mode selector [input_select.lr_ac_mode] to its current value if changed less than 10 seconds ago, otherwise set it to 'Off' if the flaps are closed (off) or to 'Man Auto' if the flaps are open (on). If no conditions match, do nothing.", "natural_language": { "trigger": "The automation triggers in two ways: first, when the LR AC flaps contact sensor [binary_sensor.lr_ac_flaps_contact] has changed state within the last 4 seconds; second, when the LR AC mode selector [input_select.lr_ac_mode] changes its selected option.", "conditions": "There are no global conditions. However, the actions include internal checks. For the action triggered by the flaps sensor, it first verifies that the sensor's state is valid (not 'unknown', 'unavailable', or 'none').", "action": "Depending on which trigger occurred, the automation performs different actions. If the mode selector changed, it runs a specific script corresponding to the newly selected mode (e.g., powerful heat, normal cool, off, etc.). If the flaps sensor triggered, it updates the mode selector: if the mode was changed less than 10 seconds ago, it keeps the current mode; otherwise, it sets the mode to 'Off' if the flaps are closed, or to 'Man Auto' if the flaps are open, provided the sensor state is valid." }, "human_like": "Controls the living room air conditioner by running the appropriate operation script when the mode is changed, or by automatically setting the mode based on the state of the AC's flaps.", "complexity": "high" } }, { "id": "LR Aircon AM Schedule", "result": { "structured": "TRIGGER: When LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active] OR LR AC heat required [binary_sensor.lr_ac_heat_required] OR LR AC cool required [binary_sensor.lr_ac_cool_required] turns on and remains on for 10 seconds OR When Hallway door [binary_sensor.hallway_door] turns off. CONDITIONS: Vacation mode [input_boolean.vacation_mode] is NOT on AND LR AC mode selector [input_select.lr_ac_mode] is Off AND Hallway door [binary_sensor.hallway_door] is off AND LR radar status [binary_sensor.lr_radar_status] is on AND (LR AC heat required [binary_sensor.lr_ac_heat_required] is on OR LR AC cool required [binary_sensor.lr_ac_cool_required] is on) AND LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active] is on AND Home mode selector [input_select.home_mode] is Home. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Normal Heat' if LR AC heat required [binary_sensor.lr_ac_heat_required] is on, otherwise set to 'Normal Cool' if LR AC cool required [binary_sensor.lr_ac_cool_required] is on, otherwise set to 'Off'.", "natural_language": { "trigger": "The automation triggers when either the LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active], the LR AC heat required [binary_sensor.lr_ac_heat_required], or the LR AC cool required [binary_sensor.lr_ac_cool_required] becomes active and stays on for 10 seconds. Alternatively, it also triggers when the Hallway door [binary_sensor.hallway_door] closes.", "conditions": "Several conditions must be met: Vacation mode [input_boolean.vacation_mode] must be off. The LR AC mode selector [input_select.lr_ac_mode] must currently be set to 'Off'. The Hallway door [binary_sensor.hallway_door] must be closed. The LR radar status [binary_sensor.lr_radar_status] must be on, indicating occupancy. At least one of the climate needs must be active: either LR AC heat required [binary_sensor.lr_ac_heat_required] or LR AC cool required [binary_sensor.lr_ac_cool_required] must be on. The LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active] must be on. Finally, the Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "The automation changes the LR AC mode selector [input_select.lr_ac_mode] to either 'Normal Heat' or 'Normal Cool' based on which climate requirement is active. If heating is required, it selects 'Normal Heat'. If cooling is required, it selects 'Normal Cool'. If neither is required, it sets the mode back to 'Off'." }, "human_like": "Automatically turns on the living room air conditioner in the morning for heating or cooling, but only when the house is occupied, the door is closed, and it's not vacation time.", "complexity": "medium" } }, { "id": "LR Aircon PM Schedule", "result": { "structured": "TRIGGER: When LR AC heat required [binary_sensor.lr_ac_heat_required] OR LR AC cool required [binary_sensor.lr_ac_cool_required] OR LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active] turns on (to 'on') AND remains on for 10 seconds. OR When Hallway door [binary_sensor.hallway_door] turns off (to 'off'). CONDITIONS: Vacation mode [input_boolean.vacation_mode] is NOT on AND LR AC mode selector [input_select.lr_ac_mode] is 'Off' AND Hallway door [binary_sensor.hallway_door] is 'off' AND LR radar status [binary_sensor.lr_radar_status] is 'on' AND (LR AC heat required [binary_sensor.lr_ac_heat_required] is 'on' OR LR AC cool required [binary_sensor.lr_ac_cool_required] is 'on') AND LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active] is 'on' AND Home mode selector [input_select.home_mode] is 'Home'. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Normal Heat' if LR AC heat required [binary_sensor.lr_ac_heat_required] is on, else set to 'Normal Cool' if LR AC cool required [binary_sensor.lr_ac_cool_required] is on, else set to 'Off'.", "natural_language": { "trigger": "The automation triggers in two ways. First, if any of the sensors for LR AC heat required [binary_sensor.lr_ac_heat_required], LR AC cool required [binary_sensor.lr_ac_cool_required], or LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active] turn on and stay on for 10 seconds. Second, if the Hallway door [binary_sensor.hallway_door] closes.", "conditions": "Several conditions must all be true. Vacation mode [input_boolean.vacation_mode] must be off. The living room air conditioner must currently be set to 'Off' via the LR AC mode selector [input_select.lr_ac_mode]. The Hallway door [binary_sensor.hallway_door] must be closed. The LR radar status [binary_sensor.lr_radar_status] must be on, indicating occupancy. At least one of the climate needs must be active: either LR AC heat required [binary_sensor.lr_ac_heat_required] or LR AC cool required [binary_sensor.lr_ac_cool_required] must be on. The scheduled time window for this automation, indicated by LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active], must be active. Finally, the overall Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "The automation selects a new mode for the living room air conditioner. It sets the LR AC mode selector [input_select.lr_ac_mode] to 'Normal Heat' if heating is required, or to 'Normal Cool' if cooling is required. If neither heating nor cooling is required, it sets the mode back to 'Off'." }, "human_like": "Automatically turns on the living room air conditioner for heating or cooling during a scheduled evening time window, but only when the home is occupied, the door is closed, and vacation mode is off.", "complexity": "medium" } }, { "id": "LR Aircon AM Off", "result": { "structured": "TRIGGER: When LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active] changes to off. CONDITIONS: LR AC AM schedule automation [automation.lr_aircon_am_schedule] is on AND LR AC mode selector [input_select.lr_ac_mode] is not set to 'Off' AND Home mode selector [input_select.home_mode] is set to 'Home' AND Living air freshener presence [binary_sensor.living_airfreshener_presence] is off. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Off'.", "natural_language": { "trigger": "When the LR AC AM automation time active [binary_sensor.lr_ac_am_automation_time_active] sensor changes to an 'off' state.", "conditions": "The LR AC AM schedule automation [automation.lr_aircon_am_schedule] must be active. The LR AC mode selector [input_select.lr_ac_mode] must not already be set to 'Off'. The Home mode selector [input_select.home_mode] must be set to 'Home'. The Living air freshener presence [binary_sensor.living_airfreshener_presence] sensor must report 'off', indicating no presence.", "action": "Changes the living room air conditioning mode to 'Off' by setting the LR AC mode selector [input_select.lr_ac_mode] to the 'Off' option." }, "human_like": "Turns off the living room air conditioning in the morning when the scheduled automation time ends, provided the home is in 'Home' mode and no one is detected in the room.", "complexity": "medium" } }, { "id": "LR Aircon PM Off", "result": { "structured": "TRIGGER: When LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active] turns off. CONDITIONS: LR AC PM schedule automation [automation.lr_aircon_pm_schedule] is on AND LR AC mode selector [input_select.lr_ac_mode] is not set to 'Off' AND Home mode selector [input_select.home_mode] is set to 'Home' AND Living air freshener presence [binary_sensor.living_airfreshener_presence] is off. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Off'.", "natural_language": { "trigger": "When the LR AC PM automation time active [binary_sensor.lr_ac_pm_automation_time_active] sensor turns off.", "conditions": "The LR AC PM schedule automation [automation.lr_aircon_pm_schedule] must be enabled. The LR AC mode selector [input_select.lr_ac_mode] must not already be set to 'Off'. The Home mode selector [input_select.home_mode] must be set to 'Home'. The Living air freshener presence [binary_sensor.living_airfreshener_presence] sensor must indicate no presence (off).", "action": "Turn off the living room air conditioner by setting the LR AC mode selector [input_select.lr_ac_mode] to 'Off'." }, "human_like": "Turns off the living room air conditioner in the evening when the scheduled automation time ends, provided the home is in 'Home' mode and no one is detected in the room.", "complexity": "medium" } }, { "id": "LR Room Aircon Cool Temperature Adjust", "result": { "structured": "TRIGGER: When LR AC temperature set cool [input_number.lr_ac_temp_set_cool] changes state. CONDITIONS: LR AC mode selector [input_select.lr_ac_mode] state contains the substring 'Cool'. ACTIONS: If the integer value of LR AC temperature set cool [input_number.lr_ac_temp_set_cool] is not equal to 0, then execute LR cool manual script [script.lr_cool_man]. Then, set LR AC mode selector [input_select.lr_ac_mode] to 'Manual Cool'.", "natural_language": { "trigger": "Whenever the LR AC temperature set cool [input_number.lr_ac_temp_set_cool] value changes.", "conditions": "The current mode selected on the LR AC mode selector [input_select.lr_ac_mode] must include the word 'Cool'.", "action": "If the temperature setpoint is not zero, it runs the LR cool manual script [script.lr_cool_man]. Then, it changes the AC mode to 'Manual Cool' via the LR AC mode selector [input_select.lr_ac_mode]." }, "human_like": "When the cooling temperature is adjusted and the AC is in a cooling mode, it runs a script to update the AC and switches the mode to 'Manual Cool'.", "complexity": "medium" } }, { "id": "LR Room Aircon Heat Temperature Adjust", "result": { "structured": "TRIGGER: When LR AC temperature set heat [input_number.lr_ac_temp_set_heat] changes state. CONDITIONS: LR AC mode selector [input_select.lr_ac_mode] state contains the string 'Heat'. ACTIONS: If the numeric state of LR AC temperature set heat [input_number.lr_ac_temp_set_heat] is not equal to 0, then run LR heat manual script [script.lr_heat_man]. Then, set LR AC mode selector [input_select.lr_ac_mode] to 'Manual Heat'.", "natural_language": { "trigger": "Whenever the LR AC temperature set heat [input_number.lr_ac_temp_set_heat] value changes.", "conditions": "The LR AC mode selector [input_select.lr_ac_mode] must be set to a mode that includes the word 'Heat' in its name.", "action": "If the current value of LR AC temperature set heat [input_number.lr_ac_temp_set_heat] is not zero, it runs the LR heat manual script [script.lr_heat_man]. Then, it sets the LR AC mode selector [input_select.lr_ac_mode] to 'Manual Heat'." }, "human_like": "Adjusts the living room air conditioning heating settings and switches the mode to 'Manual Heat' when the heat temperature is changed.", "complexity": "medium" } }, { "id": "LR Room Aircon Humidity Set", "result": { "structured": "TRIGGER: When LR humidity set [input_number.lr_humidity_set] changes state. CONDITIONS: The current state of LR AC mode selector [input_select.lr_ac_mode] contains the substring 'Cool'. ACTIONS: If the numeric state of LR humidity set [input_number.lr_humidity_set] is not equal to 0, then call the script LR humidity set script [script.lr_humidity_set]. Otherwise, do nothing.", "natural_language": { "trigger": "Whenever the value of the LR humidity set [input_number.lr_humidity_set] input number changes.", "conditions": "The LR AC mode selector [input_select.lr_ac_mode] must be set to a mode that includes the word 'Cool'.", "action": "If the set humidity value is not zero, it runs the LR humidity set script [script.lr_humidity_set]. If the value is zero, no action is taken." }, "human_like": "When the living room humidity target is adjusted, it triggers a script to set the air conditioner's humidity, but only if the AC is in a cooling mode.", "complexity": "medium" } }, { "id": "LR Powerful Cool On", "result": { "structured": "TRIGGER: When LR AC mode selector [input_select.lr_ac_mode] remains in state 'Normal Cool' for 30 minutes OR when LR AC cool required [binary_sensor.lr_ac_cool_required] remains on for 5 minutes. CONDITIONS: LR AC cool required [binary_sensor.lr_ac_cool_required] is on AND LR AC mode selector [input_select.lr_ac_mode] is in state 'Normal Cool'. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to option 'Powerful Cool'.", "natural_language": { "trigger": "When the living room air conditioning mode selector [input_select.lr_ac_mode] stays on 'Normal Cool' for 30 minutes, or when the sensor indicating cooling is required [binary_sensor.lr_ac_cool_required] has been on for 5 minutes.", "conditions": "The sensor indicating cooling is required [binary_sensor.lr_ac_cool_required] must be on, and the air conditioning mode selector [input_select.lr_ac_mode] must be set to 'Normal Cool'.", "action": "Changes the living room air conditioning mode from 'Normal Cool' to 'Powerful Cool'." }, "human_like": "Switches the living room air conditioner to a more powerful cooling mode if it has been in normal cooling for a while or if cooling is needed for a short period.", "complexity": "medium" } }, { "id": "LR Powerful Cool Off", "result": { "structured": "TRIGGER: When LR AC mode selector [input_select.lr_ac_mode] remains set to 'Powerful Cool' for 30 minutes OR When LR AC cool required [binary_sensor.lr_ac_cool_required] remains off for 5 minutes. CONDITIONS: LR AC mode selector [input_select.lr_ac_mode] is currently set to 'Powerful Cool'. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Normal Cool'.", "natural_language": { "trigger": "Either when the LR AC mode selector [input_select.lr_ac_mode] has been set to 'Powerful Cool' for 30 minutes, or when the LR AC cool required [binary_sensor.lr_ac_cool_required] sensor indicates cooling is no longer required (off) for 5 minutes.", "conditions": "The automation only runs if the LR AC mode selector [input_select.lr_ac_mode] is currently in the 'Powerful Cool' mode.", "action": "Changes the air conditioning mode from 'Powerful Cool' to 'Normal Cool' by updating the LR AC mode selector [input_select.lr_ac_mode]." }, "human_like": "Automatically switches the living room AC from a powerful cooling mode to a normal one after 30 minutes or when cooling is no longer needed.", "complexity": "medium" } }, { "id": "LR Powerful Heat Off", "result": { "structured": "TRIGGER: When LR AC mode selector [input_select.lr_ac_mode] remains set to 'Powerful Heat' for 30 minutes OR When LR AC heat required [binary_sensor.lr_ac_heat_required] remains off for 5 minutes. CONDITIONS: LR AC mode selector [input_select.lr_ac_mode] is currently set to 'Powerful Heat'. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Normal Heat'.", "natural_language": { "trigger": "When the living room air conditioner has been in 'Powerful Heat' mode for 30 minutes, or when the sensor indicating heat is required has been off for 5 minutes.", "conditions": "The automation only runs if the air conditioner is currently in 'Powerful Heat' mode.", "action": "Changes the air conditioner mode from 'Powerful Heat' to 'Normal Heat'." }, "human_like": "Switches the living room air conditioner from Powerful Heat to Normal Heat after a set time or when heat is no longer needed.", "complexity": "medium" } }, { "id": "LR Powerful Heat On", "result": { "structured": "TRIGGER: When LR AC mode selector [input_select.lr_ac_mode] remains set to 'Normal Heat' for 30 minutes OR When LR AC heat required [binary_sensor.lr_ac_heat_required] remains on for 5 minutes. CONDITIONS: LR AC heat required [binary_sensor.lr_ac_heat_required] is on AND LR AC mode selector [input_select.lr_ac_mode] is set to 'Normal Heat'. ACTIONS: Set LR AC mode selector [input_select.lr_ac_mode] to 'Powerful Heat'.", "natural_language": { "trigger": "When the LR AC mode selector [input_select.lr_ac_mode] has been set to 'Normal Heat' for a continuous period of 30 minutes, or when the LR AC heat required [binary_sensor.lr_ac_heat_required] sensor has been indicating that heat is required for a continuous period of 5 minutes.", "conditions": "The LR AC heat required [binary_sensor.lr_ac_heat_required] sensor must be in the 'on' state, and the LR AC mode selector [input_select.lr_ac_mode] must be set to 'Normal Heat'.", "action": "Changes the LR AC mode selector [input_select.lr_ac_mode] to the 'Powerful Heat' setting." }, "human_like": "Switches the living room air conditioner to a more powerful heating mode if it has been in normal heating mode for a while or if heat is required for a short period.", "complexity": "medium" } }, { "id": "LR Heating Seasonal Adjustment AM", "result": { "structured": "TRIGGER: At 04:00:00. CONDITIONS: Entrance temperature sensor [sensor.entrance_temperature] temperature is greater than 22 degrees. ACTIONS: Set LR heater heat temperature set [input_number.lr_heater_heat_temp_set] to 18 if Season sensor [sensor.season] is 'summer', to 19 if 'autumn', to 17 if 'winter', or to 17 if 'spring'. Then, if the condition is met, set LR heater heat temperature set [input_number.lr_heater_heat_temp_set] to 16.", "natural_language": { "trigger": "The automation runs every day at 4:00 AM.", "conditions": "After the initial action, a check is performed: if the Entrance temperature sensor [sensor.entrance_temperature] reads a temperature higher than 22 degrees.", "action": "First, the automation adjusts the LR heater heat temperature set [input_number.lr_heater_heat_temp_set] based on the current season reported by the Season sensor [sensor.season]: to 18 in summer, 19 in autumn, and 17 in winter or spring. Then, if the entrance temperature is above 22 degrees, it overrides that setting and sets the heater temperature to 16." }, "human_like": "Adjusts the living room heater's target temperature at 4 AM based on the season, and lowers it further if the entrance is already warm.", "complexity": "medium" } }, { "id": "LR Heating Seasonal Adjustment PM", "result": { "structured": "TRIGGER: When the time is 13:00:00. CONDITIONS: None. ACTIONS: Set LR heater heat temperature set [input_number.lr_heater_heat_temp_set] to a value determined by the state of Season sensor [sensor.season]: 18 if season is 'summer', 19 if season is 'autumn', 18 if season is 'winter', 17 if season is 'spring'.", "natural_language": { "trigger": "Every day at 1:00 PM.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Sets the living room heater's target heat temperature [input_number.lr_heater_heat_temp_set] based on the current season. If the Season sensor [sensor.season] reports 'summer' or 'winter', the temperature is set to 18. If it's 'autumn', it's set to 19. If it's 'spring', it's set to 17." }, "human_like": "Adjusts the living room heater's temperature target in the afternoon based on the current season.", "complexity": "low" } }, { "id": "SB Humidifier", "result": { "structured": "TRIGGER: When SB humidifier mode selector [input_select.sb_humidifier_mode] changes state. CONDITIONS: None. ACTIONS: If SB humidifier mode selector [input_select.sb_humidifier_mode] is 'Low', run Humidifier low script [script.humidifier_low]. If SB humidifier mode selector [input_select.sb_humidifier_mode] is 'Med', run Humidifier medium script [script.humidifier_med]. If SB humidifier mode selector [input_select.sb_humidifier_mode] is 'High', run Humidifier high script [script.humidifier_high]. If SB humidifier mode selector [input_select.sb_humidifier_mode] is 'Auto', run Humidifier auto script [script.humidifier_auto]. If SB humidifier mode selector [input_select.sb_humidifier_mode] is 'Off', run Humidifier off script [script.humidifier_off].", "natural_language": { "trigger": "Whenever the SB humidifier mode selector [input_select.sb_humidifier_mode] changes to a new state.", "conditions": "There are no additional conditions that must be met.", "action": "Depending on the new state of the mode selector, a corresponding script is executed. If the mode is set to 'Low', the Humidifier low script [script.humidifier_low] runs. If set to 'Med', the Humidifier medium script [script.humidifier_med] runs. If set to 'High', the Humidifier high script [script.humidifier_high] runs. If set to 'Auto', the Humidifier auto script [script.humidifier_auto] runs. If set to 'Off', the Humidifier off script [script.humidifier_off] runs." }, "human_like": "Changes the humidifier's operation mode by running a specific script whenever the mode selector is adjusted.", "complexity": "low" } }, { "id": "SB Humidifier Intensity", "result": { "structured": "TRIGGER: When LR humidity intensity set [input_number.lrh_humidity_intensity_set] changes state. CONDITIONS: SB humidifier switch [input_boolean.sb_humidifier] is on. ACTIONS: Execute LR humidity intensity set script [script.lrh_humidity_intensity_set].", "natural_language": { "trigger": "Whenever the LR humidity intensity set [input_number.lrh_humidity_intensity_set] value changes.", "conditions": "The SB humidifier switch [input_boolean.sb_humidifier] must be turned on.", "action": "Runs the LR humidity intensity set script [script.lrh_humidity_intensity_set]." }, "human_like": "Adjusts the humidifier intensity when the set value changes, but only if the humidifier is currently on.", "complexity": "low" } }, { "id": "SB Humidifier AM Schedule", "result": { "structured": "TRIGGER: When LRH humidifier AM automation time active [binary_sensor.lrh_humidifier_am_automation_time_active] turns on and remains on for 10 seconds. CONDITIONS: (LRH humidifier automation enable [input_boolean.lrh_humidifier_automation_enable] is on) AND (SB humidifier mode selector [input_select.sb_humidifier_mode] is Off) AND (LR radar humidity [sensor.lr_radar_humidity] is above LR humidity low set [input_number.lrh_humidity_low_set] AND below LR humidity high set [input_number.lrh_humidity_high_set]) AND (SB humidifier lack water sensor [sensor.sb_humidifier_lack_water] is False) AND (Home mode selector [input_select.home_mode] is Home). ACTIONS: Set SB humidifier mode selector [input_select.sb_humidifier_mode] to High.", "natural_language": { "trigger": "When the LRH humidifier AM automation time active [binary_sensor.lrh_humidifier_am_automation_time_active] becomes active and stays active for 10 seconds.", "conditions": "The LRH humidifier automation enable [input_boolean.lrh_humidifier_automation_enable] must be switched on. The SB humidifier mode selector [input_select.sb_humidifier_mode] must currently be set to Off. The current humidity reading from LR radar humidity [sensor.lr_radar_humidity] must be between the low and high setpoints defined by LR humidity low set [input_number.lrh_humidity_low_set] and LR humidity high set [input_number.lrh_humidity_high_set]. The SB humidifier lack water sensor [sensor.sb_humidifier_lack_water] must not be reporting a lack of water (i.e., it must be False). Finally, the Home mode selector [input_select.home_mode] must be set to Home.", "action": "Changes the SB humidifier mode selector [input_select.sb_humidifier_mode] to High." }, "human_like": "Automatically sets the humidifier to High mode during the scheduled morning time if the automation is enabled, the humidity is within a desired range, and no other issues are present.", "complexity": "medium" } }, { "id": "SB Humidifier PM Schedule", "result": { "structured": "TRIGGER: When LRH humidifier PM automation time active [binary_sensor.lrh_humidifier_pm_automation_time_active] becomes on AND remains on for 10 seconds. CONDITIONS: (LRH humidifier automation enable [input_boolean.lrh_humidifier_automation_enable] is on) AND (SB humidifier mode selector [input_select.sb_humidifier_mode] is Off) AND (SB humidifier humidity sensor [sensor.sb_humidifier_humidity] is above LR humidity low set [input_number.lrh_humidity_low_set] AND below LR humidity high set [input_number.lrh_humidity_high_set]) AND (SB humidifier lack water sensor [sensor.sb_humidifier_lack_water] is False) AND (Home mode selector [input_select.home_mode] is Home). ACTIONS: Set SB humidifier mode selector [input_select.sb_humidifier_mode] to High.", "natural_language": { "trigger": "When the LRH humidifier PM automation time active [binary_sensor.lrh_humidifier_pm_automation_time_active] sensor turns on and stays on for 10 seconds.", "conditions": "The LRH humidifier automation enable [input_boolean.lrh_humidifier_automation_enable] must be on. The SB humidifier mode selector [input_select.sb_humidifier_mode] must be set to Off. The current humidity reading from the SB humidifier humidity sensor [sensor.sb_humidifier_humidity] must be between the low and high setpoints defined by LR humidity low set [input_number.lrh_humidity_low_set] and LR humidity high set [input_number.lrh_humidity_high_set]. The SB humidifier lack water sensor [sensor.sb_humidifier_lack_water] must report False, indicating water is present. Finally, the Home mode selector [input_select.home_mode] must be set to Home.", "action": "Changes the SB humidifier mode selector [input_select.sb_humidifier_mode] to High." }, "human_like": "Automatically sets the humidifier to High mode during a scheduled evening time if the humidity is within a target range, automation is enabled, and the home is occupied.", "complexity": "medium" } }, { "id": "SB Humidifier AM Off", "result": { "structured": "TRIGGER: When LRH humidifier AM automation time active [binary_sensor.lrh_humidifier_am_automation_time_active] changes to off. CONDITIONS: SB humidifier AM schedule automation [automation.sb_humidifier_am_schedule] is on AND SB humidifier mode selector [input_select.sb_humidifier_mode] is not set to 'Off'. ACTIONS: Set SB humidifier mode selector [input_select.sb_humidifier_mode] to 'Off'.", "natural_language": { "trigger": "When the LRH humidifier AM automation time active [binary_sensor.lrh_humidifier_am_automation_time_active] sensor changes its state to off.", "conditions": "The SB humidifier AM schedule automation [automation.sb_humidifier_am_schedule] must be enabled (in the 'on' state), and the current mode selected on the SB humidifier mode selector [input_select.sb_humidifier_mode] must not already be 'Off'.", "action": "Changes the humidifier mode to 'Off' by setting the SB humidifier mode selector [input_select.sb_humidifier_mode] to the 'Off' option." }, "human_like": "Turns off the humidifier's morning automation mode when the scheduled active time ends, but only if the automation is running and the humidifier isn't already off.", "complexity": "low" } }, { "id": "SB Humidifier PM Off", "result": { "structured": "TRIGGER: When LRH humidifier PM automation time active [binary_sensor.lrh_humidifier_pm_automation_time_active] changes to off. CONDITIONS: SB humidifier PM schedule automation [automation.sb_humidifier_pm_schedule] is on AND SB humidifier mode selector [input_select.sb_humidifier_mode] is not set to 'Off'. ACTIONS: Set SB humidifier mode selector [input_select.sb_humidifier_mode] to 'Off'.", "natural_language": { "trigger": "When the LRH humidifier PM automation time active [binary_sensor.lrh_humidifier_pm_automation_time_active] sensor turns off.", "conditions": "The SB humidifier PM schedule automation [automation.sb_humidifier_pm_schedule] must be enabled, and the SB humidifier mode selector [input_select.sb_humidifier_mode] must not already be set to 'Off'.", "action": "Changes the SB humidifier mode selector [input_select.sb_humidifier_mode] to the 'Off' setting." }, "human_like": "Turns off the humidifier's PM mode when its scheduled active time ends, but only if the humidifier isn't already off.", "complexity": "low" } }, { "id": "Masterroom Occupancy", "result": { "structured": "TRIGGER: When the time pattern matches seconds = 10 OR when Masterroom human sensor moving target [binary_sensor.mr_human_sensor_moving_target] changes to on. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on AND the current time is between 06:00:00 and 22:01:00. ACTIONS: Execute Room occupancy Python script [python_script.room_occupancy] with data: roomname = masterroom, timeout = 2, entities_toggle includes Masterroom human sensor moving target [binary_sensor.mr_human_sensor_moving_target], entities_keep includes Masterroom presence [binary_sensor.mr_presence] and Masterroom MCL [input_boolean.masterroom_mcl].", "natural_language": { "trigger": "The automation triggers either every minute at 10 seconds past the minute, or when the Masterroom human sensor moving target [binary_sensor.mr_human_sensor_moving_target] detects motion (turns on).", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] is turned off, and the current time is between 6:00 AM and 10:01 PM.", "action": "It runs a custom Python script named Room occupancy Python script [python_script.room_occupancy] to manage the occupancy state for the masterroom. The script is given a timeout of 2 minutes, is instructed to toggle its logic based on the Masterroom human sensor moving target [binary_sensor.mr_human_sensor_moving_target], and to keep considering the Masterroom presence [binary_sensor.mr_presence] and Masterroom MCL [input_boolean.masterroom_mcl] sensors active." }, "human_like": "This automation manages the occupancy status of the masterroom by checking for motion and running a script during daytime hours, as long as motion-based lighting is not disabled.", "complexity": "medium" } }, { "id": "Masterroom Light", "result": { "structured": "TRIGGER: When Masterroom timer [timer.masterroom_timer] starts (transitions from idle to active) OR when Masterroom timer [timer.masterroom_timer] stops (transitions from active to idle) OR when Master light [light.master] turns off (transitions from on to off) OR when Masterroom occupancy lights [binary_sensor.mr_occupancy_lights] stops detecting occupancy (transitions from on to off) AND remains off for 45 seconds. CONDITIONS: (Disable motion lights [input_boolean.disable_motion_lights] is NOT on) AND (Home mode selector [input_select.home_mode] is Home) AND (Desktop status [binary_sensor.desktop_status] is NOT off) AND (Current time is between 06:00:00 and 22:01:00). ACTIONS: IF the trigger was Masterroom timer [timer.masterroom_timer] starting, THEN run Tradfri transition script [script.tradfri_transition] on M1 light [light.m_1] with color temperature 370, transition 2 seconds, and brightness 255. ELSE IF the trigger was Masterroom timer [timer.masterroom_timer] stopping AND Masterroom MCL [input_boolean.masterroom_mcl] is NOT on, THEN turn off Master light [light.master] AND finish Masterroom timer [timer.masterroom_timer]. OTHERWISE, do nothing.", "natural_language": { "trigger": "The automation can be triggered in four ways: when the Masterroom timer [timer.masterroom_timer] starts, when it stops, when the Master light [light.master] is turned off, or when the Masterroom occupancy lights [binary_sensor.mr_occupancy_lights] sensor reports no occupancy for 45 seconds.", "conditions": "For the automation to run, the following must all be true: the 'Disable motion lights' [input_boolean.disable_motion_lights] feature is turned off, the home mode [input_select.home_mode] is set to 'Home', the desktop computer [binary_sensor.desktop_status] is not reported as off, and the current time is between 6:00 AM and 10:01 PM.", "action": "Depending on what triggered the automation, different actions are taken. If the timer started, a specific light transition is applied to the M1 light [light.m_1]. If the timer stopped and a manual override (Masterroom MCL [input_boolean.masterroom_mcl]) is not active, the main Master light [light.master] is turned off and the timer is finished. Other triggers do not result in an action." }, "human_like": "Automatically controls the master room lights based on a timer, occupancy, and manual light switches, ensuring they only operate during the day and when the home is in 'Home' mode.", "complexity": "medium" } }, { "id": "Masterroom Auto-on", "result": { "structured": "TRIGGER: When Masterroom occupied [binary_sensor.masterroom_occupied] changes state. CONDITIONS: (Disable motion lights [input_boolean.disable_motion_lights] is NOT on) AND (Home mode selector [input_select.home_mode] is Home) AND (Desktop status [binary_sensor.desktop_status] is NOT off) AND (Time is between 06:00:00 and 22:01:00). ACTIONS: IF Masterroom occupied [binary_sensor.masterroom_occupied] is on THEN run Tradfri transition script [script.tradfri_transition] on M1 light [light.m_1] with color temperature 370, transition 2 seconds, and brightness 255. OTHERWISE turn off Master light [light.master].", "natural_language": { "trigger": "Whenever the occupancy state of the master room changes, as reported by the Masterroom occupied [binary_sensor.masterroom_occupied] sensor.", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] feature is turned off, the Home mode selector [input_select.home_mode] is set to 'Home', the Desktop status [binary_sensor.desktop_status] is not 'off', and the current time is between 6:00 AM and 10:01 PM.", "action": "If the master room becomes occupied, the automation will gradually turn on the M1 light [light.m_1] to a bright, warm white setting. If the room becomes unoccupied, it will turn off the main Master light [light.master]." }, "human_like": "Automatically controls the master room lights based on occupancy, turning them on when someone is present during the day and off when the room is empty.", "complexity": "medium" } }, { "id": "MR light turned off", "result": { "structured": "TRIGGER: When Master light [light.master] changes state from on to off. CONDITIONS: None. ACTIONS: Start MR MCL timer [timer.mr_mcl].", "natural_language": { "trigger": "When the Master light [light.master] is turned off.", "conditions": "There are no conditions for this automation.", "action": "Starts the MR MCL timer [timer.mr_mcl]." }, "human_like": "Starts a timer in the master room when the main light is turned off.", "complexity": "low" } }, { "id": "MR light turned on", "result": { "structured": "TRIGGER: When Master light [light.master] changes from off to on. CONDITIONS: MR MCL timer [timer.mr_mcl] is active. ACTIONS: Toggle Masterroom MCL [input_boolean.masterroom_mcl].", "natural_language": { "trigger": "When the Master light [light.master] is turned on.", "conditions": "Only if the MR MCL timer [timer.mr_mcl] is currently running.", "action": "Toggles the state of the Masterroom MCL [input_boolean.masterroom_mcl]." }, "human_like": "Toggles a masterroom control flag when the main light is turned on, but only if a specific timer is active.", "complexity": "low" } }, { "id": "MR MCL Announce State", "result": { "structured": "TRIGGER: When Masterroom MCL [input_boolean.masterroom_mcl] changes state. CONDITIONS: Audible notifications [input_boolean.audible_notifications] is on. ACTIONS: Execute Speech engine script [script.speech_engine] with parameters: speaker 'ai_2', message from template file '../tpl/speech/control_status.yaml', and voice set to the current value of Jarvis voice selector [input_select.jarvis_voice].", "natural_language": { "trigger": "Whenever the state of Masterroom MCL [input_boolean.masterroom_mcl] changes.", "conditions": "Only if Audible notifications [input_boolean.audible_notifications] is currently turned on.", "action": "Calls the Speech engine script [script.speech_engine] to announce the status. The announcement will use the voice profile 'ai_2', read the message content from the template file '../tpl/speech/control_status.yaml', and use the voice currently selected in Jarvis voice selector [input_select.jarvis_voice]." }, "human_like": "Announces the status of the Masterroom MCL control when it changes, but only if audible notifications are enabled.", "complexity": "low" } }, { "id": "MR MCL Re-Enable", "result": { "structured": "TRIGGER: When Masterroom MCL [input_boolean.masterroom_mcl] turns on and remains on for 1 hour. CONDITIONS: None. ACTIONS: Turn off Masterroom MCL [input_boolean.masterroom_mcl].", "natural_language": { "trigger": "When the Masterroom MCL [input_boolean.masterroom_mcl] is switched on and stays on for a full hour.", "conditions": "There are no additional conditions.", "action": "Turns off the Masterroom MCL [input_boolean.masterroom_mcl]." }, "human_like": "Automatically turns off the Masterroom MCL switch one hour after it is turned on.", "complexity": "low" } }, { "id": "MR Aircon", "result": { "structured": "TRIGGER: When MR AC mode selector [input_select.mr_ac_mode] changes state. CONDITIONS: None. ACTIONS: If MR AC mode selector [input_select.mr_ac_mode] is 'Powerful Heat', run MR AC powerful heat script [script.mr_ac_powerful_heat]. If MR AC mode selector [input_select.mr_ac_mode] is 'Normal Heat', run MR AC normal heat script [script.mr_ac_normal_heat]. If MR AC mode selector [input_select.mr_ac_mode] is 'Silent Heat', run MR AC silent heat script [script.mr_ac_silent_heat]. If MR AC mode selector [input_select.mr_ac_mode] is 'Manual Heat', run MR manual heat script [script.mr_heat_man]. If MR AC mode selector [input_select.mr_ac_mode] is 'Powerful Cool', run MR AC powerful cool script [script.mr_ac_powerful_cool]. If MR AC mode selector [input_select.mr_ac_mode] is 'Normal Cool', run MR AC normal cool script [script.mr_ac_normal_cool]. If MR AC mode selector [input_select.mr_ac_mode] is 'Silent Cool', run MR AC silent cool script [script.mr_ac_silent_cool]. If MR AC mode selector [input_select.mr_ac_mode] is 'Manual Cool', run MR manual cool script [script.mr_cool_man]. If MR AC mode selector [input_select.mr_ac_mode] is 'Normal Humidifier', run MR AC normal humidifier script [script.mr_ac_normal_humidifier]. If MR AC mode selector [input_select.mr_ac_mode] is 'Ai Auto', run MR AC AI script [script.mr_ac_ai]. If MR AC mode selector [input_select.mr_ac_mode] is 'Man Auto', run MR manual auto script [script.mr_man_auto]. If MR AC mode selector [input_select.mr_ac_mode] is 'Fan', run MR AC fan script [script.mr_ac_fan]. If MR AC mode selector [input_select.mr_ac_mode] is 'Off', run MR AC off script [script.mr_ac_off].", "natural_language": { "trigger": "Whenever the MR AC mode selector [input_select.mr_ac_mode] changes its selected value.", "conditions": "There are no additional conditions that must be met.", "action": "Based on the new value of the MR AC mode selector [input_select.mr_ac_mode], a corresponding script is executed. For example, selecting 'Powerful Heat' runs the MR AC powerful heat script [script.mr_ac_powerful_heat], while selecting 'Off' runs the MR AC off script [script.mr_ac_off]. The automation covers all available modes including heating, cooling, humidifying, fan, auto, and off." }, "human_like": "Controls the master room air conditioner by running different setup scripts whenever the mode selector is changed.", "complexity": "medium" } }, { "id": "MR Aircon AM Schedule", "result": { "structured": "TRIGGER: When MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active] OR MR AC heat required [binary_sensor.mr_ac_heat_required] OR MR AC cool required [binary_sensor.mr_ac_cool_required] turns on and remains on for 10 seconds OR When Master door [binary_sensor.master_door] turns off. CONDITIONS: (Vacation mode [input_boolean.vacation_mode] is NOT on) AND (MR AC mode selector [input_select.mr_ac_mode] is Off) AND (Master door [binary_sensor.master_door] is off) AND (MR DHT sensor status [binary_sensor.mr_dht_sensor_status] is on) AND (MR AC heat required [binary_sensor.mr_ac_heat_required] is on OR MR AC cool required [binary_sensor.mr_ac_cool_required] is on) AND (MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active] is on) AND (Home mode selector [input_select.home_mode] is Home). ACTIONS: Set MR AC mode selector [input_select.mr_ac_mode] to 'Normal Heat' if MR AC heat required [binary_sensor.mr_ac_heat_required] is on, otherwise set to 'Normal Cool' if MR AC cool required [binary_sensor.mr_ac_cool_required] is on, otherwise set to 'Off'.", "natural_language": { "trigger": "The automation triggers either when the MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active], MR AC heat required [binary_sensor.mr_ac_heat_required], or MR AC cool required [binary_sensor.mr_ac_cool_required] sensors turn on and stay on for 10 seconds, or when the Master door [binary_sensor.master_door] sensor turns off.", "conditions": "All of the following must be true: Vacation mode [input_boolean.vacation_mode] is not active. The MR AC mode selector [input_select.mr_ac_mode] is currently set to 'Off'. The Master door [binary_sensor.master_door] is closed (off). The MR DHT sensor status [binary_sensor.mr_dht_sensor_status] is reporting as on. Either the MR AC heat required [binary_sensor.mr_ac_heat_required] or the MR AC cool required [binary_sensor.mr_ac_cool_required] sensor is on. The MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active] sensor is on. The Home mode selector [input_select.home_mode] is set to 'Home'.", "action": "The automation sets the MR AC mode selector [input_select.mr_ac_mode] to either 'Normal Heat' or 'Normal Cool' based on which climate requirement is active. It chooses 'Normal Heat' if heating is required, otherwise 'Normal Cool' if cooling is required. If neither is required, it sets the mode back to 'Off'." }, "human_like": "Automatically switches the master room air conditioner to a heating or cooling mode during the scheduled morning time, but only when the room is occupied and the system is ready.", "complexity": "medium" } }, { "id": "MR Aircon PM Schedule", "result": { "structured": "TRIGGER: When any of MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active], MR AC heat required [binary_sensor.mr_ac_heat_required], or MR AC cool required [binary_sensor.mr_ac_cool_required] turns on and remains on for 10 seconds OR When Master door [binary_sensor.master_door] turns off. CONDITIONS: Vacation mode [input_boolean.vacation_mode] is not on AND MR AC mode selector [input_select.mr_ac_mode] is Off AND Master door [binary_sensor.master_door] is off AND MR DHT sensor status [binary_sensor.mr_dht_sensor_status] is on AND (MR AC heat required [binary_sensor.mr_ac_heat_required] is on OR MR AC cool required [binary_sensor.mr_ac_cool_required] is on) AND MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active] is on AND Home mode selector [input_select.home_mode] is Home. ACTIONS: Set MR AC mode selector [input_select.mr_ac_mode] to 'Normal Heat' if MR AC heat required [binary_sensor.mr_ac_heat_required] is on, otherwise set to 'Normal Cool' if MR AC cool required [binary_sensor.mr_ac_cool_required] is on, otherwise set to 'Off'.", "natural_language": { "trigger": "The automation triggers when either the MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active], MR AC heat required [binary_sensor.mr_ac_heat_required], or MR AC cool required [binary_sensor.mr_ac_cool_required] becomes active and stays on for at least 10 seconds, or when the Master door [binary_sensor.master_door] is closed.", "conditions": "All of the following must be true: Vacation mode [input_boolean.vacation_mode] is off, the MR AC mode selector [input_select.mr_ac_mode] is currently set to 'Off', the Master door [binary_sensor.master_door] is closed, the MR DHT sensor status [binary_sensor.mr_dht_sensor_status] is reporting as active, at least one of the MR AC heat required [binary_sensor.mr_ac_heat_required] or MR AC cool required [binary_sensor.mr_ac_cool_required] is active, the MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active] is active, and the Home mode selector [input_select.home_mode] is set to 'Home'.", "action": "Sets the MR AC mode selector [input_select.mr_ac_mode] to either 'Normal Heat' or 'Normal Cool' based on which climate requirement is active. If heating is required, it sets to 'Normal Heat'. If cooling is required, it sets to 'Normal Cool'. If neither is required, it sets it back to 'Off'." }, "human_like": "Automatically sets the master room air conditioning to a heating or cooling mode in the evening when the room is occupied, the door is closed, and the system is scheduled to be active.", "complexity": "medium" } }, { "id": "MR Aircon AM Off", "result": { "structured": "TRIGGER: When MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active] turns off. CONDITIONS: MR aircon AM schedule automation [automation.mr_aircon_am_schedule] is on AND MR AC mode selector [input_select.mr_ac_mode] is Off AND Home mode selector [input_select.home_mode] is Home. ACTIONS: Set MR AC mode selector [input_select.mr_ac_mode] to Off.", "natural_language": { "trigger": "When the MR AC AM automation time active [binary_sensor.mr_ac_am_automation_time_active] sensor changes to off.", "conditions": "The MR aircon AM schedule automation [automation.mr_aircon_am_schedule] must be enabled, the MR AC mode selector [input_select.mr_ac_mode] must already be set to Off, and the Home mode selector [input_select.home_mode] must be set to Home.", "action": "Sets the MR AC mode selector [input_select.mr_ac_mode] to Off (ensuring it remains off)." }, "human_like": "Ensures the master room air conditioner stays off in the morning when the scheduled automation time ends and the home is in 'Home' mode.", "complexity": "low" } }, { "id": "MR Aircon PM Off", "result": { "structured": "TRIGGER: When MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active] turns off. CONDITIONS: MR aircon PM schedule automation [automation.mr_aircon_pm_schedule] is on AND MR AC mode selector [input_select.mr_ac_mode] is set to Off AND Home mode selector [input_select.home_mode] is set to Home. ACTIONS: Set MR AC mode selector [input_select.mr_ac_mode] to Off.", "natural_language": { "trigger": "When the MR AC PM automation time active [binary_sensor.mr_ac_pm_automation_time_active] changes to off.", "conditions": "The MR aircon PM schedule automation [automation.mr_aircon_pm_schedule] must be enabled, the MR AC mode selector [input_select.mr_ac_mode] must already be set to Off, and the Home mode selector [input_select.home_mode] must be set to Home.", "action": "Sets the MR AC mode selector [input_select.mr_ac_mode] to Off." }, "human_like": "Ensures the master room air conditioner is set to Off when its evening automation time ends, but only if the home is in Home mode and the air conditioner is already off.", "complexity": "medium" } }, { "id": "MR Aircon Cool Temperature Adjust", "result": { "structured": "TRIGGER: When MR AC temperature set cool [input_number.mr_ac_temp_set_cool] changes state. CONDITIONS: The current state of MR AC mode selector [input_select.mr_ac_mode] contains the text 'Cool'. ACTIONS: If the state of MR AC temperature set cool [input_number.mr_ac_temp_set_cool] equals 0, then run MR manual cool script [script.mr_cool_man]. Then, set MR AC mode selector [input_select.mr_ac_mode] to 'Manual Cool'.", "natural_language": { "trigger": "When the MR AC temperature set cool [input_number.mr_ac_temp_set_cool] value changes.", "conditions": "The MR AC mode selector [input_select.mr_ac_mode] must currently be set to a mode that includes the word 'Cool'.", "action": "If the temperature set point is exactly 0, it runs the MR manual cool script [script.mr_cool_man]. Regardless of the temperature value, it then changes the AC mode to 'Manual Cool' via the MR AC mode selector [input_select.mr_ac_mode]." }, "human_like": "Adjusts the master room air conditioning to a manual cool mode when the cool temperature setting is changed, and runs a special script if the temperature is set to zero.", "complexity": "medium" } }, { "id": "MR Aircon Heat Temperature Adjust", "result": { "structured": "TRIGGER: When MR AC temperature set heat [input_number.mr_ac_temp_set_heat] changes state. CONDITIONS: The current state of MR AC mode selector [input_select.mr_ac_mode] contains the substring 'Heat'. ACTIONS: If the numeric state of MR AC temperature set heat [input_number.mr_ac_temp_set_heat] equals 0, then call MR manual heat script [script.mr_heat_man]. Then, set MR AC mode selector [input_select.mr_ac_mode] to option 'Manual Heat'.", "natural_language": { "trigger": "Whenever the MR AC temperature set heat [input_number.mr_ac_temp_set_heat] value changes.", "conditions": "The MR AC mode selector [input_select.mr_ac_mode] must currently be set to a mode that includes the word 'Heat'.", "action": "If the temperature set point is exactly 0, it runs the MR manual heat script [script.mr_heat_man]. Then, it changes the AC mode selector to 'Manual Heat'." }, "human_like": "Adjusts the master room air conditioning to manual heat mode when the heat temperature setting is changed, and runs a special script if the temperature is set to zero.", "complexity": "medium" } }, { "id": "MR Room Aircon Humidity Set", "result": { "structured": "TRIGGER: When MR humidity set [input_number.mr_humidity_set] changes state. CONDITIONS: MR AC mode selector [input_select.mr_ac_mode] state contains the substring 'Cool'. ACTIONS: If the numeric state of MR humidity set [input_number.mr_humidity_set] equals 0, then call script MR humidity set script [script.mr_humidity_set]; otherwise, do nothing.", "natural_language": { "trigger": "Whenever the MR humidity set [input_number.mr_humidity_set] value changes.", "conditions": "The MR AC mode selector [input_select.mr_ac_mode] must be set to a mode that includes the word 'Cool'.", "action": "If the humidity set value is exactly 0, it runs the MR humidity set script [script.mr_humidity_set]. If the value is anything other than 0, no action is taken." }, "human_like": "When the humidity setpoint in the master room is changed and the AC is in a cooling mode, it runs a script if the humidity is set to zero.", "complexity": "medium" } }, { "id": "Shionroom Occupancy", "result": { "structured": "TRIGGER: When the time pattern matches seconds equal to 10 OR When Shionroom moving target [binary_sensor.sr_moving_target] becomes on. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on. ACTIONS: Execute Room occupancy Python script [python_script.room_occupancy] with data: roomname 'shionroom', timeout 2, entities_toggle list containing Shionroom moving target [binary_sensor.sr_moving_target], and entities_keep list containing Shionroom presence [binary_sensor.sr_presence], Shionroom has target [binary_sensor.sr_has_target], Bed sensors group [group.bed_sensors], Shionroom MCL [input_boolean.shionroom_mcl], and Shionroom study occupancy [binary_sensor.sr_study_occupancy].", "natural_language": { "trigger": "The automation runs either every 10 seconds (at the :10 second mark of each minute) or when motion is detected, specifically when the Shionroom moving target [binary_sensor.sr_moving_target] turns on.", "conditions": "The automation only proceeds if the global Disable motion lights [input_boolean.disable_motion_lights] switch is turned off.", "action": "It calls a custom Python script named Room occupancy Python script [python_script.room_occupancy] to manage the occupancy state for the 'shionroom'. The script is given a list of sensors to toggle (like the moving target) and a list of entities to keep monitoring (including presence, target detection, bed sensors, an MCL switch, and study occupancy)." }, "human_like": "This automation periodically checks and updates the occupancy status of the Shionroom, using motion detection and a custom script to determine if the room is in use.", "complexity": "medium" } }, { "id": "Shionroom Light", "result": { "structured": "TRIGGER: When Shionroom timer [timer.shionroom_timer] changes from idle to active OR When Shionroom timer [timer.shionroom_timer] changes from active to idle OR When Shion light [light.shion] changes from on to off OR When Shionroom occupancy lights [binary_sensor.sr_occupancy_lights] changes from on to off AND remains off for 45 seconds. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on AND Home mode selector [input_select.home_mode] is Home AND Motion SR auto on [binary_sensor.motion_sr_auto_on] is on. ACTIONS: CHOOSE: If trigger is Shionroom timer [timer.shionroom_timer] from idle to active, then run Tradfri transition script [script.tradfri_transition] on Shion light [light.shion] with color_temp 143, transition 2, and brightness 160 if AIO human sensor illuminance [sensor.aio_human_sensor_illuminance] < 0.15 else 255. OR If trigger is Shionroom timer [timer.shionroom_timer] from active to idle AND Shionroom MCL [input_boolean.shionroom_mcl] is NOT on, then turn off Shion light [light.shion] AND finish Shionroom timer [timer.shionroom_timer]. Otherwise, do nothing.", "natural_language": { "trigger": "The automation can be triggered in four ways: when the Shionroom timer [timer.shionroom_timer] starts (changes from idle to active), when it stops (changes from active to idle), when the Shion light [light.shion] is turned off, or when the Shionroom occupancy lights [binary_sensor.sr_occupancy_lights] sensor reports no occupancy and stays that way for 45 seconds.", "conditions": "For the automation to run, the Disable motion lights [input_boolean.disable_motion_lights] must be off, the Home mode selector [input_select.home_mode] must be set to 'Home', and the Motion SR auto on [binary_sensor.motion_sr_auto_on] sensor must be on.", "action": "Depending on which trigger occurred, the automation performs different actions. If the timer started, it gradually turns on the Shion light [light.shion] to a specific color temperature and brightness, where the brightness is lower if the room is already dark. If the timer stopped and the Shionroom MCL [input_boolean.shionroom_mcl] is off, it turns off the Shion light [light.shion] and resets the timer. For the other triggers, no action is taken." }, "human_like": "This automation manages the Shionroom light based on a timer and occupancy, turning it on when the timer starts and off when it ends, provided certain home and motion settings are active.", "complexity": "medium" } }, { "id": "Shionroom Auto-on", "result": { "structured": "TRIGGER: When Shionroom occupied [binary_sensor.shionroom_occupied] changes state. CONDITIONS: (Disable motion lights [input_boolean.disable_motion_lights] is NOT on) AND (Home mode selector [input_select.home_mode] is Home) AND (Motion SR auto on [binary_sensor.motion_sr_auto_on] is on). ACTIONS: If Shionroom occupied [binary_sensor.shionroom_occupied] is on, then call Tradfri transition script [script.tradfri_transition] on Shion light [light.shion] with color temperature 143, transition 2 seconds, and brightness 160 if AIO human sensor illuminance [sensor.aio_human_sensor_illuminance] is less than 0.15 lux, otherwise brightness 255. Otherwise, turn off Shion light [light.shion].", "natural_language": { "trigger": "When the occupancy state of the Shionroom occupied [binary_sensor.shionroom_occupied] sensor changes.", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] is off, the Home mode selector [input_select.home_mode] is set to 'Home', and the Motion SR auto on [binary_sensor.motion_sr_auto_on] sensor is detecting motion (on).", "action": "If the Shionroom is detected as occupied, the Shion light [light.shion] is turned on with a warm white color and a smooth transition. The brightness is set to 160 if the ambient light level from the AIO human sensor illuminance [sensor.aio_human_sensor_illuminance] is very dark (below 0.15 lux), otherwise it's set to maximum brightness 255. If the room is not occupied, the light is turned off." }, "human_like": "Automatically turns on the Shionroom light to a comfortable level when the room becomes occupied and conditions are right, or turns it off when the room is empty.", "complexity": "medium" } }, { "id": "SR light turned off", "result": { "structured": "TRIGGER: When Shion light [light.shion] changes from on to off. CONDITIONS: None. ACTIONS: Start SR MCL timer [timer.sr_mcl].", "natural_language": { "trigger": "When the Shion light [light.shion] is turned off.", "conditions": "There are no conditions for this automation.", "action": "Starts the SR MCL timer [timer.sr_mcl]." }, "human_like": "Starts a timer when the Shion light is turned off.", "complexity": "low" } }, { "id": "SR light turned on", "result": { "structured": "TRIGGER: When Shion light [light.shion] changes from off to on. CONDITIONS: SR MCL timer [timer.sr_mcl] is active. ACTIONS: Toggle Shionroom MCL [input_boolean.shionroom_mcl].", "natural_language": { "trigger": "When the Shion light [light.shion] is turned on.", "conditions": "If the SR MCL timer [timer.sr_mcl] is currently running.", "action": "Toggles the state of the Shionroom MCL [input_boolean.shionroom_mcl] input boolean." }, "human_like": "Toggles a room-specific MCL setting when the main light is turned on, but only if a timer is active.", "complexity": "low" } }, { "id": "SR MCL Announce State", "result": { "structured": "TRIGGER: When Shionroom MCL [input_boolean.shionroom_mcl] changes state. CONDITIONS: Audible notifications [input_boolean.audible_notifications] is on. ACTIONS: Execute script Speech engine echo script [script.speech_engine_echo] with parameters: who = ai_3, voice = current state of Jarvis voice selector [input_select.jarvis_voice], message = a spoken announcement that Shionroom light is in automatic mode if the new state is 'off' or manual mode if the new state is 'on'.", "natural_language": { "trigger": "Whenever the state of the Shionroom MCL [input_boolean.shionroom_mcl] changes.", "conditions": "The Audible notifications [input_boolean.audible_notifications] must be turned on.", "action": "The system will use the speech engine to announce the new mode. It will speak through the 'ai_3' speaker, using the currently selected voice from Jarvis voice selector [input_select.jarvis_voice]. The message will state that the Shionroom light has switched to automatic mode if the new state is 'off', or manual mode if the new state is 'on'." }, "human_like": "Announces via voice when the Shionroom light mode changes, but only if audible notifications are enabled.", "complexity": "low" } }, { "id": "SR MCL Re-Enable", "result": { "structured": "TRIGGER: When Shionroom MCL [input_boolean.shionroom_mcl] is turned on AND remains on for 1 hour. CONDITIONS: None. ACTIONS: Turn off Shionroom MCL [input_boolean.shionroom_mcl].", "natural_language": { "trigger": "When the Shionroom MCL [input_boolean.shionroom_mcl] is switched on and stays on for a full hour.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Shionroom MCL [input_boolean.shionroom_mcl]." }, "human_like": "Automatically turns off the Shionroom MCL switch one hour after it was turned on.", "complexity": "low" } }, { "id": "Squirt Shion Airfreshener", "result": { "structured": "TRIGGER: When Shion air freshener moving target [binary_sensor.shion_airfreshener_moving_target] changes from off to on. CONDITIONS: (Home mode selector [input_select.home_mode] is Home) AND (Motion SR auto on [binary_sensor.motion_sr_auto_on] is on) AND (Shionroom occupied [binary_sensor.shionroom_occupied] attribute 'squirt' equals true). ACTIONS: Toggle Shion air freshener switch [switch.shion_airfreshener].", "natural_language": { "trigger": "When the Shion air freshener moving target [binary_sensor.shion_airfreshener_moving_target] starts detecting movement.", "conditions": "The Home mode selector [input_select.home_mode] must be set to 'Home', the Motion SR auto on [binary_sensor.motion_sr_auto_on] sensor must be active, and the Shionroom occupied [binary_sensor.shionroom_occupied] sensor must have its 'squirt' attribute set to true.", "action": "Toggle the Shion air freshener switch [switch.shion_airfreshener], turning it on if it's off, or off if it's on." }, "human_like": "Toggles the Shion air freshener when movement is detected, but only when the home is in 'Home' mode, motion auto-on is active, and the room's occupancy sensor indicates it's appropriate to squirt.", "complexity": "medium" } }, { "id": "SR Aircon", "result": { "structured": "TRIGGER: When SR AC flaps contact sensor [binary_sensor.sr_ac_flaps_contact] last changed less than 3 seconds ago OR When SR AC mode selector [input_select.sr_ac_mode] changes state. ACTIONS: CHOOSE: (IF trigger is mode THEN execute script based on current state of SR AC mode selector [input_select.sr_ac_mode]) OR (IF trigger is flaps AND SR AC flaps contact sensor [binary_sensor.sr_ac_flaps_contact] state is not unknown, unavailable, or none THEN set SR AC mode selector [input_select.sr_ac_mode] to its current option if changed less than 10 seconds ago, else to 'Man Auto' if flaps are on, else to 'Off' if flaps are off).", "natural_language": { "trigger": "The automation triggers either when the SR AC flaps contact sensor [binary_sensor.sr_ac_flaps_contact] has changed state within the last three seconds, or when the SR AC mode selector [input_select.sr_ac_mode] changes its selected option.", "conditions": "There are no separate conditions block. However, within the action's second choice path, there is a condition that the SR AC flaps contact sensor [binary_sensor.sr_ac_flaps_contact] must not be in an 'unknown', 'unavailable', or 'none' state.", "action": "Depending on which trigger fired, the automation performs one of two actions. If the mode selector changed, it runs a specific script corresponding to the selected mode (e.g., powerful heat, normal cool, off). If the flaps sensor triggered, it first checks the sensor is valid, then updates the mode selector: it keeps the current mode if it was changed less than 10 seconds ago, otherwise it sets it to 'Man Auto' if the flaps are open, or 'Off' if the flaps are closed." }, "human_like": "This automation controls the Shionroom air conditioner, running specific operation scripts when the mode is changed, and automatically setting the mode to 'Man Auto' or 'Off' based on the physical flap sensor state.", "complexity": "high" } }, { "id": "SR Aircon AM Schedule", "result": { "structured": "TRIGGER: When SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active] OR SR AC heat required [binary_sensor.sr_ac_heat_required] OR SR AC cool required [binary_sensor.sr_ac_cool_required] turns on and remains on for 10 seconds OR When Shion door [binary_sensor.shion_door] turns off. CONDITIONS: Vacation mode [input_boolean.vacation_mode] is NOT on AND SR AC mode selector [input_select.sr_ac_mode] is Off AND Shion door [binary_sensor.shion_door] is off AND SR sensor DHT status [binary_sensor.sr_sensor_dht_status] is on AND (SR AC heat required [binary_sensor.sr_ac_heat_required] is on OR SR AC cool required [binary_sensor.sr_ac_cool_required] is on) AND SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active] is on AND Home mode selector [input_select.home_mode] is Home. ACTIONS: Set SR AC mode selector [input_select.sr_ac_mode] to 'Normal Heat' if SR AC heat required [binary_sensor.sr_ac_heat_required] is on, else set to 'Normal Cool' if SR AC cool required [binary_sensor.sr_ac_cool_required] is on, else set to 'Off'.", "natural_language": { "trigger": "The automation triggers either when any of the three sensors (SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active], SR AC heat required [binary_sensor.sr_ac_heat_required], or SR AC cool required [binary_sensor.sr_ac_cool_required]) turn on and stay on for 10 seconds, or when the Shion door [binary_sensor.shion_door] closes (turns off).", "conditions": "All of the following must be true: Vacation mode [input_boolean.vacation_mode] is off, the SR AC mode selector [input_select.sr_ac_mode] is currently set to 'Off', the Shion door [binary_sensor.shion_door] is closed, the SR sensor DHT status [binary_sensor.sr_sensor_dht_status] is on (indicating the sensor is working), either heating or cooling is required (SR AC heat required [binary_sensor.sr_ac_heat_required] is on or SR AC cool required [binary_sensor.sr_ac_cool_required] is on), the morning automation time window is active (SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active] is on), and the home is in 'Home' mode (Home mode selector [input_select.home_mode] is 'Home').", "action": "The automation sets the SR AC mode selector [input_select.sr_ac_mode] to either 'Normal Heat' or 'Normal Cool' based on which requirement is active, or to 'Off' if neither is active (though this last case is unlikely given the conditions)." }, "human_like": "Automatically turns on the air conditioner in the morning for heating or cooling if the room is occupied, the door is closed, and the system is not in vacation mode.", "complexity": "medium" } }, { "id": "SR Aircon PM Schedule", "result": { "structured": "TRIGGER: When any of SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active], SR AC heat required [binary_sensor.sr_ac_heat_required], or SR AC cool required [binary_sensor.sr_ac_cool_required] turns on and remains on for 10 seconds OR When Shion door [binary_sensor.shion_door] turns off. CONDITIONS: Vacation mode [input_boolean.vacation_mode] is NOT on AND SR AC mode selector [input_select.sr_ac_mode] is Off AND Shion door [binary_sensor.shion_door] is off AND SR sensor DHT status [binary_sensor.sr_sensor_dht_status] is on AND (SR AC heat required [binary_sensor.sr_ac_heat_required] is on OR SR AC cool required [binary_sensor.sr_ac_cool_required] is on) AND SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active] is on AND Home mode selector [input_select.home_mode] is Home. ACTIONS: Set SR AC mode selector [input_select.sr_ac_mode] to 'Normal Heat' if SR AC heat required [binary_sensor.sr_ac_heat_required] is on, otherwise set to 'Normal Cool' if SR AC cool required [binary_sensor.sr_ac_cool_required] is on, otherwise set to 'Off'.", "natural_language": { "trigger": "The automation triggers when either the SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active], SR AC heat required [binary_sensor.sr_ac_heat_required], or SR AC cool required [binary_sensor.sr_ac_cool_required] sensor turns on and stays on for 10 seconds, or when the Shion door [binary_sensor.shion_door] closes.", "conditions": "Several conditions must be met: Vacation mode [input_boolean.vacation_mode] must be off, the SR AC mode selector [input_select.sr_ac_mode] must be set to 'Off', the Shion door [binary_sensor.shion_door] must be closed, the SR sensor DHT status [binary_sensor.sr_sensor_dht_status] must be on, either heating or cooling must be required (SR AC heat required [binary_sensor.sr_ac_heat_required] or SR AC cool required [binary_sensor.sr_ac_cool_required] is on), the scheduled time window must be active (SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active] is on), and the home mode must be set to 'Home'.", "action": "The automation sets the SR AC mode selector [input_select.sr_ac_mode] to either 'Normal Heat' or 'Normal Cool' based on which requirement is active, or to 'Off' if neither is active." }, "human_like": "Automatically sets the air conditioning to a heating or cooling mode during scheduled evening times when the room is unoccupied and the system is off, provided vacation mode is not active.", "complexity": "medium" } }, { "id": "SR Aircon AM Off", "result": { "structured": "TRIGGER: When SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active] changes to off. CONDITIONS: SR aircon AM schedule automation [automation.sr_aircon_am_schedule] is on AND SR AC mode selector [input_select.sr_ac_mode] is not set to 'Off' AND Home mode selector [input_select.home_mode] is set to 'Home'. ACTIONS: Set SR AC mode selector [input_select.sr_ac_mode] to 'Off'.", "natural_language": { "trigger": "When the SR AC AM automation time active [binary_sensor.sr_ac_am_automation_time_active] becomes inactive (turns off).", "conditions": "The SR aircon AM schedule automation [automation.sr_aircon_am_schedule] must be enabled, the SR AC mode selector [input_select.sr_ac_mode] must not already be set to 'Off', and the Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "Turn off the air conditioning in the Shionroom by setting the SR AC mode selector [input_select.sr_ac_mode] to 'Off'." }, "human_like": "Turns off the Shionroom air conditioning in the morning when the scheduled automation time ends, but only if the home is in 'Home' mode and the AC isn't already off.", "complexity": "medium" } }, { "id": "SR Aircon PM Off", "result": { "structured": "TRIGGER: When SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active] changes to off. CONDITIONS: SR aircon PM schedule automation [automation.sr_aircon_pm_schedule] is on AND SR AC mode selector [input_select.sr_ac_mode] is not set to 'Off' AND Home mode selector [input_select.home_mode] is set to 'Home'. ACTIONS: Set SR AC mode selector [input_select.sr_ac_mode] to 'Off'.", "natural_language": { "trigger": "When the SR AC PM automation time active [binary_sensor.sr_ac_pm_automation_time_active] sensor turns off.", "conditions": "The SR aircon PM schedule automation [automation.sr_aircon_pm_schedule] must be enabled, the SR AC mode selector [input_select.sr_ac_mode] must not already be set to 'Off', and the Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "Sets the SR AC mode selector [input_select.sr_ac_mode] to 'Off'." }, "human_like": "Turns off the Shionroom air conditioner's evening automation mode when the scheduled time ends, but only if the system is active and the home is in 'Home' mode.", "complexity": "medium" } }, { "id": "SR Aircon Cool Temperature Adjust", "result": { "structured": "TRIGGER: When SR AC temperature set cool [input_number.sr_ac_temp_set_cool] changes state. CONDITIONS: SR AC mode selector [input_select.sr_ac_mode] state contains the text 'Cool'. ACTIONS: If the numeric value of SR AC temperature set cool [input_number.sr_ac_temp_set_cool] is not equal to 0, then execute SR manual cool script [script.sr_cool_man]. Then, set SR AC mode selector [input_select.sr_ac_mode] to 'Manual Cool'.", "natural_language": { "trigger": "Whenever the SR AC temperature set cool [input_number.sr_ac_temp_set_cool] is adjusted.", "conditions": "The automation only runs if the current mode selected on the SR AC mode selector [input_select.sr_ac_mode] includes the word 'Cool'.", "action": "If the new temperature value is not zero, it runs the SR manual cool script [script.sr_cool_man]. Afterwards, it changes the AC mode to 'Manual Cool' via the SR AC mode selector [input_select.sr_ac_mode]." }, "human_like": "When you adjust the cool temperature setting, it activates the manual cooling script and switches the AC to manual cool mode, provided the system is already in a cooling mode.", "complexity": "medium" } }, { "id": "SR Aircon Heat Temperature Adjust", "result": { "structured": "TRIGGER: When SR AC temperature set heat [input_number.sr_ac_temp_set_heat] changes state. CONDITIONS: The current mode of SR AC mode selector [input_select.sr_ac_mode] contains the text 'Heat'. ACTIONS: If the numeric value of SR AC temperature set heat [input_number.sr_ac_temp_set_heat] is not equal to 0, then execute SR manual heat script [script.sr_heat_man]. Then, set the option of SR AC mode selector [input_select.sr_ac_mode] to 'Manual Heat'.", "natural_language": { "trigger": "Whenever the SR AC temperature set heat [input_number.sr_ac_temp_set_heat] is adjusted.", "conditions": "The SR AC mode selector [input_select.sr_ac_mode] must be set to a mode that includes the word 'Heat'.", "action": "If the set temperature value is not zero, it runs the SR manual heat script [script.sr_heat_man]. Regardless of the script execution, it then changes the AC mode to 'Manual Heat' via the SR AC mode selector [input_select.sr_ac_mode]." }, "human_like": "When adjusting the heat temperature for the Shionroom AC, this automation ensures the mode is set to 'Manual Heat' and, if the temperature is non-zero, runs a script to apply the manual heat settings.", "complexity": "medium" } }, { "id": "SR Room Aircon Humidity Set", "result": { "structured": "TRIGGER: When SR humidity set [input_number.sr_humidity_set] changes state. CONDITIONS: SR AC mode selector [input_select.sr_ac_mode] state contains the text 'Cool'. ACTIONS: If the numeric state of SR humidity set [input_number.sr_humidity_set] is not equal to 0, then call script SR humidity set script [script.sr_humidity_set].", "natural_language": { "trigger": "Whenever the value of the humidity setpoint, SR humidity set [input_number.sr_humidity_set], changes.", "conditions": "The air conditioning mode selector, SR AC mode selector [input_select.sr_ac_mode], must be set to a mode that includes the word 'Cool'.", "action": "If the humidity setpoint value is not zero, it runs the SR humidity set script [script.sr_humidity_set] to apply the setting." }, "human_like": "Updates the air conditioner's humidity setting when the mode is set to cooling and a new non-zero humidity value is selected.", "complexity": "medium" } }, { "id": "Item Select to speak", "result": { "structured": "TRIGGER: When Speak list selector [input_select.speak_list] changes state. CONDITIONS: Speak list selector [input_select.speak_list] state is \"do not use\". ACTIONS: Run Speech engine script [script.speech_engine] with data: who = Last Alexa sensor [sensor.last_alexa], voice = Jarvis voice selector [input_select.jarvis_voice], message = include ../tpl/speech/alexa_cmds.yaml. THEN set Speak list selector [input_select.speak_list] to option \"do not use\". THEN wait 2 seconds. THEN turn on Alexa virtual light [light.alexa_virtual] with brightness percentage equal to the numeric value extracted from the Speak list selector [input_select.speak_list] state (the two digits after \"(c\").", "natural_language": { "trigger": "Whenever the Speak list selector [input_select.speak_list] changes its selected option.", "conditions": "The automation only proceeds if the Speak list selector [input_select.speak_list] is currently set to the option \"do not use\".", "action": "First, it runs the Speech engine script [script.speech_engine], telling it to use the last used Alexa device from Last Alexa sensor [sensor.last_alexa], the voice selected in Jarvis voice selector [input_select.jarvis_voice], and a message defined in an external file. Then, it resets the Speak list selector [input_select.speak_list] back to \"do not use\". After a two-second delay, it turns on the Alexa virtual light [light.alexa_virtual], setting its brightness to a percentage value that is extracted from the original selection in the speak list (specifically, the two-digit number found after the text \"(c\")." }, "human_like": "When a specific item is selected to speak, it triggers a spoken announcement, resets the selector, and then sets a virtual light's brightness based on the selection.", "complexity": "medium" } }, { "id": "Dummy light to item select", "result": { "structured": "TRIGGER: When Alexa virtual light [light.alexa_virtual] turns on from off. CONDITIONS: None. ACTIONS: 1. Set Speak list selector [input_select.speak_list] to an option determined by a template: calculate brightness percentage from Alexa virtual light [light.alexa_virtual] brightness attribute, map it to an index in the list of available options, and select the corresponding option (if calculated index exceeds list length, default to first option). 2. Turn off Alexa virtual light [light.alexa_virtual].", "natural_language": { "trigger": "When the Alexa virtual light [light.alexa_virtual] changes from being off to on.", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "First, it calculates a brightness percentage from the Alexa virtual light's [light.alexa_virtual] brightness level, uses that to pick an item from the Speak list selector's [input_select.speak_list] options, and selects that item. Then, it immediately turns the Alexa virtual light [light.alexa_virtual] back off." }, "human_like": "Uses the brightness of a virtual light to select an item from a list and then turns the light off.", "complexity": "medium" } }, { "id": "Bedtime Start Announcements", "result": { "structured": "TRIGGER: When the time reaches the value set in Shion nightly report datetime [input_datetime.shion_nightly_report]. CONDITIONS: Home mode selector [input_select.home_mode] is in the state 'Home'. ACTIONS: Start Looper timer [timer.looper].", "natural_language": { "trigger": "At the specific time configured in the Shion nightly report datetime [input_datetime.shion_nightly_report].", "conditions": "The home must be in 'Home' mode, as indicated by the Home mode selector [input_select.home_mode].", "action": "Starts the Looper timer [timer.looper]." }, "human_like": "Starts a timer at a scheduled bedtime, but only when the home is set to 'Home' mode.", "complexity": "low" } }, { "id": "Bedtime Stop Announcements", "result": { "structured": "TRIGGER: When Middle sensor [binary_sensor.middle] changes from off to on AND remains on for 30 seconds. CONDITIONS: The current time is after 21:00:00 AND before 22:30:00. ACTIONS: Finish the Looper timer [timer.looper].", "natural_language": { "trigger": "When the Middle sensor [binary_sensor.middle] turns on and stays on for 30 seconds.", "conditions": "The automation only runs if the current time is between 9:00 PM and 10:30 PM.", "action": "Stops the Looper timer [timer.looper]." }, "human_like": "Stops the looper timer during the evening when motion is detected in the middle area, preventing announcements at bedtime.", "complexity": "low" } }, { "id": "Looper timer started", "result": { "structured": "TRIGGER: When Looper timer [timer.looper] starts. CONDITIONS: None. ACTIONS: If the current hour is after 21 (9 PM), cancel Looper timer [timer.looper]. Otherwise, start Bedtime notify script [script.bedtime_notify].", "natural_language": { "trigger": "When the Looper timer [timer.looper] begins running.", "conditions": "There are no additional conditions.", "action": "Depending on the time of day, it will either cancel the timer or run a script. If it's after 9 PM, the Looper timer [timer.looper] is cancelled. If it's 9 PM or earlier, the Bedtime notify script [script.bedtime_notify] is started." }, "human_like": "Manages the Looper timer by either cancelling it late at night or running a bedtime notification script earlier in the day.", "complexity": "medium" } }, { "id": "Looper timer finished", "result": { "structured": "TRIGGER: When Looper timer [timer.looper] finishes. CONDITIONS: Middle sensor [binary_sensor.middle] is off. ACTIONS: Start Looper timer [timer.looper].", "natural_language": { "trigger": "When the Looper timer [timer.looper] finishes.", "conditions": "If the Middle sensor [binary_sensor.middle] is off.", "action": "Restarts the Looper timer [timer.looper]." }, "human_like": "Restarts the looper timer when it finishes, but only if the middle sensor is off.", "complexity": "low" } }, { "id": "Turn On Audible Notifications", "result": { "structured": "TRIGGER: When the current time sensor [sensor.time] equals the time value stored in Audible notification on datetime [input_datetime.audible_notification_on]. CONDITIONS: None. ACTIONS: Turn on Audible notifications [input_boolean.audible_notifications].", "natural_language": { "trigger": "When the current time, as reported by the Time sensor [sensor.time], matches the specific time set in the Audible notification on datetime [input_datetime.audible_notification_on].", "conditions": "There are no additional conditions that must be met.", "action": "Turns on the Audible notifications [input_boolean.audible_notifications] switch." }, "human_like": "Turns on audible notifications at a specific time of day that you can set.", "complexity": "low" } }, { "id": "Turn Off Audible Notifications", "result": { "structured": "TRIGGER: When the current time reported by Time [sensor.time] equals the time value stored in Audible notification off datetime [input_datetime.audible_notification_off]. CONDITIONS: Audible notifications [input_boolean.audible_notifications] is on. ACTIONS: Turn off Audible notifications [input_boolean.audible_notifications].", "natural_language": { "trigger": "When the current time matches the specific time set in the Audible notification off datetime [input_datetime.audible_notification_off].", "conditions": "The Audible notifications [input_boolean.audible_notifications] must be currently switched on.", "action": "Turns off the Audible notifications [input_boolean.audible_notifications]." }, "human_like": "Automatically silences audible notifications at a pre-set time each day.", "complexity": "low" } }, { "id": "Shion Event Starting Soon", "result": { "structured": "TRIGGER: When Shion events calendar [calendar.shion_events] event is scheduled to start in 45 minutes. CONDITIONS: None. ACTIONS: Run Status announcement script [script.status_annc] with parameters: who set to ai_1, call_interuption set to 1, call_shion_events set to 1.", "natural_language": { "trigger": "When an event on the Shion events calendar [calendar.shion_events] is about to start in 45 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Executes the Status announcement script [script.status_annc], specifying the announcement target as 'ai_1', enabling call interruption, and flagging it as a Shion event announcement." }, "human_like": "Announces that a Shion event is starting soon, 45 minutes before it begins.", "complexity": "low" } }, { "id": "Appointment Reminder Today", "result": { "structured": "TRIGGER: When an event starts on Appointments calendar [calendar.appointments] with a 1 hour offset before the event start. CONDITIONS: None. ACTIONS: Execute Status announcement script [script.status_annc] with parameters: who = ai_1, call_interuption = 1, call_appointments = 1.", "natural_language": { "trigger": "One hour before an event is scheduled to start on the Appointments calendar [calendar.appointments].", "conditions": "There are no conditions for this automation.", "action": "Runs the Status announcement script [script.status_annc], instructing the AI assistant (ai_1) to announce the appointment, allowing interruption of any ongoing call." }, "human_like": "Announces upcoming appointments one hour before they start.", "complexity": "low" } }, { "id": "Appointment Reminder Tomorrow", "result": { "structured": "TRIGGER: When Appointment tomorrow sensor [sensor.appointmenttomorrow] changes state. CONDITIONS: Appointment tomorrow sensor [sensor.appointmenttomorrow] is NOT in state 'unknown' AND NOT in state 'none' AND NOT in state 'unavailable'. ACTIONS: Run Email notify script [script.email_notify] with data (who: duc, title: 'Appointment Tomorrow: {{ states('sensor.appointmenttomorrow') }}', message: 'There is {{ states('sensor.appointmenttomorrow') }} appointment tomorrow at {{ state_attr('sensor.appointmenttomorrow', 'start_time') }}.') AND run Text notify script [script.text_notify] with data (who: duc, title: 'Appointment Tomorrow', message: 'There is {{ states('sensor.appointmenttomorrow') }} appointment tomorrow at {{ state_attr('sensor.appointmenttomorrow', 'start_time') }}.').", "natural_language": { "trigger": "Whenever the Appointment tomorrow sensor [sensor.appointmenttomorrow] changes its state.", "conditions": "The automation only proceeds if the Appointment tomorrow sensor [sensor.appointmenttomorrow] is not in an 'unknown', 'none', or 'unavailable' state, meaning there is a valid appointment scheduled.", "action": "Sends an email notification via the Email notify script [script.email_notify] and a text notification via the Text notify script [script.text_notify] to 'duc'. Both messages contain the appointment details, including the appointment name and its start time." }, "human_like": "Sends email and text reminders to Duc about any appointments scheduled for the next day.", "complexity": "low" } }, { "id": "announce who is arriving", "result": { "structured": "TRIGGER: When ID device tracker [device_tracker.id] changes state to home OR when IE device tracker [device_tracker.ie] changes state to home. CONDITIONS: None. ACTIONS: Choose one sequence based on a condition: IF (Home mode selector [input_select.home_mode] is Away OR Home mode selector [input_select.home_mode] is Vacation) THEN set Home mode selector [input_select.home_mode] to Returning, run Standby script [script.standby], and turn off the travel monitor input_boolean corresponding to the arriving person (Eri travel monitor [input_boolean.eri_travel_monitor] for IE, Duc travel monitor [input_boolean.duc_travel_monitor] for ID). OTHERWISE (default): run Speech engine script [script.speech_engine] with parameters: who from Room audio sensor [sensor.room_audio], voice from Jarvis voice selector [input_select.jarvis_voice], and a message announcing the person's arrival (using a mapping: IE -> 'mommy', ID -> 'daddy', Shion -> 'she-on'), turn on G1 light [light.g_1] with brightness 200, and turn off the corresponding travel monitor input_boolean.", "natural_language": { "trigger": "The automation triggers when either the ID device tracker [device_tracker.id] or the IE device tracker [device_tracker.ie] arrives home.", "conditions": "There are no explicit conditions that must be met before the actions run.", "action": "The automation first checks the current home mode. If the Home mode selector [input_select.home_mode] is set to 'Away' or 'Vacation', it changes the mode to 'Returning', runs the Standby script [script.standby], and turns off the travel monitor for the person who arrived (Eri travel monitor [input_boolean.eri_travel_monitor] for IE, Duc travel monitor [input_boolean.duc_travel_monitor] for ID). Otherwise, it uses the Speech engine script [script.speech_engine] to announce that the person (mommy for IE, daddy for ID, she-on for Shion) will be home in about 5 minutes, using the current room audio and voice settings. It also turns on the G1 light [light.g_1] to a brightness of 200 and turns off the corresponding travel monitor." }, "human_like": "Announces when a family member arrives home, changes the home mode if the house was empty, and turns on a light.", "complexity": "medium" } }, { "id": "Momentary Switch Trigger", "result": { "structured": "TRIGGER: When Toggle guest presence [input_boolean.toggle_guest_presence] changes to on OR when Duc presence [binary_sensor.duc_presence] changes to on. CONDITIONS: None. ACTIONS: First, turn on a switch based on a condition: if Toggle guest presence [input_boolean.toggle_guest_presence] is on, then turn on Momentary activate guest switch [switch.momentary_activate_guest]; if Duc presence [binary_sensor.duc_presence] is on, then turn on Momentary activate TV switch [switch.momentary_activate_tv]. Then, wait for 2 seconds. Then, check if Toggle guest presence [input_boolean.toggle_guest_presence] is off (this is a condition within the action sequence). Finally, turn off Toggle guest presence [input_boolean.toggle_guest_presence].", "natural_language": { "trigger": "The automation is triggered when either the Toggle guest presence [input_boolean.toggle_guest_presence] is turned on, or when the Duc presence [binary_sensor.duc_presence] sensor detects presence and changes to 'on'.", "conditions": "There are no separate conditions that must be met before the actions run.", "action": "When triggered, the automation first determines which switch to activate. If the Toggle guest presence [input_boolean.toggle_guest_presence] is on, it turns on the Momentary activate guest switch [switch.momentary_activate_guest]. If the Duc presence [binary_sensor.duc_presence] is on, it turns on the Momentary activate TV switch [switch.momentary_activate_tv]. After a two-second delay, it checks if the Toggle guest presence [input_boolean.toggle_guest_presence] is off, and finally, it turns off the Toggle guest presence [input_boolean.toggle_guest_presence]." }, "human_like": "Activates a specific momentary switch based on which presence sensor is triggered, then resets the guest presence toggle after a short delay.", "complexity": "medium" } }, { "id": "welcome family announcement", "result": { "structured": "TRIGGER: When Duc presence [binary_sensor.duc_presence] OR Eri presence [binary_sensor.eri_presence] OR Shion presence [binary_sensor.shion_presence] changes to 'on'. ACTIONS: 1. Wait for Motion genkan occupancy group [group.motion_genkan_occupancy] to be 'on' (timeout after 20 seconds, stop if timeout occurs). 2. Run Speech engine script [script.speech_engine] with parameters: who=ai_2, message=include ../tpl/speech/family_greetings.yaml, voice=current state of Jarvis voice selector [input_select.jarvis_voice]. 3. Check condition: Momentary activate guest switch [switch.momentary_activate_guest] is NOT 'on'. 4. Check condition: Living Room Radar Illuminance [sensor.lr_radar_illuminance] value is greater than 0.39. 5. Run Turn on LR lights script [script.turn_on_lr_lights].", "natural_language": { "trigger": "When the system detects that Duc, Eri, or Shion has arrived, as indicated by their respective presence sensors turning on.", "conditions": "After the trigger, the automation waits for motion to be detected in the genkan area. Then, it checks two conditions: first, that the guest mode is not active, and second, that the light level in the living room is above a certain threshold.", "action": "If motion is detected within 20 seconds and the conditions are met, the system will play a family greeting using the selected voice and turn on the living room lights." }, "human_like": "Welcomes family members home with a greeting and turns on the living room lights if it's dark enough and guest mode is off.", "complexity": "medium" } }, { "id": "welcome guest announcement", "result": { "structured": "TRIGGER: When Sachiko presence [binary_sensor.sachiko_presence] OR Tomokun presence [binary_sensor.tomokun_presence] changes to 'on'. ACTIONS: Wait for 1 minute. Then wait until Genkan moving target [binary_sensor.genkan_moving_target] is 'on' (with a timeout of 10 seconds). Then execute Speech engine script [script.speech_engine] with parameters: who = ai_2, message = include ../tpl/speech/guest_greetings.yaml, voice = current state of Jarvis voice selector [input_select.jarvis_voice].", "natural_language": { "trigger": "When either Sachiko presence [binary_sensor.sachiko_presence] or Tomokun presence [binary_sensor.tomokun_presence] becomes active (turns on).", "conditions": "There are no explicit conditions for this automation.", "action": "After a one-minute delay, the automation waits for up to ten seconds for the Genkan moving target [binary_sensor.genkan_moving_target] to detect movement. Once movement is detected, or if the timeout is reached, it triggers the Speech engine script [script.speech_engine]. The script is called to deliver a guest greeting message using the AI voice 'ai_2', the content from the specified YAML file, and the voice profile currently selected in Jarvis voice selector [input_select.jarvis_voice]." }, "human_like": "Announces a welcome greeting for guests when a resident arrives home, after a brief delay and once movement is detected in the genkan (entryway).", "complexity": "medium" } }, { "id": "Washer Operation", "result": { "structured": "TRIGGER: When Gosund washer state sensor [sensor.gosund_washer_state] changes state. CONDITIONS: None. ACTIONS: Set Gosund washer state selector [input_select.gosund_washer_state] to an option determined by a template. The template logic: If the previous state was 'stop' and the new state is 'fill', set to 'wash fill'. If the previous state was 'fill' and the new state is 'run', set to 'wash'. If the previous state was 'fill' or 'stop' and the new state is 'run', set to 'wash'. If the previous state was 'run' or 'fill' and the new state is 'pulse', set to 'dryer'. If the previous state was 'run' and the new state is 'pulse' and the current selector state is 'wash', set to 'wash spin'. If the previous state was 'pulse' and the new state is 'run' and the current selector state is 'wash spin', set to 'wash drain'. If the previous state was 'pulse' and the new state is 'run' and the current selector state is 'unknown', set to 'cool down'. If the previous state was 'run' and the new state is 'fill', set to 'rinse fill'. If the previous state was 'fill' or 'run' and the new state is 'wait', set to 'rinse wait'. If the previous state was 'wait' and the new state is 'run', set to 'rinse'. If the previous state was 'run' and the new state is 'pulse' and the current selector state is 'rinse', set to 'rinse spin'. If the previous state was 'pulse' and the new state is 'run' and the current selector state is 'rinse spin', set to 'rinse drain'. If the previous state was 'run', 'fill', 'wait', or 'unknown' and the new state is 'stop', set to 'stop'. Otherwise, set to '--'.", "natural_language": { "trigger": "Whenever the Gosund washer state sensor [sensor.gosund_washer_state] changes its reported state.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Updates the Gosund washer state selector [input_select.gosund_washer_state] to a descriptive label based on the washer's state transition. It uses a complex set of rules to interpret the raw state changes (like 'fill', 'run', 'pulse', 'stop', 'wait') into more meaningful cycle phases such as 'wash fill', 'wash', 'dryer', 'wash spin', 'rinse fill', or 'stop'. If the transition doesn't match any defined rule, it sets the selector to '--'." }, "human_like": "Translates the raw state changes from the washing machine sensor into a more understandable cycle phase, like 'wash' or 'rinse', for easier monitoring.", "complexity": "high" } }, { "id": "Washer Running", "result": { "structured": "TRIGGER: When Gosund washer state sensor [sensor.gosund_washer_state] changes from 'wait' to 'fill' OR when it changes from 'fill' or 'rinse' to 'pulse'. CONDITIONS: Gosund washer power sensor [sensor.gosund_washer_power] is above 10 AND (Washer status M sensor [sensor.washer_status_m] is 'idle' OR Washer status M sensor [sensor.washer_status_m] is 'complete'). ACTIONS: Execute Washer running script [script.washer_running] and then execute Washer monitor script [script.washer_monitor].", "natural_language": { "trigger": "The automation triggers when the washing machine's state sensor [sensor.gosund_washer_state] indicates it has started filling water (from 'wait' to 'fill'), or when it moves from a washing or rinsing phase ('fill' or 'rinse') into a pulsing phase ('pulse').", "conditions": "The automation only proceeds if the washing machine's power consumption [sensor.gosund_washer_power] is above 10 watts, and if the washer's overall status [sensor.washer_status_m] is currently reported as either 'idle' or 'complete'.", "action": "It runs two scripts: first the 'Washer running script' [script.washer_running], followed by the 'Washer monitor script' [script.washer_monitor]." }, "human_like": "Starts monitoring and managing the washing machine when it begins a new cycle, provided it's drawing power and not already in an active state.", "complexity": "medium" } }, { "id": "Washer Complete", "result": { "structured": "TRIGGER: When Gosund washer power sensor [sensor.gosund_washer_power] remains below 7 for 36 seconds OR When Gosund washer power sensor [sensor.gosund_washer_power] equals 5 for 18 seconds. CONDITIONS: None. ACTIONS: Choose based on trigger: If trigger 'done' (power below 7 for 36 seconds) AND Gosund washer power sensor [sensor.gosund_washer_power] equals 0 AND Washer status M sensor [sensor.washer_status_m] is 'running', then run Washer complete script [script.washer_complete]. If trigger 'filter' (power equals 5 for 18 seconds) AND Washer status M sensor [sensor.washer_status_m] is 'running' AND Washer monitor timer [timer.washer_monitor] is 'idle', then run Speech engine script [script.speech_engine] with message 'It appears the washing machine check filter warning lamp is on.' using voice Jarvis voice selector [input_select.jarvis_voice] and target Room audio sensor [sensor.room_audio], then run Washer complete script [script.washer_complete]. If trigger 'err' (not defined in triggers, so this branch is unreachable) AND Washer status M sensor [sensor.washer_status_m] is 'running' AND Washer monitor timer [timer.washer_monitor] is 'active', then run Speech engine script [script.speech_engine] with message 'It seems the washing machine ended with an error. Please verify.' using voice Jarvis voice selector [input_select.jarvis_voice] and target Room audio sensor [sensor.room_audio]. Otherwise, do nothing.", "natural_language": { "trigger": "The automation triggers when the washing machine's power consumption, measured by the Gosund washer power sensor [sensor.gosund_washer_power], drops below 7 watts for 36 seconds, or when it remains exactly at 5 watts for 18 seconds.", "conditions": "There are no global conditions that apply before the actions are considered.", "action": "Depending on which trigger fired, the automation performs different sequences. If the power dropped below 7 watts for 36 seconds, and at the moment of action the power is exactly 0 watts and the washer status is 'running', it executes the washer completion routine. If the power was exactly 5 watts for 18 seconds, and the washer status is 'running' while the washer monitor timer is idle, it first announces a filter warning via the speech engine and then runs the washer completion routine. A third, unreachable branch is defined for an error trigger, which would announce an error message if the washer status is 'running' and the monitor timer is active." }, "human_like": "Monitors the washing machine's power usage to announce when a cycle is complete, warn about a filter issue, or alert about an error.", "complexity": "medium" } }, { "id": "Washer Notification", "result": { "structured": "TRIGGER: When Washer status M sensor [sensor.washer_status_m] changes from 'running' to 'complete'. CONDITIONS: None. ACTIONS: Turn on Washer finished [input_boolean.washer_finished] AND execute Speech engine script [script.speech_engine] with parameters: who = current state of Room audio sensor [sensor.room_audio], voice = current state of Jarvis voice selector [input_select.jarvis_voice], message = 'Just a quick heads up, It appears the washing machine has completed its cycle.' AND execute Washer finished notification audible script [script.washer_finished_notification_audible].", "natural_language": { "trigger": "When the Washer status M sensor [sensor.washer_status_m] reports that the washing machine has finished its cycle, changing its state from 'running' to 'complete'.", "conditions": "There are no additional conditions that must be met for this automation to run.", "action": "It turns on the Washer finished [input_boolean.washer_finished] indicator, then uses the Speech engine script [script.speech_engine] to announce the completion. The announcement uses the current audio target from the Room audio sensor [sensor.room_audio] and the selected voice from Jarvis voice selector [input_select.jarvis_voice]. Finally, it runs the Washer finished notification audible script [script.washer_finished_notification_audible] to provide an audible alert." }, "human_like": "Notifies you when the washing machine finishes its cycle with a spoken announcement and an audible alert.", "complexity": "low" } }, { "id": "Washer Emptied", "result": { "structured": "TRIGGER: When Washer door [binary_sensor.washer_door] changes from closed (off) to open (on). CONDITIONS: None. ACTIONS: Turn off Washer finished [input_boolean.washer_finished] AND run Washer emptied script [script.washer_emptied] AND run Washer monitor script [script.washer_monitor].", "natural_language": { "trigger": "When the Washer door [binary_sensor.washer_door] opens.", "conditions": "There are no conditions.", "action": "It turns off the Washer finished [input_boolean.washer_finished] indicator, runs the Washer emptied script [script.washer_emptied], and then runs the Washer monitor script [script.washer_monitor]." }, "human_like": "This automation resets the washer's finished status and runs cleanup scripts when the washer door is opened, indicating the laundry has been emptied.", "complexity": "low" } }, { "id": "Dish Cabinet Alert", "result": { "structured": "TRIGGER: When Dish cabinet contact [binary_sensor.dish_cabinet_contact] is open (on) AND remains in that state for 120 seconds. CONDITIONS: None. ACTIONS: If Dish cabinet contact [binary_sensor.dish_cabinet_contact] is open (on), then run the Status announcement script [script.status_annc] with data: who set to the state of Room audio sensor [sensor.room_audio], call_interuption set to 1, and call_secure_dish set to 1. Otherwise, do nothing.", "natural_language": { "trigger": "When the Dish cabinet contact [binary_sensor.dish_cabinet_contact] is detected as open and stays open for two minutes.", "conditions": "There are no additional conditions that must be met.", "action": "If the cabinet is still open at the time of action, it triggers the Status announcement script [script.status_annc]. The script is called with specific parameters: it uses the current state of the Room audio sensor [sensor.room_audio] to determine who to announce to, and sets flags for call interruption and a secure dish alert. If the cabinet is no longer open, no action is taken." }, "human_like": "Sends an alert if the dish cabinet door is left open for two minutes.", "complexity": "low" } }, { "id": "Morning Briefings", "result": { "structured": "TRIGGER: When the time matches the value set in Morning report datetime [input_datetime.morning_report]. CONDITIONS: None. ACTIONS: Execute script Email notify image script [script.email_notify_image] with data: recipient 'duc', title 'Morning Briefing', message containing a formatted summary of today's date, weather (current temperature from WBIO current temperature [sensor.wbio_current_temperature], feels like from OA feels like sensor [sensor.oa_feels_like], forecast from NWS overnight forecast [sensor.nws_overnight_forecast], low from WBIO overnight low [sensor.wbio_overnight_low], high from WBIO daytime temperature [sensor.wbio_daytime_temperature], precipitation from My weather forecast daily [sensor.my_weather_forecast_daily] and chance from WBIO current rain forecast [sensor.wbio_current_rain_forecast]), holidays (from Holiday sensor [sensor.holiday], Holiday tomorrow sensor [sensor.holidaytomorrow], Holiday in a week sensor [sensor.holidayinaweek]), and a random image path. Execute script Text notify script [script.text_notify] with data: recipient 'duc', title 'Weather', message containing current temperature from AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature], feels like from OA feels like sensor [sensor.oa_feels_like], today's high and low from My weather forecast daily [sensor.my_weather_forecast_daily], condition from My weather entity [weather.my_weather], humidity from My weather entity [weather.my_weather], and precipitation info from My weather forecast daily [sensor.my_weather_forecast_daily]. Execute script Email notify image script [script.email_notify_image] with data: recipient 'eri', title 'Morning Briefing', message containing the same formatted summary as for 'duc', and a random image path.", "natural_language": { "trigger": "The automation runs at the specific time set in the Morning report datetime [input_datetime.morning_report].", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "The automation performs three actions in sequence. First, it sends an email with an image attachment to a recipient named 'duc'. The email has the title 'Morning Briefing' and a message that includes today's date, a detailed weather report using data from several weather sensors, information about any holidays or birthdays from holiday sensors, and the text 'A Picture of Us!'. The image attached is randomly selected from a set of private images. Second, it sends a text message to 'duc' with the title 'Weather' and a condensed weather report using current indoor and outdoor temperature sensors, the weather entity for condition and humidity, and daily forecast data. Third, it sends an identical email with an image to a recipient named 'eri', using the same message and a different randomly selected image." }, "human_like": "Sends a morning briefing email with weather, holiday info, and a random photo to two recipients, and a separate weather text to one recipient, all at a scheduled time.", "complexity": "medium" } }, { "id": "Morning Wakeup Report", "result": { "structured": "TRIGGER: When BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] changes to on. CONDITIONS: The current time is between 05:00:00 and 06:00:00 AND Home mode selector [input_select.home_mode] is set to 'Home' AND Eri Bermuda area sensor [sensor.eri_bermuda_area] is NOT set to 'Living' AND Morning wakeup report [input_boolean.morning_wakeup_report] is off. ACTIONS: Execute Morning wakeup report script [script.morning_wakeup_report] AND Turn on Morning wakeup report [input_boolean.morning_wakeup_report].", "natural_language": { "trigger": "When the BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] detects movement (turns on).", "conditions": "The automation runs only if it is between 5:00 AM and 6:00 AM, the home mode is set to 'Home', the Eri Bermuda area sensor [sensor.eri_bermuda_area] does not report 'Living', and the Morning wakeup report [input_boolean.morning_wakeup_report] is currently off.", "action": "Runs the Morning wakeup report script [script.morning_wakeup_report] and then turns on the Morning wakeup report [input_boolean.morning_wakeup_report] to prevent repeated execution." }, "human_like": "Runs a morning report script when movement is detected at the computer early in the morning, but only if the home is in 'Home' mode and a specific person is not in the living area.", "complexity": "medium" } }, { "id": "Morning Report", "result": { "structured": "TRIGGER: When BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] becomes active (on). CONDITIONS: The current time is after the time set in Morning report datetime [input_datetime.morning_report] AND before 08:30:00. AND Home mode selector [input_select.home_mode] is set to 'Home'. AND Eri Bermuda area sensor [sensor.eri_bermuda_area] is NOT in the 'Living' area. AND Good morning report [input_boolean.good_morning_report] is off. ACTIONS: Execute Morning briefing script [script.morning_briefing]. Execute Battery notification script [script.battery_notification]. Turn on Good morning report [input_boolean.good_morning_report].", "natural_language": { "trigger": "When the BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] detects movement, turning on.", "conditions": "The automation runs only if the current time is between the time set in the Morning report datetime [input_datetime.morning_report] and 8:30 AM, the Home mode selector [input_select.home_mode] is set to 'Home', the Eri Bermuda area sensor [sensor.eri_bermuda_area] does not report being in the 'Living' area, and the Good morning report [input_boolean.good_morning_report] is currently off.", "action": "It runs the Morning briefing script [script.morning_briefing] and the Battery notification script [script.battery_notification], and then turns on the Good morning report [input_boolean.good_morning_report] to indicate the report has been delivered." }, "human_like": "Delivers a morning briefing and battery status notification when movement is detected at the computer during the morning hours, provided the home is in 'Home' mode and the resident is not in the living area.", "complexity": "medium" } }, { "id": "Daily Report", "result": { "structured": "TRIGGER: When BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] turns on. CONDITIONS: (Current time is after the time set in Daily report datetime [input_datetime.daily_report] AND before 15:00:00) AND (Home mode selector [input_select.home_mode] is in state 'Home') AND (Daily report [input_boolean.daily_report] is off). ACTIONS: Execute Daily briefing script [script.daily_briefing] AND turn on Daily report [input_boolean.daily_report].", "natural_language": { "trigger": "When the BT proxy computer moving target [binary_sensor.bt_proxy_computer_moving_target] detects movement and changes its state to 'on'.", "conditions": "The automation only runs if the current time is after the time set in the Daily report datetime [input_datetime.daily_report] and before 3:00 PM. Additionally, the Home mode selector [input_select.home_mode] must be set to 'Home', and the Daily report [input_boolean.daily_report] must be in the 'off' state, indicating the report has not been triggered yet today.", "action": "The automation runs the Daily briefing script [script.daily_briefing] and then turns on the Daily report [input_boolean.daily_report] to mark that the report has been delivered." }, "human_like": "Delivers the daily briefing when movement is detected at the computer, but only if it's the scheduled time, the home is in 'Home' mode, and the report hasn't been given yet today.", "complexity": "medium" } }, { "id": "Enable Cameras at Sunset", "result": { "structured": "TRIGGER: At sunset with a 3-minute offset. CONDITIONS: Home mode selector [input_select.home_mode] is set to 'Home'. ACTIONS: Execute Sundown briefing script [script.sundown_briefing].", "natural_language": { "trigger": "Three minutes before sunset.", "conditions": "If the Home mode selector [input_select.home_mode] is set to 'Home'.", "action": "Runs the Sundown briefing script [script.sundown_briefing]." }, "human_like": "Runs the sundown briefing script three minutes before sunset, but only when the home mode is set to 'Home'.", "complexity": "low" } }, { "id": "Nightly Briefing", "result": { "structured": "TRIGGER: When the scheduled time matches the value set in Nightly briefing datetime [input_datetime.nightly_briefing]. CONDITIONS: Home mode selector [input_select.home_mode] is in the state 'Home'. ACTIONS: Execute the Nightly briefing script [script.nightly_briefing].", "natural_language": { "trigger": "At the specific time set in the Nightly briefing datetime [input_datetime.nightly_briefing].", "conditions": "Only if the Home mode selector [input_select.home_mode] is currently set to 'Home'.", "action": "Runs the Nightly briefing script [script.nightly_briefing]." }, "human_like": "Runs a nightly briefing script at a scheduled time, but only when the home mode is set to 'Home'.", "complexity": "low" } }, { "id": "Event Briefing", "result": { "structured": "TRIGGER: When the time reaches the value set in Event briefing datetime [input_datetime.event_briefing]. CONDITIONS: Home mode selector [input_select.home_mode] is set to 'Home'. ACTIONS: Execute Event briefing script [script.event_briefing].", "natural_language": { "trigger": "The automation runs at the specific time set in the Event briefing datetime [input_datetime.event_briefing].", "conditions": "It only proceeds if the Home mode selector [input_select.home_mode] is currently set to 'Home'.", "action": "It runs the Event briefing script [script.event_briefing]." }, "human_like": "Runs the event briefing script at a scheduled time, but only when the home is set to 'Home' mode.", "complexity": "low" } }, { "id": "Security MDF Camera Snapshot", "result": { "structured": "TRIGGER: When GK air freshener moving target [binary_sensor.gk_airfreshener_moving_target] changes from off to on. CONDITIONS: Security cameras [input_boolean.security_cameras] is on. ACTIONS: Wait 2 seconds, then take a snapshot from Security MDF camera [camera.security_mdf] and save it with a timestamped filename, then execute Clean security images command [shell_command.clean_security_images].", "natural_language": { "trigger": "When the GK air freshener moving target [binary_sensor.gk_airfreshener_moving_target] detects a moving target and changes from off to on.", "conditions": "The Security cameras [input_boolean.security_cameras] must be switched on.", "action": "After a two-second delay, the automation takes a snapshot from the Security MDF camera [camera.security_mdf], saving the image with a filename that includes the current date and time. It then runs a shell command to clean up old security images." }, "human_like": "Takes a snapshot from the MDF security camera when motion is detected in the genkan, provided the security camera system is active.", "complexity": "low" } }, { "id": "Security Balcony Camera Snapshot", "result": { "structured": "TRIGGER: When Security balcony occupancy [binary_sensor.security_balcony_occupancy] changes from off to on. CONDITIONS: Security cameras [input_boolean.security_cameras] is on. ACTIONS: 1. Take a snapshot from Security balcony camera [camera.security_balcony] and save it to /config/www/img/security/balcony/security_balcony_camera_last.jpg. 2. Wait for 1 second. 3. Take another snapshot from Security balcony camera [camera.security_balcony] and save it to a timestamped file at /config/www/img/security/balcony/[YYYYMMDD_HHMMSS]security_balcony_camera.jpg. 4. Execute the Clean balcony images command [shell_command.clean_balcony_images].", "natural_language": { "trigger": "When the Security balcony occupancy [binary_sensor.security_balcony_occupancy] sensor detects motion, changing its state from off to on.", "conditions": "The Security cameras [input_boolean.security_cameras] master switch must be turned on.", "action": "The automation first captures an immediate snapshot from the Security balcony camera [camera.security_balcony], saving it as a 'last image' file. After a brief one-second delay, it takes a second snapshot and saves it with a timestamp in the filename. Finally, it runs a cleanup command to manage old image files." }, "human_like": "Takes two snapshots from the balcony security camera when motion is detected, provided the security camera system is enabled.", "complexity": "low" } }, { "id": "Automate Christmas Lights", "result": { "structured": "TRIGGER: When Living Room Radar Illuminance [sensor.lr_radar_illuminance] is between 0.38 and 0.51 (exclusive) OR When the time is 23:00:00 OR When Living Room Radar Illuminance [sensor.lr_radar_illuminance] is below 0.28. CONDITIONS: (Vacation mode [input_boolean.vacation_mode] is NOT on) AND (Home mode selector [input_select.home_mode] is in state 'Home'). ACTIONS: If Living Room Radar Illuminance [sensor.lr_radar_illuminance] is less than 0.29 OR the current time is 23:00, then run Christmas lights off script [script.christmas_lights_off]. Otherwise, if Living Room Radar Illuminance [sensor.lr_radar_illuminance] is greater than 0.38, then run Christmas lights on script [script.christmas_lights_on].", "natural_language": { "trigger": "The automation triggers when the Living Room Radar Illuminance [sensor.lr_radar_illuminance] is between 0.38 and 0.51, when the time reaches 23:00:00, or when the illuminance falls below 0.28.", "conditions": "It only runs if Vacation mode [input_boolean.vacation_mode] is not active and the Home mode selector [input_select.home_mode] is set to 'Home'.", "action": "Based on the illuminance value or time, it will either turn the Christmas lights off or on. If the illuminance is below 0.29 or it's exactly 23:00, the lights are turned off. If the illuminance is above 0.38, the lights are turned on." }, "human_like": "Automatically turns the Christmas lights on or off based on the ambient light level in the living room and the time of day, but only when someone is home and not on vacation.", "complexity": "medium" } }, { "id": "turn on appletv netflix", "result": { "structured": "TRIGGER: When Apple TV Netflix [input_boolean.appletv_netflix] changes from off to on. CONDITIONS: None. ACTIONS: Run Apple TV Netflix script [script.appletv_netflix] AND toggle Apple TV Netflix [input_boolean.appletv_netflix].", "natural_language": { "trigger": "When the Apple TV Netflix [input_boolean.appletv_netflix] switch is turned on.", "conditions": "There are no conditions for this automation.", "action": "It runs the Apple TV Netflix script [script.appletv_netflix] and then toggles the Apple TV Netflix [input_boolean.appletv_netflix] switch back off." }, "human_like": "Starts the Netflix app on the Apple TV and then resets the switch used to trigger it.", "complexity": "low" } }, { "id": "turn on appletv plex", "result": { "structured": "TRIGGER: When Apple TV Plex [input_boolean.appletv_plex] changes from off to on. CONDITIONS: None. ACTIONS: Execute Apple TV Plex script [script.appletv_plex] AND toggle Apple TV Plex [input_boolean.appletv_plex].", "natural_language": { "trigger": "When the Apple TV Plex [input_boolean.appletv_plex] input boolean is turned on.", "conditions": "There are no conditions for this automation.", "action": "Runs the Apple TV Plex script [script.appletv_plex] and then toggles the Apple TV Plex [input_boolean.appletv_plex] input boolean off." }, "human_like": "Starts the Apple TV Plex script and resets the control switch when it's turned on.", "complexity": "low" } }, { "id": "Turn on desktop in morning", "result": { "structured": "TRIGGER: At 04:15:00. CONDITIONS: (Vacation mode [input_boolean.vacation_mode] is off) AND (Duc presence [binary_sensor.duc_presence] is on) AND (Desktop status [binary_sensor.desktop_status] is off). ACTIONS: Turn on Desktop switch [switch.desktop].", "natural_language": { "trigger": "At 4:15 AM.", "conditions": "If Vacation mode [input_boolean.vacation_mode] is not active, if Duc presence [binary_sensor.duc_presence] is detected, and if the Desktop status [binary_sensor.desktop_status] indicates the desktop is off.", "action": "Turn on the Desktop switch [switch.desktop]." }, "human_like": "Automatically turns on the desktop computer at 4:15 AM if someone is home, vacation mode is off, and the desktop is currently off.", "complexity": "low" } }, { "id": "Server Status", "result": { "structured": "TRIGGER: When sensor.server_status is not 'on' for 600 seconds. CONDITIONS: None. ACTIONS: If the trigger condition is met AND sensor.server_status is not 'on', then call script.email_notify with parameters who='duc', title='Server Offline', message='{{ states(''sensor.server_status'') }} appears to be {{ states(''group.server_status'') }}line.'. Otherwise, call script.email_notify with parameters who='duc', title='Server Online', message='Servers appear to be {{ states(''group.server_status') }}line.'.", "natural_language": { "trigger": "The automation triggers when the Server status sensor [sensor.server_status] reports a state other than 'on' for a continuous period of 10 minutes.", "conditions": "There are no separate conditions; the action sequence includes a check that the sensor is still not 'on' before sending the offline notification.", "action": "If the server is detected as offline, it sends an email notification to 'duc' with a title 'Server Offline' and a message containing the sensor and group status. If the server is not offline (the default case), it sends an email notification to 'duc' with a title 'Server Online' and a message stating the servers appear to be online based on the group status." }, "human_like": "Sends an email notification when the server status changes, alerting if the server is offline for 10 minutes or confirming when it's back online.", "complexity": "medium" } }, { "id": "disable device internet", "result": { "structured": "TRIGGER: When the current time from Time [sensor.time] equals the first five characters of the value from Disable internet sensor [sensor.disable_internet]. CONDITIONS: None. ACTIONS: Turn on iPad switch [switch.ipad].", "natural_language": { "trigger": "When the current time reported by the Time [sensor.time] sensor matches the first five characters of the value reported by the Disable internet sensor [sensor.disable_internet].", "conditions": "There are no additional conditions.", "action": "Turns on the iPad switch [switch.ipad]." }, "human_like": "Turns on the iPad switch when the current time matches a scheduled time stored in another sensor.", "complexity": "medium" } }, { "id": "aio_controller_events", "result": { "structured": "TRIGGER: When AIO controller action event [event.aio_controller_action] changes state to any value. CONDITIONS: The previous state of AIO controller action event [event.aio_controller_action] was not 'unavailable'. ACTIONS: Choose an action based on the event_type attribute of the trigger: If event_type is 'brightness_up_click', turn on Dining lights toggle script [script.dining_lights_toggle]. If event_type is 'brightness_down_click', toggle Living light [light.living]. If event_type is 'arrow_left_click', turn on CR curtains toggle script [script.cr_curtains_toggle]. If event_type is 'arrow_right_click', turn on LR curtains toggle script [script.lr_curtains_toggle]. If event_type is 'arrow_left_hold', turn on LR AC cool toggle script [script.lr_ac_cool_toggle]. If event_type is 'arrow_right_hold', turn on LR AC heat toggle script [script.lr_ac_heat_toggle]. If event_type is 'toggle', turn off Living light [light.living] AND Ceiling fan light [light.ceiling_fan_light].", "natural_language": { "trigger": "When the AIO controller action event [event.aio_controller_action] changes state.", "conditions": "The previous state of the AIO controller action event [event.aio_controller_action] must not have been 'unavailable'.", "action": "Depending on the specific button press event, it will perform different actions: a brightness up click runs the Dining lights toggle script [script.dining_lights_toggle]; a brightness down click toggles the Living light [light.living]; an arrow left click runs the CR curtains toggle script [script.cr_curtains_toggle]; an arrow right click runs the LR curtains toggle script [script.lr_curtains_toggle]; holding the left arrow runs the LR AC cool toggle script [script.lr_ac_cool_toggle]; holding the right arrow runs the LR AC heat toggle script [script.lr_ac_heat_toggle]; and a toggle click turns off both the Living light [light.living] and the Ceiling fan light [light.ceiling_fan_light]." }, "human_like": "Maps different button presses on the AIO controller to various home automation actions, like controlling lights, curtains, and air conditioning.", "complexity": "medium" } }, { "id": "turn on light flash", "result": { "structured": "TRIGGER: When Lights flash [input_boolean.lights_flash] changes from off to on. CONDITIONS: None. ACTIONS: Execute Light loop script [script.light_loop].", "natural_language": { "trigger": "When the Lights flash [input_boolean.lights_flash] is turned on.", "conditions": "There are no conditions for this automation.", "action": "Starts the Light loop script [script.light_loop]." }, "human_like": "Starts a light flashing sequence when the flash mode is enabled.", "complexity": "low" } }, { "id": "turn off light flash", "result": { "structured": "TRIGGER: When Lights flash [input_boolean.lights_flash] changes from on to off. CONDITIONS: None. ACTIONS: Turn off Light loop script [script.light_loop] AND Light flash script [script.light_flash].", "natural_language": { "trigger": "When the Lights flash [input_boolean.lights_flash] input boolean is turned off.", "conditions": "There are no conditions that must be met.", "action": "Stops any running light effect scripts by turning off both the Light loop script [script.light_loop] and the Light flash script [script.light_flash]." }, "human_like": "Stops the flashing light effects when the 'Lights flash' control is turned off.", "complexity": "low" } }, { "id": "Flight entry notification", "result": { "structured": "TRIGGER: When a flightradar24_entry event occurs. CONDITIONS: None. ACTIONS: Choose one of the following sequences based on conditions: 1. IF (trigger.event.data.tracked_by_device == 'homeFT24' AND Person Duc [person.duc] is home) AND (trigger.event.data.airline matches a list of specific keywords) THEN send notification: 🚁{airline} is flying in your neighborhood. 2. IF (trigger.event.data.tracked_by_device == 'homeFT24' AND Person Duc [person.duc] is home) AND (trigger.event.data.airline matches 'private owner' or similar) AND (trigger.event.data.callsign matches 'blocked' or similar) THEN send notification: ‼️ No flight plan. The aircraft is either private or government operated. 3. IF (trigger.event.data.tracked_by_device == 'jcbFT24' AND Person Duc [person.duc] is jcb) AND (trigger.event.data.airline matches a list of specific keywords) THEN send notification: 🚁{airline} is flying in your neighborhood. 4. IF (trigger.event.data.tracked_by_device == 'jcbFT24' AND Person Duc [person.duc] is jcb) AND (trigger.event.data.airline matches 'private owner' or similar) AND (trigger.event.data.callsign matches 'blocked' or similar) THEN send notification: ‼️ No flight plan. The aircraft is either private or government operated. 5. IF (trigger.event.data.tracked_by_device == 'homeFT24' AND Person Duc [person.duc] is home) THEN send notification with flight details: 📍The plane you hear now is from {airline}[{callsign}] at {altitude} ft. It comes from {origin_city} in {origin_country} and is on its way to {destination_city}. 6. IF (trigger.event.data.tracked_by_device == 'jcbFT24' AND Person Duc [person.duc] is jcb) THEN send notification with flight details: 💼The plane you hear now is from {airline}[{callsign}] at {altitude} ft. It comes from {origin_city} in {origin_country} and is on its way to {destination_city}. If no conditions match, do nothing.", "natural_language": { "trigger": "When a new flight entry event is received from FlightRadar24.", "conditions": "There are no global conditions. The automation uses a set of conditional rules to decide which message to send, based on the flight's tracking device, the user's location, and specific details about the airline and callsign.", "action": "Sends a notification via Amber the bot notification [notify.amberthebot] with different messages depending on the flight data and the user's location. If the flight is tracked by the 'homeFT24' device and the user is home, it sends a specific message for certain airlines (like police or university flights) or a warning for private/government flights with blocked callsigns, otherwise it sends a detailed flight info message. Similarly, if tracked by 'jcbFT24' and the user is at 'jcb', it sends corresponding messages. If no specific rules match, no notification is sent." }, "human_like": "Sends smart flight notifications based on which aircraft tracker is active and the user's location, providing specific alerts for interesting flights like police helicopters or private aircraft without flight plans.", "complexity": "high" } }, { "id": "Scheduled flight takes off", "result": { "structured": "TRIGGER: When a flightradar24_tracked_took_off event occurs. CONDITIONS: None. ACTIONS: Send a notification via Amber the bot notification [notify.amberthebot] with a message containing the airline, callsign, origin city, origin country, and destination city from the event data.", "natural_language": { "trigger": "When the system receives a 'flightradar24_tracked_took_off' event, which indicates a tracked flight has taken off.", "conditions": "There are no conditions that must be met.", "action": "Sends a notification to Amber the bot notification [notify.amberthebot]. The message includes details from the event, such as the airline, flight callsign, the city and country of origin, and the destination city." }, "human_like": "Sends a notification with flight details whenever a tracked plane takes off.", "complexity": "low" } }, { "id": "motion hallway auto-on", "result": { "structured": "TRIGGER: When Hallway occupied [binary_sensor.hallway_occupied] becomes on. CONDITIONS: Home mode selector [input_select.home_mode] is NOT set to 'Vacation'. ACTIONS: Choose based on conditions: IF Guest mode [input_boolean.guest_mode] is on THEN run Tradfri transition script [script.tradfri_transition] on H1 light [light.h_1] with color temperature 400, transition 2 seconds, brightness 200. ELSE IF current hour is after 19 OR current hour is before 7 OR Hallway nightlight [binary_sensor.hallway_nightlight] is on THEN run Tradfri transition script [script.tradfri_transition] on H1 light [light.h_1] with color temperature 400, transition 2 seconds, brightness 50. OTHERWISE (default) run Tradfri transition script [script.tradfri_transition] on H1 light [light.h_1] with color temperature 400, transition 2 seconds, brightness 200.", "natural_language": { "trigger": "When motion is detected in the hallway, indicated by the Hallway occupied [binary_sensor.hallway_occupied] sensor turning on.", "conditions": "The automation only runs if the home is not set to Vacation mode via the Home mode selector [input_select.home_mode].", "action": "Depending on the situation, the hallway light is turned on with different brightness levels. If Guest mode [input_boolean.guest_mode] is active, the H1 light [light.h_1] is set to a bright level (200). Otherwise, if it's nighttime (after 7 PM or before 7 AM) or if the Hallway nightlight [binary_sensor.hallway_nightlight] is on, the light is set to a dim level (50). In all other cases, the light is set to the bright level (200). The light always transitions smoothly over 2 seconds to a warm white color (400)." }, "human_like": "Automatically turns on the hallway light when motion is detected, adjusting the brightness based on guest mode, time of day, or nightlight status.", "complexity": "medium" } }, { "id": "motion hallway auto-off", "result": { "structured": "TRIGGER: When Hallway occupied [binary_sensor.hallway_occupied] changes to off OR when the nightlight attribute of Hallway occupied [binary_sensor.hallway_occupied] becomes true. CONDITIONS: (Disable motion lights [input_boolean.disable_motion_lights] is NOT on) OR (the nightlight attribute of Hallway occupied [binary_sensor.hallway_occupied] is true). ACTIONS: Turn off H1 light [light.h_1].", "natural_language": { "trigger": "When the Hallway occupied [binary_sensor.hallway_occupied] sensor reports the hallway is no longer occupied (changes to 'off'), or when the sensor's nightlight feature is activated.", "conditions": "The automation runs only if the Disable motion lights [input_boolean.disable_motion_lights] switch is off, or if the nightlight feature on the Hallway occupied [binary_sensor.hallway_occupied] sensor is active.", "action": "Turns off the H1 light [light.h_1] in the hallway." }, "human_like": "Automatically turns off the hallway light when the room is unoccupied, but allows the nightlight feature to override the general motion light disable setting.", "complexity": "medium" } }, { "id": "motion genkan area", "result": { "structured": "TRIGGER: When Genkan occupied [binary_sensor.genkan_occupied] becomes on OR When Genkan occupied [binary_sensor.genkan_occupied] is off for 10 seconds. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on. ACTIONS: If the trigger was Genkan occupied [binary_sensor.genkan_occupied] is off for 10 seconds, then turn off G1 light [light.g_1]. Otherwise, run the Tradfri transition script [script.tradfri_transition] on G1 light [light.g_1] with color temperature 400, transition 2 seconds, and brightness 200.", "natural_language": { "trigger": "The automation triggers when motion is detected in the genkan area, indicated by Genkan occupied [binary_sensor.genkan_occupied] turning on, or when motion is absent for 10 seconds, indicated by Genkan occupied [binary_sensor.genkan_occupied] being off for that duration.", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] switch is not turned on.", "action": "If the trigger was motion being absent for 10 seconds, the G1 light [light.g_1] is turned off. Otherwise, for a motion detection trigger, the Tradfri transition script [script.tradfri_transition] is executed to set the G1 light [light.g_1] to a brightness of 200, a color temperature of 400, with a 2-second transition." }, "human_like": "Turns on the genkan light with a gentle transition when motion is detected, and turns it off after motion has been absent for 10 seconds, unless the feature is manually disabled.", "complexity": "medium" } }, { "id": "Genkan Airfreshener auto-on", "result": { "structured": "TRIGGER: When Genkan moving target [binary_sensor.genkan_moving_target] changes from off to on. CONDITIONS: The time elapsed since GK air freshener switch [switch.gk_airfreshener] was last changed is greater than or equal to 3600 seconds (1 hour). ACTIONS: Turn on GK air freshener switch [switch.gk_airfreshener].", "natural_language": { "trigger": "When the Genkan moving target [binary_sensor.genkan_moving_target] detects motion, changing its state from off to on.", "conditions": "The automation only proceeds if the GK air freshener switch [switch.gk_airfreshener] has not been turned on or off for at least one hour.", "action": "Turns on the GK air freshener switch [switch.gk_airfreshener]." }, "human_like": "Automatically turns on the genkan air freshener when motion is detected, but only if it hasn't been activated in the last hour to prevent overuse.", "complexity": "medium" } }, { "id": "Skills Ask - Turn on LR Aircon", "result": { "structured": "TRIGGER: When Duc presence [binary_sensor.duc_presence] becomes present (on) AND remains so for 30 seconds OR When Living Room Radar Temperature [sensor.lr_radar_temperature] is above the value of LR AC cool temperature set [input_number.lr_ac_cool_temp_set] AND remains so for 20 seconds. CONDITIONS: Home mode selector [input_select.home_mode] is set to 'Home' AND LR AC mode selector [input_select.lr_ac_mode] is set to 'Off' AND The numeric value of Living Room Radar Temperature [sensor.lr_radar_temperature] is greater than the numeric value of LR AC cool temperature set [input_number.lr_ac_cool_temp_set]. ACTIONS: Execute Activate Alexa actionable notification script [script.activate_alexa_actionable_notification] with data: text containing the current temperature and a prompt to turn on the AC, event_id 'ask_to_turn_on_lr_aircon', and target Media player AI 1 [media_player.ai_1].", "natural_language": { "trigger": "The automation triggers when either someone is detected as present by the Duc presence sensor [binary_sensor.duc_presence] for at least 30 seconds, or when the Living Room Radar Temperature [sensor.lr_radar_temperature] stays above the set cooling temperature [input_number.lr_ac_cool_temp_set] for at least 20 seconds.", "conditions": "All of the following must be true: the home must be in 'Home' mode as set by the Home mode selector [input_select.home_mode], the living room air conditioning must be set to 'Off' mode via the LR AC mode selector [input_select.lr_ac_mode], and the actual living room temperature [sensor.lr_radar_temperature] must be higher than the desired cooling temperature setpoint [input_number.lr_ac_cool_temp_set].", "action": "The automation sends an actionable notification to the Alexa device Media player AI 1 [media_player.ai_1], asking the user if they would like to turn on the living room air conditioner. The notification includes the current room temperature." }, "human_like": "When someone is in the living room and it's too warm, this automation asks via Alexa if you'd like to turn on the air conditioner.", "complexity": "medium" } }, { "id": "Skills Rsp - Turn on LR Aircon", "result": { "structured": "TRIGGER: When an Alexa actionable notification event with event_id 'ask_to_turn_on_lr_aircon' and event_response_type 'ResponseYes' occurs. CONDITIONS: None. ACTIONS: Turn on LR AC unit switch [switch.ac_lr_unit].", "natural_language": { "trigger": "When you respond 'Yes' to an Alexa notification asking to turn on the living room air conditioner.", "conditions": "There are no additional conditions that need to be met.", "action": "Turns on the LR AC unit switch [switch.ac_lr_unit]." }, "human_like": "Turns on the living room air conditioner when you confirm the request via an Alexa notification.", "complexity": "low" } }, { "id": "BPM Record Log Duc", "result": { "structured": "TRIGGER: When Duc Withings systolic blood pressure [sensor.duc_withings_systolic_blood_pressure] OR Duc Withings diastolic blood pressure [sensor.duc_withings_diastolic_blood_pressure] changes state. CONDITIONS: None. ACTIONS: Execute Text notify script [script.text_notify] with data (who: amber, title: 'BP Readings:', message: formatted with last reading time and values) AND Send a notification via BPM log Duc notification [notify.bpm_log_duc] with a CSV-formatted message containing Date [sensor.date], Time [sensor.time], Duc Withings heart pulse [sensor.duc_withings_heart_pulse], Duc Withings systolic blood pressure [sensor.duc_withings_systolic_blood_pressure], '/', Duc Withings diastolic blood pressure [sensor.duc_withings_diastolic_blood_pressure].", "natural_language": { "trigger": "Whenever the Duc Withings systolic blood pressure [sensor.duc_withings_systolic_blood_pressure] or the Duc Withings diastolic blood pressure [sensor.duc_withings_diastolic_blood_pressure] sensor updates its value.", "conditions": "There are no conditions that must be met; the actions run immediately after the trigger.", "action": "First, it runs the Text notify script [script.text_notify] to send a text notification to Amber, displaying the latest blood pressure reading and the time it was taken. Then, it sends a separate notification to the BPM log Duc notification [notify.bpm_log_duc] service, which logs the current date, time, heart pulse, and blood pressure readings in a CSV format." }, "human_like": "Logs and notifies Amber whenever a new blood pressure reading is received, providing both a friendly message and a structured data log.", "complexity": "medium" } }, { "id": "Weight Record Log Duc", "result": { "structured": "TRIGGER: When Duc Withings weight [sensor.duc_withings_weight] OR Duc Withings fat ratio [sensor.duc_withings_fat_ratio] changes state. CONDITIONS: None. ACTIONS: Run script Text notify script [script.text_notify] with data (who: amber, title: 'Today's Weight:', message: a template that includes the time of the weight reading and the weight value) AND send a notification via Weight log Duc notification [notify.weight_log_duc] with a message containing a comma-separated list of values from sensors: Date [sensor.date], Time [sensor.time], Duc Withings bone mass [sensor.duc_withings_bone_mass], Duc Withings fat free mass [sensor.duc_withings_fat_free_mass], Duc Withings fat mass [sensor.duc_withings_fat_mass], Duc Withings fat ratio [sensor.duc_withings_fat_ratio], Duc Withings heart pulse [sensor.duc_withings_heart_pulse], Duc Withings hydration [sensor.duc_withings_hydration], Duc Withings muscle mass [sensor.duc_withings_muscle_mass], Duc Withings visceral fat index [sensor.duc_withings_visceral_fat_index], Duc Withings weight [sensor.duc_withings_weight].", "natural_language": { "trigger": "Whenever the Duc Withings weight [sensor.duc_withings_weight] or the Duc Withings fat ratio [sensor.duc_withings_fat_ratio] sensor updates its value.", "conditions": "There are no conditions that must be met.", "action": "First, it runs a script called Text notify script [script.text_notify] to send a text notification to 'amber' with a title of 'Today's Weight:' and a message showing the time the weight was recorded and the current weight value. Second, it sends a detailed log message via the Weight log Duc notification [notify.weight_log_duc] service. This log message contains a comma-separated list of the current date, time, and various health metrics from the Withings scale, including bone mass, fat ratio, heart pulse, and weight." }, "human_like": "Logs and notifies about weight and body composition readings from a Withings scale whenever a new weight or fat ratio measurement is received.", "complexity": "medium" } }, { "id": "Sensor Low Battery", "result": { "structured": "TRIGGER: When any of the following sensor battery levels falls below 46 percent: Motion security battery [sensor.motion_security_battery], AIO controller battery [sensor.aio_controller_battery], Shion room battery [sensor.shion_room_battery], Computer room battery [sensor.computer_room_battery], Living room battery [sensor.living_room_battery], Meter battery [sensor.meter_battery], Jcom TV box battery [sensor.jcom_tv_box_battery], Floor heat battery [sensor.floor_heat_battery], Hallway door battery [sensor.hallway_door_battery], Genkan door battery [sensor.genkan_door_battery], 24hr fan battery [sensor.24hr_fan_battery], Washer door battery [sensor.washer_door_battery], Master dimmer battery [sensor.master_dimmer_battery], Shion dimmer battery [sensor.shion_dimmer_battery], LR curtains battery [sensor.lr_curtains_battery], CR curtains battery [sensor.cr_curtains_battery], Shower room battery [sensor.shower_room_battery], Motion S1 battery [sensor.motion_s1_battery], Motion C1 battery [sensor.motion_c1_battery]. CONDITIONS: None. ACTIONS: Send a notification via Notify events notification [notify.notify_events] with a message stating 'The battery for [triggering sensor's friendly name] is below 46 percent.'", "natural_language": { "trigger": "When the battery level of any one of the listed sensors drops below 46 percent.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a notification to the Notify events notification [notify.notify_events] service. The message will state which specific sensor's battery is low, using its friendly name." }, "human_like": "Sends a notification when any monitored device's battery level becomes low.", "complexity": "low" } }, { "id": "startup automations", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Set the frontend theme to 'midnight', then wait 25 seconds, then run Set device tracker Shion script [script.set_device_tracker_shion], then wait 15 seconds, then trigger Presence restart daily automation [automation.presence_restart_daily], then wait 270 seconds, then run Set device tracker Shion script [script.set_device_tracker_shion] again, then run Update critical battery group script [script.update_critical_battery_group].", "natural_language": { "trigger": "When Home Assistant starts up.", "conditions": "There are no conditions for this automation.", "action": "It first sets the frontend theme to 'midnight'. After a 25-second delay, it runs the Set device tracker Shion script [script.set_device_tracker_shion]. Following a 15-second delay, it triggers the Presence restart daily automation [automation.presence_restart_daily]. After a 270-second delay, it runs the Set device tracker Shion script [script.set_device_tracker_shion] again and then runs the Update critical battery group script [script.update_critical_battery_group]." }, "human_like": "Runs a series of setup and maintenance tasks, like setting the theme and updating device trackers, when Home Assistant starts.", "complexity": "medium" } }, { "id": "Refresh special event sensors", "result": { "structured": "TRIGGER: When the time is 00:00:01 (midnight and one second) OR when Home Assistant starts. CONDITIONS: None. ACTIONS: Execute the Special events Python script [python_script.special_events] with data for Duc's birthday, then for Eri's birthday, then for Shion's birthday, then for Our wedding anniversary, then for Golden Week holiday. Then execute the Mailbox reset script [script.mailbox_reset]. Then execute the Set state Python script [python_script.set_state] to set Lora mailbox sensor [sensor.lora_mailbox] state to 'received'.", "natural_language": { "trigger": "The automation runs either at one second past midnight every day, or immediately when Home Assistant starts up.", "conditions": "There are no conditions for this automation.", "action": "It runs a series of scripts: first, it updates special event sensors for birthdays (Duc, Eri, Shion), an anniversary (Our wedding), and a holiday (Golden Week) using the Special events Python script [python_script.special_events]. Then, it runs the Mailbox reset script [script.mailbox_reset]. Finally, it uses the Set state Python script [python_script.set_state] to set the Lora mailbox sensor [sensor.lora_mailbox] to a 'received' state." }, "human_like": "Updates daily event reminders and resets the mailbox status at midnight or when the system restarts.", "complexity": "medium" } }, { "id": "Renable Shion Devices", "result": { "structured": "TRIGGER: When the time is exactly 02:00:00. CONDITIONS: None. ACTIONS: Execute the Enable devices script [script.enable_devices].", "natural_language": { "trigger": "Every day at 2:00 AM.", "conditions": "There are no conditions that must be met.", "action": "Runs the script named Enable devices script [script.enable_devices]." }, "human_like": "Runs a script to re-enable devices every night at 2 AM.", "complexity": "low" } }, { "id": "Update Template Sensors", "result": { "structured": "TRIGGER: When the system time matches the pattern where minutes equal 59 (i.e., every hour at minute 59). CONDITIONS: None. ACTIONS: Update the following entities: Number of lines of code sensor [sensor.number_of_lines_of_code], Sensor count sensor [sensor.sensor_count], Automation count sensor [sensor.automation_count], Tracker count sensor [sensor.tracker_count], Script count sensor [sensor.script_count], Switch count sensor [sensor.switch_count], Binary sensor count sensor [sensor.binary_sensor_count], Light count sensor [sensor.light_count].", "natural_language": { "trigger": "The automation runs once every hour at minute 59.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Updates a set of template sensors that track various system statistics. Specifically, it refreshes the Number of lines of code sensor [sensor.number_of_lines_of_code], Sensor count sensor [sensor.sensor_count], Automation count sensor [sensor.automation_count], Tracker count sensor [sensor.tracker_count], Script count sensor [sensor.script_count], Switch count sensor [sensor.switch_count], Binary sensor count sensor [sensor.binary_sensor_count], and Light count sensor [sensor.light_count]." }, "human_like": "Updates system statistics sensors every hour just before the hour changes.", "complexity": "low" } }, { "id": "New Home Assistant Version", "result": { "structured": "TRIGGER: When Hassio version sensor [sensor.hassio_version] changes state. CONDITIONS: Hassio version sensor [sensor.hassio_version] is unavailable AND the previous state of the triggering entity was unavailable. ACTIONS: Send a notification via Notify events notification [notify.notify_events] with the message 'Home Assistant Version {current state of sensor.hassio_version} is available'.", "natural_language": { "trigger": "Whenever the Hassio version sensor [sensor.hassio_version] reports a change in its state.", "conditions": "The automation only proceeds if the Hassio version sensor [sensor.hassio_version] is currently in an 'unavailable' state, and if its state just changed from also being 'unavailable'.", "action": "Sends a notification using Notify events notification [notify.notify_events], announcing that a new Home Assistant version is available, including the version number in the message." }, "human_like": "Sends a notification when a new Home Assistant version becomes available, but only when the system detects the version sensor transitioning from an 'unavailable' state.", "complexity": "medium" } }, { "id": "persistent_notification_clear_pwned", "result": { "structured": "TRIGGER: When any persistent_notification.create service call occurs. CONDITIONS: The notification_id of the created notification contains the substring 'supervisor_issue_pwned'. ACTIONS: Dismiss the persistent notification with the same notification_id that triggered the automation.", "natural_language": { "trigger": "Whenever a new persistent notification is created via a service call.", "conditions": "The notification's ID must contain the text 'supervisor_issue_pwned'.", "action": "Immediately dismisses that specific notification." }, "human_like": "Automatically clears any persistent notification related to a 'pwned' supervisor issue as soon as it appears.", "complexity": "low" } }, { "id": "persistent_notification_clear_ip", "result": { "structured": "TRIGGER: When HTTP login notification [persistent_notification.http_login] changes to a notifying state. CONDITIONS: The notification message contains an IP address that matches '192.168.1.111'. ACTIONS: Dismiss the HTTP login notification [persistent_notification.http_login].", "natural_language": { "trigger": "When the HTTP login notification [persistent_notification.http_login] becomes active (enters the 'notifying' state).", "conditions": "The content of the notification message includes the specific IP address 192.168.1.111.", "action": "Automatically clears the HTTP login notification [persistent_notification.http_login] from the interface." }, "human_like": "Automatically clears login notifications that originate from a trusted IP address.", "complexity": "medium" } }, { "id": "Restore Samba Backup sensor on startup", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: None. ACTIONS: Send the command 'restore-sensor' to the Samba Backup addon [addon: 15d21743_samba_backup] via stdin.", "natural_language": { "trigger": "When Home Assistant starts up.", "conditions": "There are no conditions for this automation.", "action": "Sends the command 'restore-sensor' to the Samba Backup addon to restore its sensor." }, "human_like": "Restores the Samba Backup sensor when Home Assistant starts up.", "complexity": "low" } }, { "id": "Kitchen Occupancy", "result": { "structured": "TRIGGER: When the time pattern matches seconds = 10 (every 10 seconds) OR when Motion kitchen occupancy group [group.motion_kitchen_occupancy] turns on. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on AND Kitchen MCL [input_boolean.kitchen_mcl] is off. ACTIONS: Execute Room occupancy Python script [python_script.room_occupancy] with data: roomname = 'kitchen', timeout = 3 minutes if Cooking time group [group.cooking_time] is on, otherwise 2 minutes, entities_toggle includes Motion kitchen occupancy group [group.motion_kitchen_occupancy], entities_keep includes Kitchen still target [binary_sensor.kitchen_still_target] and Cabinet has target [binary_sensor.cabinet_has_target].", "natural_language": { "trigger": "The automation runs either every 10 seconds, or whenever the Motion kitchen occupancy group [group.motion_kitchen_occupancy] detects motion and turns on.", "conditions": "The automation only proceeds if the Disable motion lights [input_boolean.disable_motion_lights] is not turned on, and the Kitchen MCL [input_boolean.kitchen_mcl] is off.", "action": "It calls a Python script named Room occupancy Python script [python_script.room_occupancy] to manage the kitchen's occupancy state. The script is configured for the kitchen, with a timeout of 3 minutes if the Cooking time group [group.cooking_time] is active, otherwise 2 minutes. It will toggle the Motion kitchen occupancy group [group.motion_kitchen_occupancy] and will keep monitoring the Kitchen still target [binary_sensor.kitchen_still_target] and Cabinet has target [binary_sensor.cabinet_has_target] sensors." }, "human_like": "This automation manages the kitchen's occupancy status, using motion detection and a timer to determine if someone is present, and adjusts the timeout based on whether cooking is happening.", "complexity": "medium" } }, { "id": "Kitchen Light", "result": { "structured": "TRIGGER: When Kitchen timer [timer.kitchen_timer] changes from idle to active OR When Cabinet light [light.cabinet] changes from off to on AND remains for 1 minute OR When KT illuminance sensor [sensor.kt_illuminance] changes from off to on OR When Kitchen timer [timer.kitchen_timer] changes from active to idle OR When Cabinet light [light.cabinet] changes from on to off OR When a template condition is true (Kitchen presence [binary_sensor.kitchen_presence] is off AND the time since Motion kitchen occupancy group [group.motion_kitchen_occupancy] last changed is greater than 5 seconds) AND remains true for 40 seconds. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on. ACTIONS: Choose based on trigger ID: IF trigger is 'pre' THEN turn on K1 light [light.k_1] and K3 light [light.k_3] if LR radar status [binary_sensor.lr_radar_status] is off, OR turn on only K1 light [light.k_1] if Living Room Radar Illuminance [sensor.lr_radar_illuminance] is less than or equal to 0.09, OR turn on K1 light [light.k_1] and K3 light [light.k_3] otherwise. IF trigger is 'on' AND Cabinet light [light.cabinet] is on THEN call script.motion_kitchen_lights_illuminance_offline if LR radar status [binary_sensor.lr_radar_status] is off, OR call script.motion_kitchen_lights_illuminance_online otherwise. IF trigger is 'off' THEN turn off Cabinet light [light.cabinet] and Counter light [light.counter] AND finish Kitchen timer [timer.kitchen_timer]. OTHERWISE do nothing.", "natural_language": { "trigger": "The automation can start when the Kitchen timer [timer.kitchen_timer] starts or stops, when the Cabinet light [light.cabinet] is turned on for a minute or turned off, when the KT illuminance sensor [sensor.kt_illuminance] turns on, or when a template condition is met (specifically, when the Kitchen presence [binary_sensor.kitchen_presence] is off and it has been more than 5 seconds since the last motion in the kitchen, and this state persists for 40 seconds).", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] switch is not turned on.", "action": "Depending on what triggered the automation: If the timer started, it turns on specific kitchen lights based on the status of the living room radar and its illuminance reading. If the cabinet light was turned on (and remains on), it runs a specific script for kitchen lights based on the radar status. If the timer stopped or the cabinet light was turned off, it turns off the cabinet and counter lights and also stops the timer. If none of these specific triggers match, no action is taken." }, "human_like": "This automation manages kitchen lighting based on timer states, light switches, and motion, ensuring lights are turned on or off appropriately and can be overridden by a master switch.", "complexity": "high" } }, { "id": "Kitchen Auto-on", "result": { "structured": "TRIGGER: When Kitchen occupied [binary_sensor.kitchen_occupied] changes from off to on OR When the template '{{ state_attr('binary_sensor.kitchen_occupied', 'full_on') == true }}' evaluates to true OR When KT illuminance sensor [sensor.kt_illuminance] changes from off to on OR When Cabinet light [light.cabinet] changes from on to off OR When Kitchen occupied [binary_sensor.kitchen_occupied] changes from on to off. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on. ACTIONS: Choose based on trigger ID: IF trigger ID is 'pre' THEN Turn on lights based on LR radar status [binary_sensor.lr_radar_status] and Living Room Radar Illuminance [sensor.lr_radar_illuminance] value: If LR radar status is off, turn on K1 light [light.k_1] and K3 light [light.k_3]; else if Living Room Radar Illuminance <= 0.09, turn on K1 light [light.k_1]; else turn on K1 light [light.k_1] and K3 light [light.k_3]. IF trigger ID is 'on' AND Cabinet light [light.cabinet] is on THEN Call script 'script.motion_kitchen_lights_illuminance_offline' if LR radar status is off, else call 'script.motion_kitchen_lights_illuminance_online'. IF trigger ID is 'off' THEN Turn off Cabinet light [light.cabinet] and Counter light [light.counter] AND Finish Kitchen timer [timer.kitchen_timer]. OTHERWISE do nothing.", "natural_language": { "trigger": "The automation can be triggered in several ways: when the Kitchen occupied [binary_sensor.kitchen_occupied] sensor first detects occupancy (changes from off to on), when a specific attribute of that sensor indicates it is 'full_on', when the KT illuminance sensor [sensor.kt_illuminance] reports light (changes from off to on), when the Cabinet light [light.cabinet] is turned off, or when the Kitchen occupied [binary_sensor.kitchen_occupied] sensor no longer detects occupancy (changes from on to off).", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] switch is turned off.", "action": "Depending on what triggered the automation, different actions occur. If it was triggered by the initial occupancy detection, specific kitchen lights are turned on, with the exact selection depending on the status of the LR radar status [binary_sensor.lr_radar_status] and the illuminance level from the Living Room Radar Illuminance [sensor.lr_radar_illuminance]. If it was triggered by the 'full_on' attribute and the Cabinet light is already on, a specific script is called to manage the kitchen lights based on illuminance. If it was triggered by the Cabinet light turning off or the occupancy ending, the Cabinet and Counter lights are turned off and the Kitchen timer is stopped." }, "human_like": "Automatically controls kitchen lights based on occupancy, ambient light, and the status of other devices, turning them on when someone enters and off when they leave or when the cabinet light is switched off.", "complexity": "high" } }, { "id": "Kitchen MCL Announce State", "result": { "structured": "TRIGGER: When Kitchen MCL [input_boolean.kitchen_mcl] changes state. CONDITIONS: Audible notifications [input_boolean.audible_notifications] is on. ACTIONS: Execute Speech engine script [script.speech_engine] with parameters: speaker 'ai_1', message template 'include ../tpl/speech/control_status.yaml', and voice set to the current state of Jarvis voice selector [input_select.jarvis_voice].", "natural_language": { "trigger": "Whenever the Kitchen MCL [input_boolean.kitchen_mcl] changes its state.", "conditions": "The Audible notifications [input_boolean.audible_notifications] must be turned on.", "action": "The system will run the Speech engine script [script.speech_engine] to announce the status. The announcement will use the voice profile 'ai_1', the message template located at '../tpl/speech/control_status.yaml', and the specific voice selected in Jarvis voice selector [input_select.jarvis_voice]." }, "human_like": "Announces the status of the Kitchen MCL control when it changes, but only if audible notifications are enabled.", "complexity": "low" } }, { "id": "Kitchen MCL Re-Enable", "result": { "structured": "TRIGGER: When Kitchen MCL [input_boolean.kitchen_mcl] remains on for 1 hour. CONDITIONS: None. ACTIONS: Turn off Kitchen MCL [input_boolean.kitchen_mcl].", "natural_language": { "trigger": "When the Kitchen MCL [input_boolean.kitchen_mcl] has been turned on and stays on for one full hour.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Kitchen MCL [input_boolean.kitchen_mcl]." }, "human_like": "Automatically turns off the Kitchen MCL switch one hour after it is turned on.", "complexity": "low" } }, { "id": "computer room lights auto-on", "result": { "structured": "TRIGGER: When Living Room Radar Illuminance [sensor.lr_radar_illuminance] is between 0.31 and 0.41 (exclusive). CONDITIONS: (Eri Home Location [sensor.eri_home_location] is not_home OR the current time is between 07:59 and 20:00) AND Duc presence [binary_sensor.duc_presence] is on AND Home mode selector [input_select.home_mode] is not 'Vacation'. ACTIONS: Execute script Ashley fadein script [script.ashley_fadein] with parameters: entity_id light.computer and sec 150.", "natural_language": { "trigger": "When the Living Room Radar Illuminance [sensor.lr_radar_illuminance] reading is between 0.31 and 0.41.", "conditions": "If either Eri is not home, or the current time is between 7:59 AM and 8:00 PM. Additionally, Duc must be present, and the home mode must not be set to 'Vacation'.", "action": "Gradually turns on the Computer light [light.computer] over 150 seconds using the Ashley fadein script [script.ashley_fadein]." }, "human_like": "Automatically fades on the computer room lights when the ambient light is in a specific low range, provided someone is home and it's not vacation mode.", "complexity": "medium" } }, { "id": "livingroom lights auto-on", "result": { "structured": "TRIGGER: When Living Room Radar Illuminance [sensor.lr_radar_illuminance] is between 0.31 and 0.41 (exclusive) OR When Period of the day sensor [sensor.period_of_the_day] changes to 'dusklight'. CONDITIONS: (Disable motion lights [input_boolean.disable_motion_lights] is NOT on) AND (Time is after 07:59 AND before 20:00) AND (Home mode selector [input_select.home_mode] is 'Home') AND (Home mode selector [input_select.home_mode] is NOT 'Vacation') AND ((Date weekday sensor [sensor.date_weekday] is 'off' OR Shion presence [binary_sensor.shion_presence] is on) OR (Holiday sensor [sensor.holiday] is not 'none')). ACTIONS: If the trigger was Living Room Radar Illuminance [sensor.lr_radar_illuminance] between 0.31 and 0.41, then run Ashley fadein script [script.ashley_fadein] on Living light [light.living] with a 150-second fade. Otherwise, turn on Living light [light.living] at 100% brightness.", "natural_language": { "trigger": "The automation can be triggered in two ways: either when the Living Room Radar Illuminance [sensor.lr_radar_illuminance] reading is between 0.31 and 0.41, or when the Period of the day sensor [sensor.period_of_the_day] changes its state to 'dusklight'.", "conditions": "Several conditions must be met for the automation to proceed. The Disable motion lights [input_boolean.disable_motion_lights] feature must be turned off. The current time must be between 07:59 and 20:00. The home must be in 'Home' mode, as indicated by the Home mode selector [input_select.home_mode], and it must not be in 'Vacation' mode. Finally, it must either be a non-workday (the Date weekday sensor [sensor.date_weekday] is 'off'), someone is present in Shion's room (Shion presence [binary_sensor.shion_presence] is on), or there is a holiday (the Holiday sensor [sensor.holiday] does not read 'none').", "action": "Depending on which trigger started the automation, different actions occur. If it was triggered by the specific illuminance level, the Ashley fadein script [script.ashley_fadein] is called to gradually fade in the Living light [light.living] over 150 seconds. If it was triggered by the period of the day changing to 'dusklight', the Living light [light.living] is simply turned on to 100% brightness." }, "human_like": "Automatically turns on the living room lights during the day when it gets dim or at dusk, but only when someone is likely home and motion lights are not disabled.", "complexity": "medium" } }, { "id": "front area lights auto-off", "result": { "structured": "TRIGGER: When Living Room Radar Illuminance [sensor.lr_radar_illuminance] reports a value less than 0.27 lux AND is not 'unavailable' AND Time [sensor.time] is at or after 05:00 OR When Living Room Radar Illuminance [sensor.lr_radar_illuminance] reports a value less than 0.27 lux AND is not 'unavailable'. CONDITIONS: Guest mode [input_boolean.guest_mode] is NOT on. ACTIONS: Choose from the following options: IF Disable motion lights [input_boolean.disable_motion_lights] is NOT on AND Time [sensor.time] is after 05:00, THEN turn off Computer light [light.computer] AND Living light [light.living] AND turn off Ashley fadein script [script.ashley_fadein]. ELSE IF Disable motion lights [input_boolean.disable_motion_lights] is NOT on AND Date weekday sensor [sensor.date_weekday] is 'off', THEN turn off Computer light [light.computer] AND Living light [light.living] AND turn off Ashley fadein script [script.ashley_fadein]. OTHERWISE (default), turn off Computer light [light.computer] AND turn off Ashley fadein script [script.ashley_fadein].", "natural_language": { "trigger": "The automation triggers when the Living Room Radar Illuminance [sensor.lr_radar_illuminance] reports a low light level (below 0.27 lux) and is available. There are two trigger templates: one that also requires the time to be at or after 5:00 AM, and another that only requires the low light level condition.", "conditions": "The automation only runs if Guest mode [input_boolean.guest_mode] is not active.", "action": "Depending on further conditions, the automation will turn off different sets of lights. If motion lights are not disabled and the time is after 5:00 AM, it turns off both the Computer light [light.computer] and the Living light [light.living], and also stops the Ashley fadein script [script.ashley_fadein]. If motion lights are not disabled and the Date weekday sensor [sensor.date_weekday] indicates 'off' (likely meaning a weekend or holiday), it performs the same action. In all other cases, it only turns off the Computer light [light.computer] and stops the Ashley fadein script." }, "human_like": "Automatically turns off the front area lights when it's dark, but only if guest mode is off, with different light groups being controlled based on the time of day and whether it's a weekday.", "complexity": "medium" } }, { "id": "Notify about expiring inventory items", "result": { "structured": "TRIGGER: When Items expiring soon sensor [sensor.items_expiring_soon] reports a value greater than 0 OR at 06:00:00 daily. CONDITIONS: Items expiring soon sensor [sensor.items_expiring_soon] reports a value greater than 0. ACTIONS: Send a notification via Mobile app ID notification [notify.mobile_app_id] with a title and a message. The message lists the names of up to three expired items (if any exist) and up to three items expiring soon (if any exist), using data from the sensor's attributes. The notification includes an action button to view the inventory.", "natural_language": { "trigger": "The automation triggers either when the Items expiring soon sensor [sensor.items_expiring_soon] detects that there is at least one item expiring soon, or at 6:00 AM every day.", "conditions": "The automation only proceeds if the Items expiring soon sensor [sensor.items_expiring_soon] confirms there is at least one item expiring soon.", "action": "Sends a push notification to the mobile device via Mobile app ID notification [notify.mobile_app_id]. The notification includes a summary of expired items and items that will expire soon, showing up to three items from each category, and provides a button to view the full inventory." }, "human_like": "Sends a daily morning reminder or an immediate alert when there are food or other inventory items that are about to expire.", "complexity": "medium" } }, { "id": "Clean Nozzle Filters", "result": { "structured": "TRIGGER: When Season sensor [sensor.season] changes state. CONDITIONS: Home mode selector [input_select.home_mode] is NOT set to 'Vacation'. ACTIONS: Toggle Clean aircon filter group [group.clean_aircon_filter] AND run Toilet nozzle cleaning script [script.toilet_nozzle_cleaning].", "natural_language": { "trigger": "Whenever the Season sensor [sensor.season] reports a change in the current season.", "conditions": "The automation only runs if the Home mode selector [input_select.home_mode] is not set to 'Vacation' mode.", "action": "Toggles the state of the Clean aircon filter group [group.clean_aircon_filter] and then runs the Toilet nozzle cleaning script [script.toilet_nozzle_cleaning]." }, "human_like": "Starts air conditioner filter cleaning and toilet nozzle cleaning when the season changes, but only when the home is not in Vacation mode.", "complexity": "low" } }, { "id": "wakeup light bedroom", "result": { "structured": "TRIGGER: When the current time sensor [sensor.time] equals the scheduled wakeup start time sensor [sensor.wakeup_start_time_lights]. CONDITIONS: Wakeup [input_boolean.wakeup] is on AND Holiday sensor [sensor.holiday] is 'none' AND (Wakeup weekends [input_boolean.wakeup_weekends] is on OR Date weekday sensor [sensor.date_weekday] is 'on'). ACTIONS: Execute the Smooth fader Python script [python_script.smooth_fader] on the entity specified by the Wakeup map sensor [sensor.wakeup_map], with a duration in minutes from Wakeup duration [input_number.wakeup_duration], starting brightness from Brightness start [input_number.brightness_start], ending brightness from Brightness end [input_number.brightness_end], using an exponential (exp5) curve for brightness and temperature transition.", "natural_language": { "trigger": "When the current time, as reported by the Time sensor [sensor.time], matches the scheduled start time stored in the Wakeup start time lights sensor [sensor.wakeup_start_time_lights].", "conditions": "The Wakeup [input_boolean.wakeup] switch must be turned on. The Holiday sensor [sensor.holiday] must report 'none', meaning no holiday is active. Finally, it must be a valid day for the wakeup: either the Wakeup weekends [input_boolean.wakeup_weekends] switch is on, or the Date weekday sensor [sensor.date_weekday] reports 'on' (indicating a weekday).", "action": "It triggers a smooth light transition by running the Smooth fader Python script [python_script.smooth_fader]. The script will target the light or group of lights specified by the Wakeup map sensor [sensor.wakeup_map]. The fade will last for the number of minutes set in Wakeup duration [input_number.wakeup_duration], starting at the brightness level from Brightness start [input_number.brightness_start] and ending at the level from Brightness end [input_number.brightness_end], using an exponential curve for a natural-looking change in both brightness and light temperature." }, "human_like": "Gradually turns on the bedroom lights at a scheduled wake-up time, but only if the wake-up feature is enabled, it's not a holiday, and it's a valid day (weekday or weekend if allowed).", "complexity": "medium" } }, { "id": "Daily Entity Refresh", "result": { "structured": "TRIGGER: At 17:00:00 daily. CONDITIONS: None. ACTIONS: Update the entity School tomorrow sensor [sensor.school_tomorrow].", "natural_language": { "trigger": "Every day at 5:00 PM.", "conditions": "There are no conditions that must be met.", "action": "Refreshes the data for the School tomorrow sensor [sensor.school_tomorrow]." }, "human_like": "Refreshes the 'school tomorrow' sensor every evening at 5 PM.", "complexity": "low" } }, { "id": "Good Night", "result": { "structured": "TRIGGER: When the time is 22:15:00. CONDITIONS: None. ACTIONS: Turn on School year over script [script.school_year_over] AND turn off School today [input_boolean.school_today] AND turn off Audible notifications [input_boolean.audible_notifications] AND turn off Good morning report [input_boolean.good_morning_report] AND turn off Morning wakeup report [input_boolean.morning_wakeup_report] AND turn off Daily report [input_boolean.daily_report] AND run Reset earthquake daily count script [script.reset_earthquake_daily_count] AND turn off Jcom TV [input_boolean.jcom_tv] AND run Text notify image script [script.text_notify_image] with a randomly selected image and a randomly selected caption.", "natural_language": { "trigger": "At 10:15 PM every night.", "conditions": "There are no conditions that must be met.", "action": "Runs the School year over script [script.school_year_over], turns off the School today [input_boolean.school_today] flag, disables Audible notifications [input_boolean.audible_notifications], turns off the Good morning report [input_boolean.good_morning_report], turns off the Morning wakeup report [input_boolean.morning_wakeup_report], turns off the Daily report [input_boolean.daily_report], runs the Reset earthquake daily count script [script.reset_earthquake_daily_count], turns off Jcom TV [input_boolean.jcom_tv], and sends a goodnight message via the Text notify image script [script.text_notify_image] with a random image and a random caption." }, "human_like": "At 10:15 PM, this automation runs a nightly shutdown routine, turning off various notifications and reports, resetting a daily counter, and sending a random goodnight message.", "complexity": "medium" } }, { "id": "Set Room Presence", "result": { "structured": "TRIGGER: When Room audio sensor [sensor.room_audio] changes state. CONDITIONS: None. ACTIONS: Set Input text room presence [input_text.room_presence] to the current state value of Room audio sensor [sensor.room_audio] AND Publish the current state value of Room audio sensor [sensor.room_audio] to the MQTT topic 'house/alerts/presence/current_room' with retain flag set to true.", "natural_language": { "trigger": "Whenever the Room audio sensor [sensor.room_audio] reports a new state.", "conditions": "There are no conditions that must be met.", "action": "The automation updates the Input text room presence [input_text.room_presence] with the latest value from the audio sensor and simultaneously publishes that same value to an MQTT topic for system-wide alerts, ensuring the message is retained for new subscribers." }, "human_like": "Updates the tracked room presence and sends an alert whenever the audio sensor detects a change, keeping other systems informed.", "complexity": "low" } }, { "id": "Eri Arrives at Costco Notification", "result": { "structured": "TRIGGER: When Person Eri [person.eri] enters Zone Costco HQ [zone.costco_hq]. CONDITIONS: None. ACTIONS: Turn off Eri travel monitor [input_boolean.eri_travel_monitor] AND run Status announcement script [script.status_annc] with data: who = current state of Room audio sensor [sensor.room_audio] and speech_message = 'Just a quick heads up. Eddie has arrived at work.'.", "natural_language": { "trigger": "When Person Eri [person.eri] enters the zone defined as Zone Costco HQ [zone.costco_hq].", "conditions": "There are no conditions that must be met.", "action": "The automation turns off the Eri travel monitor [input_boolean.eri_travel_monitor] and then runs the Status announcement script [script.status_annc]. The script is provided with two pieces of data: the 'who' is set to the current value of the Room audio sensor [sensor.room_audio], and the 'speech_message' is set to announce 'Just a quick heads up. Eddie has arrived at work.'." }, "human_like": "Notifies the household and updates the travel status when Eri arrives at the Costco HQ zone.", "complexity": "low" } }, { "id": "Eri Leaves Costco Notification", "result": { "structured": "TRIGGER: When Person Eri [person.eri] leaves Zone Costco HQ [zone.costco_hq]. CONDITIONS: None. ACTIONS: Execute script Text notify script [script.text_notify] with data (who: duc, title: '*Notification*', message: Eri has left work.) AND Turn on Eri travel monitor [input_boolean.eri_travel_monitor] AND Execute script Status announcement script [script.status_annc] with data (who: {{ states('sensor.room_audio') }}, call_interuption: 1, call_eri_location: 1).", "natural_language": { "trigger": "When Person Eri [person.eri] exits the area defined as Zone Costco HQ [zone.costco_hq].", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Send a text notification to Duc with the message 'Eri has left work.', turn on the Eri travel monitor [input_boolean.eri_travel_monitor], and run a status announcement script [script.status_annc] which will use the current state of the Room audio sensor [sensor.room_audio] to determine who to announce to, and will include information about call interruption and Eri's location." }, "human_like": "Notifies when Eri leaves work and starts monitoring their travel, while also announcing their departure status.", "complexity": "low" } }, { "id": "Duc Arrives at Jcb Notification", "result": { "structured": "TRIGGER: When Person Duc [person.duc] enters Zone JCB [zone.jcb]. CONDITIONS: None. ACTIONS: Turn off Duc travel monitor [input_boolean.duc_travel_monitor] AND execute Status announcement script [script.status_annc] with data: who set to the current state of Room audio sensor [sensor.room_audio] and speech_message set to 'I do not mean to intrude, but, Duck has arrived at work.'.", "natural_language": { "trigger": "When the person tracker for Duc [person.duc] detects that he has entered the zone named JCB [zone.jcb].", "conditions": "There are no conditions that must be met.", "action": "First, it turns off the Duc travel monitor [input_boolean.duc_travel_monitor]. Then, it runs the status announcement script [script.status_annc], which will announce a message. The message will be spoken by the device specified by the Room audio sensor [sensor.room_audio] and will say: 'I do not mean to intrude, but, Duck has arrived at work.'." }, "human_like": "Announces Duc's arrival at work and turns off his travel monitor when he enters the JCB zone.", "complexity": "low" } }, { "id": "Duc Leaves Jcb Notification", "result": { "structured": "TRIGGER: When Person Duc [person.duc] leaves Zone JCB [zone.jcb]. CONDITIONS: None. ACTIONS: Execute script.text_notify with parameters who: duc, title: '*Notification*', message: 'Duc has left work.' AND Turn on Duc travel monitor [input_boolean.duc_travel_monitor] AND Execute script.status_annc with parameters who: current state of sensor.room_audio, call_interuption: 1, call_duc_location: 1.", "natural_language": { "trigger": "When Person Duc [person.duc] exits the area defined by Zone JCB [zone.jcb].", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "Sends a text notification with the message 'Duc has left work.', turns on the Duc travel monitor [input_boolean.duc_travel_monitor], and runs a status announcement script [script.status_annc] which uses the current state of the Room audio sensor [sensor.room_audio] to announce the status, interrupting any current call and announcing Duc's location." }, "human_like": "Notifies you when Duc leaves work and starts monitoring his travel status.", "complexity": "low" } }, { "id": "Shion Home Notification", "result": { "structured": "TRIGGER: When Person Shion [person.shion] arrives home. CONDITIONS: Shion school calendar [calendar.shion_school] is on AND School event sensor [sensor.school_event] is Home School. ACTIONS: Execute Text notify script [script.text_notify] with data who: duc, title: '*Notification*', message: Shion is home from school.", "natural_language": { "trigger": "When Person Shion [person.shion] arrives home.", "conditions": "The Shion school calendar [calendar.shion_school] must show an event is active (on), and the School event sensor [sensor.school_event] must have the value 'Home School'.", "action": "Sends a text notification to 'duc' with the title '*Notification*' and the message 'Shion is home from school.' by running the Text notify script [script.text_notify]." }, "human_like": "Sends a notification when Shion arrives home from school, but only if the school calendar and event sensor confirm it's a school-related return.", "complexity": "medium" } }, { "id": "night light on", "result": { "structured": "TRIGGER: At 23:00:00. CONDITIONS: Home mode selector [input_select.home_mode] is 'Home'. ACTIONS: Turn on NTL1 light [light.ntl_1] with brightness set to 40.", "natural_language": { "trigger": "Every day at 11:00 PM.", "conditions": "The Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "Turns on the NTL1 light [light.ntl_1] to a low brightness level of 40." }, "human_like": "Turns on a night light at 11 PM, but only when the home mode is set to 'Home'.", "complexity": "low" } }, { "id": "night light off", "result": { "structured": "TRIGGER: When Period of the day sensor [sensor.period_of_the_day] changes to dawnlight. CONDITIONS: Home mode selector [input_select.home_mode] is Home AND NTL1 light [light.ntl_1] is NOT off. ACTIONS: Execute script Returntonormal script [script.returntonormal] with data entity: light.ntl_1.", "natural_language": { "trigger": "When the Period of the day sensor [sensor.period_of_the_day] changes its state to 'dawnlight'.", "conditions": "The Home mode selector [input_select.home_mode] must be set to 'Home', and the NTL1 light [light.ntl_1] must not be in the 'off' state.", "action": "Runs the Returntonormal script [script.returntonormal], targeting the NTL1 light [light.ntl_1]." }, "human_like": "Turns off the night light at dawn when the home is in 'Home' mode and the light is currently on.", "complexity": "low" } }, { "id": "set school pickup time", "result": { "structured": "TRIGGER: When Shion school calendar [calendar.shion_school] changes from off to on. CONDITIONS: None. ACTIONS: Set the time for School day end reminder datetime [input_datetime.school_day_end_reminder] to 12:45 if the calendar event description is 'early-release', otherwise set it to 16:30.", "natural_language": { "trigger": "When an event on the Shion school calendar [calendar.shion_school] starts, meaning its state changes from off to on.", "conditions": "There are no additional conditions that must be met for the action to run.", "action": "Sets the time for the School day end reminder datetime [input_datetime.school_day_end_reminder]. If the calendar event's description is 'early-release', the time is set to 12:45. Otherwise, it is set to 16:30." }, "human_like": "Updates the school pickup reminder time based on whether the school day is a normal day or an early-release day.", "complexity": "medium" } }, { "id": "school time notification", "result": { "structured": "TRIGGER: When the time is 07:19:00. CONDITIONS: Desktop status [binary_sensor.desktop_status] is on AND School today [input_boolean.school_today] is on. ACTIONS: Execute the script Text notify image script [script.text_notify_image] with data specifying the recipient as 'desktop', title as 'School Time', message as 'Time for Shion to go to school.', and image URL as 'http://homeassistant.local:8123/local/img/misc/school-bell.png'.", "natural_language": { "trigger": "At exactly 7:19 AM.", "conditions": "If the Desktop status [binary_sensor.desktop_status] indicates the desktop is on, and the School today [input_boolean.school_today] toggle is set to on.", "action": "Sends a notification with an image to the desktop using the Text notify image script [script.text_notify_image]. The notification has the title 'School Time', the message 'Time for Shion to go to school.', and displays a school bell image." }, "human_like": "Sends a morning school reminder notification to the desktop when it's a school day.", "complexity": "low" } }, { "id": "Vehicles Arriving Notification", "result": { "structured": "TRIGGER: When Units arriving sensor [sensor.units_arriving] changes state to 'on'. CONDITIONS: Units arriving sensor [sensor.units_arriving] has a state of 'unknown'. ACTIONS: Execute script Text notify script [script.text_notify] with data: who='discord_eta' and a templated message containing a date calculation and the description attribute of Units arriving sensor [sensor.units_arriving].", "natural_language": { "trigger": "When the Units arriving sensor [sensor.units_arriving] changes its state to 'on'.", "conditions": "The automation only proceeds if the Units arriving sensor [sensor.units_arriving] is currently in an 'unknown' state.", "action": "Sends a Discord notification via the Text notify script [script.text_notify]. The message includes a calculated future date, today's date, and a list of containers arriving on that future date, pulling the specific details from the description attribute of the Units arriving sensor [sensor.units_arriving]." }, "human_like": "Sends a Discord notification with a list of arriving containers when a specific sensor is triggered, but only if the sensor's status is currently unknown.", "complexity": "medium" } }, { "id": "Vehicle Delivery Notifications", "result": { "structured": "TRIGGER: When Delivery in 2 weeks sensor [sensor.deliveryin2week] changes state. CONDITIONS: (Delivery in 2 weeks sensor [sensor.deliveryin2week] state is 'unknown') AND (Delivery in 2 weeks sensor [sensor.deliveryin2week] state, after trimming whitespace, is an empty string). ACTIONS: Execute Email notify script [script.email_notify] with data: recipient 'jcb', title 'Vehicle Delivery Notification: ETA [date 11 days from now]', and a message body that includes the current date and a list of vehicles arriving in about 10 days if the sensor state is not empty.", "natural_language": { "trigger": "When the state of the Delivery in 2 weeks sensor [sensor.deliveryin2week] changes.", "conditions": "If the sensor's state is 'unknown' and, after removing any surrounding spaces, the state is an empty string.", "action": "Sends an email notification to 'jcb' with a title indicating a vehicle delivery ETA 11 days from now. The message includes today's date and, if the sensor contains data, a list of vehicle units arriving in approximately 10 days." }, "human_like": "Sends an email alert about upcoming vehicle deliveries when the delivery sensor data is found to be empty.", "complexity": "medium" } }, { "id": "Holiday Notification", "result": { "structured": "TRIGGER: When Holiday sensor [sensor.holiday] changes state. CONDITIONS: (Holiday sensor [sensor.holiday] state is 'unknown') AND (Holiday sensor [sensor.holiday] state trimmed of whitespace is 'none'). ACTIONS: Execute Text notify script [script.text_notify] with data: who='duc', title set to the state of Holiday sensor [sensor.holiday], message='Today is ' plus the state of Holiday sensor [sensor.holiday].", "natural_language": { "trigger": "Whenever the Holiday sensor [sensor.holiday] changes its state.", "conditions": "The automation runs only if the Holiday sensor [sensor.holiday] reports a state of 'unknown' and, after removing any surrounding spaces, its state is exactly 'none'.", "action": "Sends a text notification using the Text notify script [script.text_notify] to 'duc', with the title and message both based on the current state of the Holiday sensor [sensor.holiday]." }, "human_like": "Sends a notification when the holiday sensor reports an unknown or 'none' state, informing the user about today's holiday status.", "complexity": "low" } }, { "id": "Payday Notification", "result": { "structured": "TRIGGER: When Payday binary sensor [binary_sensor.payday] turns on. CONDITIONS: None. ACTIONS: Execute script Text notify script [script.text_notify] with data: who=viber, title=Payday, message=a random selection from a predefined list of payday notifications.", "natural_language": { "trigger": "When the Payday binary sensor [binary_sensor.payday] changes its state to on.", "conditions": "There are no conditions that must be met.", "action": "Run the Text notify script [script.text_notify] to send a Viber notification titled 'Payday' with a randomly chosen message from a list of payday announcements." }, "human_like": "Sends a fun, random payday notification via Viber when the payday sensor is triggered.", "complexity": "low" } }, { "id": "Backup HA Notifications", "result": { "structured": "TRIGGER: When Samba backup sensor [sensor.samba_backup] changes state. CONDITIONS: Samba backup sensor [sensor.samba_backup] is NOT in the IDLE state. ACTIONS: Run script Text notify script [script.text_notify] with parameters who: duc, title: '*Information*', message: 'Samba backup .' AND log an entry to the logbook with name 'Samba Backup' and message ''.", "natural_language": { "trigger": "Whenever the Samba backup sensor [sensor.samba_backup] changes its state.", "conditions": "The automation only proceeds if the Samba backup sensor [sensor.samba_backup] is not in the 'IDLE' state.", "action": "It sends a text notification to 'duc' with a title '*Information*' and a message containing the current backup status in lowercase. It also records the same status in the Home Assistant logbook under the name 'Samba Backup'." }, "human_like": "Sends a notification and logs the status whenever the Samba backup is active (not idle).", "complexity": "low" } }, { "id": "VJ SSL Certificate Expiry Notification", "result": { "structured": "TRIGGER: When VJ SSL cert expiry sensor [sensor.vj_ssl_cert_expiry] reports a value below 3. CONDITIONS: None. ACTIONS: Execute Email notify script [script.email_notify] with data: recipient 'duc', title containing the certificate expiry days and the first DNS name from VJ cert SSLmate sensor [sensor.vj_cert_sslmate], and a message containing the issuer name, current date, certificate common name, expiry days, and a renewal link.", "natural_language": { "trigger": "When the VJ SSL cert expiry sensor [sensor.vj_ssl_cert_expiry] indicates that the SSL certificate has fewer than 3 days remaining until expiry.", "conditions": "There are no additional conditions that must be met.", "action": "Sends an email notification to 'duc' using the Email notify script [script.email_notify]. The email's subject includes the number of days until expiry and the certificate's primary domain name. The body of the email contains the issuer's name, today's date, a reminder of the imminent expiry, and a link to the issuer's website for renewal." }, "human_like": "Sends an email alert when the SSL certificate is about to expire in less than three days.", "complexity": "low" } }, { "id": "HA SSL Certificate Expiry Notification", "result": { "structured": "TRIGGER: When HA SSL cert expiry sensor [sensor.ha_ssl_cert_expiry] reports a value below 3. CONDITIONS: None. ACTIONS: Execute Email notify script [script.email_notify] with data: recipient 'duc', title 'Certificate Expiring in {{ states(''sensor.ha_ssl_cert_expiry'') }} Days: {{cn}}', and a formatted HTML message. The variable 'cn' is derived from HA SSL cert CN sensor [sensor.ha_ssl_cert_cn] by extracting a domain-like pattern.", "natural_language": { "trigger": "The automation triggers when the HA SSL cert expiry sensor [sensor.ha_ssl_cert_expiry] indicates that the certificate will expire in less than 3 days.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Sends an email notification to 'duc' using the Email notify script [script.email_notify]. The email's subject includes the number of days until expiry and the certificate's common name, and the body contains the current date and a warning message about the impending expiration." }, "human_like": "Sends an email alert when the Home Assistant SSL certificate is about to expire in less than three days.", "complexity": "low" } }, { "id": "Mqtt SSL Certificate Expiry Notification", "result": { "structured": "TRIGGER: When MQTT SSL cert expiry sensor [sensor.mqtt_ssl_cert_expiry] is below 3. CONDITIONS: None. ACTIONS: Run script Email notify script [script.email_notify] with data: recipient 'duc', title 'Certificate Expiring in {{ states('sensor.mqtt_ssl_cert_expiry') }} Days: {{ cn }}', and message containing the current date and a notification that the certificate with common name {{cn}} will expire in {{ states('sensor.mqtt_ssl_cert_expiry') }} days.", "natural_language": { "trigger": "When the MQTT SSL cert expiry sensor [sensor.mqtt_ssl_cert_expiry] reports a value less than 3 days.", "conditions": "There are no additional conditions that must be met.", "action": "Sends an email notification to 'duc' using the Email notify script [script.email_notify]. The email's subject includes the number of days until expiry and the certificate's common name, and the body contains the current date and a message stating the certificate will expire in the reported number of days." }, "human_like": "Sends an email alert when the MQTT SSL certificate is about to expire in less than 3 days.", "complexity": "low" } }, { "id": "Earthquake Alert", "result": { "structured": "TRIGGER: When Earthquake alert sensor [sensor.earthquake_alert] changes state. CONDITIONS: (Earthquake alert sensor [sensor.earthquake_alert] state is 'unknown') AND (Earthquake alert sensor [sensor.earthquake_alert] state trimmed is empty). ACTIONS: Send a notification to Earthquake log notification [notify.earthquake_log] containing the earthquake's timestamp, location, magnitude, and intensity. THEN, IF the magnitude attribute of Earthquake alert sensor [sensor.earthquake_alert] is greater than or equal to 4, run the Update earthquake daily count script [script.update_earthquake_daily_count] AND send a text notification via Text notify script [script.text_notify] to 'duc' with a title and message containing the earthquake time, location, and magnitude.", "natural_language": { "trigger": "Whenever the state of the Earthquake alert sensor [sensor.earthquake_alert] changes.", "conditions": "The automation only proceeds if the Earthquake alert sensor [sensor.earthquake_alert] reports a state of 'unknown', and if, after removing any whitespace, the state is an empty string.", "action": "First, it sends a detailed log entry to the Earthquake log notification [notify.earthquake_log], including the earthquake's time, location, magnitude, and intensity. Then, if the earthquake's magnitude is 4.0 or higher, it runs the Update earthquake daily count script [script.update_earthquake_daily_count] and sends a text alert via the Text notify script [script.text_notify] to a recipient named 'duc', summarizing the event." }, "human_like": "Logs all earthquake alerts and sends a personal text notification for significant earthquakes with a magnitude of 4.0 or higher.", "complexity": "medium" } }, { "id": "Earthquake Status Notification", "result": { "structured": "TRIGGER: When SeismoM5p state sensor [sensor.seismoM5p_state] changes from LISTENING to EARTHQUAKE OR When SeismoM5p state sensor [sensor.seismoM5p_state] changes from unavailable to LISTENING OR When SeismoM5p state sensor [sensor.seismoM5p_state] changes from CALIBRATION to LISTENING OR When SeismoM5p state sensor [sensor.seismoM5p_state] changes to unavailable OR When SeismoM5p PGA sensor [sensor.seismom5p_pga] remains below 0.1 for 60 seconds. CONDITIONS: None. ACTIONS: If the trigger is the status change (unavailable to LISTENING, CALIBRATION to LISTENING, or to unavailable), then run Text notify script [script.text_notify] with a message stating the current state. If the trigger is SeismoM5p PGA sensor [sensor.seismom5p_pga] below 0.1 for 60 seconds, then run Text notify script [script.text_notify] with a message 'Seismom sensors are offline'. For any other trigger (specifically from LISTENING to EARTHQUAKE), run Text notify script [script.text_notify] with a message 'Earthquake Happening at Home'.", "natural_language": { "trigger": "The automation triggers in several scenarios: when the SeismoM5p state sensor [sensor.seismoM5p_state] changes from LISTENING to EARTHQUAKE; when it changes from unavailable to LISTENING; when it changes from CALIBRATION to LISTENING; when it changes to unavailable; or when the SeismoM5p PGA sensor [sensor.seismom5p_pga] stays below 0.1 for 60 seconds.", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "Depending on which trigger fired, a different notification is sent. If the trigger was a status change (to/from LISTENING or to unavailable), a text notification is sent stating the current state of the sensor. If the trigger was the PGA sensor staying low for a minute, a text notification is sent stating the sensors are offline. For the primary trigger (state changing to EARTHQUAKE), a text notification is sent with the message 'Earthquake Happening at Home'." }, "human_like": "Sends different text notifications based on the status of the earthquake sensor, including alerts for earthquakes, sensor status changes, and sensor offline conditions.", "complexity": "medium" } }, { "id": "Home Air Quality Warnings", "result": { "structured": "TRIGGER: When Ikea PM25 sensor [sensor.ikea_pm25] remains above 999 for 61 seconds OR When Carbon monoxide sensor [sensor.carbon_monoxide] remains above 59 for 61 seconds OR When Carbon dioxide sensor [sensor.carbon_dioxide] remains above 2000 for 61 seconds. CONDITIONS: None. ACTIONS: Execute script Text notify script [script.text_notify] with data to notify 'amber' and 'desktop' with a custom warning message, and log an entry in the logbook.", "natural_language": { "trigger": "When the Ikea PM25 sensor [sensor.ikea_pm25] remains above 999 for at least 61 seconds, or when the Carbon monoxide sensor [sensor.carbon_monoxide] remains above 59 for at least 61 seconds, or when the Carbon dioxide sensor [sensor.carbon_dioxide] remains above 2000 for at least 61 seconds.", "conditions": "There are no conditions that must be met after the trigger occurs.", "action": "Sends a text notification to a recipient named 'amber' and to a desktop device with a custom warning message about the specific sensor and its reading, and also records a warning entry in the home automation logbook." }, "human_like": "Sends air quality alerts and logs a warning when PM2.5, carbon monoxide, or carbon dioxide levels remain dangerously high for over a minute.", "complexity": "medium" } }, { "id": "Central Night Cooling Notification", "result": { "structured": "TRIGGER: When Central night cooling [binary_sensor.central_night_cooling] turns on. CONDITIONS: Home mode selector [input_select.home_mode] is in state 'Home'. ACTIONS: Execute script Text notify script [script.text_notify] with data: who='duc', title='Night Cooling possible', message='Open Windows to cool down the rooms'.", "natural_language": { "trigger": "When the Central night cooling [binary_sensor.central_night_cooling] sensor indicates that night cooling is possible by turning on.", "conditions": "The Home mode selector [input_select.home_mode] must be set to 'Home'.", "action": "Sends a text notification to 'duc' with the title 'Night Cooling possible' and the message 'Open Windows to cool down the rooms' using the Text notify script [script.text_notify]." }, "human_like": "Sends a notification to open windows for night cooling when conditions are right and the home is in 'Home' mode.", "complexity": "low" } }, { "id": "Washing Machine Water Detection Notification", "result": { "structured": "TRIGGER: When Washer water leak [binary_sensor.washer_water_leak] changes to on. CONDITIONS: None. ACTIONS: Execute script Text notify script [script.text_notify] with data for recipient 'duc', title 'Water Leak Detected', and message 'Water Detected around the washing machine area'. Execute script Text notify script [script.text_notify] with data for recipient 'viber', title 'Water Leak Detected', and message 'Water Detected around the washing machine area'. Execute script Email notify script [script.email_notify] with data for recipient 'duc', title 'Water Leak Detected', and a message containing the current date and a warning about a possible water leak requiring action.", "natural_language": { "trigger": "When the Washer water leak [binary_sensor.washer_water_leak] sensor detects water and changes its state to 'on'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Sends a text notification to 'duc' and 'viber' with the title 'Water Leak Detected' and a message about water being detected around the washing machine. It also sends an email to 'duc' with the same title, the current date, and a more detailed message urging prompt action." }, "human_like": "Sends text and email alerts when a water leak is detected near the washing machine.", "complexity": "low" } }, { "id": "Security Report", "result": { "structured": "TRIGGER: At 21:01:00 daily. CONDITIONS: None. ACTIONS: Execute Speech engine script [script.speech_engine] with data: who = the state of sensor.room_presence, message = include ../tpl/speech/security_report.yaml, voice = the state of Jarvis voice selector [input_select.jarvis_voice].", "natural_language": { "trigger": "Every day at 9:01 PM.", "conditions": "There are no conditions for this automation.", "action": "Runs the Speech engine script [script.speech_engine]. The script will be provided with data: the 'who' parameter is set to the current state of the Room presence sensor [sensor.room_presence], the 'message' parameter is set to include the content from the file '../tpl/speech/security_report.yaml', and the 'voice' parameter is set to the current selection of the Jarvis voice selector [input_select.jarvis_voice]." }, "human_like": "Delivers a daily security report via speech at 9:01 PM, using the current room presence and selected voice.", "complexity": "low" } }, { "id": "Notify Chore Task Due", "result": { "structured": "TRIGGER: When the time is 16:57:00. CONDITIONS: None. ACTIONS: For each entity in the group chore_tasks [group.chore_tasks], calculate the number of days since the task was last done (last_done_days) and the task's cycle_days and warning_before attributes. If last_done_days is greater than or equal to (cycle_days minus warn_before_days), then run the Text notify script [script.text_notify] with a notification title containing the task's friendly_name and a message stating 'Chore last done X days ago.'", "natural_language": { "trigger": "The automation runs daily at 4:57 PM.", "conditions": "There are no conditions that must be met before the actions are performed.", "action": "For each chore task in the group chore_tasks [group.chore_tasks], the automation calculates how many days have passed since the task was last completed. If this number is greater than or equal to the task's cycle length minus its warning period, it sends a text notification via the Text notify script [script.text_notify]. The notification includes the task's name and the number of days since it was last done." }, "human_like": "Sends a daily reminder for any household chore that is due soon, based on its scheduled cycle and a warning period.", "complexity": "medium" } }, { "id": "Toggle Balcony Light", "result": { "structured": "TRIGGER: When LR window button [binary_sensor.lr_window_button] turns on. CONDITIONS: None. ACTIONS: Toggle Balcony light switch [switch.balcony_light].", "natural_language": { "trigger": "When the LR window button [binary_sensor.lr_window_button] is pressed and turns on.", "conditions": "There are no conditions.", "action": "Toggles the state of the Balcony light switch [switch.balcony_light], turning it on if it's off, or off if it's on." }, "human_like": "Turns the balcony light on or off when the living room window button is pressed.", "complexity": "low" } }, { "id": "Charge Balcony Camera", "result": { "structured": "TRIGGER: When Balcony battery percentage sensor [sensor.balcony_battery_percentage] is below 25 OR when Balcony battery percentage sensor [sensor.balcony_battery_percentage] is above 95. CONDITIONS: None. ACTIONS: If Balcony battery percentage sensor [sensor.balcony_battery_percentage] is below 25, then turn on USB relay adapter 1 relay switch [switch.usb_relay_adapter1_relay] and run Text notify script [script.text_notify] with title 'Balcony Cam Batt Low' and message 'Balcony camera battery is currently charging.' sent to 'duc'. Otherwise, if Balcony battery percentage sensor [sensor.balcony_battery_percentage] is above 95, then turn off USB relay adapter 1 relay switch [switch.usb_relay_adapter1_relay] and run Text notify script [script.text_notify] with title 'Balcony Cam Batt Charged' and message 'Balcony camera battery has completed charging.' sent to 'duc'.", "natural_language": { "trigger": "When the Balcony battery percentage sensor [sensor.balcony_battery_percentage] reports a value below 25% or above 95%.", "conditions": "There are no conditions that must be met.", "action": "If the battery percentage is below 25%, the automation turns on the USB relay adapter 1 relay switch [switch.usb_relay_adapter1_relay] to start charging and sends a text notification to 'duc' with the title 'Balcony Cam Batt Low' and the message 'Balcony camera battery is currently charging.' If the battery percentage is above 95%, the automation turns off the USB relay adapter 1 relay switch [switch.usb_relay_adapter1_relay] to stop charging and sends a text notification to 'duc' with the title 'Balcony Cam Batt Charged' and the message 'Balcony camera battery has completed charging.'" }, "human_like": "Automatically starts charging the balcony camera when its battery is low and stops charging when it's full, sending notifications about the charging status.", "complexity": "medium" } }, { "id": "Capture Image on Trigger, Send Mobile Notification with Actions, Snooze or", "result": { "structured": "TRIGGER: When Balcony event image [image.balcony_event_image] changes state OR When a mobile app notification action event occurs with action SNOOZE OR When a mobile app notification action event occurs with action ALARM. CONDITIONS: (The last_changed timestamp of Balcony event image [image.balcony_event_image] equals its last_updated timestamp) AND (Home mode selector [input_select.home_mode] is NOT 'Home'). ACTIONS: If the trigger is sensor, then wait 3 seconds and send a mobile notification via Mobile app ID notification [notify.mobile_app_id] with the message 'Motion detected - Balcony', including the image from Balcony event image [image.balcony_event_image] and two action buttons: 'Alarm' (action ALARM) and 'Snooze' (action SNOOZE). If the trigger is snooze, then call the eufy_security.snooze service on Balcony Camera [camera.balcony] with snooze_time: 10 minutes, snooze_chime: false, snooze_motion: true, snooze_homebase: false. If the trigger is alarm, then call the eufy_security.trigger_camera_alarm_with_duration service on Balcony Camera [camera.balcony] with duration: 1 minute.", "natural_language": { "trigger": "This automation is triggered in three ways: when the Balcony event image [image.balcony_event_image] updates, when you press the 'Snooze' button on a mobile notification, or when you press the 'Alarm' button on a mobile notification.", "conditions": "Two conditions must be met for the automation to run. First, the image update must be a genuine state change, not just a refresh. Second, the home must not be in 'Home' mode, as indicated by the Home mode selector [input_select.home_mode].", "action": "Depending on what triggered the automation, different actions occur. If it was triggered by a new image, a notification is sent to your mobile device after a 3-second delay. This notification shows the image and provides 'Alarm' and 'Snooze' buttons. If you press 'Snooze', the Balcony Camera [camera.balcony] will snooze motion alerts for 10 minutes. If you press 'Alarm', the camera's alarm will sound for 1 minute." }, "human_like": "Sends a mobile alert with a snapshot when motion is detected on the balcony, and lets you snooze alerts or trigger an alarm directly from the notification.", "complexity": "medium" } }, { "id": "sentry_mode_enabled", "result": { "structured": "TRIGGER: When Sentry mode [input_boolean.sentry_mode] changes from off to on. CONDITIONS: None. ACTIONS: Choose based on condition: IF Genkan door contact [binary_sensor.genkan_door_contact] is open (on) THEN turn off Sentry mode [input_boolean.sentry_mode], turn on Lockdown issue [input_boolean.lockdown_issue], run Text notify script [script.text_notify] with a random message to 'duc', and run Sentry mode status script [script.sentry_mode_status] with modus 'pending'. OTHERWISE (default) run Speech engine script [script.speech_engine] with voice from Jarvis voice selector [input_select.jarvis_voice] and a random message to the room from Room audio sensor [sensor.room_audio], run Text notify script [script.text_notify] with title 'Security Armed' and message 'Security System has been armed.' to 'duc', turn on Security cameras [input_boolean.security_cameras], run Reset Front Door Motion Count script [script.reset_front_door_motion_count], and run Sentry mode status script [script.sentry_mode_status] with modus determined by: if Vacation mode [input_boolean.vacation_mode] is on then 'armed_vacation', else if Nightly lockdown automation [automation.nightly_lockdown] was triggered within the last 2 seconds then 'armed_night', else 'armed_away'.", "natural_language": { "trigger": "When the Sentry mode [input_boolean.sentry_mode] is switched from off to on.", "conditions": "There are no global conditions; however, the actions are split into two paths based on the state of the Genkan door contact [binary_sensor.genkan_door_contact].", "action": "If the Genkan door contact [binary_sensor.genkan_door_contact] is open, the automation will deactivate Sentry mode, flag a lockdown issue, send a random text notification to 'duc' about the open door, and set the sentry status to 'pending'. Otherwise, if the door is closed, it will announce a random security activation message via speech in the appropriate room, send a text notification to 'duc' that the security system is armed, turn on the security cameras, reset the front door motion count, and set the sentry status based on whether vacation mode is active or if the nightly lockdown was recently triggered." }, "human_like": "Activates security announcements and actions when sentry mode is turned on, but cancels and alerts if the front door is open.", "complexity": "medium" } }, { "id": "nightly_lockdown", "result": { "structured": "TRIGGER: When the time is 23:00:00. CONDITIONS: Person Duc [person.duc] is home AND Person Eri [person.eri] is home AND Guest mode [input_boolean.guest_mode] is off AND Sentry mode [input_boolean.sentry_mode] is off. ACTIONS: Turn on Sentry mode [input_boolean.sentry_mode].", "natural_language": { "trigger": "At 11:00 PM every night.", "conditions": "Both Person Duc [person.duc] and Person Eri [person.eri] are at home, Guest mode [input_boolean.guest_mode] is disabled, and Sentry mode [input_boolean.sentry_mode] is currently off.", "action": "Activate Sentry mode by turning on the Sentry mode [input_boolean.sentry_mode] switch." }, "human_like": "Automatically activates the home's sentry mode at 11 PM if both residents are home and guest mode is off.", "complexity": "low" } }, { "id": "motion_detected_front_door", "result": { "structured": "TRIGGER: When Genkan door contact [binary_sensor.genkan_door_contact] changes from closed (off) to open (on). CONDITIONS: Sentry mode [input_boolean.sentry_mode] is on. ACTIONS: Wait 2 seconds. Then, IF Genkan moving target [binary_sensor.genkan_moving_target] is on, THEN: Publish an MQTT message to topic 'house/alerts/front_door_motion/away_count' with a payload equal to the integer value of front door motion away count sensor [sensor.front_door_motion_away_count] plus 1, and retain the message. THEN: Execute script status announcement script [script.status_annc] with parameters: who set to the state of room presence sensor [sensor.room_presence], call_interuption set to 1, call_snark_door_motion set to 1, and a randomly selected speech message announcing detection at the front door. THEN: Execute script sentry mode status script [script.sentry_mode_status] with parameter modus set to 'triggered'. After the choose block, wait 2 minutes.", "natural_language": { "trigger": "When the Genkan door contact [binary_sensor.genkan_door_contact] opens.", "conditions": "The Sentry mode [input_boolean.sentry_mode] must be active (on).", "action": "After a 2-second delay, if the Genkan moving target [binary_sensor.genkan_moving_target] detects motion, the automation will: increment a counter (front door motion away count sensor [sensor.front_door_motion_away_count]) via MQTT, announce the detection using a script with a random message, and update the sentry mode status to 'triggered'. Regardless of the motion check, it will then wait for 2 minutes before the automation can be triggered again." }, "human_like": "When sentry mode is active and the front door opens, it checks for motion and, if detected, announces a visitor and logs the event.", "complexity": "medium" } }, { "id": "security_breach", "result": { "structured": "TRIGGER: When Genkan door contact [binary_sensor.genkan_door_contact] OR Computer room window [binary_sensor.computerroom_window] OR Living room window [binary_sensor.livingroom_window] changes to open (on). CONDITIONS: Sentry mode [input_boolean.sentry_mode] is on. ACTIONS: Execute script Alexa alert script [script.alexa_alert] with a message indicating the specific opened sensor's friendly name, execute script Text alert script [script.text_alert] with a message indicating the specific opened sensor's friendly name, turn on Security issue [input_boolean.security_issue], and execute script Sentry mode status script [script.sentry_mode_status] with mode 'triggered'.", "natural_language": { "trigger": "When the Genkan door contact [binary_sensor.genkan_door_contact], the Computer room window [binary_sensor.computerroom_window], or the Living room window [binary_sensor.livingroom_window] is opened.", "conditions": "Only if Sentry mode [input_boolean.sentry_mode] is currently active (turned on).", "action": "Sends an alert via Alexa using the Alexa alert script [script.alexa_alert], sends a text alert using the Text alert script [script.text_alert] to a contact named 'duc', turns on the Security issue [input_boolean.security_issue] flag, and updates the system status by running the Sentry mode status script [script.sentry_mode_status] to indicate a breach has been triggered." }, "human_like": "Triggers a security alert and sends notifications when a door or window is opened while the security system is armed.", "complexity": "medium" } }, { "id": "sentry_mode_disabled", "result": { "structured": "TRIGGER: When Sentry mode [input_boolean.sentry_mode] changes from on to off. CONDITIONS: None. ACTIONS: Choose one of two sequences based on a condition. If Home mode selector [input_select.home_mode] is 'Home' OR Home mode selector [input_select.home_mode] is 'Returning' OR Guest mode [input_boolean.guest_mode] is on, then execute: 1. Run Speech engine script [script.speech_engine] with a random message announcing deactivation, using Room audio sensor [sensor.room_audio] for the speaker and Jarvis voice selector [input_select.jarvis_voice] for the voice. 2. Run Text notify script [script.text_notify] to send a 'Welcome Home' message to 'duc'. 3. Turn off Security alarm [input_boolean.security_alarm]. 4. Run Sentry mode status script [script.sentry_mode_status] with modus 'disarmed'. Otherwise (default), execute: 1. Turn off Sentry mode [input_boolean.sentry_mode]. 2. Run Text notify script [script.text_notify] to send a 'Potential Security Issue' message to 'duc'. 3. Run Sentry mode status script [script.sentry_mode_status] with modus 'pending'.", "natural_language": { "trigger": "When the Sentry mode [input_boolean.sentry_mode] is turned off.", "conditions": "There are no separate conditions; the logic is embedded within the action's choose block.", "action": "The automation checks if the home is in a safe state: either the Home mode selector [input_select.home_mode] is set to 'Home' or 'Returning', or Guest mode [input_boolean.guest_mode] is active. If so, it announces the deactivation via a speech engine using a random message, sends a welcome home text notification to 'duc', turns off the Security alarm [input_boolean.security_alarm], and updates the sentry mode status to 'disarmed'. If the home is not in a safe state, it turns off Sentry mode [input_boolean.sentry_mode], sends a warning text notification about a potential security issue, and sets the sentry mode status to 'pending'." }, "human_like": "Announces and handles the disabling of sentry mode, providing a welcome home message if the home is in a safe state, or a security warning otherwise.", "complexity": "medium" } }, { "id": "morning_standby", "result": { "structured": "TRIGGER: At 04:10:00. CONDITIONS: (Home mode selector [input_select.home_mode] is 'Home') OR (Guest mode [input_boolean.guest_mode] is on). ACTIONS: Execute Standby script [script.standby].", "natural_language": { "trigger": "The automation is triggered daily at 4:10 AM.", "conditions": "It runs only if the Home mode selector [input_select.home_mode] is set to 'Home' or if the Guest mode [input_boolean.guest_mode] is turned on.", "action": "It runs the Standby script [script.standby]." }, "human_like": "Runs the standby routine early in the morning, but only when the home is in 'Home' mode or when guest mode is active.", "complexity": "low" } }, { "id": "enable_vacation_mode", "result": { "structured": "TRIGGER: When Duc ETT home sensor [sensor.duc_ett_home] is above 180 OR when Eri ETT home sensor [sensor.eri_ett_home] is above 180. CONDITIONS: Duc ETT home sensor [sensor.duc_ett_home] is above 180 AND Eri ETT home sensor [sensor.eri_ett_home] is above 180. ACTIONS: Turn on Vacation mode [input_boolean.vacation_mode].", "natural_language": { "trigger": "When either the Duc ETT home sensor [sensor.duc_ett_home] or the Eri ETT home sensor [sensor.eri_ett_home] reports a value greater than 180.", "conditions": "Both the Duc ETT home sensor [sensor.duc_ett_home] and the Eri ETT home sensor [sensor.eri_ett_home] must be above 180.", "action": "Activates vacation mode by turning on the Vacation mode [input_boolean.vacation_mode]." }, "human_like": "Turns on vacation mode when both home sensors indicate a high value, suggesting an extended absence.", "complexity": "medium" } }, { "id": "guest_mode_feedback", "result": { "structured": "TRIGGER: When Guest mode [input_boolean.guest_mode] changes from off to on. CONDITIONS: None. ACTIONS: Run Speech engine script [script.speech_engine] with data: who = current state of Room audio sensor [sensor.room_audio], voice = current state of Jarvis voice selector [input_select.jarvis_voice], message = a randomly selected phrase from a predefined list.", "natural_language": { "trigger": "When the Guest mode [input_boolean.guest_mode] is switched from off to on.", "conditions": "There are no conditions for this automation.", "action": "The automation triggers the Speech engine script [script.speech_engine]. It provides the script with the current value of the Room audio sensor [sensor.room_audio] to determine who to speak to, the current voice selection from Jarvis voice selector [input_select.jarvis_voice], and a randomly chosen message from a list of phrases announcing that Guest Mode is enabled." }, "human_like": "Provides an audio announcement when Guest Mode is turned on, using a random greeting phrase.", "complexity": "low" } }, { "id": "security_response_on", "result": { "structured": "TRIGGER: When Security issue [input_boolean.security_issue] changes from off to on AND remains on for 2 minutes. CONDITIONS: None. ACTIONS: Start Security response script [script.security_response] AND start Alarm light flash script [script.alarm_light_flash].", "natural_language": { "trigger": "When the Security issue [input_boolean.security_issue] is turned on and stays on for two minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Activates the security response by starting the Security response script [script.security_response] and the Alarm light flash script [script.alarm_light_flash]." }, "human_like": "Activates the security alarm and flashing lights when a security issue is detected and confirmed for two minutes.", "complexity": "low" } }, { "id": "Weather - Set Daily Maximum Forecasted Temperature", "result": { "structured": "TRIGGER: When the time is 14:00:00. CONDITIONS: None. ACTIONS: Set the value of Weather forecast max temp today [input_number.weather_forecast_max_temp_today] to the value of the 'weather_forecast_max_temp_today' attribute from My weather forecast daily [sensor.my_weather_forecast_daily].", "natural_language": { "trigger": "Every day at 2:00 PM.", "conditions": "There are no conditions that must be met.", "action": "Updates the input number for the daily maximum forecasted temperature by copying the value from the forecast sensor's attribute." }, "human_like": "Updates the daily maximum forecasted temperature at 2 PM each day.", "complexity": "low" } }, { "id": "Forecast Low Near Freezing", "result": { "structured": "TRIGGER: When WBIO overnight low [sensor.wbio_overnight_low] is below 1.6 OR when WBIO current temperature [sensor.wbio_current_temperature] is below 1.6. CONDITIONS: Freeze warning [input_boolean.freeze_warning] is off. ACTIONS: Turn on Freeze warning [input_boolean.freeze_warning].", "natural_language": { "trigger": "When the forecasted overnight low temperature [sensor.wbio_overnight_low] drops below 1.6 degrees, or when the current temperature [sensor.wbio_current_temperature] falls below 1.6 degrees.", "conditions": "The freeze warning [input_boolean.freeze_warning] must currently be off.", "action": "Activates the freeze warning by turning on Freeze warning [input_boolean.freeze_warning]." }, "human_like": "Turns on a freeze warning if either the current temperature or the forecasted overnight low drops below freezing.", "complexity": "low" } }, { "id": "Forecast Low Above Freezing", "result": { "structured": "TRIGGER: When WBIO overnight low [sensor.wbio_overnight_low] rises above 0.5. CONDITIONS: Freeze warning [input_boolean.freeze_warning] is on AND WBIO overnight low [sensor.wbio_overnight_low] is above 1.6. ACTIONS: Turn off Freeze warning [input_boolean.freeze_warning].", "natural_language": { "trigger": "When the forecasted overnight low temperature, WBIO overnight low [sensor.wbio_overnight_low], rises above 0.5 degrees.", "conditions": "The Freeze warning [input_boolean.freeze_warning] must be currently active (on), and the WBIO overnight low [sensor.wbio_overnight_low] must be above 1.6 degrees.", "action": "Deactivates the freeze warning by turning off the Freeze warning [input_boolean.freeze_warning] input boolean." }, "human_like": "Turns off the freeze warning when the forecasted overnight temperature is safely above freezing.", "complexity": "low" } }, { "id": "Rain Detected Home", "result": { "structured": "TRIGGER: When Rainfall today sensor [sensor.rainfall_today] changes from 0.0 to any other value. CONDITIONS: None. ACTIONS: Execute script.text_notify [script.text_notify] with data {who: duc, message: It's currently raining at home.} AND Execute Status announcement script [script.status_annc] with data {who: ai_4, voice: {{ states('input_select.jarvis_voice') }}, call_interuption: 1, speech_message: Rain has been detected at home.}.", "natural_language": { "trigger": "When the Rainfall today sensor [sensor.rainfall_today] detects that rainfall has started, indicated by its value changing from exactly 0.0.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a text notification to 'duc' stating 'It's currently raining at home.' using the Text notify script [script.text_notify], and then makes a voice announcement using the Status announcement script [script.status_annc]. The announcement is directed to 'ai_4', uses the voice selected in Jarvis voice selector [input_select.jarvis_voice], interrupts any ongoing calls, and says 'Rain has been detected at home.'." }, "human_like": "Sends a text and voice notification when rain is first detected at home.", "complexity": "low" } }, { "id": "Status light update (bulbs)", "result": { "structured": "TRIGGER: When Light status sensor [sensor.light_status] changes state. CONDITIONS: None. ACTIONS: Turn off the light entity whose entity_id matches the current state value of Light status sensor [sensor.light_status].", "natural_language": { "trigger": "Whenever the Light status sensor [sensor.light_status] changes its reported state.", "conditions": "There are no conditions that must be met.", "action": "Turns off a specific light bulb. The bulb to be turned off is determined by the current value reported by the Light status sensor [sensor.light_status]; this value is used as the entity_id for the light service call." }, "human_like": "Turns off a specific light bulb based on a status sensor's value.", "complexity": "medium" } }, { "id": "Presence Duc On", "result": { "structured": "TRIGGER: When ID presence sensor [sensor.id_presence] is above 10 OR When Duc Bermuda area sensor [sensor.duc_bermuda_area] state (lowercased) is in the list ['computer', 'shionroom', 'kitchen', 'masterroom', 'living', 'genkan']. CONDITIONS: None. ACTIONS: Turn on Duc Presence [input_boolean.duc_presence].", "natural_language": { "trigger": "When the ID presence sensor [sensor.id_presence] reports a value greater than 10, or when the Duc Bermuda area sensor [sensor.duc_bermuda_area] reports a state that, when converted to lowercase, is one of the following: 'computer', 'shionroom', 'kitchen', 'masterroom', 'living', or 'genkan'.", "conditions": "There are no conditions that must be checked after the trigger fires.", "action": "Sets the Duc Presence [input_boolean.duc_presence] to on, indicating that the person is present." }, "human_like": "Turns on a presence indicator when a person is detected either by a numeric presence sensor or by being in a specific set of rooms.", "complexity": "medium" } }, { "id": "Presence Duc Off", "result": { "structured": "TRIGGER: When ID presence sensor [sensor.id_presence] is below 10 OR When Duc Bermuda area sensor [sensor.duc_bermuda_area] changes to unknown. CONDITIONS: ID presence sensor [sensor.id_presence] equals 0.0 AND Duc Bermuda area sensor [sensor.duc_bermuda_area] is unknown. ACTIONS: Turn off Duc Presence [input_boolean.duc_presence].", "natural_language": { "trigger": "When the ID presence sensor [sensor.id_presence] reports a value below 10, or when the Duc Bermuda area sensor [sensor.duc_bermuda_area] changes its state to unknown.", "conditions": "The ID presence sensor [sensor.id_presence] must be exactly 0.0, and the Duc Bermuda area sensor [sensor.duc_bermuda_area] must be in an unknown state.", "action": "Turns off the Duc Presence [input_boolean.duc_presence] input boolean." }, "human_like": "Turns off the Duc presence indicator when both the presence sensor reads zero and the area sensor is unknown.", "complexity": "medium" } }, { "id": "Presence Eri On", "result": { "structured": "TRIGGER: When IE presence sensor [sensor.ie_presence] is above 10 OR When the value of Eri Bermuda area sensor [sensor.eri_bermuda_area] is 'computer', 'shionroom', 'kitchen', 'masterroom', 'living', or 'genkan'. CONDITIONS: None. ACTIONS: Turn on Eri Presence [input_boolean.eri_presence].", "natural_language": { "trigger": "When the IE presence sensor [sensor.ie_presence] reports a value greater than 10, or when the Eri Bermuda area sensor [sensor.eri_bermuda_area] reports that the location is one of the following: 'computer', 'shionroom', 'kitchen', 'masterroom', 'living', or 'genkan'.", "conditions": "There are no conditions that must be checked after the trigger.", "action": "Turns on the Eri Presence [input_boolean.eri_presence] input boolean." }, "human_like": "Turns on Eri's presence indicator when she is detected in a key area of the home or when a presence sensor reports a high confidence level.", "complexity": "low" } }, { "id": "Presence Eri Off", "result": { "structured": "TRIGGER: When IE presence sensor [sensor.ie_presence] is below 10 OR when Eri Bermuda area sensor [sensor.eri_bermuda_area] changes to unknown. CONDITIONS: (IE presence sensor [sensor.ie_presence] equals 0.0) AND (Eri Bermuda area sensor [sensor.eri_bermuda_area] is unknown). ACTIONS: Turn off Eri Presence [input_boolean.eri_presence].", "natural_language": { "trigger": "When the IE presence sensor [sensor.ie_presence] reports a value below 10, or when the Eri Bermuda area sensor [sensor.eri_bermuda_area] changes its state to unknown.", "conditions": "If the IE presence sensor [sensor.ie_presence] has a numeric value of exactly 0.0, and the Eri Bermuda area sensor [sensor.eri_bermuda_area] is in an unknown state.", "action": "Turns off the Eri Presence [input_boolean.eri_presence] input boolean." }, "human_like": "Turns off the Eri presence indicator when both the IE presence sensor reads zero and the Bermuda area sensor is unknown.", "complexity": "medium" } }, { "id": "Presence Shion On", "result": { "structured": "TRIGGER: When TMS presence sensor [sensor.tms_presence] is above 10 OR When Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] state is 'computer', 'shionroom', 'kitchen', 'masterroom', 'living', or 'genkan'. CONDITIONS: None. ACTIONS: Turn on Shion Presence [input_boolean.shion_presence].", "natural_language": { "trigger": "The automation triggers when the TMS presence sensor [sensor.tms_presence] reports a value greater than 10, or when the Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] indicates that the area is one of the following: 'computer', 'shionroom', 'kitchen', 'masterroom', 'living', or 'genkan'.", "conditions": "There are no conditions that must be met for the action to execute.", "action": "It turns on the Shion Presence [input_boolean.shion_presence] input boolean." }, "human_like": "Marks Shion as present when the presence sensor detects activity or when Shion is located in a key area of the home.", "complexity": "low" } }, { "id": "Presence Shion Off", "result": { "structured": "TRIGGER: When TMS presence sensor [sensor.tms_presence] reports a value below 10 OR When Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] changes to state 'unknown'. CONDITIONS: Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] is in the state 'unknown'. ACTIONS: Turn off Shion Presence [input_boolean.shion_presence].", "natural_language": { "trigger": "When the TMS presence sensor [sensor.tms_presence] detects a value below 10, or when the Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] becomes 'unknown'.", "conditions": "The Shion TMS Bermuda area sensor [sensor.shion_tms_bermuda_area] must be in the 'unknown' state.", "action": "Turns off the Shion Presence [input_boolean.shion_presence] input boolean." }, "human_like": "Turns off Shion's presence status when the TMS presence is low or the Bermuda area sensor is unavailable.", "complexity": "low" } }, { "id": "Presence Sachiko On", "result": { "structured": "TRIGGER: When Sachiko presence sensor [sensor.sachiko_presence] is above 10. CONDITIONS: None. ACTIONS: Turn on Sachiko Presence [input_boolean.sachiko_presence] AND Turn on Toggle guest presence [input_boolean.toggle_guest_presence].", "natural_language": { "trigger": "When the Sachiko presence sensor [sensor.sachiko_presence] reports a value greater than 10.", "conditions": "There are no additional conditions that must be met.", "action": "Turn on both the Sachiko Presence [input_boolean.sachiko_presence] and the Toggle guest presence [input_boolean.toggle_guest_presence] input booleans." }, "human_like": "Turns on presence indicators for Sachiko and guest mode when the Sachiko presence sensor detects a significant value.", "complexity": "low" } }, { "id": "Presence Sachiko Off", "result": { "structured": "TRIGGER: When Sachiko presence sensor [sensor.sachiko_presence] is below 10. CONDITIONS: None. ACTIONS: Turn off Sachiko Presence [input_boolean.sachiko_presence].", "natural_language": { "trigger": "When the Sachiko presence sensor [sensor.sachiko_presence] reports a value below 10.", "conditions": "There are no additional conditions that must be met.", "action": "Turns off the Sachiko Presence [input_boolean.sachiko_presence] input boolean." }, "human_like": "Turns off the 'Sachiko Presence' indicator when her presence sensor value drops below 10.", "complexity": "low" } }, { "id": "Presence Tomokun On", "result": { "structured": "TRIGGER: When Tomokun presence sensor [sensor.tomokun_presence] is above 10. CONDITIONS: None. ACTIONS: Turn on Tomokun Presence [input_boolean.tomokun_presence] AND turn on Toggle guest presence [input_boolean.toggle_guest_presence].", "natural_language": { "trigger": "When the Tomokun presence sensor [sensor.tomokun_presence] reports a value greater than 10.", "conditions": "There are no additional conditions that must be met.", "action": "Turn on both the Tomokun Presence [input_boolean.tomokun_presence] and the Toggle guest presence [input_boolean.toggle_guest_presence] input booleans." }, "human_like": "Turns on presence indicators for Tomokun and guest mode when Tomokun's presence sensor detects a significant signal.", "complexity": "low" } }, { "id": "Presence Tomokun Off", "result": { "structured": "TRIGGER: When Tomokun presence sensor [sensor.tomokun_presence] falls below 10. CONDITIONS: None. ACTIONS: Turn off Tomokun Presence [input_boolean.tomokun_presence].", "natural_language": { "trigger": "When the Tomokun presence sensor [sensor.tomokun_presence] reports a value below 10.", "conditions": "There are no conditions that must be met.", "action": "Turns off the Tomokun Presence [input_boolean.tomokun_presence] input boolean." }, "human_like": "Turns off the Tomokun presence indicator when the presence sensor value is low.", "complexity": "low" } }, { "id": "Enable Guest Mode", "result": { "structured": "TRIGGER: When Guest presence group [group.guest_presence] turns on. CONDITIONS: None. ACTIONS: Turn on Guest mode [input_boolean.guest_mode] AND send a notification via Mobile app ID notification [notify.mobile_app_id] with the title '*Guest Mode Status*' and a message stating the current state of Guest mode [input_boolean.guest_mode].", "natural_language": { "trigger": "When the Guest presence group [group.guest_presence] becomes active (turns on).", "conditions": "There are no conditions that must be met.", "action": "Turn on the Guest mode [input_boolean.guest_mode] and send a notification to the mobile app [notify.mobile_app_id] with the title '*Guest Mode Status*' and a message indicating whether Guest Mode is on or off." }, "human_like": "Activates Guest Mode and sends a notification when guests are detected as present.", "complexity": "low" } }, { "id": "Disable Guest Mode", "result": { "structured": "TRIGGER: When Guest presence group [group.guest_presence] changes to off. CONDITIONS: None. ACTIONS: Turn off Guest mode [input_boolean.guest_mode] AND send a notification to Mobile app ID notification [notify.mobile_app_id] with title '*Guest Mode Status*' and message 'Guest Mode is turned {{ states('input_boolean.guest_mode') }}.'.", "natural_language": { "trigger": "When the Guest presence group [group.guest_presence] changes to an 'off' state.", "conditions": "There are no conditions for this automation.", "action": "Turn off the Guest mode [input_boolean.guest_mode] and send a notification to the Mobile app ID notification [notify.mobile_app_id] with the title '*Guest Mode Status*' and a message reporting the current state of the guest mode." }, "human_like": "Automatically turns off Guest Mode and sends a notification when no guests are detected.", "complexity": "low" } }, { "id": "Monentary Presence Monitor Trigger", "result": { "structured": "TRIGGER: When Genkan moving target [binary_sensor.genkan_moving_target] turns on. CONDITIONS: None. ACTIONS: Wait 4 seconds, then turn on Momentary presence monitor switch [switch.momentary_presence_monitor].", "natural_language": { "trigger": "When the Genkan moving target [binary_sensor.genkan_moving_target] detects motion and changes its state to on.", "conditions": "There are no conditions that must be met.", "action": "After a short delay of 4 seconds, the automation turns on the Momentary presence monitor switch [switch.momentary_presence_monitor]." }, "human_like": "Turns on a monitoring switch a few seconds after motion is detected in the genkan.", "complexity": "low" } }, { "id": "Presence Scan Arrival", "result": { "structured": "TRIGGER: When AIO human sensor entrance moving target [binary_sensor.aio_human_sensor_entrance_moving_target] becomes on. CONDITIONS: Momentary presence monitor switch [switch.momentary_presence_monitor] is off. ACTIONS: Publish MQTT message to topic 'monitor/scan/arrive'.", "natural_language": { "trigger": "When the AIO human sensor entrance moving target [binary_sensor.aio_human_sensor_entrance_moving_target] detects a moving target and turns on.", "conditions": "If the Momentary presence monitor switch [switch.momentary_presence_monitor] is currently switched off.", "action": "Sends an MQTT message to the topic 'monitor/scan/arrive' to signal an arrival scan." }, "human_like": "Signals a presence scan arrival when motion is detected at the entrance, but only if the presence monitor is not already active.", "complexity": "low" } }, { "id": "Presence Scan Departure", "result": { "structured": "TRIGGER: When Genkan door contact [binary_sensor.genkan_door_contact] changes to open (on). CONDITIONS: Momentary presence monitor switch [switch.momentary_presence_monitor] is on. ACTIONS: Wait for 1 minute and 25 seconds, then execute Monitor depart script [script.monitor_depart].", "natural_language": { "trigger": "When the Genkan door contact [binary_sensor.genkan_door_contact] opens.", "conditions": "The Momentary presence monitor switch [switch.momentary_presence_monitor] must be turned on.", "action": "After waiting for 1 minute and 25 seconds, the Monitor depart script [script.monitor_depart] is run." }, "human_like": "Starts a departure monitoring sequence when the entryway door is opened, provided the presence monitor is active.", "complexity": "low" } }, { "id": "Presence Restart Daily", "result": { "structured": "TRIGGER: When the time is 04:01:00. CONDITIONS: None. ACTIONS: Publish an empty payload to the MQTT topic 'monitor/scan/restart'.", "natural_language": { "trigger": "Every day at 4:01 AM.", "conditions": "There are no additional conditions that need to be met.", "action": "Sends a restart command by publishing an empty message to the MQTT topic 'monitor/scan/restart'." }, "human_like": "Sends a daily restart signal at 4:01 AM to a device or service listening on the MQTT network.", "complexity": "low" } }, { "id": "Home Mode - Arriving", "result": { "structured": "TRIGGER: When N people home sensor [sensor.n_people_home] changes state. CONDITIONS: (Vacation mode [input_boolean.vacation_mode] is NOT on) AND (The new integer value of N people home sensor [sensor.n_people_home] is greater than its previous integer value). ACTIONS: Set Home mode selector [input_select.home_mode] to 'Home', run Standby script [script.standby], and set Balcony guard mode select [select.balcony_guard_mode] to 'Home'.", "natural_language": { "trigger": "Whenever the N people home sensor [sensor.n_people_home] reports a change in its value.", "conditions": "If Vacation mode [input_boolean.vacation_mode] is not active, and the number of people at home has increased compared to the previous reading.", "action": "Activates the 'Home' mode by setting the Home mode selector [input_select.home_mode] to 'Home', runs the Standby script [script.standby], and sets the Balcony guard mode select [select.balcony_guard_mode] to 'Home'." }, "human_like": "Switches the house to 'Home' mode and adjusts balcony security when someone arrives home, provided vacation mode is off.", "complexity": "medium" } }, { "id": "Home Mode - Leaving", "result": { "structured": "TRIGGER: When N people home sensor [sensor.n_people_home] remains below 1 for 10 minutes. CONDITIONS: (Vacation mode [input_boolean.vacation_mode] is NOT on) AND (Home mode selector [input_select.home_mode] is Home). ACTIONS: Set Home mode selector [input_select.home_mode] to Away. Run Appliances off script [script.appliances_off]. Run Text notify script [script.text_notify] with parameters who: duc, message: There are {{ states('sensor.n_people_home') }} people at home now., title: *Home Status*. Turn on Sentry mode [input_boolean.sentry_mode]. Set Balcony guard mode select [select.balcony_guard_mode] to Away.", "natural_language": { "trigger": "When the N people home sensor [sensor.n_people_home] indicates that the number of people at home has been below one for at least ten minutes.", "conditions": "If Vacation mode [input_boolean.vacation_mode] is not active, and the Home mode selector [input_select.home_mode] is currently set to 'Home'.", "action": "Changes the home mode to 'Away', runs a script to turn appliances off, sends a text notification to 'duc' reporting the current number of people at home, activates Sentry mode [input_boolean.sentry_mode], and sets the Balcony guard mode select [select.balcony_guard_mode] to 'Away'." }, "human_like": "Automatically switches the home to 'Away' mode and activates security settings when everyone has been away for ten minutes, provided vacation mode is off.", "complexity": "medium" } }, { "id": "Home Mode - Vacation", "result": { "structured": "TRIGGER: When Vacation mode [input_boolean.vacation_mode] changes state. CONDITIONS: None. ACTIONS: Choose one sequence based on conditions: 1. IF Vacation mode [input_boolean.vacation_mode] is on THEN set Home mode selector [input_select.home_mode] to 'Vacation' AND turn on Sentry mode [input_boolean.sentry_mode]. 2. IF Vacation mode [input_boolean.vacation_mode] is off AND N people home sensor [sensor.n_people_home] state is less than 1 THEN set Home mode selector [input_select.home_mode] to 'Away'. 3. IF Vacation mode [input_boolean.vacation_mode] is off AND N people home sensor [sensor.n_people_home] state is greater than or equal to 1 THEN set Home mode selector [input_select.home_mode] to 'Home' AND run Standby script [script.standby].", "natural_language": { "trigger": "Whenever the Vacation mode [input_boolean.vacation_mode] changes its state.", "conditions": "There are no separate conditions; the logic is handled within the action's choose block.", "action": "Depending on the state of Vacation mode and the number of people at home, the automation will perform one of three actions. If Vacation mode is turned on, it sets the home mode to 'Vacation' and activates Sentry mode. If Vacation mode is off and no one is home, it sets the home mode to 'Away'. If Vacation mode is off and at least one person is home, it sets the home mode to 'Home' and runs the Standby script." }, "human_like": "Updates the home mode and activates related features based on whether vacation mode is enabled and if anyone is home.", "complexity": "medium" } }, { "id": "Set tms Tile Location", "result": { "structured": "TRIGGER: When the state of Shion Presence [input_boolean.shion_presence] changes. CONDITIONS: None. ACTIONS: Execute Set device tracker Shion script [script.set_device_tracker_shion].", "natural_language": { "trigger": "Whenever the state of the Shion Presence [input_boolean.shion_presence] changes.", "conditions": "There are no conditions for this automation.", "action": "Runs the script named Set device tracker Shion script [script.set_device_tracker_shion]." }, "human_like": "Updates Shion's device tracker location whenever their presence status changes.", "complexity": "low" } }, { "id": "Set Location Waze", "result": { "structured": "TRIGGER: When sensor.duc_to_work_waze OR sensor.eri_to_work_waze reports a value below 3. CONDITIONS: None. ACTIONS: If the triggering entity's friendly name is 'duc to work waze', then update device tracker for 'duc' to location 'Duc Work'. If the triggering entity's friendly name is 'eri to work waze', then update device tracker for 'eri' to location 'Eri Work'.", "natural_language": { "trigger": "When either the sensor.duc_to_work_waze or sensor.eri_to_work_waze reports a travel time below 3 minutes.", "conditions": "There are no additional conditions that must be met.", "action": "Depending on which sensor triggered, the automation updates a device tracker's location. If the sensor named 'duc to work waze' triggered, it sets the device tracker for 'duc' to the location 'Duc Work'. If the sensor named 'eri to work waze' triggered, it sets the device tracker for 'eri' to the location 'Eri Work'." }, "human_like": "Automatically sets a person's location to their workplace when their Waze travel time drops below 3 minutes.", "complexity": "medium" } }, { "id": "family_has_arrived", "result": { "structured": "TRIGGER: When Person Duc [person.duc] enters zone.home OR when Person Eri [person.eri] enters zone.home. CONDITIONS: None. ACTIONS: If the trigger was Person Duc [person.duc] entering, then turn off Duc travel monitor [input_boolean.duc_travel_monitor]. If the trigger was Person Eri [person.eri] entering, then turn off Eri travel monitor [input_boolean.eri_travel_monitor].", "natural_language": { "trigger": "When either Person Duc [person.duc] or Person Eri [person.eri] arrives home by entering the 'home' zone.", "conditions": "There are no conditions that must be met.", "action": "Depending on who arrived, the automation will turn off their specific travel monitor. If Duc arrived, it turns off Duc travel monitor [input_boolean.duc_travel_monitor]. If Eri arrived, it turns off Eri travel monitor [input_boolean.eri_travel_monitor]." }, "human_like": "Turns off the travel monitor for a family member when they arrive home.", "complexity": "low" } }, { "id": "QLM Climate Change", "result": { "structured": "TRIGGER: When LR AC mode selector [input_select.lr_ac_mode] OR MR AC mode selector [input_select.mr_ac_mode] OR SR AC mode selector [input_select.sr_ac_mode] changes state. CONDITIONS: None. ACTIONS: Set the HVAC mode of the climate entity corresponding to the triggered selector (climate.lr_ac, climate.mr_ac, or climate.sr_ac) to a mode mapped from the selector's new state. The mapping is: 'Off' → 'off', 'Fan' → 'fan_only', 'Ai Auto' or 'Man Auto' → 'auto', any 'Cool' variant → 'cool', any 'Heat' variant → 'heat', 'Normal Humidifier' → 'fan_only'.", "natural_language": { "trigger": "Whenever the LR AC mode selector [input_select.lr_ac_mode], MR AC mode selector [input_select.mr_ac_mode], or SR AC mode selector [input_select.sr_ac_mode] changes its selected value.", "conditions": "There are no conditions that must be met for the action to run.", "action": "It sets the HVAC mode of the corresponding air conditioning unit (climate.lr_ac, climate.mr_ac, or climate.sr_ac) based on the new value of the selector that changed. The mapping translates user-friendly mode names like 'Powerful Cool' or 'Ai Auto' into standard HVAC modes like 'cool' or 'auto'." }, "human_like": "Syncs the actual air conditioner mode with the selected mode from the room's control panel.", "complexity": "medium" } }, { "id": "School today", "result": { "structured": "TRIGGER: At 05:00:00. CONDITIONS: (Shion school calendar [calendar.shion_school] start_time date is today) AND (Holiday sensor [sensor.holiday] state is 'none'). ACTIONS: If School event sensor [sensor.school_event] state contains 'home school', then turn on School Early Release [input_boolen.school_early_release] AND set School day end datetime [input_datetime.school_day_end] to 15:15:00. Otherwise, set School day end datetime [input_datetime.school_day_end] to 18:15:00 AND turn on School today [input_boolean.school_today] AND run School in session script [script.school_in_session].", "natural_language": { "trigger": "The automation triggers daily at 5:00 AM.", "conditions": "It checks if the start time of the event on the Shion school calendar [calendar.shion_school] is today, and if the Holiday sensor [sensor.holiday] indicates there is no holiday.", "action": "If the School event sensor [sensor.school_event] indicates a 'home school' event, it turns on the School Early Release [input_boolen.school_early_release] flag and sets the School day end datetime [input_datetime.school_day_end] to 3:15 PM. Otherwise, it sets the school day end to 6:15 PM, turns on the School today [input_boolean.school_today] flag, and starts the School in session script [script.school_in_session]." }, "human_like": "Sets up the school day schedule at 5 AM, adjusting the end time based on whether it's a regular or home school day.", "complexity": "medium" } }, { "id": "Shion Night Briefing", "result": { "structured": "TRIGGER: When the time reaches Shion school bedtime datetime [input_datetime.shion_school_bedtime] OR when the time reaches Shion bedtime holiday datetime [input_datetime.shion_bedtime_holiday]. CONDITIONS: Shion awake [input_boolean.shion_awake] is on AND ((School tomorrow sensor [sensor.school_tomorrow] is on AND the trigger was school_night) OR (School tomorrow sensor [sensor.school_tomorrow] is off AND the trigger was no_school)). ACTIONS: Turn on Shion nightly briefing script [script.shion_nightly_briefing].", "natural_language": { "trigger": "The automation triggers at a specific time, either the scheduled school bedtime or the scheduled holiday bedtime.", "conditions": "Shion must be marked as awake. Depending on whether school is scheduled for the next day, the automation checks that the correct bedtime trigger was activated. If school is tomorrow, it must be the school bedtime trigger. If school is not tomorrow, it must be the holiday bedtime trigger.", "action": "Runs the nightly briefing script for Shion." }, "human_like": "Plays Shion's nightly briefing at the appropriate bedtime, depending on whether there is school the next day.", "complexity": "medium" } }, { "id": "set shion nightly bedtime time", "result": { "structured": "TRIGGER: At 18:30:00 daily. CONDITIONS: None. ACTIONS: Set Shion nightly report datetime [input_datetime.shion_nightly_report] time to 21:00 IF School tomorrow sensor [sensor.school_tomorrow] is on OR School event sensor [sensor.school_event] is 'school off'. OTHERWISE set time to 21:30.", "natural_language": { "trigger": "Every day at 6:30 PM.", "conditions": "There are no conditions that must be checked before performing the action.", "action": "Sets the time for Shion nightly report datetime [input_datetime.shion_nightly_report]. If School tomorrow sensor [sensor.school_tomorrow] is 'on' or School event sensor [sensor.school_event] is 'school off', the time is set to 9:00 PM. Otherwise, the time is set to 9:30 PM." }, "human_like": "Sets a nightly bedtime reminder for Shion, adjusting the time earlier if there's school the next day or a school event.", "complexity": "medium" } }, { "id": "Randomize Vacation Lights", "result": { "structured": "TRIGGER: When Randomize vacation lights [input_boolean.randomize_vacation_lights] changes state. CONDITIONS: Vacation mode [input_boolean.vacation_mode] is on. ACTIONS: If Randomize vacation lights [input_boolean.randomize_vacation_lights] is on, then turn on Randomize vacation lights script [script.randomize_vacation_lights]; otherwise, turn off Randomize vacation lights script [script.randomize_vacation_lights].", "natural_language": { "trigger": "Whenever the Randomize vacation lights [input_boolean.randomize_vacation_lights] input boolean changes its state.", "conditions": "The Vacation mode [input_boolean.vacation_mode] input boolean must be turned on.", "action": "If the Randomize vacation lights [input_boolean.randomize_vacation_lights] is on, the Randomize vacation lights script [script.randomize_vacation_lights] is started. If it is off, the script is stopped." }, "human_like": "Controls the vacation light randomization script based on a toggle, but only when vacation mode is active.", "complexity": "medium" } }, { "id": "Run Vacation Lights", "result": { "structured": "TRIGGER: When sunset occurs OR When sunrise occurs OR When Vacation mode [input_boolean.vacation_mode] changes from on to off. CONDITIONS: (Trigger is sunset AND Vacation mode [input_boolean.vacation_mode] is on) OR (Trigger is sunrise OR Trigger is Vacation mode [input_boolean.vacation_mode] changed from on to off). ACTIONS: If conditions are met, turn on Randomize vacation lights [input_boolean.randomize_vacation_lights] OR turn off Randomize vacation lights [input_boolean.randomize_vacation_lights].", "natural_language": { "trigger": "The automation can be triggered by three events: when the sun sets, when the sun rises, or when Vacation mode [input_boolean.vacation_mode] is switched from on to off.", "conditions": "If the trigger is sunset, the automation checks that Vacation mode [input_boolean.vacation_mode] is currently on. If the trigger is sunrise or Vacation mode [input_boolean.vacation_mode] is turned off, no further conditions are required for that branch.", "action": "If triggered by sunset and Vacation mode is on, the automation turns on Randomize vacation lights [input_boolean.randomize_vacation_lights]. If triggered by sunrise or by turning off Vacation mode, it turns off Randomize vacation lights [input_boolean.randomize_vacation_lights]." }, "human_like": "Turns on random lights at sunset when vacation mode is active, and turns them off at sunrise or when vacation mode is disabled.", "complexity": "medium" } }, { "id": "Daily Energy Use Message", "result": { "structured": "TRIGGER: When the time is 23:59:50. CONDITIONS: None. ACTIONS: Send a notification via Notify events notification [notify.notify_events] with the title '*Information*' and a message containing today's energy use from Total energy sensor [sensor.total_energy]. Set the value of Cumulative energy cost [input_number.cumulative_energy_cost] to the sum of its current value and the value from Total cost today sensor [sensor.total_cost_today]. Send a detailed energy log message via Energy log notification [notify.energy_log] containing values from Date [sensor.date], Energy T31 light and power day sensor [sensor.energy_t31_light_and_power_day], Energy T31 light and power night sensor [sensor.energy_t31_light_and_power_night], Energy T31 light and power total sensor [sensor.energy_t31_light_and_power_total], Energy T41 heating day sensor [sensor.energy_t41_heating_day], Energy T41 heating night sensor [sensor.energy_t41_heating_night], Energy T41 heating total sensor [sensor.energy_t41_heating_total], Total energy day sensor [sensor.total_energy_day], Total energy night sensor [sensor.total_energy_night], Total energy sensor [sensor.total_energy], the age_coverage_ratio attribute of Power stats sensor [sensor.power_stats], the buffer_usage_ratio attribute of Power stats sensor [sensor.power_stats], the state of Power stats sensor [sensor.power_stats], and Total cost today sensor [sensor.total_cost_today].", "natural_language": { "trigger": "Every day at 10 seconds before midnight (23:59:50).", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Sends a general notification with today's total energy consumption. It then updates a cumulative energy cost tracker by adding today's cost to the running total. Finally, it sends a detailed, comma-separated log message containing a wide array of energy and cost statistics for the day to a specific notification service for record-keeping." }, "human_like": "Sends a daily summary of energy usage and cost just before midnight, and logs detailed statistics.", "complexity": "medium" } }, { "id": "Monthly Fridge Energy Use Message", "result": { "structured": "TRIGGER: When the time is 23:59:55. CONDITIONS: The current day of the month is the first day. ACTIONS: Send a notification via Fridge log notification [notify.fridge_log] with a message containing the current date from Date [sensor.date] and the monthly energy usage from Energy fridge power monthly sensor [sensor.energy_fridge_power_monthly].", "natural_language": { "trigger": "The automation triggers at 11:59:55 PM every day.", "conditions": "It only proceeds if it is the first day of the month.", "action": "It sends a notification to the Fridge log notification [notify.fridge_log] containing the current date from the Date [sensor.date] sensor and the monthly energy consumption value from the Energy fridge power monthly sensor [sensor.energy_fridge_power_monthly]." }, "human_like": "Sends a monthly energy usage report for the fridge at the end of the first day of each month.", "complexity": "low" } }, { "id": "Set Dark Theme At Sunset", "result": { "structured": "TRIGGER: When the sun sets (sunset event). CONDITIONS: None. ACTIONS: Set Select theme input select [input_select.select_theme] to option 'midnight' AND set Energy T31 light and power select [select.energy_t31_light_and_power] to option 'night' AND set Energy T41 heating select [select.energy_t41_heating] to option 'night'.", "natural_language": { "trigger": "At sunset.", "conditions": "There are no conditions; the automation runs whenever the trigger occurs.", "action": "Changes the selected theme to 'midnight' on the Select theme input select [input_select.select_theme] and sets the mode to 'night' for both the Energy T31 light and power select [select.energy_t31_light_and_power] and the Energy T41 heating select [select.energy_t41_heating]." }, "human_like": "Switches to a dark theme and sets energy profiles to 'night' mode at sunset.", "complexity": "low" } }, { "id": "Set Light Theme At Sunrise", "result": { "structured": "TRIGGER: When sunrise occurs. CONDITIONS: None. ACTIONS: Set Select theme input select [input_select.select_theme] to option 'default_ha' AND set Energy T31 light and power select [select.energy_t31_light_and_power] to option 'day' AND set Energy T41 heating select [select.energy_t41_heating] to option 'day'.", "natural_language": { "trigger": "At sunrise.", "conditions": "There are no conditions.", "action": "Changes the theme to 'default_ha' on the Select theme input select [input_select.select_theme] and sets both the Energy T31 light and power select [select.energy_t31_light_and_power] and the Energy T41 heating select [select.energy_t41_heating] to the 'day' option." }, "human_like": "Switches to the default light theme and sets energy profiles to 'day' mode at sunrise.", "complexity": "low" } }, { "id": "Slack - PC is on", "result": { "structured": "TRIGGER: When Duc presence [binary_sensor.duc_presence] becomes not present (off) AND remains so for 60 seconds. CONDITIONS: Desktop status [binary_sensor.desktop_status] is on. ACTIONS: Execute Notify Slack script [script.notify_slack] with a message stating the PC was left on and there are N people home sensor [sensor.n_people_home] person(s) at home, including an interactive button to run Desktop WOL off script [script.desktop_wol_off] or dismiss.", "natural_language": { "trigger": "When the Duc presence [binary_sensor.duc_presence] sensor indicates that the person is away (off) for a continuous period of 60 seconds.", "conditions": "The Desktop status [binary_sensor.desktop_status] must be reporting that the PC is currently on.", "action": "Sends a notification to a specified Slack channel via the Notify Slack script [script.notify_slack]. The message reports that the PC was left on and states the current number of people at home according to the N people home sensor [sensor.n_people_home]. The notification includes interactive buttons allowing the user to either turn off the PC by triggering the Desktop WOL off script [script.desktop_wol_off] or dismiss the alert." }, "human_like": "Sends a Slack notification with an option to turn off the PC when a specific person leaves home and the computer is still running.", "complexity": "medium" } }, { "id": "24hr fan toggle on-off", "result": { "structured": "TRIGGER: When the time is 04:00:00 OR when the time is 23:00:00. CONDITIONS: Home mode selector [input_select.home_mode] is NOT set to 'Vacation'. ACTIONS: If the current time is 04:00, turn on 24hr fan switch [switch.24hr_fan]; otherwise (if the time is 23:00), turn off 24hr fan switch [switch.24hr_fan].", "natural_language": { "trigger": "The automation runs at two specific times: 4:00 AM and 11:00 PM.", "conditions": "It only proceeds if the Home mode selector [input_select.home_mode] is not set to 'Vacation'.", "action": "At 4:00 AM, it turns on the 24hr fan switch [switch.24hr_fan]. At 11:00 PM, it turns the same fan off." }, "human_like": "Turns the 24-hour fan on in the morning and off at night, but only when the home is not in Vacation mode.", "complexity": "medium" } }, { "id": "24hr fan toggle speed", "result": { "structured": "TRIGGER: When the time is 04:05:00 OR When Period of the day sensor [sensor.period_of_the_day] changes to dusklight. CONDITIONS: Home mode selector [input_select.home_mode] is NOT Vacation. ACTIONS: Wait for 90 seconds, then execute Holdpress bot script [script.holdpress_bot] with parameters bot='24hr_fan' and press=0.", "natural_language": { "trigger": "The automation starts either at 04:05:00 every day, or when the Period of the day sensor [sensor.period_of_the_day] changes its state to 'dusklight'.", "conditions": "The automation only proceeds if the Home mode selector [input_select.home_mode] is not set to 'Vacation'.", "action": "After a 90-second delay, the automation runs the Holdpress bot script [script.holdpress_bot], instructing it to simulate a press for the '24hr_fan' bot with a press value of 0." }, "human_like": "Adjusts the 24-hour fan speed early in the morning or at dusk, but only when the home is not in vacation mode.", "complexity": "medium" } }, { "id": "Open Front Curtains at Sunrise", "result": { "structured": "TRIGGER: When Period of the day sensor [sensor.period_of_the_day] changes to dawnlight OR daylight. CONDITIONS: (Home mode selector [input_select.home_mode] is Home) AND (Home mode selector [input_select.home_mode] is not Vacation) AND (Time [sensor.time] is after 05:00) AND (Eri Bermuda area sensor [sensor.eri_bermuda_area] value, when lowercased, is not kitchen AND is not living). ACTIONS: Set FR curtains cover [cover.fr_curtains] position to 50% if Period of the day sensor [sensor.period_of_the_day] is dawnlight, otherwise set position to 100%.", "natural_language": { "trigger": "When the Period of the day sensor [sensor.period_of_the_day] changes to either 'dawnlight' or 'daylight'.", "conditions": "The Home mode selector [input_select.home_mode] must be set to 'Home' and not set to 'Vacation'. The current time from the Time sensor [sensor.time] must be after 05:00. The Eri Bermuda area sensor [sensor.eri_bermuda_area] must not report a location of 'kitchen' or 'living' (case-insensitive).", "action": "Opens the FR curtains cover [cover.fr_curtains] to a 50% position if the period is 'dawnlight', or to a 100% position if the period is 'daylight'." }, "human_like": "Opens the front curtains at sunrise, adjusting the opening level based on the time of day, but only when someone is home, it's morning, and you're not in the main living areas.", "complexity": "medium" } }, { "id": "Close Front Curtains at Sunset", "result": { "structured": "TRIGGER: When Period of the day sensor [sensor.period_of_the_day] changes to dusklight OR nightlight. CONDITIONS: FR curtains sensor [sensor.fr_curtains] is closed AND Home mode selector [input_select.home_mode] is NOT Vacation. ACTIONS: Set FR curtains cover [cover.fr_curtains] position to 50% if Period of the day sensor [sensor.period_of_the_day] is dusklight, otherwise set position to 0%.", "natural_language": { "trigger": "The automation triggers when the Period of the day sensor [sensor.period_of_the_day] changes to either 'dusklight' or 'nightlight'.", "conditions": "The automation only runs if the FR curtains sensor [sensor.fr_curtains] reports that the curtains are currently closed, and the Home mode selector [input_select.home_mode] is not set to 'Vacation'.", "action": "It adjusts the FR curtains cover [cover.fr_curtains] to a specific position. If the period is 'dusklight', the curtains are set to 50% open. If the period is 'nightlight', the curtains are fully closed (0%)." }, "human_like": "Automatically adjusts the front curtains at sunset or night, partially closing them at dusk and fully closing them at night, but only when the home is not in vacation mode.", "complexity": "medium" } }, { "id": "Close Computer Room Curtains", "result": { "structured": "TRIGGER: When CR window button [binary_sensor.cr_window_button] turns on. CONDITIONS: CR curtain LT curtain cover [cover.cr_curtain_lt_curtain] is open. ACTIONS: Execute CR curtains toggle script [script.cr_curtains_toggle].", "natural_language": { "trigger": "When the CR window button [binary_sensor.cr_window_button] is pressed (turns on).", "conditions": "If the CR curtain LT curtain cover [cover.cr_curtain_lt_curtain] is currently open.", "action": "Runs the CR curtains toggle script [script.cr_curtains_toggle]." }, "human_like": "Closes the computer room curtains when the window button is pressed, but only if they are currently open.", "complexity": "low" } }, { "id": "Telegram - Notification Door Unlocked", "result": { "structured": "TRIGGER: When Lock Pro 8D0A [lock.lock_pro_8d0a] remains unlocked for 120 seconds OR When a Telegram callback event with data '/lock_door' occurs. CONDITIONS: Lock Pro 8D0A [lock.lock_pro_8d0a] is currently unlocked. ACTIONS: If the trigger is the lock state change, send a notification via Amber the bot notification [notify.amberthebot] stating the door has been left unlocked, with an inline keyboard offering options to lock the door or do nothing. If the trigger is the Telegram callback, answer the callback query with a confirmation message, edit the original message to remove the inline keyboard, and lock Lock Pro 8D0A [lock.lock_pro_8d0a].", "natural_language": { "trigger": "This automation is triggered in two ways: either when the Lock Pro 8D0A [lock.lock_pro_8d0a] remains in the unlocked state for 120 seconds, or when a specific Telegram callback event occurs, which is sent when a user presses the 'Lock Door' button in a Telegram message.", "conditions": "The automation only runs if the Lock Pro 8D0A [lock.lock_pro_8d0a] is currently in the unlocked state.", "action": "Depending on what triggered the automation, it performs different actions. If it was triggered by the lock being unlocked for two minutes, it sends a Telegram notification via Amber the bot notification [notify.amberthebot] with a message about the door being unlocked and provides inline buttons to lock it or take no action. If it was triggered by a user pressing the 'Lock Door' button in Telegram, it first sends a confirmation message to the user, then removes the interactive buttons from the original notification message, and finally commands the lock to lock." }, "human_like": "Sends a Telegram alert if the genkan door is left unlocked, and allows you to lock it remotely with a button press in the notification.", "complexity": "medium" } }, { "id": "Pre Auto Unlock Door", "result": { "structured": "TRIGGER: When ID device tracker [device_tracker.id] OR IE device tracker [device_tracker.ie] changes state to home. CONDITIONS: None. ACTIONS: Choose based on condition: IF ID device tracker [device_tracker.id] is home THEN turn on Duc unlock door [input_boolean.duc_unlock_door]; ELSE IF IE device tracker [device_tracker.ie] is home THEN turn on Eri unlock door [input_boolean.eri_unlock_door].", "natural_language": { "trigger": "When either the ID device tracker [device_tracker.id] or the IE device tracker [device_tracker.ie] arrives home.", "conditions": "There are no global conditions.", "action": "If the ID device tracker [device_tracker.id] is at home, it turns on the Duc unlock door [input_boolean.duc_unlock_door]. Otherwise, if the IE device tracker [device_tracker.ie] is at home, it turns on the Eri unlock door [input_boolean.eri_unlock_door]." }, "human_like": "Automatically sets a flag to unlock the door when a specific person arrives home.", "complexity": "medium" } }, { "id": "Telegram - Notification Auto Unlock Door Enabled", "result": { "structured": "TRIGGER: When ID device tracker [device_tracker.id] OR IE device tracker [device_tracker.ie] arrives home (state changes to home) OR When a Telegram callback event with data '/disable_autolock' occurs. CONDITIONS: Duc unlock door [input_boolean.duc_unlock_door] is on OR Eri unlock door [input_boolean.eri_unlock_door] is on. ACTIONS: If the trigger is a device tracker arriving home, then send a notification via Amber the bot notification [notify.amberthebot] with a message and an inline keyboard. If the trigger is the Telegram callback event, then answer the callback query via Telegram bot [telegram_bot], edit the reply markup to remove the keyboard via Telegram bot [telegram_bot], and turn off the corresponding input_boolean (Duc unlock door [input_boolean.duc_unlock_door] OR Eri unlock door [input_boolean.eri_unlock_door]) that is currently on.", "natural_language": { "trigger": "The automation triggers either when the ID device tracker [device_tracker.id] or the IE device tracker [device_tracker.ie] changes its state to 'home', or when a specific Telegram callback event with the data '/disable_autolock' is received.", "conditions": "The automation only runs if at least one of the input booleans, Duc unlock door [input_boolean.duc_unlock_door] or Eri unlock door [input_boolean.eri_unlock_door], is currently turned on.", "action": "Depending on what triggered the automation: If a person arrives home, a notification is sent via Amber the bot notification [notify.amberthebot] announcing the auto doorlock has been initialized, and it provides an inline keyboard with options to disable it or leave it. If the Telegram callback to disable is pressed, the bot answers the query, removes the keyboard from the message, and turns off the specific input boolean that was active." }, "human_like": "Sends a Telegram notification when someone arrives home and auto unlock is enabled, and allows disabling the auto unlock via a button in the message.", "complexity": "medium" } }, { "id": "Auto Unlock Door", "result": { "structured": "TRIGGER: When AIO human sensor entrance moving target [binary_sensor.aio_human_sensor_entrance_moving_target] OR AIO human sensor entrance presence [binary_sensor.aio_human_sensor_entrance_presence] changes from off to on. CONDITIONS: None. ACTIONS: Choose one of two sequences based on conditions. Sequence 1: IF (Duc unlock door [input_boolean.duc_unlock_door] is on) AND (ID device tracker [device_tracker.id] is home) AND (Duc Bermuda Bermuda tracker [device_tracker.duc_bermuda_bermuda_tracker] is home AND the time since its last state change is less than or equal to 60 seconds) AND (Lock Pro 8D0A [lock.lock_pro_8d0a] is locked) THEN unlock Lock Pro 8D0A [lock.lock_pro_8d0a] AND turn off Duc unlock door [input_boolean.duc_unlock_door]. Sequence 2: IF (Eri unlock door [input_boolean.eri_unlock_door] is on) AND (IE device tracker [device_tracker.ie] is home) AND (Eri Bermuda Bermuda tracker [device_tracker.eri_bermuda_bermuda_tracker] is home AND the time since its last state change is less than or equal to 60 seconds) AND (Lock Pro 8D0A [lock.lock_pro_8d0a] is locked) THEN unlock Lock Pro 8D0A [lock.lock_pro_8d0a] AND turn off Eri unlock door [input_boolean.eri_unlock_door].", "natural_language": { "trigger": "When either the AIO human sensor entrance moving target [binary_sensor.aio_human_sensor_entrance_moving_target] or the AIO human sensor entrance presence [binary_sensor.aio_human_sensor_entrance_presence] detects activity by changing from off to on.", "conditions": "There are no global conditions. The automation uses a choose action to evaluate two separate sets of conditions. The first set checks if the Duc unlock door [input_boolean.duc_unlock_door] is enabled, the ID device tracker [device_tracker.id] is home, the Duc Bermuda Bermuda tracker [device_tracker.duc_bermuda_bermuda_tracker] is home and has been home for no more than 60 seconds, and the Lock Pro 8D0A [lock.lock_pro_8d0a] is currently locked. The second set checks if the Eri unlock door [input_boolean.eri_unlock_door] is enabled, the IE device tracker [device_tracker.ie] is home, the Eri Bermuda Bermuda tracker [device_tracker.eri_bermuda_bermuda_tracker] is home and has been home for no more than 60 seconds, and the Lock Pro 8D0A [lock.lock_pro_8d0a] is locked.", "action": "If the first set of conditions is met, the automation will unlock the Lock Pro 8D0A [lock.lock_pro_8d0a] and then disable the Duc unlock door [input_boolean.duc_unlock_door] switch. If the second set of conditions is met, it will unlock the same lock and disable the Eri unlock door [input_boolean.eri_unlock_door] switch." }, "human_like": "Automatically unlocks the front door when someone is detected at the entrance, but only if a specific person is expected home and the door is locked.", "complexity": "medium" } }, { "id": "Telegram - Notification PC is on", "result": { "structured": "TRIGGER: When Duc presence [binary_sensor.duc_presence] becomes absent (off) AND remains so for 60 seconds OR When a Telegram callback event with data '/turn_off_pc' occurs. CONDITIONS: Desktop status [binary_sensor.desktop_status] is on. ACTIONS: If triggered by Duc presence [binary_sensor.duc_presence] being off for 60 seconds, send a notification via Amber the bot notification [notify.amberthebot] with a message stating the PC status and number of people home, including an inline keyboard with options. If triggered by the Telegram callback event, answer the callback query, edit the message's reply markup to remove the keyboard, and execute the Desktop WOL off script [script.desktop_wol_off].", "natural_language": { "trigger": "This automation triggers in two ways: first, when the Duc presence [binary_sensor.duc_presence] sensor indicates the person is away and remains in that state for 60 seconds. Second, when a specific Telegram callback event with the command '/turn_off_pc' is received.", "conditions": "The automation only runs if the Desktop status [binary_sensor.desktop_status] is currently on.", "action": "Depending on what triggered it, the automation performs different actions. If it was triggered by the presence sensor, it sends a Telegram notification via Amber the bot notification [notify.amberthebot] informing the user that the PC is on and how many people are home, and provides inline buttons to turn off the PC or do nothing. If it was triggered by the user pressing the 'Turn off pc' button in Telegram, it acknowledges the button press, removes the inline keyboard from the message, and runs the Desktop WOL off script [script.desktop_wol_off] to shut down the computer." }, "human_like": "Sends a Telegram notification when you leave home and the PC is still on, allowing you to remotely turn it off with a button press.", "complexity": "medium" } }, { "id": "Telegram - You got mail", "result": { "structured": "TRIGGER: When Lora mailbox sensor [sensor.lora_mailbox] state becomes '0xA2B2' AND remains for 3 seconds OR When Lora mailbox sensor [sensor.lora_mailbox] state becomes '0xLBAT' AND remains for 3 seconds. CONDITIONS: None. ACTIONS: Choose based on trigger: If trigger is 'mail' then send notification via Amber the bot notification [notify.amberthebot] with message 'You've got mail!' and inline keyboard options 'Received' and 'Mute'. If trigger is 'bat' then execute script Text notify script [script.text_notify] with parameters who='amber', title='Mailbox', message='Mailbox battery is low!' AND execute Set state Python script [python_script.set_state] to set Lora mailbox sensor [sensor.lora_mailbox] state to 'received'.", "natural_language": { "trigger": "When the Lora mailbox sensor [sensor.lora_mailbox] reports a state of '0xA2B2' (indicating mail) for at least three seconds, or when it reports a state of '0xLBAT' (indicating low battery) for at least three seconds.", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "Depending on which trigger occurred: If the mail trigger fired, a Telegram notification is sent via Amber the bot notification [notify.amberthebot] saying 'You've got mail!' with buttons to mark it as received or mute the alert. If the battery trigger fired, a text notification is sent via the Text notify script [script.text_notify] to Amber, warning that the mailbox battery is low, and then the Set state Python script [python_script.set_state] is used to change the state of the Lora mailbox sensor [sensor.lora_mailbox] to 'received'." }, "human_like": "Sends a Telegram alert when you receive mail or a low battery warning from your smart mailbox.", "complexity": "medium" } }, { "id": "Telegram - You got mail received", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data '/received'. CONDITIONS: None. ACTIONS: Answer the Telegram callback query with message 'OK, turning off notification', edit the reply markup of the triggering message to clear the inline keyboard, set the state of Lora mailbox sensor [sensor.lora_mailbox] to 'received', and execute the Mailbox reset script [script.mailbox_reset].", "natural_language": { "trigger": "When a specific Telegram callback event is received, specifically one containing the data '/received'.", "conditions": "There are no conditions; the automation runs immediately when the trigger occurs.", "action": "The automation sends a confirmation message to the Telegram callback, removes the interactive buttons from the original Telegram message, updates the Lora mailbox sensor [sensor.lora_mailbox] to show the mail as 'received', and runs the Mailbox reset script [script.mailbox_reset]." }, "human_like": "Handles a Telegram notification for received mail by confirming the action, updating the mailbox status, and resetting the notification system.", "complexity": "low" } }, { "id": "Telegram - Do Nothing", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data '/donothing'. CONDITIONS: None. ACTIONS: Send a Telegram callback query answer with message 'OK, no action taken' AND edit the reply markup of the triggering message to an empty inline keyboard.", "natural_language": { "trigger": "When a user interacts with a Telegram bot and selects a callback option with the data '/donothing'.", "conditions": "There are no conditions that must be met.", "action": "The bot will send a confirmation message saying 'OK, no action taken' to the user and will clear the inline keyboard buttons from the original message." }, "human_like": "Responds to a specific Telegram button press by confirming no action and removing the menu buttons.", "complexity": "low" } }, { "id": "Control Devices", "result": { "structured": "TRIGGER: When a telegram_text event occurs. CONDITIONS: The event text, when converted to lowercase and split into words, has the first word equal to 'turn' OR 'switch' AND the second word equal to 'on' OR 'off'. ACTIONS: Send a Telegram message to the chat ID from the trigger event. The message is generated by: extracting the device name from the event text (by removing 'turn on ', 'turn off ', 'switch on ', 'switch off '), then checking if any entity in the group Controllable devices group [group.controllable_devices] has a friendly name (converted to lowercase) matching the extracted device name. If a match is found, the message is 'OK, [trigger text with 'turn'/'switch' replaced by 'turning'/'switching'].'. If no match is found, the message is 'I'm sorry. I cannot find the device named [extracted device name] in the house.'. Then, evaluate a second condition: the same device name extraction and group lookup must return true (i.e., a matching entity exists). If this condition is true, call the service homeassistant.turn_on or homeassistant.turn_off (based on the second word of the trigger text) on the matching entity ID(s).", "natural_language": { "trigger": "When a text message is received via Telegram.", "conditions": "The text of the message must start with either 'turn' or 'switch', followed immediately by either 'on' or 'off'.", "action": "First, the automation sends a reply via Telegram. It extracts the device name from the message by removing the command words ('turn on', 'turn off', 'switch on', 'switch off'). It then looks through all the devices in the Controllable devices group [group.controllable_devices] to see if any device's friendly name matches the extracted name. If a match is found, it replies confirming the action (e.g., 'OK, turning on [device].'). If no match is found, it replies saying it cannot find that device. Next, it performs the same check again to see if a matching device exists. If it does, it turns that device on or off, based on the command in the original message." }, "human_like": "Allows you to control devices by sending simple 'turn on/off' or 'switch on/off' commands via Telegram, with the bot confirming the action or reporting if the device isn't found.", "complexity": "medium" } }, { "id": "turn off light after timeout", "result": { "structured": "TRIGGER: When G1 light [light.g_1] remains on for 15 minutes. CONDITIONS: None. ACTIONS: Turn off the light that triggered the automation (G1 light [light.g_1]).", "natural_language": { "trigger": "When the G1 light [light.g_1] has been turned on and remains on for 15 minutes.", "conditions": "There are no additional conditions.", "action": "Turns off the same light that triggered the automation (G1 light [light.g_1])." }, "human_like": "Automatically turns off the G1 light 15 minutes after it was turned on.", "complexity": "low" } }, { "id": "closet storage room auto-off", "result": { "structured": "TRIGGER: When Master cloak door contact [binary_sensor.master_clo_door_contact] OR Storage door contact [binary_sensor.storage_door_contact] changes to closed (off) AND remains closed for 30 seconds. ACTIONS: Turn off the light entity whose name matches the name of the entity that triggered the automation.", "natural_language": { "trigger": "When either the Master cloak door contact [binary_sensor.master_clo_door_contact] or the Storage door contact [binary_sensor.storage_door_contact] closes and stays closed for 30 seconds.", "conditions": "There are no explicit conditions for this automation.", "action": "Turns off the light whose name corresponds to the sensor that triggered the event. For example, if the Master cloak door contact triggered it, it will turn off a light named 'Master cloak door contact'." }, "human_like": "Automatically turns off the light in a closet or storage room 30 seconds after its door is closed.", "complexity": "low" } }, { "id": "Lights out Before leaving", "result": { "structured": "TRIGGER: When Genkan doorlock button [binary_sensor.genkan_doorlock_button] turns on. CONDITIONS: None. ACTIONS: Execute Lights out script [script.lights_out].", "natural_language": { "trigger": "When the Genkan doorlock button [binary_sensor.genkan_doorlock_button] is pressed (turns on).", "conditions": "There are no conditions that must be met.", "action": "Runs the Lights out script [script.lights_out]." }, "human_like": "Turns off the lights when the door lock button in the genkan is pressed.", "complexity": "low" } }, { "id": "Duc Presence Alone", "result": { "structured": "TRIGGER: When Duc presence alone [binary_sensor.duc_presence_alone] changes state. CONDITIONS: None. ACTIONS: If Duc presence alone [binary_sensor.duc_presence_alone] is off, then turn on Disable motion lights [input_boolean.disable_motion_lights]. Otherwise, turn off Disable motion lights [input_boolean.disable_motion_lights].", "natural_language": { "trigger": "Whenever the state of the Duc presence alone [binary_sensor.duc_presence_alone] sensor changes.", "conditions": "There are no additional conditions that must be met.", "action": "If Duc presence alone [binary_sensor.duc_presence_alone] is off, the automation will turn on the Disable motion lights [input_boolean.disable_motion_lights] switch. In all other cases, it will turn that switch off." }, "human_like": "Turns off motion lights when Duc is not alone, and turns them on when he is, to prevent lights from activating unnecessarily.", "complexity": "low" } }, { "id": "unavailable_entities_notification", "result": { "structured": "TRIGGER: When the entity_id attribute of Unavailable entities sensor [sensor.unavailable_entities] changes to null. CONDITIONS: The previous state AND the new state of Unavailable entities sensor [sensor.unavailable_entities] are both valid numerical values. ACTIONS: IF the state of Unavailable entities sensor [sensor.unavailable_entities] is below 1, THEN dismiss the persistent notification with ID 'unavailable_entities'. OTHERWISE, create a persistent notification with ID 'unavailable_entities', title 'Unavailable Entities', and a message containing the list of entity IDs from the entity_id attribute of Unavailable entities sensor [sensor.unavailable_entities], each on a new line.", "natural_language": { "trigger": "When the attribute tracking which entities are unavailable on the Unavailable entities sensor [sensor.unavailable_entities] changes to a null value.", "conditions": "The automation only runs if both the previous and the new state value of the Unavailable entities sensor [sensor.unavailable_entities] are valid numbers.", "action": "If the sensor reports a value below 1 (meaning no entities are unavailable), it dismisses any existing 'unavailable_entities' notification. Otherwise, it creates a new persistent notification titled 'Unavailable Entities' that lists all the unavailable entity IDs, each on a separate line." }, "human_like": "Shows a persistent notification listing any unavailable entities, and clears it when all entities are available again.", "complexity": "medium" } }, { "id": "motion washroom auto-on", "result": { "structured": "TRIGGER: When Wash occupied [binary_sensor.wash_occupied] attribute 'initiated' is true OR When Washer door button [binary_sensor.washer_door_button] turns on. CONDITIONS: None. ACTIONS: If the trigger was Washer door button [binary_sensor.washer_door_button] turning on, then toggle Shower light [light.shower]. Otherwise, turn on Laundry light [light.laundry], Sink light [light.sink], and Vanity light [light.vanity].", "natural_language": { "trigger": "The automation triggers either when the Wash occupied [binary_sensor.wash_occupied] sensor indicates its 'initiated' attribute is true, or when the Washer door button [binary_sensor.washer_door_button] is pressed (turns on).", "conditions": "There are no conditions that must be met after the trigger.", "action": "Depending on which trigger activated the automation: if it was the Washer door button [binary_sensor.washer_door_button] being pressed, the Shower light [light.shower] is toggled. For any other trigger (specifically, the Wash occupied sensor's 'initiated' attribute becoming true), the Laundry light [light.laundry], Sink light [light.sink], and Vanity light [light.vanity] are all turned on." }, "human_like": "Automatically turns on lights in the washroom when occupancy is detected, and toggles the shower light when a specific button is pressed.", "complexity": "medium" } }, { "id": "motion washroom auto-off", "result": { "structured": "TRIGGER: When Wash occupied [binary_sensor.wash_occupied] changes to off. CONDITIONS: Disable motion lights [input_boolean.disable_motion_lights] is NOT on. ACTIONS: Turn Laundry light [light.laundry] on if Shower light [light.shower] is on, otherwise turn it off. Wait for 10 seconds. Then turn Sink light [light.sink] and Vanity light [light.vanity] on if Shower light [light.shower] is on, otherwise turn them off.", "natural_language": { "trigger": "When the Wash occupied [binary_sensor.wash_occupied] sensor changes to 'off', indicating the washroom is no longer occupied.", "conditions": "The automation only runs if the Disable motion lights [input_boolean.disable_motion_lights] is not turned on.", "action": "First, it checks the state of the Shower light [light.shower]. If the shower light is on, it turns on the Laundry light [light.laundry]; if the shower light is off, it turns off the laundry light. After a 10-second delay, it performs the same check for the Sink light [light.sink] and Vanity light [light.vanity], turning them on or off based on the shower light's state." }, "human_like": "Automatically turns off (or on) the washroom and laundry lights based on occupancy and the state of the shower light, with a short delay for the vanity and sink lights.", "complexity": "medium" } }, { "id": "Replace Toilet Airfreshener Notification", "result": { "structured": "TRIGGER: When WC air freshener can sensor [sensor.wc_airfreshener_can] falls below 10. CONDITIONS: None. ACTIONS: Execute Email notify script [script.email_notify] with data: title 'Replace WC Airfreshener', recipient 'duc', and a message containing the current date and the remaining percentage from WC air freshener can sensor [sensor.wc_airfreshener_can].", "natural_language": { "trigger": "When the WC air freshener can sensor [sensor.wc_airfreshener_can] reports a value below 10 percent.", "conditions": "There are no additional conditions that must be met.", "action": "Sends an email notification using the Email notify script [script.email_notify] to the recipient 'duc'. The email's title is 'Replace WC Airfreshener', and its body includes today's date and the current remaining percentage of the air freshener." }, "human_like": "Sends an email reminder to replace the WC air freshener when the can level gets low.", "complexity": "low" } }, { "id": "motion wc room", "result": { "structured": "TRIGGER: When WC occupied [binary_sensor.wc_occupied] OR WC door contact [binary_sensor.wc_door_contact] becomes on OR When WC occupied [binary_sensor.wc_occupied] becomes off (id: off) OR When Engage toilet air freshener [input_boolean.engage_toilet_airfreshener] remains on for 3 minutes (id: air) OR When WC light [light.wc] is unavailable OR off (id: reset) OR When WC air freshener volume percent sensor [sensor.wc_airfreshener_volume_percent] is above 0.8 AND below 20 for 15 seconds (id: air). CONDITIONS: None. ACTIONS: CHOOSE: If trigger id is off: Turn off Engage toilet air freshener [input_boolean.engage_toilet_airfreshener] AND (if Disable motion lights [input_boolean.disable_motion_lights] is not on AND Guest mode [input_boolean.guest_mode] is not on) THEN Turn off WC light [light.wc]. If trigger id is air: (if WC light [light.wc] is on) THEN Turn on WC air freshener switch [switch.wc_airfreshener]. If trigger id is reset: Turn off Engage toilet air freshener [input_boolean.engage_toilet_airfreshener]. DEFAULT (for any other trigger): Turn on WC1 light [light.wc_1] AND Turn on Engage toilet air freshener [input_boolean.engage_toilet_airfreshener].", "natural_language": { "trigger": "The automation can be triggered in several ways: when the WC occupied [binary_sensor.wc_occupied] or WC door contact [binary_sensor.wc_door_contact] sensors detect activity (turn on), when the WC occupied sensor stops detecting occupancy (turns off), when the Engage toilet air freshener [input_boolean.engage_toilet_airfreshener] has been on for three minutes, when the WC light [light.wc] is either unavailable or off, or when the WC air freshener volume percent sensor [sensor.wc_airfreshener_volume_percent] reports a level between 0.8% and 20% for 15 seconds.", "conditions": "There are no global conditions for the automation. Specific conditions are checked within the action sequences for certain triggers.", "action": "The automation performs different actions based on which trigger fired. If the WC becomes unoccupied, it turns off the air freshener engagement and, provided motion lights are not disabled and guest mode is off, turns off the main WC light. If the air freshener has been engaged for three minutes or the air freshener volume is low, and the WC light is on, it turns on the air freshener switch. If the WC light is unavailable or off, it turns off the air freshener engagement. For all other triggers (like initial motion or door activity), it turns on the WC1 light and activates the air freshener engagement." }, "human_like": "This automation manages the WC's lights and air freshener based on occupancy, door contact, and other sensor states to provide automatic lighting and odor control.", "complexity": "high" } }, { "id": "Enable Toilet Seat Heater Upon Arrival", "result": { "structured": "TRIGGER: When Home mode selector [input_select.home_mode] changes state. CONDITIONS: Season sensor [sensor.season] is not 'summer'. ACTIONS: Choose action based on trigger and temperature: IF (trigger new state is 'Away' OR 'Vacation') THEN run Toilet seat off heat script [script.toilet_seat_off_heat]. ELSE IF (trigger new state is 'Home' AND AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] > 21) THEN run Toilet seat off heat script [script.toilet_seat_off_heat]. ELSE IF (trigger new state is 'Home' AND AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 10) THEN run Toilet seat high heat script [script.toilet_seat_high_heat]. ELSE IF (trigger new state is 'Home' AND AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 14) THEN run Toilet seat med heat script [script.toilet_seat_med_heat]. ELSE IF (trigger new state is 'Home' AND AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 20) THEN run Toilet seat low heat script [script.toilet_seat_low_heat]. ELSE IF (trigger new state is 'Returning' AND AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 20) THEN run Toilet seat low heat script [script.toilet_seat_low_heat].", "natural_language": { "trigger": "Whenever the Home mode selector [input_select.home_mode] changes its state.", "conditions": "The automation only runs if the Season sensor [sensor.season] is not set to 'summer'.", "action": "Depending on the new home mode and the temperature at the entrance, a specific toilet seat heating script is executed. If the mode changes to 'Away' or 'Vacation', or if the mode is 'Home' and the entrance temperature is above 21°C, the seat heater is turned off. If the mode is 'Home' and the temperature is 10°C or below, high heat is activated. For temperatures between 11°C and 14°C, medium heat is used. For temperatures between 15°C and 20°C, low heat is used. Finally, if the mode changes to 'Returning' and the temperature is 20°C or below, low heat is also activated." }, "human_like": "Adjusts the toilet seat heater based on the home mode and the entrance temperature, turning it off when it's warm or no one is home, and setting it to a suitable heat level when it's cold and someone is home or returning.", "complexity": "medium" } }, { "id": "Adjust Toilet Seat Heater Temperature", "result": { "structured": "TRIGGER: When AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] changes state. CONDITIONS: Season sensor [sensor.season] is NOT summer AND AIO human sensor online [binary_sensor.aio_human_sensor_online] is NOT off AND Toilet seat off heat script [script.toilet_seat_off_heat] last updated at least 600 seconds (10 minutes) ago. ACTIONS: Choose based on temperature and home mode: IF (AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] > 21 AND Home mode selector [input_select.home_mode] is Home) THEN run Toilet seat off heat script [script.toilet_seat_off_heat]. ELSE IF (AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 10 AND Home mode selector [input_select.home_mode] is Home) THEN run Toilet seat high heat script [script.toilet_seat_high_heat]. ELSE IF (AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 16 AND Home mode selector [input_select.home_mode] is Home) THEN run Toilet seat med heat script [script.toilet_seat_med_heat]. ELSE IF (AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] <= 20 AND Home mode selector [input_select.home_mode] is Home) THEN run Toilet seat low heat script [script.toilet_seat_low_heat].", "natural_language": { "trigger": "Whenever the temperature reading from the AIO human sensor entrance temperature [sensor.aio_human_sensor_entrance_temperature] changes.", "conditions": "The current season, as reported by the Season sensor [sensor.season], must not be summer. The AIO human sensor online [binary_sensor.aio_human_sensor_online] must be online (not off). At least 10 minutes must have passed since the Toilet seat off heat script [script.toilet_seat_off_heat] was last run.", "action": "If the home is in 'Home' mode, the automation will adjust the toilet seat heater based on the entrance temperature. If the temperature is above 21°C, it turns the heater off. If it's 10°C or below, it sets the heater to high. If it's 16°C or below, it sets the heater to medium. If it's 20°C or below, it sets the heater to low. These actions are performed by running the corresponding scripts." }, "human_like": "Automatically adjusts the toilet seat heater level based on the entrance temperature, but only when it's not summer, the sensor is online, and the heater hasn't been adjusted recently.", "complexity": "medium" } }, { "id": "Hibernate Toilet Seat Heater", "result": { "structured": "TRIGGER: When Season sensor [sensor.season] changes to summer. CONDITIONS: None. ACTIONS: Wait for 1 second, then run Toilet seat off heat script [script.toilet_seat_off_heat].", "natural_language": { "trigger": "When the Season sensor [sensor.season] changes its state to 'summer'.", "conditions": "There are no additional conditions that need to be met.", "action": "After a one-second delay, the automation runs the Toilet seat off heat script [script.toilet_seat_off_heat]." }, "human_like": "Turns off the toilet seat heater when the season changes to summer.", "complexity": "low" } }, { "id": "enable_zigbee_join", "result": { "structured": "TRIGGER: When Zigbee permit join [input_boolean.zigbee_permit_join] turns on. CONDITIONS: None. ACTIONS: Publish a message to the MQTT topic 'zigbee2mqtt/bridge/config/permit_join' with payload 'true' AND start Zigbee permit join timer [timer.zigbee_permit_join].", "natural_language": { "trigger": "When the Zigbee permit join [input_boolean.zigbee_permit_join] is turned on.", "conditions": "There are no conditions for this automation.", "action": "Sends a command to the Zigbee network to allow new devices to join by publishing a message, and starts a timer to automatically disable this mode later." }, "human_like": "Enables the Zigbee network's pairing mode when the user flips a switch, and starts a timer to limit how long it stays open.", "complexity": "low" } }, { "id": "disable_zigbee_join", "result": { "structured": "TRIGGER: When Zigbee permit join [input_boolean.zigbee_permit_join] turns off. CONDITIONS: None. ACTIONS: Publish payload 'false' to MQTT topic 'zigbee2mqtt/bridge/config/permit_join' AND cancel Zigbee permit join timer [timer.zigbee_permit_join].", "natural_language": { "trigger": "When the Zigbee permit join [input_boolean.zigbee_permit_join] is switched off.", "conditions": "There are no additional conditions.", "action": "Disables the Zigbee network's ability to accept new devices by sending an MQTT message and cancels the associated timer." }, "human_like": "Disables the Zigbee network's pairing mode and stops the timer when the permit join switch is turned off.", "complexity": "low" } }, { "id": "disable_zigbee_join_timer", "result": { "structured": "TRIGGER: When Zigbee permit join timer [timer.zigbee_permit_join] finishes. CONDITIONS: None. ACTIONS: Publish 'false' to MQTT topic 'zigbee2mqtt/bridge/config/permit_join' AND Turn off Zigbee permit join [input_boolean.zigbee_permit_join].", "natural_language": { "trigger": "When the Zigbee permit join timer finishes.", "conditions": "There are no conditions for this automation.", "action": "Publishes a message to disable Zigbee device joining via MQTT and turns off the Zigbee permit join status indicator." }, "human_like": "Automatically disables Zigbee device joining when the permit join timer expires.", "complexity": "low" } } ]