[ { "id": "turn_on_alarm", "result": { "structured": "TRIGGER: When alarm gateway button [input_boolean.alarm_gateway_button] turns on. CONDITIONS: None. ACTIONS: First, create a snapshot scene named 'before_alarm_on' capturing the state of gateway light [light.gateway_light_04cf8cabd77b]. Then, in parallel, run three scripts: alarm gateway light script [script.alarm_gateway_light], alarm gateway sound script [script.alarm_gateway_sound], and alarm tts yandex stations script [script.alarm_tts_yandex_stations]. Finally, start alarm gateway sound timer [timer.alarm_gateway_sound] for a duration of 1800 seconds (30 minutes).", "natural_language": { "trigger": "When the alarm gateway button [input_boolean.alarm_gateway_button] is turned on.", "conditions": "There are no conditions that need to be met; the automation runs immediately upon the trigger.", "action": "First, it saves the current state of the gateway light [light.gateway_light_04cf8cabd77b] into a scene snapshot called 'before_alarm_on'. Then, it simultaneously activates three scripts: the alarm gateway light script [script.alarm_gateway_light], the alarm gateway sound script [script.alarm_gateway_sound], and the alarm tts yandex stations script [script.alarm_tts_yandex_stations]. Finally, it starts a 30-minute countdown on the alarm gateway sound timer [timer.alarm_gateway_sound]." }, "human_like": "Activates the alarm system by saving the current light state, turning on alarm lights and sounds, and starting a 30-minute timer when the alarm button is pressed.", "complexity": "medium" } }, { "id": "turn_off_alarm", "result": { "structured": "TRIGGER: When alarm gateway button [input_boolean.alarm_gateway_button] turns off. CONDITIONS: None. ACTIONS: Execute all actions in parallel: 1. Turn off alarm gateway light script [script.alarm_gateway_light]. 2. Turn off alarm gateway sound script [script.alarm_gateway_sound]. 3. Turn off alarm tts yandex stations script [script.alarm_tts_yandex_stations]. 4. Turn off gateway light [light.gateway_light_04cf8cabd77b]. 5. Stop ringtone on Xiaomi Aqara gateway (mac: secret gateway1_mac). 6. Cancel alarm gateway sound timer [timer.alarm_gateway_sound]. 7. If dynamic group gateway alarm last state disarmed [group.dynamic_group_gateway_alarm_last_state_disarmed] exists, then for all entities in that group: arm away, then disarm, then remove the group. 8. If dynamic group gateway alarm last state armed away [group.dynamic_group_gateway_alarm_last_state_armed_away] exists, then for all entities in that group: disarm, then arm away, then remove the group. After parallel actions, turn on scene before alarm on [scene.before_alarm_on].", "natural_language": { "trigger": "When the alarm gateway button [input_boolean.alarm_gateway_button] is turned off.", "conditions": "There are no conditions; the automation runs immediately when triggered.", "action": "The automation performs several actions simultaneously: it stops the alarm gateway light script [script.alarm_gateway_light], the alarm gateway sound script [script.alarm_gateway_sound], and the alarm tts yandex stations script [script.alarm_tts_yandex_stations]. It also turns off the gateway light [light.gateway_light_04cf8cabd77b], stops the ringtone on the Xiaomi Aqara gateway, and cancels the alarm gateway sound timer [timer.alarm_gateway_sound]. Additionally, if a group named dynamic group gateway alarm last state disarmed [group.dynamic_group_gateway_alarm_last_state_disarmed] exists, it will arm away and then immediately disarm all alarm panels in that group before removing the group. Similarly, if a group named dynamic group gateway alarm last state armed away [group.dynamic_group_gateway_alarm_last_state_armed_away] exists, it will disarm and then arm away all alarm panels in that group before removing the group. Finally, after all parallel actions are complete, it restores a previous state by turning on the scene before alarm on [scene.before_alarm_on]." }, "human_like": "Stops all alarm-related sounds, lights, and scripts when the alarm button is turned off, and restores the previous scene.", "complexity": "high" } }, { "id": "alarm_gateway_stop_ringtone_timer", "result": { "structured": "TRIGGER: When alarm gateway sound timer [timer.alarm_gateway_sound] finishes. CONDITIONS: alarm gateway button [input_boolean.alarm_gateway_button] is on. ACTIONS: Stop alarm gateway sound script [script.alarm_gateway_sound] AND Stop alarm tts yandex stations script [script.alarm_tts_yandex_stations] AND Stop the ringtone on the Xiaomi Aqara gateway with the specified MAC address.", "natural_language": { "trigger": "When the alarm gateway sound timer [timer.alarm_gateway_sound] completes its countdown.", "conditions": "The alarm gateway button [input_boolean.alarm_gateway_button] must be in the 'on' state.", "action": "Stops the alarm gateway sound script [script.alarm_gateway_sound], stops the alarm tts yandex stations script [script.alarm_tts_yandex_stations], and sends a command to stop the ringtone on the Xiaomi Aqara gateway." }, "human_like": "Stops the alarm sound and TTS announcements on the gateway and speakers when a timer finishes, provided the alarm is active.", "complexity": "low" } }, { "id": "smoke detector alarm to gateway", "result": { "structured": "TRIGGER: When smoke sensor 1 [binary_sensor.0x158d0003943639_smoke] OR smoke sensor 2 [binary_sensor.0x158d00039a8358_smoke] OR smoke sensor 3 [binary_sensor.0x158d00039d9398_smoke] OR smoke sensor 4 [binary_sensor.0x158d00045ca483_smoke] OR smoke sensor 5 [binary_sensor.0x00158d00045cd551_smoke] changes state to 'on'. CONDITIONS: alarm gateway button [input_boolean.alarm_gateway_button] is 'off'. ACTIONS: Turn on alarm gateway button [input_boolean.alarm_gateway_button].", "natural_language": { "trigger": "When any of the five smoke sensors (smoke sensor 1, smoke sensor 2, smoke sensor 3, smoke sensor 4, or smoke sensor 5) detects smoke and changes its state to 'on'.", "conditions": "The automation only proceeds if the alarm gateway button is currently turned off.", "action": "It turns on the alarm gateway button." }, "human_like": "When any smoke detector detects smoke, it triggers the alarm gateway button to turn on, provided the button wasn't already active.", "complexity": "low" } }, { "id": "smoke detector stop alarm to gateway", "result": { "structured": "TRIGGER: When any of the following smoke sensors changes from 'on' to 'off': smoke sensor 1 [binary_sensor.0x158d0003943639_smoke], smoke sensor 2 [binary_sensor.0x158d00039a8358_smoke], smoke sensor 3 [binary_sensor.0x158d00039d9398_smoke], smoke sensor 4 [binary_sensor.0x158d00045ca483_smoke], or smoke sensor 5 [binary_sensor.0x00158d00045cd551_smoke]. CONDITIONS: smoke sensor 1 [binary_sensor.0x158d0003943639_smoke] is off AND smoke sensor 2 [binary_sensor.0x158d00039a8358_smoke] is off AND smoke sensor 3 [binary_sensor.0x158d00039d9398_smoke] is off AND smoke sensor 4 [binary_sensor.0x158d00045ca483_smoke] is off AND smoke sensor 5 [binary_sensor.0x00158d00045cd551_smoke] is off AND alarm gateway button [input_boolean.alarm_gateway_button] is on. ACTIONS: Turn off alarm gateway button [input_boolean.alarm_gateway_button].", "natural_language": { "trigger": "The automation triggers when any one of the five listed smoke sensors stops detecting smoke, meaning its state changes from 'on' to 'off'.", "conditions": "All five smoke sensors must be in the 'off' state, indicating no smoke is detected by any of them. Additionally, the alarm gateway button [input_boolean.alarm_gateway_button] must be in the 'on' state.", "action": "The automation turns off the alarm gateway button [input_boolean.alarm_gateway_button]." }, "human_like": "Turns off the alarm gateway button when all smoke sensors have cleared and are no longer detecting smoke.", "complexity": "medium" } }, { "id": "door and motion alarm to gateway", "result": { "structured": "TRIGGER: When any of the following sensors change state to 'on': motion sensor 1 [binary_sensor.0x158d00054b8d72_motion] OR motion sensor 2 [binary_sensor.0x158d000566bde7_motion] OR motion sensor 3 [binary_sensor.0x158d0003953ee9_motion] OR contact sensor [binary_sensor.0x158d000359304c_contact] OR window childrens room group [binary_sensor.window_childrens_room_group] OR window bed room group [binary_sensor.window_bed_room_group] OR window kitchen group [binary_sensor.window_kitchen_group] OR window living room group [binary_sensor.window_living_room_group]. OR When illuminance sensor 1 [sensor.0x158d00054b8d72_illuminance] OR illuminance sensor 2 [sensor.0x158d000566bde7_illuminance] changes state. CONDITIONS: shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is armed_away AND alarm gateway button [input_boolean.alarm_gateway_button] is off. ACTIONS: Turn on alarm gateway button [input_boolean.alarm_gateway_button].", "natural_language": { "trigger": "The automation triggers when any of the motion sensors, the contact sensor, or any of the window group sensors detect activity (change to 'on'). It also triggers when either of the two illuminance sensors reports a change in light level.", "conditions": "For the automation to proceed, the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be in the 'armed_away' mode, and the alarm gateway button [input_boolean.alarm_gateway_button] must currently be off.", "action": "It activates the alarm gateway by turning on the alarm gateway button [input_boolean.alarm_gateway_button]." }, "human_like": "When the house alarm is armed away, this automation activates a gateway alert if any motion, door/window contact, or light level change is detected.", "complexity": "medium" } }, { "id": "turn_off_alarm_disarmed_control_panel", "result": { "structured": "TRIGGER: When shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] changes to disarmed OR when wireless switch action [sensor.0x158d0003a360b6_action] changes to hold. CONDITIONS: alarm gateway button [input_boolean.alarm_gateway_button] is on. ACTIONS: Turn off alarm gateway button [input_boolean.alarm_gateway_button].", "natural_language": { "trigger": "When the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is disarmed, or when the wireless switch action [sensor.0x158d0003a360b6_action] reports a hold action.", "conditions": "The alarm gateway button [input_boolean.alarm_gateway_button] must be currently turned on.", "action": "Turns off the alarm gateway button [input_boolean.alarm_gateway_button]." }, "human_like": "Turns off the alarm gateway button when the alarm is disarmed or a wireless switch is held.", "complexity": "low" } }, { "id": "wireless switch many tap alarm to gateway", "result": { "structured": "TRIGGER: When wireless switch action [sensor.0x158d0003a360b6_action] changes to 'many'. CONDITIONS: alarm gateway button [input_boolean.alarm_gateway_button] is off. ACTIONS: 1. Set variable sm_g973f_rezhim_ne_bespokoit to the state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor]. 2. If sm_g973f_rezhim_ne_bespokoit equals 'off', then: a. Send command 'off' to mobile app sm_g973f via notify.mobile_app_sm_g973f. b. Wait for state change of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] for up to 5 seconds. 3. Set variable sm_g973f_rezhim_zvonka to the state of ringer mode [sensor.sm_g973f_ringer_mode]. 4. If sm_g973f_rezhim_zvonka equals 'normal', then send command 'normal' via notify.notify. 5. Execute in parallel: a. Turn on alarm gateway button [input_boolean.alarm_gateway_button]. b. Send a Telegram message with alarm emoji and text to secret telegram_all_chat_id. c. Send a high-priority notification with title '🚨 Сигнализация' and message about button press in children's room via notify.notify, including an action to stop the alarm. d. Send an SMS via notify.huawei_lte to secret sms_phone_all with the alarm message. 6. If sm_g973f_rezhim_zvonka equals 'normal', then send command with value sm_g973f_rezhim_zvonka to mobile app sm_g973f via notify.mobile_app_sm_g973f. 7. If sm_g973f_rezhim_ne_bespokoit equals 'off', then send command with value sm_g973f_rezhim_ne_bespokoit to mobile app sm_g973f via notify.mobile_app_sm_g973f.", "natural_language": { "trigger": "When the wireless switch action [sensor.0x158d0003a360b6_action] in the children's room reports a 'many' tap action.", "conditions": "The alarm gateway button [input_boolean.alarm_gateway_button] must be in the off state.", "action": "First, it checks the current do not disturb and ringer mode settings on a mobile device. If do not disturb is off, it temporarily turns it off via a mobile app command and waits for confirmation. If the ringer mode is normal, it sends a command to ensure it's set to normal. Then, it simultaneously activates the alarm gateway button, sends a Telegram alert to a specified chat, sends a high-priority mobile notification with an option to silence the alarm, and sends an SMS alert. Finally, it restores the original ringer mode and do not disturb settings on the mobile device if they were changed." }, "human_like": "Triggers an alarm notification via multiple channels when a specific wireless switch is tapped multiple times in the children's room, ensuring mobile device settings are temporarily adjusted for the alert.", "complexity": "high" } }, { "id": "mobile app telegram notification action turn off alarm", "result": { "structured": "TRIGGER: When a mobile app notification action event occurs with action 'stop_alarm' OR When a telegram callback event occurs with data '/stop_alarm'. ACTIONS: First, if alarm gateway button [input_boolean.alarm_gateway_button] is on, turn it off. Second, if the trigger was the telegram callback event, delete the associated Telegram message and send a callback answer message 'Выключили сигнализацию'.", "natural_language": { "trigger": "When a mobile app notification action with the 'stop_alarm' action is received, or when a Telegram callback with the command '/stop_alarm' is received.", "conditions": "There are no explicit conditions; actions are executed based on the trigger type and the state of the alarm gateway button.", "action": "If the alarm gateway button [input_boolean.alarm_gateway_button] is on, it will be turned off. Additionally, if the trigger was the Telegram callback, the associated Telegram message will be deleted and a confirmation message 'Выключили сигнализацию' (Turned off the alarm) will be sent as a callback answer." }, "human_like": "Turns off the alarm gateway button when a 'stop_alarm' action is received from a mobile app notification or a Telegram callback, and provides feedback in Telegram.", "complexity": "medium" } }, { "id": "main gateway arm dissarm to others gw", "result": { "structured": "TRIGGER: When shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] changes to armed_away OR When shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] changes to disarmed. CONDITIONS: None. ACTIONS: If the trigger was the 'armed' id (state change to armed_away), call service alarm_control_panel.alarm_arm_away on alarm gateway 1 [alarm_control_panel.54ef44315770_alarm], alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm], and alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm]. If the trigger was the state change to disarmed, call service alarm_control_panel.alarm_disarm on the same three alarm gateways.", "natural_language": { "trigger": "When the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is armed to 'away' mode, or when it is disarmed.", "conditions": "There are no conditions for this automation.", "action": "Depending on which trigger occurred, it will either arm or disarm three other alarm gateways. If the main alarm was armed to 'away', it sends an arm command to alarm gateway 1 [alarm_control_panel.54ef44315770_alarm], alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm], and alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm]. If the main alarm was disarmed, it sends a disarm command to the same three gateways." }, "human_like": "This automation syncs the arming and disarming state of the main alarm panel with three other alarm gateways.", "complexity": "low" } }, { "id": "smoke detector alarm to turn off all", "result": { "structured": "TRIGGER: When smoke sensor 1 [binary_sensor.0x158d0003943639_smoke] changes to on OR smoke sensor 2 [binary_sensor.0x158d00039a8358_smoke] changes to on OR smoke sensor 3 [binary_sensor.0x158d00039d9398_smoke] changes to on OR smoke sensor 4 [binary_sensor.0x158d00045ca483_smoke] changes to on OR smoke sensor 5 [binary_sensor.0x00158d00045cd551_smoke] changes to on. CONDITIONS: None. ACTIONS: Turn off all entities belonging to the group entity ids for turn off by smoke detector [group.entity_ids_for_turn_off_by_smoke_detector].", "natural_language": { "trigger": "When any of the five smoke sensors (smoke sensor 1, smoke sensor 2, smoke sensor 3, smoke sensor 4, or smoke sensor 5) detects smoke and changes its state to 'on'.", "conditions": "There are no additional conditions that must be met.", "action": "Turn off all devices or entities that are members of the group named 'entity ids for turn off by smoke detector'." }, "human_like": "Turns off a predefined set of devices when any smoke alarm is triggered.", "complexity": "low" } }, { "id": "main gateway arm dissarm from nfc tag hallway", "result": { "structured": "TRIGGER: When an NFC tag with ID 73aef2e2-722b-418d-b20a-24e84eda330e is scanned by device perenio petra01 kitchen [device_id: f4de6186902849d0845c4e2552d3531d]. CONDITIONS: The automation's own entity (this.entity_id) has a 'current' attribute equal to 0. ACTIONS: If shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is disarmed, then wait up to 15 seconds for the same NFC tag to be scanned again. If the tag is not scanned again within the timeout, send a Telegram message '🔇 Отменено включение сигнализации' to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. If the tag is scanned again within the timeout, arm the alarm in away mode via shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]. If shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is NOT disarmed, disarm the alarm via shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm].", "natural_language": { "trigger": "When a specific NFC tag is scanned using the perenio petra01 kitchen device.", "conditions": "The automation checks that its own internal counter (the 'current' attribute) is set to zero.", "action": "If the shliuza alarm control panel is currently disarmed, the system waits for a second scan of the same NFC tag within 15 seconds. If the second scan does not occur, a cancellation message is sent via Telegram. If the second scan does occur, the alarm is armed in 'away' mode. If the alarm is not in a disarmed state when the tag is first scanned, the alarm is immediately disarmed." }, "human_like": "Allows arming or disarming the house alarm by scanning an NFC tag twice within 15 seconds, with a confirmation step to prevent accidental activation.", "complexity": "medium" } }, { "id": "gateway alarm to turn on to all gateways", "result": { "structured": "TRIGGER: When alarm gateway 1 [alarm_control_panel.54ef44315770_alarm] OR alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm] OR alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm] changes to state 'triggered' OR when alarm gateway button [input_boolean.alarm_gateway_button] changes to state 'on'. CONDITIONS: The time elapsed since this automation was last triggered is greater than 5 seconds. ACTIONS: Set a variable 'entities' to a list of all alarm control panel entities (excluding shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]) that are in state 'armed_away' OR 'disarmed'. Then, in parallel: 1) If the 'entities' list contains at least one entity, trigger the alarm for all entities in that list. 2) If alarm gateway button [input_boolean.alarm_gateway_button] is 'off', turn it on.", "natural_language": { "trigger": "The automation is triggered when any of the three alarm gateways (alarm gateway 1 [alarm_control_panel.54ef44315770_alarm], alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm], or alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm]) becomes triggered, or when the alarm gateway button [input_boolean.alarm_gateway_button] is turned on.", "conditions": "The automation will only proceed if it has not been triggered within the last 5 seconds, preventing rapid repeated execution.", "action": "First, the automation creates a list of all alarm control panels that are currently armed away or disarmed, but excludes the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]. Then, it performs two actions in parallel: if the list contains any alarms, it triggers all of them. Simultaneously, if the alarm gateway button [input_boolean.alarm_gateway_button] is off, it is turned on." }, "human_like": "This automation triggers other alarm panels and ensures a button is on when any gateway alarm is activated, with a cooldown to prevent repeats.", "complexity": "high" } }, { "id": "input number target humidity cb1 changed", "result": { "structured": "TRIGGER: When humidifier cb1 target humidity input [input_number.zhimi_humidifier_cb1_target_humidity] changes state. CONDITIONS: None. ACTIONS: Set the target humidity of humidifier cb1 [humidifier.zhimi_humidifier_cb1] to the current integer value of humidifier cb1 target humidity input [input_number.zhimi_humidifier_cb1_target_humidity].", "natural_language": { "trigger": "Whenever the value of the humidifier cb1 target humidity input [input_number.zhimi_humidifier_cb1_target_humidity] changes.", "conditions": "There are no conditions that must be met.", "action": "Sets the target humidity level of the humidifier cb1 [humidifier.zhimi_humidifier_cb1] to match the new value from the input number." }, "human_like": "Syncs the humidifier's target humidity setting with a user-adjustable input number.", "complexity": "low" } }, { "id": "sensor target humidity cb1 changed state", "result": { "structured": "TRIGGER: When humidifier cb1 target humidity sensor [sensor.zhimi_humidifier_cb1_target_humidity] changes state. CONDITIONS: The new state is defined AND the new state is not 'unknown', 'unavailable', 'none', or null AND the new state is different from the previous state. ACTIONS: Set humidifier cb1 target humidity input [input_number.zhimi_humidifier_cb1_target_humidity] to the new state's integer value; if the integer conversion results in 0, set it to 40 instead.", "natural_language": { "trigger": "Whenever the humidifier cb1 target humidity sensor [sensor.zhimi_humidifier_cb1_target_humidity] reports a change in its state.", "conditions": "The new state value must be a valid, defined value (not 'unknown', 'unavailable', 'none', or null) and must be different from the previous state value.", "action": "Updates the humidifier cb1 target humidity input [input_number.zhimi_humidifier_cb1_target_humidity] to match the new sensor value. If the new value converts to an integer of 0, it sets the input to 40 instead." }, "human_like": "Keeps the humidifier's target humidity input number synchronized with its sensor, ensuring valid values are used.", "complexity": "medium" } }, { "id": "input number target humidity ca4 changed", "result": { "structured": "TRIGGER: When humidifier ca4 target humidity input [input_number.zhimi_humidifier_ca4_target_humidity] changes state. CONDITIONS: None. ACTIONS: Set the target humidity of humidifier ca4 [humidifier.zhimi_humidifier_ca4] to the current numeric value of humidifier ca4 target humidity input [input_number.zhimi_humidifier_ca4_target_humidity].", "natural_language": { "trigger": "Whenever the value of the humidifier ca4 target humidity input [input_number.zhimi_humidifier_ca4_target_humidity] changes.", "conditions": "There are no conditions that must be met.", "action": "Sets the target humidity level of the humidifier ca4 [humidifier.zhimi_humidifier_ca4] to match the new value from the input number." }, "human_like": "Syncs the humidifier's target humidity setting whenever the user adjusts the corresponding input number.", "complexity": "low" } }, { "id": "sensor target humidity ca4 changed state", "result": { "structured": "TRIGGER: When humidifier ca4 target humidity sensor [sensor.zhimi_humidifier_ca4_target_humidity] changes state. CONDITIONS: The new state is defined, is not in the list ['unknown', 'unavailable', 'none', none, null], and is different from the previous state. ACTIONS: Set humidifier ca4 target humidity input [input_number.zhimi_humidifier_ca4_target_humidity] to the integer value of the new state if it is non-zero, otherwise set it to 40.", "natural_language": { "trigger": "Whenever the humidifier ca4 target humidity sensor [sensor.zhimi_humidifier_ca4_target_humidity] reports a new state.", "conditions": "The new state must be a valid, defined value (not 'unknown', 'unavailable', 'none', or similar) and must be different from the previous state.", "action": "Sets the humidifier ca4 target humidity input [input_number.zhimi_humidifier_ca4_target_humidity] to the new humidity value. If the new value is zero, it defaults to 40 instead." }, "human_like": "Syncs the target humidity setting from the humidifier sensor to a Home Assistant input, ensuring a valid default if the sensor reports zero.", "complexity": "medium" } }, { "id": "air humidifier day and night speed", "result": { "structured": "TRIGGER: When the time is exactly 22:00:00 OR when the time is exactly 08:00:00. CONDITIONS: None. ACTIONS: In parallel, for humidifier cb1 [humidifier.zhimi_humidifier_cb1], if it is on, set its speed to 'Auto' if the current time is between 08:00:00 (inclusive) and 22:00:00 (exclusive), otherwise set it to 'Silent'. In parallel, for humidifier ca4 [humidifier.zhimi_humidifier_ca4], if it is on, set its speed to 'Auto' if the current time is between 08:00:00 (inclusive) and 22:00:00 (exclusive), otherwise set it to 'Low'.", "natural_language": { "trigger": "The automation runs at two specific times: at 10:00 PM (22:00:00) and at 8:00 AM (08:00:00).", "conditions": "There are no conditions that must be met before the actions are performed.", "action": "The automation performs two independent checks and actions simultaneously. First, it checks if the humidifier cb1 [humidifier.zhimi_humidifier_cb1] is turned on. If it is, it sets its operating mode to 'Auto' if the current time is between 8 AM and 10 PM, otherwise it sets it to 'Silent'. Second, it checks if the humidifier ca4 [humidifier.zhimi_humidifier_ca4] is turned on. If it is, it sets its operating mode to 'Auto' if the current time is between 8 AM and 10 PM, otherwise it sets it to 'Low'." }, "human_like": "Automatically adjusts the fan speed of two humidifiers to a daytime 'Auto' mode and a nighttime quiet mode at 8 AM and 10 PM.", "complexity": "medium" } }, { "id": "turn on off climate devices childrens room window open close", "result": { "structured": "TRIGGER: When window childrens room group [binary_sensor.window_childrens_room_group] changes from closed (off) to open (on) AND remains open for 5 minutes OR When window childrens room group [binary_sensor.window_childrens_room_group] changes from open (on) to closed (off) AND remains closed for 1 minute 15 seconds. CONDITIONS: (The trigger state is 'on') OR (auto triggered fan window childrens room [input_boolean.auto_triggered_fan_window_childrens_room] is on) OR (auto triggered valve window childrens room [input_boolean.auto_triggered_valve_window_childrens_room] is on). ACTIONS: Execute two parallel sequences: Sequence 1 for humidifier: If humidifier ca4 [humidifier.zhimi_humidifier_ca4] is unknown or unavailable, wait up to 75 seconds for it to become available. Then, if (trigger state is 'on' AND humidifier ca4 is on) OR (trigger state is 'off' AND humidifier ca4 is off AND auto triggered fan window childrens room is on), toggle the humidifier (turn off if window opened, turn on if window closed) and toggle auto triggered fan window childrens room. Otherwise, if trigger state is 'off' AND auto triggered fan window childrens room is on, turn off auto triggered fan window childrens room. Sequence 2 for climate: If (trigger state is 'on' AND childrens room valve with thermostat [climate.0x5c0272fffec89454] is in auto mode) OR (trigger state is 'off' AND childrens room valve with thermostat is off AND auto triggered valve window childrens room is on), set the climate HVAC mode (off if window opened, auto if window closed), set auto triggered valve window childrens room (on if window opened, off if window closed), and set the climate preset mode to manual. Otherwise, if trigger state is 'off' AND childrens room valve with thermostat is in auto mode AND auto triggered valve window childrens room is on, turn off auto triggered valve window childrens room.", "natural_language": { "trigger": "The automation triggers when the window childrens room group [binary_sensor.window_childrens_room_group] has been open for five minutes after being closed, or when it has been closed for one minute and fifteen seconds after being open.", "conditions": "The automation proceeds only if the window is now open, or if the auto triggered fan window childrens room [input_boolean.auto_triggered_fan_window_childrens_room] is on, or if the auto triggered valve window childrens room [input_boolean.auto_triggered_valve_window_childrens_room] is on.", "action": "The automation runs two sets of actions in parallel. For the humidifier: It first waits for the humidifier ca4 [humidifier.zhimi_humidifier_ca4] to become available if needed. If the window opened and the humidifier is on, or the window closed and the humidifier is off while the fan automation flag is on, it toggles the humidifier's power and toggles the fan automation flag. If the window closed and the fan automation flag is on, it turns that flag off. For the climate valve: If the window opened and the childrens room valve with thermostat [climate.0x5c0272fffec89454] is in auto mode, or the window closed and the valve is off while the valve automation flag is on, it changes the valve's HVAC mode (turns it off for an open window, sets it to auto for a closed window), updates the valve automation flag, and sets the valve's preset to manual. If the window closed, the valve is in auto mode, and the valve automation flag is on, it turns that flag off." }, "human_like": "Automatically turns off the humidifier and heating valve when a window in the children's room is opened for a while, and turns them back on when the window is closed, using flags to track automated actions.", "complexity": "high" } }, { "id": "turn on off climate devices bed room window open close", "result": { "structured": "TRIGGER: When window bed room group [binary_sensor.window_bed_room_group] changes from closed (off) to open (on) and remains open for 5 minutes OR when window bed room group [binary_sensor.window_bed_room_group] changes from open (on) to closed (off) and remains closed for 1 minute and 15 seconds. CONDITIONS: (The trigger state is 'on') OR (auto triggered fan window bed room [input_boolean.auto_triggered_fan_window_bed_room] is on) OR (auto triggered valve window bed room [input_boolean.auto_triggered_valve_window_bed_room] is on). ACTIONS: Execute two parallel sequences. Sequence 1: If humidifier cb1 [humidifier.zhimi_humidifier_cb1] state is unknown or unavailable, wait up to 75 seconds for it to become known/available. Then, if (trigger state is 'on' AND humidifier cb1 [humidifier.zhimi_humidifier_cb1] is on) OR (trigger state is 'off' AND humidifier cb1 [humidifier.zhimi_humidifier_cb1] is off AND auto triggered fan window bed room [input_boolean.auto_triggered_fan_window_bed_room] is on), then toggle the humidifier (turn off if window opened, turn on if window closed) and toggle the auto triggered fan window bed room [input_boolean.auto_triggered_fan_window_bed_room] flag accordingly. Else, if trigger state is 'off' AND auto triggered fan window bed room [input_boolean.auto_triggered_fan_window_bed_room] is on, turn off auto triggered fan window bed room [input_boolean.auto_triggered_fan_window_bed_room]. Sequence 2: If (trigger state is 'on' AND bedroom valve with thermostat [climate.0x60a423fffe968719] is in auto mode) OR (trigger state is 'off' AND bedroom valve with thermostat [climate.0x60a423fffe968719] is off AND auto triggered valve window bed room [input_boolean.auto_triggered_valve_window_bed_room] is on), then set the HVAC mode of bedroom valve with thermostat [climate.0x60a423fffe968719] to off (if window opened) or auto (if window closed), toggle the auto triggered valve window bed room [input_boolean.auto_triggered_valve_window_bed_room] flag accordingly, and set the preset mode to manual. Else, if trigger state is 'off' AND bedroom valve with thermostat [climate.0x60a423fffe968719] is in auto mode AND auto triggered valve window bed room [input_boolean.auto_triggered_valve_window_bed_room] is on, turn off auto triggered valve window bed room [input_boolean.auto_triggered_valve_window_bed_room].", "natural_language": { "trigger": "The automation triggers when the bedroom window group [binary_sensor.window_bed_room_group] has been open for five minutes, or when it has been closed for one minute and fifteen seconds.", "conditions": "The automation proceeds only if the window is now open, or if the flag for automatically triggered fan due to window [input_boolean.auto_triggered_fan_window_bed_room] is on, or if the flag for automatically triggered valve due to window [input_boolean.auto_triggered_valve_window_bed_room] is on.", "action": "The automation runs two sets of actions in parallel. For the humidifier, it first waits if the device is unavailable. It then toggles the humidifier cb1 [humidifier.zhimi_humidifier_cb1] and its associated flag if specific state combinations are met; otherwise, it may just turn off the flag. For the thermostat, it changes the HVAC mode of the bedroom valve with thermostat [climate.0x60a423fffe968719] and its associated flag based on the window state and the device's current mode, and also sets the preset to manual. In some cases, it may only turn off the associated flag." }, "human_like": "Automatically turns off the humidifier and heating when a bedroom window is opened for a while, and turns them back on when the window is closed, keeping track of which actions were triggered automatically.", "complexity": "high" } }, { "id": "turn on off climate devices kitchen window open close", "result": { "structured": "TRIGGER: When window kitchen group [binary_sensor.window_kitchen_group] changes from closed (off) to open (on) AND remains for 5 minutes OR When window kitchen group [binary_sensor.window_kitchen_group] changes from open (on) to closed (off) AND remains for 1 minute 15 seconds. CONDITIONS: (trigger.to_state.state is 'on') OR (auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen] is on) OR (auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen] is on). ACTIONS: Execute two parallel action groups. GROUP 1: If (trigger.to_state.state is 'on' AND kitchen valve with thermostat [climate.0x5c0272fffe8de819] is in auto mode) OR (trigger.to_state.state is 'off' AND kitchen valve with thermostat [climate.0x5c0272fffe8de819] is off AND auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen] is on) THEN set kitchen valve with thermostat [climate.0x5c0272fffe8de819] HVAC mode to off (if window opened) or auto (if window closed), toggle auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen] (turn on if window opened, turn off if window closed), and set kitchen valve with thermostat [climate.0x5c0272fffe8de819] preset mode to manual. ELSE IF trigger.to_state.state is 'off' AND kitchen valve with thermostat [climate.0x5c0272fffe8de819] is in auto mode AND auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen] is on THEN turn off auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen]. GROUP 2: If (trigger.to_state.state is 'on' AND devireg k [climate.devireg_k] is in heat mode) OR (trigger.to_state.state is 'off' AND devireg k [climate.devireg_k] is off AND auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen] is on) THEN set devireg k [climate.devireg_k] HVAC mode to off (if window opened) or heat (if window closed) AND toggle auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen] (turn on if window opened, turn off if window closed). ELSE IF trigger.to_state.state is 'off' AND devireg k [climate.devireg_k] is on AND auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen] is on THEN turn off auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen].", "natural_language": { "trigger": "When the window kitchen group [binary_sensor.window_kitchen_group] changes from closed to open and stays open for five minutes, or when it changes from open to closed and stays closed for one minute and fifteen seconds.", "conditions": "The automation runs only if the window is currently reported as open, or if the auto triggered valve window kitchen [input_boolean.auto_triggered_valve_window_kitchen] is on, or if the auto triggered heating floor window kitchen [input_boolean.auto_triggered_heating_floor_window_kitchen] is on.", "action": "The automation performs two sets of actions in parallel. The first set manages the kitchen valve with thermostat [climate.0x5c0272fffe8de819]. If the window opens while the thermostat is in auto mode, or if the window closes while the thermostat is off and the auto-triggered valve flag is on, it will turn the thermostat off (if the window opened) or set it to auto (if the window closed), toggle the corresponding auto-triggered flag, and set the thermostat's preset to manual. If the window closes while the thermostat is in auto mode and the auto-triggered flag is on, it simply turns off that flag. The second set manages the devireg k [climate.devireg_k] underfloor heating. If the window opens while it is in heat mode, or if the window closes while it is off and the auto-triggered heating floor flag is on, it will turn the heating off (if the window opened) or set it to heat (if the window closed) and toggle the corresponding flag. If the window closes while the heating is on and the auto-triggered flag is on, it simply turns off that flag." }, "human_like": "Automatically turns off heating and thermostats when the kitchen window is opened for a while, and turns them back on when the window is closed, while keeping track of which devices were auto-controlled.", "complexity": "high" } }, { "id": "turn on off climate devices living room window open close", "result": { "structured": "TRIGGER: When window living room group [binary_sensor.window_living_room_group] changes from closed (off) to open (on) AND remains open for 5 minutes OR When window living room group [binary_sensor.window_living_room_group] changes from open (on) to closed (off) AND remains closed for 1 minute 15 seconds. CONDITIONS: (window living room group [binary_sensor.window_living_room_group] is open (on) OR auto triggered ac window living room [input_boolean.auto_triggered_ac_window_living_room] is on OR auto triggered valve window living room [input_boolean.auto_triggered_valve_window_living_room] is on). ACTIONS: Choose first matching sequence: IF (window living room group [binary_sensor.window_living_room_group] is open AND avatto living room ac [climate.avatto_living_room_ac] is in cool mode) OR (window living room group [binary_sensor.window_living_room_group] is closed AND avatto living room ac [climate.avatto_living_room_ac] is off AND auto triggered ac window living room [input_boolean.auto_triggered_ac_window_living_room] is on) THEN Set avatto living room ac [climate.avatto_living_room_ac] HVAC mode to off if window is open, else to cool AND Toggle auto triggered ac window living room [input_boolean.auto_triggered_ac_window_living_room] (on if window open, off if window closed). ELSE IF (window living room group [binary_sensor.window_living_room_group] is closed AND avatto living room ac [climate.avatto_living_room_ac] is in cool mode AND auto triggered ac window living room [input_boolean.auto_triggered_ac_window_living_room] is on) THEN Turn off auto triggered ac window living room [input_boolean.auto_triggered_ac_window_living_room]. Choose second matching sequence: IF (window living room group [binary_sensor.window_living_room_group] is open AND living room valve with thermostat [climate.0x5c0272fffec9db22] is in auto mode) OR (window living room group [binary_sensor.window_living_room_group] is closed AND living room valve with thermostat [climate.0x5c0272fffec9db22] is off AND auto triggered valve window living room [input_boolean.auto_triggered_valve_window_living_room] is on) THEN Set living room valve with thermostat [climate.0x5c0272fffec9db22] HVAC mode to off if window is open, else to auto AND Toggle auto triggered valve window living room [input_boolean.auto_triggered_valve_window_living_room] (on if window open, off if window closed) AND Set living room valve with thermostat [climate.0x5c0272fffec9db22] preset mode to manual. ELSE IF (window living room group [binary_sensor.window_living_room_group] is closed AND living room valve with thermostat [climate.0x5c0272fffec9db22] is in auto mode AND auto triggered valve window living room [input_boolean.auto_triggered_valve_window_living_room] is on) THEN Turn off auto triggered valve window living room [input_boolean.auto_triggered_valve_window_living_room].", "natural_language": { "trigger": "The automation triggers when the living room window group sensor [binary_sensor.window_living_room_group] reports that the window has been open for five minutes, or when it reports that the window has been closed for one minute and fifteen seconds.", "conditions": "The automation only runs if the window is currently open, or if either the 'auto triggered AC window living room' [input_boolean.auto_triggered_ac_window_living_room] or the 'auto triggered valve window living room' [input_boolean.auto_triggered_valve_window_living_room] helper switch is turned on.", "action": "The automation performs two separate checks for the air conditioner and the thermostat valve. For the air conditioner: If the window opens while the AC is cooling, it turns the AC off and marks that it was automatically triggered. If the window closes and the AC was previously turned off by this automation, it turns the AC back to cooling and clears the trigger flag. If the window closes but the AC is still cooling (meaning it wasn't turned off by the automation), it simply clears the trigger flag. For the thermostat valve: If the window opens while the valve is in auto mode, it turns the valve off, sets its preset to manual, and marks the trigger. If the window closes and the valve was previously turned off by this automation, it sets the valve back to auto mode, sets the preset to manual, and clears the trigger flag. If the window closes but the valve is still in auto mode, it simply clears the trigger flag." }, "human_like": "Automatically turns off the living room air conditioner and thermostat valve when a window is opened for energy savings, and can turn them back on when the window is closed, keeping track of which devices were auto-controlled.", "complexity": "high" } }, { "id": "restart socket 2 for bedroom air humidifier unavailable", "result": { "structured": "TRIGGER: When humidifier cb1 [humidifier.zhimi_humidifier_cb1] changes to an unavailable state (null) OR when Home Assistant starts. CONDITIONS: (instances stoping [input_boolean.instances_stoping] is off) AND (humidifier cb1 [humidifier.zhimi_humidifier_cb1] has no value) AND (bedroom socket 2 [switch.0x60a423fffef8d41a] is on). ACTIONS: Wait up to 5 minutes for humidifier cb1 [humidifier.zhimi_humidifier_cb1] to become available (have a value). If the wait times out AND local network availability [binary_sensor.local_network_availability] is on, then turn off bedroom socket 2 [switch.0x60a423fffef8d41a], delay for 5 seconds, and turn on bedroom socket 2 [switch.0x60a423fffef8d41a].", "natural_language": { "trigger": "The automation starts when the humidifier cb1 [humidifier.zhimi_humidifier_cb1] becomes unavailable, or when Home Assistant restarts.", "conditions": "The automation only proceeds if the instances stoping [input_boolean.instances_stoping] is off, the humidifier cb1 [humidifier.zhimi_humidifier_cb1] has no value (is unavailable), and the bedroom socket 2 [switch.0x60a423fffef8d41a] is currently turned on.", "action": "First, the system waits for up to five minutes for the humidifier to become available again. If the wait times out and the local network availability [binary_sensor.local_network_availability] is on, it will power cycle the socket by turning it off, waiting five seconds, and then turning it back on." }, "human_like": "Automatically restarts the power socket for the bedroom humidifier if the device becomes unavailable and doesn't reconnect within five minutes, helping to restore its connection.", "complexity": "medium" } }, { "id": "notification public ip compare debug", "result": { "structured": "TRIGGER: When myip keenetic [sensor.myip_keenetic] changes state. CONDITIONS: (The previous state of myip keenetic [sensor.myip_keenetic] is not in the list ['unknown', 'unavailable', 'none', None, null, '']) AND (The new state of myip keenetic [sensor.myip_keenetic] is not in the list ['unknown', 'unavailable', 'none', None, null, '']) AND (The previous state of myip keenetic [sensor.myip_keenetic] equals the new state of myip keenetic [sensor.myip_keenetic]) AND (The new state of myip keenetic [sensor.myip_keenetic] equals the current state of myip [sensor.myip]). ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message stating that the external IP address from keendns does not equal the physical IP address.", "natural_language": { "trigger": "Whenever the myip keenetic [sensor.myip_keenetic] sensor updates its state.", "conditions": "The automation only runs if the previous and new states of the myip keenetic [sensor.myip_keenetic] sensor are both valid (not 'unknown', 'unavailable', 'none', empty, or null). It also requires that the state of myip keenetic [sensor.myip_keenetic] did not actually change from its previous value, and that this stable value is different from the current state reported by the myip [sensor.myip] sensor.", "action": "Sends a debug notification via Telegram to a specific chat, indicating that the external IP address reported by the keendns service does not match the physical IP address." }, "human_like": "Sends a debug alert when the external IP address from the router's DNS service is stable but differs from the system's detected physical IP address.", "complexity": "medium" } }, { "id": "turn_on_doorbell", "result": { "structured": "TRIGGER: When doorbell action sensor [sensor.0x158d00045a78af_action] changes state. CONDITIONS: doorbell timer restart automation [timer.doorbell_timer_restart_automation] is idle AND alarm gateway button [input_boolean.alarm_gateway_button] is off AND shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is disarmed AND the new state of the trigger is not 'release', 'unavailable', 'unknown', an empty string, or 'None'. ACTIONS: Start timer doorbell timer restart automation [timer.doorbell_timer_restart_automation]. Then, in parallel: 1) Take a snapshot from hallway 1 camera [camera.hallway_1_fluent] and send it via Telegram to a secret chat. 2) Send a 5-second video stream from a specific URL via Telegram to another secret chat. 3) If the current time is between 8:00 and 21:30, stop and then play a specific ringtone on a Xiaomi Aqara gateway. 4) If light gateway toggle automation [automation.light_gateway_toggle] is not running (current attribute is 0), save the current state of gateway light [light.gateway_light_04cf8cabd77b] as a scene, then flash the light three times (orange color, 50% brightness), and finally restore the light to its saved state. 5) If the current time is between 8:00 and 21:30, use a script to announce 'Кто то звонит в дверь' (Someone is at the door) on two Yandex stations at specified volume levels.", "natural_language": { "trigger": "When the doorbell action sensor [sensor.0x158d00045a78af_action] detects a change in state.", "conditions": "The doorbell timer restart automation [timer.doorbell_timer_restart_automation] must be idle, the alarm gateway button [input_boolean.alarm_gateway_button] must be off, the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be disarmed, and the new state reported by the doorbell sensor must be a valid action (not 'release', 'unavailable', 'unknown', an empty string, or 'None').", "action": "Starts a timer to manage automation cooldown. Then, performs several actions simultaneously: captures a photo from the hallway camera and sends a notification to a Telegram group; sends a short video stream to a personal Telegram chat; if it's daytime (between 8:00 and 21:30), plays a doorbell ringtone on the smart gateway; if the hallway light automation is not active, it flashes the gateway light [light.gateway_light_04cf8cabd77b] orange three times and then restores it to its previous state; and if it's daytime, uses a text-to-speech script to announce 'Someone is at the door' on two Yandex smart speakers." }, "human_like": "When someone rings the doorbell, this automation notifies the household via photos, videos, voice announcements, a light flash, and a ringtone, provided the alarm is off and it's not a false trigger.", "complexity": "high" } }, { "id": "dynamic group sensor battery", "result": { "structured": "TRIGGER: When the Home Assistant entity registry is updated (entity_registry_updated event) OR when Home Assistant starts. CONDITIONS: None. ACTIONS: Create or update a group named dynamic group sensor battery [group.dynamic_group_sensor_battery] with icon mdi:battery-unknown. The group's member entities are dynamically determined by: all sensor entities where the device_class attribute is 'battery' AND the entity_id ends with \"_battery\" or \"_battery_level\", AND all binary_sensor entities where the device_class attribute is 'battery' AND the entity_id ends with \"_low_battery\". The resulting list of entity IDs is joined into a comma-separated string.", "natural_language": { "trigger": "The automation runs when Home Assistant first starts up, or whenever there is an update to the entity registry.", "conditions": "There are no conditions that must be met for the action to execute.", "action": "It creates or updates a group called dynamic group sensor battery [group.dynamic_group_sensor_battery] with a battery icon. The group is populated by automatically finding all sensor entities that are classified as batteries and have names ending in '_battery' or '_battery_level', and all binary sensor entities that are classified as batteries and have names ending in '_low_battery'. The list of these entities is then set as the group's members." }, "human_like": "Automatically builds a group containing all battery-level sensors whenever Home Assistant starts or the device list changes, for easy monitoring.", "complexity": "medium" } }, { "id": "dynamic group sensor linkquality", "result": { "structured": "TRIGGER: When the Home Assistant entity registry is updated (entity_registry_updated event) OR when Home Assistant starts (homeassistant start event). CONDITIONS: There exists at least one sensor entity whose entity_id ends with '_linkquality' or '_zigbee' (case-insensitive). ACTIONS: Create or update a group named 'dynamic group sensor linkquality' [group.dynamic_group_sensor_linkquality] with the icon 'mdi:signal', containing all sensor entities whose entity_id ends with '_linkquality' or '_zigbee'.", "natural_language": { "trigger": "This automation runs either when Home Assistant first starts up, or whenever the entity registry is updated (for example, when a new device is added or removed).", "conditions": "The automation only proceeds if there is at least one sensor in the system whose name ends with '_linkquality' or '_zigbee'.", "action": "It creates or updates a group called 'dynamic group sensor linkquality' [group.dynamic_group_sensor_linkquality], giving it a signal icon, and populates it with all the sensor entities that have names ending in '_linkquality' or '_zigbee'." }, "human_like": "Automatically creates a group containing all Zigbee and link quality sensors, updating it whenever new sensors are added or Home Assistant restarts.", "complexity": "medium" } }, { "id": "dynamic group sensor last seen", "result": { "structured": "TRIGGER: When an entity registry update event occurs OR when Home Assistant starts. CONDITIONS: At least one sensor entity exists whose entity_id ends with '_last_seen' or '_zigbee' (case-insensitive). ACTIONS: Create or update a group named dynamic group sensor last seen [group.dynamic_group_sensor_last_seen] with the icon 'mdi:clock', containing all sensor entities whose entity_id ends with '_last_seen' or '_zigbee'.", "natural_language": { "trigger": "The automation runs either when the Home Assistant entity registry is updated, or when Home Assistant itself starts up.", "conditions": "The automation only proceeds if there is at least one sensor in the system whose name ends with '_last_seen' or '_zigbee'.", "action": "It creates or updates a group called 'dynamic group sensor last seen' [group.dynamic_group_sensor_last_seen] with a clock icon, and populates it with all the sensor entities that have names ending in '_last_seen' or '_zigbee'." }, "human_like": "Automatically builds a group containing all sensors that track 'last seen' or 'zigbee' status, updating the group whenever new sensors are added or Home Assistant restarts.", "complexity": "medium" } }, { "id": "dynamic group gateway alarm last state", "result": { "structured": "TRIGGER: When any of the alarm control panels (alarm gateway 1 [alarm_control_panel.54ef44315770_alarm], alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm], or alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm]) changes state to 'triggered' OR when alarm gateway button [input_boolean.alarm_gateway_button] turns on. CONDITIONS: (At least one alarm control panel (excluding shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]) is in state 'armed_away' OR 'disarmed') OR (The triggering entity's previous state was 'armed_away' OR 'disarmed'). ACTIONS: In parallel, run two conditional sequences. First, if the triggering entity's previous state was 'armed_away' OR at least one alarm control panel (excluding shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]) is 'armed_away', then update the dynamic group gateway alarm last state armed away [group.dynamic_group_gateway_alarm_last_state_armed_away] to include all such alarm panels and the triggering entity (if applicable), merging with existing group members. Second, if the triggering entity's previous state was 'disarmed' OR at least one alarm control panel (excluding shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]) is 'disarmed', then update the dynamic group gateway alarm last state disarmed [group.dynamic_group_gateway_alarm_last_state_disarmed] to include all such alarm panels and the triggering entity (if applicable), merging with existing group members.", "natural_language": { "trigger": "The automation runs when any of the three specific alarm gateways (alarm gateway 1, alarm gateway 2, or alarm gateway 3) enters a 'triggered' alarm state, or when the alarm gateway button is manually turned on.", "conditions": "For the automation to proceed, it requires that either at least one alarm control panel (excluding the one named shliuza alarm control panel) is currently set to either 'armed_away' or 'disarmed', or that the entity that triggered the automation was previously in either the 'armed_away' or 'disarmed' state.", "action": "The automation performs two tasks simultaneously. First, it checks if the alarm was previously 'armed_away' or if any alarm panel (excluding shliuza) is currently 'armed_away'. If so, it updates a group called 'dynamic group gateway alarm last state armed away' to list all alarm panels in that state, including the one that triggered the event if applicable, and preserves any existing members. Second, it performs a similar check for the 'disarmed' state, updating the 'dynamic group gateway alarm last state disarmed' group accordingly." }, "human_like": "Maintains dynamic groups that track which alarm gateways were last armed away or disarmed, updating these lists whenever an alarm is triggered or a manual button is pressed.", "complexity": "high" } }, { "id": "install update html5 push notifications", "result": { "structured": "TRIGGER: When an html5_notification.clicked event occurs with event_data.action equal to 'install_update'. CONDITIONS: The event's data.tag attribute has a length greater than 0. ACTIONS: Set variable 'entity' to the value of the event's data.tag with the string 'update_available_notify_' replaced by 'update.'. Then, IF the entity referenced by the variable is in state 'on' AND its attribute 'in_progress' is false, THEN call the update.install service on that entity with data.backup set to true if the entity's supported_features attribute, when formatted as a 64-bit binary string, has the fourth character from the end equal to '1'.", "natural_language": { "trigger": "When a user clicks on an HTML5 push notification where the action is 'install_update'.", "conditions": "The notification must have a tag associated with it, meaning the tag's length is greater than zero.", "action": "The automation extracts the entity ID from the notification tag, then checks if that entity is in an 'on' state and is not currently in progress. If both are true, it installs the update for that entity, creating a backup if the entity's supported features indicate it's possible." }, "human_like": "Installs a pending update when the user clicks the corresponding notification, creating a backup if the update supports it.", "complexity": "medium" } }, { "id": "open shades kitchen on outside light sensor", "result": { "structured": "TRIGGER: When outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] remains above 250 lux for 10 minutes OR When sun [sun.sun] elevation remains above 4 degrees. CONDITIONS: (Trigger is sun [sun.sun] elevation OR (Trigger is outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] AND its previous state is not 'unknown', 'unavailable', 'none', or empty AND its state changed)) AND sun [sun.sun] is rising AND No cover in cover group kitchen [cover.cover_group_kitchen] is currently open. ACTIONS: Execute script auto cover open close kitchen [script.auto_cover_open_close_kitchen] with parameters to open all covers in cover group kitchen [cover.cover_group_kitchen].", "natural_language": { "trigger": "The automation triggers when the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a light level above 250 lux for at least 10 minutes, or when the sun [sun.sun] is at an elevation above 4 degrees.", "conditions": "If the trigger is from the sun's elevation, or if the trigger is from the light sensor and its previous reading was a valid state that has now changed. Additionally, the sun must be rising, and none of the covers in the cover group kitchen [cover.cover_group_kitchen] can already be open.", "action": "Runs the script auto cover open close kitchen [script.auto_cover_open_close_kitchen] to open all the covers in the kitchen cover group." }, "human_like": "Opens the kitchen window shades when it's bright enough outside during sunrise, but only if they aren't already open.", "complexity": "medium" } }, { "id": "close shades kitchen on outside light sensor", "result": { "structured": "TRIGGER: When outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] remains below 150 lux for 10 minutes. CONDITIONS: (The trigger's from_state is not 'unknown', 'unavailable', 'none', or empty AND the trigger's from_state differs from its to_state) AND (The sun elevation [sun.sun] is less than or equal to 7 degrees, or 15 degrees if weather [weather.kotletochka_home] is 'rainy', 'pouring', 'cloudy', 'lightning', 'lightning-rainy', or 'partlycloudy') AND (The sun [sun.sun] is not rising) AND (No cover in cover group kitchen [cover.cover_group_kitchen] is currently closed). ACTIONS: Execute the auto cover open close kitchen script [script.auto_cover_open_close_kitchen] to close all covers in the group.", "natural_language": { "trigger": "When the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a light level below 150 lux for a continuous period of 10 minutes.", "conditions": "The automation checks that the sensor's previous state was valid and different from the new state. It also checks the sun's elevation, using a lower threshold of 15 degrees if the weather is cloudy or rainy, otherwise 7 degrees, and ensures the sun is not rising. Finally, it verifies that none of the covers in the kitchen cover group [cover.cover_group_kitchen] are already closed.", "action": "Runs the 'auto cover open close kitchen' script [script.auto_cover_open_close_kitchen] to close all the covers in the kitchen group." }, "human_like": "Automatically closes the kitchen shades when it gets dark outside, but only if the sun is low and the shades aren't already closed.", "complexity": "medium" } }, { "id": "close shades kitchen on sun and min outside lux", "result": { "structured": "TRIGGER: When sun [sun.sun] elevation attribute falls below 2 degrees. CONDITIONS: (outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] numeric state is less than or equal to 250) AND (sun [sun.sun] attribute 'rising' is false) AND (cover group kitchen [cover.cover_group_kitchen] group has no members in the 'closed' state). ACTIONS: Execute script auto cover open close kitchen [script.auto_cover_open_close_kitchen] with service 'cover.close_cover' on group 'cover.cover_group_kitchen' to achieve state 'closed'.", "natural_language": { "trigger": "When the sun's elevation drops below 2 degrees.", "conditions": "If the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a value of 250 lux or less, the sun is not rising, and none of the covers in the kitchen cover group [cover.cover_group_kitchen] are currently closed.", "action": "Runs the auto cover open close kitchen script [script.auto_cover_open_close_kitchen] to close all covers in the kitchen group." }, "human_like": "Automatically closes the kitchen shades when the sun is low, it's dark outside, and the shades aren't already closed.", "complexity": "medium" } }, { "id": "open shades living room on outside light sensor", "result": { "structured": "TRIGGER: When outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] remains above 250 lux for 10 minutes OR When sun [sun.sun] elevation remains above 4 degrees. CONDITIONS: ((Trigger is sun elevation) OR (Trigger is illuminance AND its previous state is not 'unknown', 'unavailable', 'none', or empty AND its state has changed)) AND (sun [sun.sun] is rising) AND (All covers in cover group living room [cover.cover_group_living_room] are not open). ACTIONS: Execute script auto cover open close living room [script.auto_cover_open_close_living_room] with service 'cover.open_cover' for group 'cover.cover_group_living_room' and target state 'open'.", "natural_language": { "trigger": "The automation triggers when the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a light level above 250 lux for at least 10 minutes, or when the sun [sun.sun] rises to an elevation above 4 degrees.", "conditions": "If the trigger is the sun elevation, or if the trigger is the illuminance sensor and its reading has changed from a valid previous state. The sun [sun.sun] must also be in the rising phase. Finally, none of the covers in the living room cover group [cover.cover_group_living_room] should already be open.", "action": "Runs the 'auto cover open close living room' script [script.auto_cover_open_close_living_room] to open all the covers in the living room group." }, "human_like": "Automatically opens the living room shades when it's bright enough outside and the sun is rising, but only if the shades aren't already open.", "complexity": "medium" } }, { "id": "close shades living room on outside light sensor", "result": { "structured": "TRIGGER: When outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] remains below 150 lux for 10 minutes. CONDITIONS: (The trigger's previous state is not 'unknown', 'unavailable', 'none', or empty AND the trigger's previous state differs from its new state) AND (The sun elevation [sun.sun] is less than or equal to 7 degrees, or 15 degrees if weather [weather.kotletochka_home] is 'rainy', 'pouring', 'cloudy', 'lightning', 'lightning-rainy', or 'partlycloudy') AND (The sun [sun.sun] is not rising) AND (No cover in cover group living room [cover.cover_group_living_room] is currently closed). ACTIONS: Execute script auto cover open close living room [script.auto_cover_open_close_living_room] with parameters to close all covers in the group.", "natural_language": { "trigger": "When the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a light level below 150 lux for a continuous period of 10 minutes.", "conditions": "The automation checks that the sensor's state change is valid, meaning its previous state was not an invalid or placeholder value and it actually changed. It also requires that the sun is below a certain elevation in the sky; this threshold is 15 degrees if the weather [weather.kotletochka_home] is rainy, cloudy, or similar, otherwise it's 7 degrees. Additionally, the sun must not be rising, and at least one cover in the living room cover group [cover.cover_group_living_room] must not already be closed.", "action": "Runs the script 'auto cover open close living room' [script.auto_cover_open_close_living_room] to close all the covers in the living room group." }, "human_like": "Automatically closes the living room shades when it gets dark outside, but only if the sun is low and not rising, and the shades aren't already closed.", "complexity": "medium" } }, { "id": "close shades living room on sun and min outside lux", "result": { "structured": "TRIGGER: When sun [sun.sun] elevation attribute falls below 2 degrees. CONDITIONS: (outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] value is less than or equal to 250) AND (sun [sun.sun] is not rising) AND (no cover in cover group living room [cover.cover_group_living_room] is currently closed). ACTIONS: Execute script auto cover open close living room [script.auto_cover_open_close_living_room] with parameters: service to close covers and group name of cover group living room, target state closed.", "natural_language": { "trigger": "The automation triggers when the sun's elevation drops below 2 degrees.", "conditions": "All of the following must be true: the outside illuminance sensor [sensor.0x54ef4410000ebba0_illuminance] reports a value of 250 lux or less, the sun [sun.sun] is not in the rising phase (meaning it is setting), and none of the covers in the living room cover group [cover.cover_group_living_room] are already in the closed position.", "action": "It runs the 'auto cover open close living room' script [script.auto_cover_open_close_living_room] to close all the covers in the living room group." }, "human_like": "Automatically closes the living room shades when the sun is low, it's dark enough outside, and the shades aren't already closed.", "complexity": "medium" } }, { "id": "reply pong to ping", "result": { "structured": "TRIGGER: When a Telegram command event with command '/ping' is received. CONDITIONS: None. ACTIONS: In parallel: send a notification via notify.notify with title 'ℹ️ Check notification's' and message 'pong', delete the Telegram message that triggered the event, send a Telegram message 'ℹ️ pong' to the same chat, send an SMS via notify.huawei_lte to SMS Phone Enzokot Secret [secret sms_phone_enzokot] with message 'ℹ️ pong' and a data URL, send a browser notification via notify.html5 with title 'ℹ️ Check notification's' and message 'pong', and send an email via notify.email_enzokot_ha with title 'ℹ️ Check notification's' and message 'pong'.", "natural_language": { "trigger": "When a Telegram command '/ping' is received.", "conditions": "There are no conditions for this automation.", "action": "The automation performs several actions simultaneously: it sends a general notification, deletes the original Telegram command message, sends a 'pong' reply back to the same Telegram chat, sends an SMS to a specific phone number, sends a browser notification, and sends an email. All notifications contain the message 'pong'." }, "human_like": "Replies 'pong' across multiple platforms (Telegram, SMS, browser, and email) when a '/ping' command is received in Telegram.", "complexity": "medium" } }, { "id": "keyboard tuc tuc gateway", "result": { "structured": "TRIGGER: When a Telegram command event with command '/tuctuc' is received. CONDITIONS: None. ACTIONS: In parallel, delete the Telegram message that triggered the event AND send a new Telegram message with a bell emoji and the text 'С уровнем громкости:' to the same chat, including an inline keyboard with options 'Тихо', 'Средне', and 'Громко' linked to commands '/minlevelsound', '/avrlevelsound', and '/maxlevelsound' respectively.", "natural_language": { "trigger": "When a user sends the specific Telegram command '/tuctuc'.", "conditions": "There are no conditions that must be met.", "action": "The automation immediately performs two actions at the same time: it deletes the original '/tuctuc' command message from the chat, and then sends a new message with a bell emoji and the text 'С уровнем громкости:' (With volume level:). This new message includes a set of buttons (an inline keyboard) offering the user three volume level choices: 'Тихо' (Quiet), 'Средне' (Medium), and 'Громко' (Loud), each linked to a corresponding command." }, "human_like": "This automation responds to a specific Telegram command by deleting the command message and presenting the user with a menu to select a volume level for a sound notification.", "complexity": "low" } }, { "id": "keyboard alarm home", "result": { "structured": "TRIGGER: When a Telegram command event with command /home_alarm is received. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the automation using the chat_id and message_id from the event. Send a Telegram message to the same chat_id. The message content is: a speaker with sound waves emoji (🔉) and the text 'Сигнализация *включена*' if shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is in state 'armed_away', otherwise a muted speaker emoji (🔇) and the text 'Сигнализация *выключена*'. The message includes an inline keyboard with a button: 'Выключить' linked to command /alarm_home_disarm if the alarm is armed, otherwise 'Включить' linked to command /alarm_home_arm.", "natural_language": { "trigger": "When a Telegram command '/home_alarm' is received.", "conditions": "There are no conditions that must be met.", "action": "The automation first deletes the original Telegram command message. It then sends a new message back to the same chat. This message reports the current alarm status: if the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is armed (in 'armed_away' state), it shows a speaker icon and states the alarm is on. If the alarm is not armed, it shows a muted speaker icon and states the alarm is off. The message also includes a button to either disarm or arm the alarm, depending on its current state." }, "human_like": "Responds to a Telegram command by reporting the alarm's current status and providing a button to toggle it.", "complexity": "medium" } }, { "id": "do alarm change state", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data /alarm_home_disarm OR When a Telegram callback event occurs with data /alarm_home_arm. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the callback (using chat_id and message_id from the event). Then, if the event command was /alarm_home_disarm, disarm shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm]; otherwise, arm shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] to away mode. Finally, answer the Telegram callback query with a message: 'Выключили сигнализацию' if disarmed, or 'Включили сигнализацию' if armed.", "natural_language": { "trigger": "When a Telegram callback event is received with the command /alarm_home_disarm or /alarm_home_arm.", "conditions": "There are no conditions for this automation.", "action": "The automation first deletes the original Telegram message that triggered the callback. Then, based on the command received, it either disarms the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] if the command was /alarm_home_disarm, or arms it to away mode if the command was /alarm_home_arm. Finally, it sends a confirmation message back to Telegram, stating 'Выключили сигнализацию' (turned off the alarm) or 'Включили сигнализацию' (turned on the alarm) accordingly." }, "human_like": "Allows arming or disarming the home alarm system via Telegram commands, with automatic message cleanup and confirmation.", "complexity": "medium" } }, { "id": "do tuc tuc gateway", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data /minlevelsound OR /avrlevelsound OR /maxlevelsound. CONDITIONS: None. ACTIONS: In parallel: delete the Telegram message (chat_id from event, message_id from event) AND play ringtone 11 on Xiaomi Aqara gateway (mac: secret gateway1_mac) with volume 3 if trigger data is /minlevelsound, volume 25 if trigger data is /avrlevelsound, volume 50 if trigger data is /maxlevelsound. Then answer the Telegram callback query with message 'Постучали шлюзом'.", "natural_language": { "trigger": "When a button is pressed in a Telegram callback, specifically for the commands /minlevelsound, /avrlevelsound, or /maxlevelsound.", "conditions": "There are no conditions that need to be met.", "action": "The automation immediately deletes the original Telegram message that contained the button. At the same time, it plays a specific ringtone (ID 11) on a Xiaomi Aqara gateway. The volume of the ringtone depends on which command was pressed: low volume (3) for /minlevelsound, medium volume (25) for /avrlevelsound, and high volume (50) for /maxlevelsound. Finally, it sends a confirmation message back to Telegram saying 'Постучали шлюзом' (Knocked on the gateway)." }, "human_like": "Plays a sound on a smart gateway at different volumes and sends a confirmation when specific volume control buttons are pressed in a Telegram chat.", "complexity": "medium" } }, { "id": "del keyboard sync yeelight ceiling to switch", "result": { "structured": "TRIGGER: When a Telegram callback event with data '/changelight' occurs OR When a Telegram callback event with data '/nochangelight' occurs OR When a Telegram callback event with data '/ignoringchangelight' occurs. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the event, using the chat_id and message_id from the event data.", "natural_language": { "trigger": "When a user interacts with a Telegram bot by pressing a callback button or sending a command that generates an event with the specific data '/changelight', '/nochangelight', or '/ignoringchangelight'.", "conditions": "There are no conditions that must be met for the action to run.", "action": "The automation deletes the specific Telegram message that contained the callback button or command, using the chat and message identifiers from the event." }, "human_like": "Automatically deletes specific Telegram callback messages from the chat to keep the interface clean.", "complexity": "low" } }, { "id": "no key sync yeelight ceiling to switch", "result": { "structured": "TRIGGER: When a Telegram callback event with data '/nochangelight' occurs. CONDITIONS: None. ACTIONS: Turn on sync yeelight ceiling cr to switch automation [automation.sync_yeelight_ceiling_cr_to_switch] AND answer the Telegram callback query with the message 'Проверим состояние позже'.", "natural_language": { "trigger": "When a specific Telegram callback event is received, containing the command '/nochangelight'.", "conditions": "There are no conditions for this automation.", "action": "It turns on the 'sync yeelight ceiling cr to switch' automation [automation.sync_yeelight_ceiling_cr_to_switch] and sends a reply to the Telegram callback query saying 'Проверим состояние позже' (We'll check the status later)." }, "human_like": "This automation reactivates a light-syncing process and sends a confirmation message when a user declines a change via a Telegram button.", "complexity": "low" } }, { "id": "ignor key sync yeelight ceiling to switch", "result": { "structured": "TRIGGER: When a telegram_callback event occurs with event_data.data equal to '/ignoringchangelight'. CONDITIONS: None. ACTIONS: Call service telegram_bot.answer_callback_query with callback_query_id set to the ID from the trigger event and message set to 'Отключили проверку'.", "natural_language": { "trigger": "When a specific Telegram callback is received, specifically one containing the data '/ignoringchangelight'.", "conditions": "There are no conditions that need to be met.", "action": "Sends an answer back to the Telegram callback, confirming the action with the message 'Отключили проверку' (Disabled check)." }, "human_like": "Responds to a specific Telegram button press by sending a confirmation message that the check has been disabled.", "complexity": "low" } }, { "id": "change keyboard sync yeelight ceiling to switch", "result": { "structured": "TRIGGER: When a Telegram callback event with data '/changelight' occurs. CONDITIONS: (childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is on AND yeelight ceiling cr [light.yeelight_ceiling_cr] is off) OR (childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is off AND yeelight ceiling cr [light.yeelight_ceiling_cr] is on). ACTIONS: Toggle yeelight ceiling cr [light.yeelight_ceiling_cr] AND Turn on sync yeelight ceiling cr to switch automation [automation.sync_yeelight_ceiling_cr_to_switch] in parallel, then send a Telegram answer callback query with the message 'Изменили состояние'.", "natural_language": { "trigger": "When a specific Telegram callback event is received, triggered by the user pressing a button with the data '/changelight'.", "conditions": "The automation only runs if the children's room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is open while the ceiling light [light.yeelight_ceiling_cr] is off, or if the contact sensor is closed while the ceiling light is on.", "action": "It toggles the state of the yeelight ceiling cr [light.yeelight_ceiling_cr] and simultaneously turns on the sync yeelight ceiling cr to switch automation [automation.sync_yeelight_ceiling_cr_to_switch]. Finally, it sends a confirmation message back to the Telegram user saying 'Изменили состояние'." }, "human_like": "Toggles the children's room ceiling light when a specific Telegram button is pressed, but only if the light and the door sensor are in opposite states, and then re-enables a related automation.", "complexity": "medium" } }, { "id": "vacuum chita answer key find vacuum", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data \"/findvacuum\". CONDITIONS: None. ACTIONS: Locate vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] AND Delete the Telegram message (chat_id: {{ trigger.event.data.chat_id }}, message_id: {{ trigger.event.data.message.message_id }}) AND Answer the Telegram callback query (callback_query_id: {{ trigger.event.data.id }}, message: \"Включили поиск Степы\").", "natural_language": { "trigger": "When a specific Telegram callback event is received, containing the data \"/findvacuum\".", "conditions": "There are no conditions for this automation.", "action": "The automation will first activate the locate function on the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner]. Then, it will delete the original Telegram message that triggered the callback. Finally, it will send a response to the Telegram callback query with the message \"Включили поиск Степы\" (which translates to \"Started searching for Styopa\")." }, "human_like": "When a user presses the '/findvacuum' button in Telegram, the robot vacuum's locate feature is activated and the Telegram interface is cleaned up with a confirmation message.", "complexity": "low" } }, { "id": "keyboard vacuum start cleaning", "result": { "structured": "TRIGGER: When a telegram_command event occurs with command /vacuum. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the automation (chat_id: {{ trigger.event.data.chat_id }}, message_id: {{ trigger.event.data.id }}) AND send a new Telegram message to the same chat with a clock emoji and the text 'Отправить убирать:' and an inline keyboard offering options: 'Сейчас:/vacuumnow', 'Через 10 мин.:/vacuum10', 'Через 20 мин.:/vacuum20', 'Отменить уборку:/vacuumcancel', 'Выслать карту:/sendmap'.", "natural_language": { "trigger": "When a user sends the Telegram command '/vacuum'.", "conditions": "There are no additional conditions that must be met.", "action": "The automation deletes the original '/vacuum' command message from the Telegram chat and then sends a new message with a clock emoji and the prompt 'Отправить убирать:' along with an inline keyboard. The keyboard provides options to start the vacuum immediately, schedule it for 10 or 20 minutes later, cancel a cleaning, or request a map." }, "human_like": "This automation provides a menu for controlling the vacuum cleaner via Telegram when the /vacuum command is received.", "complexity": "low" } }, { "id": "vacuum start cleaning", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data '/vacuumnow'. CONDITIONS: None. ACTIONS: Start cleaning vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] AND delete the Telegram message associated with the trigger AND answer the Telegram callback query with the message 'Пылесос отправили на уборку'.", "natural_language": { "trigger": "When a specific Telegram callback event is received, containing the data '/vacuumnow'.", "conditions": "There are no conditions for this automation.", "action": "Starts the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] cleaning cycle, deletes the original Telegram message that triggered the callback, and sends a confirmation message to the user stating 'Пылесос отправили на уборку' (Vacuum sent for cleaning)." }, "human_like": "Starts the robot vacuum from a Telegram button press and cleans up the chat message.", "complexity": "low" } }, { "id": "vacuum later start cleaning", "result": { "structured": "TRIGGER: When a Telegram callback event with data '/vacuum10' occurs OR when a Telegram callback event with data '/vacuum20' occurs. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the callback. Start the vacuum ten minutes timer [timer.vacumm_ten_minutes] with a duration of 600 seconds if the callback data was '/vacuum10', otherwise 1200 seconds. Answer the Telegram callback query with a message indicating the vacuum will be sent for cleaning in 10 minutes or 20 minutes based on the callback data. Set the value of var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] to the chat ID from the triggering event.", "natural_language": { "trigger": "When a Telegram callback button is pressed, specifically one with the data '/vacuum10' or '/vacuum20'.", "conditions": "There are no conditions that must be met for this automation to run.", "action": "The automation will delete the original Telegram message that contained the button, start a timer for the vacuum cleaner with a delay of either 10 or 20 minutes depending on which button was pressed, send a confirmation message back to the user in Telegram, and store the chat ID for later use." }, "human_like": "Schedules the vacuum cleaner to start cleaning after a 10 or 20 minute delay when a user selects the corresponding option in a Telegram message.", "complexity": "medium" } }, { "id": "vacuum cancel cleaning", "result": { "structured": "TRIGGER: When a Telegram callback event with data '/vacuumcancel' is received. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the callback using the chat_id and message_id from the event. Cancel the timer vacuum ten minutes timer [timer.vacumm_ten_minutes]. Pause the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner]. Wait for 3 seconds. Send the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] to its charging base. Send a Telegram answer callback query with the message 'Отменили таймеры, отправили на базу'. Set the value of var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] to the secret Telegram Chita Chat ID Secret [secret telegram_chita_chat_id].", "natural_language": { "trigger": "When a specific Telegram callback command, '/vacuumcancel', is received.", "conditions": "There are no conditions for this automation.", "action": "The automation performs several actions in sequence: it deletes the original Telegram message that contained the command, cancels the vacuum ten minutes timer [timer.vacumm_ten_minutes], pauses the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner], waits for three seconds, then commands the vacuum to return to its charging base. It also sends a confirmation message back to Telegram stating 'Отменили таймеры, отправили на базу' and updates the variable var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] with a secret chat ID." }, "human_like": "Cancels a scheduled vacuum cleaning, stops the robot, sends it back to its dock, and sends a confirmation via Telegram.", "complexity": "medium" } }, { "id": "vacuum send map", "result": { "structured": "TRIGGER: When a Telegram callback event occurs with data '/sendmap'. CONDITIONS: None. ACTIONS: Delete the Telegram message that triggered the event AND send a photo to the same Telegram chat with the current map from roborock vacuum map camera [camera.roborock_vacuum_map] and a caption containing a map emoji and the text 'Степа' and 'Текущая карта уборки'.", "natural_language": { "trigger": "When a user interacts with a Telegram bot and presses a button or sends a callback with the command '/sendmap'.", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "The automation first deletes the original Telegram message that contained the '/sendmap' command. Then, it sends a photo to the same Telegram chat. The photo is the current map image from the roborock vacuum map camera [camera.roborock_vacuum_map], accompanied by a caption featuring a map emoji, the name 'Степа', and the text 'Текущая карта уборки' (Current cleaning map)." }, "human_like": "When a user requests the vacuum's map via Telegram, the bot deletes the request and sends back the current cleaning map with a caption.", "complexity": "low" } }, { "id": "send climate summary", "result": { "structured": "TRIGGER: When a Telegram command event with command '/climate_summary' is received. CONDITIONS: None. ACTIONS: Delete the original Telegram message using chat_id and message_id from the trigger event, then send a new Telegram message to the same chat_id with a title '🌡 *Климатические сенсоры*' and a message body listing the names and rounded temperature states of all entities in the group temperature summary group to bot [group.temperature_summary_group_to_bot].", "natural_language": { "trigger": "When a Telegram command '/climate_summary' is received.", "conditions": "There are no conditions for this automation.", "action": "The automation first deletes the original command message from Telegram. It then sends a new message to the same chat, titled '🌡 Климатические сенсоры', which contains a formatted list of all temperature sensors in the 'temperature summary group to bot' group, showing each sensor's name and its current temperature in degrees Celsius." }, "human_like": "Responds to a specific Telegram command by deleting the command message and sending a summary of all temperature sensor readings.", "complexity": "medium" } }, { "id": "install update telegram bot", "result": { "structured": "TRIGGER: When a telegram_callback event occurs with command /installupdate. CONDITIONS: The event data contains at least one argument. ACTIONS: Extract the first argument as entity and compute its friendly name by removing ' Update' from the entity's friendly_name attribute. If entity state is on AND its in_progress attribute is false, then send a Telegram callback answer with message 'Обновление на версию [latest_version attribute] [friendlyname] запущено.' AND install an update for the entity, with backup enabled if the entity's supported_features attribute indicates backup support. Otherwise, send a Telegram callback answer with message 'Обновление [friendlyname] уже установлено.'.", "natural_language": { "trigger": "When a Telegram callback event with the command /installupdate is received.", "conditions": "The event must include at least one argument in its data.", "action": "The automation extracts the first argument as the target entity and calculates a friendly name by removing ' Update' from the entity's friendly name. If the entity is in the 'on' state and is not currently in progress, it sends a Telegram message confirming the update has started for that entity and its latest version, then proceeds to install the update, creating a backup if the entity supports it. If the entity is not 'on' or is already in progress, it sends a Telegram message stating the update is already installed." }, "human_like": "Handles Telegram requests to install updates by checking the target entity's status and either starting the update or notifying that it's already installed.", "complexity": "medium" } }, { "id": "change mute on off alice activation sounds", "result": { "structured": "TRIGGER: When Home Assistant starts OR at 8:00:00 OR at 22:00:00. CONDITIONS: None. ACTIONS: Set variable 'time_to_on' to true if current time is between 8:00:00 and 21:59:59 inclusive, else false. Then, command yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] to play media with content 'без лишних слов: нет' if time_to_on is true, else 'без лишних слов: да'. Wait 2 seconds. Then, command yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] to play media with content 'звук активации: да' if time_to_on is true, else 'звук активации: нет'.", "natural_language": { "trigger": "The automation runs when Home Assistant first starts, or at 8:00 AM, or at 10:00 PM.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it calculates whether the current time is between 8:00 AM and 9:59 PM. It then uses this to tell the yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] to say 'без лишних слов: нет' (without extra words: no) if it's within that time window, or 'без лишних слов: да' (without extra words: yes) if it's outside that window. After a two-second pause, it tells the same device to say 'звук активации: да' (activation sound: yes) if it's within the time window, or 'звук активации: нет' (activation sound: no) if it's outside it." }, "human_like": "Announces the mute and activation sound settings for a Yandex Station at specific times of day, toggling between day and night modes.", "complexity": "medium" } }, { "id": "change name activation for voice assistant", "result": { "structured": "TRIGGER: When a yandex_speaker event occurs with instance text_action AND value 'Ничего не делай?-=', OR when a yandex_speaker event occurs with instance text_action AND value 'Ничего не делай?-:'. CONDITIONS: None. ACTIONS: Play media on yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] with media_content_type settings AND media_content_id 'имя: {{ ''алиса'' if ''?-:'' in trigger.event.data.value else ''яндекс'' }}'.", "natural_language": { "trigger": "When the voice assistant receives a specific spoken phrase: either 'Ничего не делай?-=', or 'Ничего не делай?-:'.", "conditions": "There are no additional conditions that must be met.", "action": "Instructs the yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] to change its activation name. The new name is set to 'алиса' if the trigger phrase contained the substring '?-:', otherwise it is set to 'яндекс'." }, "human_like": "Changes the voice assistant's activation name based on which specific 'Ничего не делай' phrase is spoken.", "complexity": "low" } }, { "id": "clean one room by comand from voice assistant", "result": { "structured": "TRIGGER: When a yandex_speaker event occurs with instance phrase_action AND value уборка спальни OR value уборка детской OR value уборка гостиной OR value уборка ванной OR value уборка гардероба OR value уборка туалета OR value уборка коридора OR value уборка кухни. CONDITIONS: None. ACTIONS: Send command app_segment_clean to vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] with a parameter derived from the trigger value by replacing 'уборка ' with an empty string, then mapping specific room names to numeric IDs (e.g., 'спальни' to '1', 'детской' to '16', 'гостиной' to '17', 'кухни' to '2', 'ванной' to '18', 'гардероба' to '19', 'туалета' to '20', 'коридора' to '21'), and converting the result to an integer.", "natural_language": { "trigger": "When a voice command is issued to the Yandex speaker with the phrase action for cleaning a specific room. The supported phrases are: 'уборка спальни' (bedroom cleaning), 'уборка детской' (children's room cleaning), 'уборка гостиной' (living room cleaning), 'уборка ванной' (bathroom cleaning), 'уборка гардероба' (wardrobe cleaning), 'уборка туалета' (toilet cleaning), 'уборка коридора' (hallway cleaning), and 'уборка кухни' (kitchen cleaning).", "conditions": "There are no conditions that must be met for the action to execute.", "action": "Sends a segment cleaning command to the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner]. The specific room to clean is determined by converting the spoken room name from the trigger into a numeric room ID that the vacuum understands. For example, 'спальни' becomes room 1, 'детской' becomes room 16, and so on." }, "human_like": "Starts cleaning a specific room when you ask the Yandex speaker to clean it, by sending the corresponding room number to the robot vacuum.", "complexity": "medium" } }, { "id": "outdoor climate by comand from voice assistant", "result": { "structured": "TRIGGER: When a Yandex speaker event occurs with instance 'text_action' and value 'Ничего не делай-'. CONDITIONS: None. ACTIONS: Play a media message on the speaker that triggered the event [{{ trigger.event.data.entity_id }}] containing the current outdoor temperature [sensor.0x00158d000542ceaf_temperature] (rounded up to nearest whole degree Celsius), outdoor pressure [sensor.158d000542ceaf_pressure] (rounded up to nearest whole mmHg), and outdoor humidity [sensor.0x00158d000542ceaf_humidity] (rounded up to nearest whole percent).", "natural_language": { "trigger": "When a Yandex speaker receives a voice command with the specific phrase 'Ничего не делай-'.", "conditions": "There are no additional conditions that need to be met.", "action": "The speaker that received the command will play a spoken message announcing the current outdoor climate conditions. The message includes the temperature from the outdoor temperature sensor [sensor.0x00158d000542ceaf_temperature], the atmospheric pressure from the outdoor pressure sensor [sensor.158d000542ceaf_pressure], and the humidity from the outdoor humidity sensor [sensor.0x00158d000542ceaf_humidity], with all values rounded up to the nearest whole number." }, "human_like": "When you say 'Ничего не делай-' to a Yandex speaker, it will tell you the current outdoor temperature, pressure, and humidity.", "complexity": "low" } }, { "id": "vacuum send map from alice command", "result": { "structured": "TRIGGER: When a Yandex speaker event occurs with instance 'text_action' and value 'Ничего не делай?-' . CONDITIONS: None. ACTIONS: Send a photo via Telegram to the target secret telegram_all_chat_id [secret telegram_all_chat_id] with the URL constructed from the entity picture of roborock vacuum map camera [camera.roborock_vacuum_map] and the caption '🗺️ *Степа* Текущая карта уборки'.", "natural_language": { "trigger": "When a Yandex speaker event is received with the specific voice command text 'Ничего не делай?-'.", "conditions": "There are no conditions for this automation.", "action": "Sends the current vacuum map as a photo to a specified Telegram chat. The photo is taken from the roborock vacuum map camera [camera.roborock_vacuum_map], and the message includes a caption with a map emoji and the text '*Степа* Текущая карта уборки'." }, "human_like": "Sends a snapshot of the vacuum's map to a Telegram chat when a specific voice command is spoken to a Yandex speaker.", "complexity": "low" } }, { "id": "dishwasher remaining programme running time", "result": { "structured": "TRIGGER: When a Yandex speaker event occurs with instance 'text_action' and value 'Ничего не делай?'. CONDITIONS: None. ACTIONS: Play a media message on the Yandex speaker that triggered the event. The message content is determined by a template: If dishwasher operation state [sensor.014020518886002182_bsh_common_status_operationstate] is 'BSH.Common.EnumType.OperationState.Run', calculate the remaining time from dishwasher remaining program time [sensor.014020518886002182_bsh_common_option_remainingprogramtime] and speak it in a human-readable format (hours and minutes). If the remaining time is less than 1 second, speak 'меньше минуты'. If the dishwasher is not running, speak 'Сейчас программа не запущена'.", "natural_language": { "trigger": "When a Yandex speaker receives a voice command with the specific phrase 'Ничего не делай?'.", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "The Yandex speaker that received the command will speak a response. It checks if the dishwasher operation state [sensor.014020518886002182_bsh_common_status_operationstate] indicates the dishwasher is running. If it is, it calculates the time left from the dishwasher remaining program time [sensor.014020518886002182_bsh_common_option_remainingprogramtime] and announces it in a user-friendly way (e.g., 'До окончания: 2 часа 15 минут'). If the remaining time is less than a minute, it says 'меньше минуты'. If the dishwasher is not running, it announces 'Сейчас программа не запущена'." }, "human_like": "When asked 'Ничего не делай?' via a Yandex speaker, it will tell you how much time is left on the dishwasher cycle, or inform you if it's not running.", "complexity": "medium" } }, { "id": "yeelight ceiling cr off", "result": { "structured": "TRIGGER: When childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] changes from open (on) to closed (off). CONDITIONS: None. ACTIONS: Turn off yeelight ceiling cr [light.yeelight_ceiling_cr], yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight], and yeelight ceiling cr nightlight [light.yeelight_ceiling_cr_nightlight].", "natural_language": { "trigger": "When the childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] changes state from open to closed.", "conditions": "There are no conditions that must be met.", "action": "Turns off all the lights in the children's room: yeelight ceiling cr [light.yeelight_ceiling_cr], yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight], and yeelight ceiling cr nightlight [light.yeelight_ceiling_cr_nightlight]." }, "human_like": "Turns off the children's room lights when the door is closed.", "complexity": "low" } }, { "id": "yeelight ceiling cr on", "result": { "structured": "TRIGGER: When childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] changes from closed (off) to open (on). CONDITIONS: None. ACTIONS: Turn on yeelight ceiling cr [light.yeelight_ceiling_cr] with a color temperature of 3571 Kelvin and maximum brightness (255).", "natural_language": { "trigger": "When the childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] opens.", "conditions": "There are no conditions that must be met.", "action": "Turns on the yeelight ceiling cr [light.yeelight_ceiling_cr] light to a warm white color (3571K) at full brightness." }, "human_like": "Turns on the children's room ceiling light when the door is opened.", "complexity": "low" } }, { "id": "yeelight ceiling cr on ambilight night mode", "result": { "structured": "TRIGGER: When wireless switch action [sensor.0x158d0003a360b6_action] changes to single. CONDITIONS: yeelight ceiling cr [light.yeelight_ceiling_cr] is off. ACTIONS: Turn on yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight] with brightness 1 and RGB color (0, 0, 255).", "natural_language": { "trigger": "When the wireless switch action [sensor.0x158d0003a360b6_action] reports a 'single' press.", "conditions": "The main ceiling light, yeelight ceiling cr [light.yeelight_ceiling_cr], must be off.", "action": "Turn on the ambilight feature of the ceiling light, yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight], setting it to a very dim blue color (brightness 1, RGB 0,0,255)." }, "human_like": "Turns on a dim blue night light when the wireless switch is pressed while the main light is off.", "complexity": "low" } }, { "id": "yeelight ceiling cr off ambilight night mode", "result": { "structured": "TRIGGER: When wireless switch action [sensor.0x158d0003a360b6_action] changes to 'single'. CONDITIONS: (yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight] is on) AND (yeelight ceiling cr [light.yeelight_ceiling_cr] is off). ACTIONS: Turn off yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight].", "natural_language": { "trigger": "When the wireless switch action [sensor.0x158d0003a360b6_action] reports a 'single' press.", "conditions": "If the yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight] is currently turned on, and the main yeelight ceiling cr [light.yeelight_ceiling_cr] light is turned off.", "action": "Turns off the ambilight feature by switching off yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight]." }, "human_like": "Turns off the ambilight night mode in the children's room when a wireless switch is pressed, but only if the main light is off.", "complexity": "low" } }, { "id": "sync yeelight ceiling cr to switch", "result": { "structured": "TRIGGER: Every 3 minutes (time pattern). CONDITIONS: (yeelight ceiling on automation [automation.yeelight_ceiling_on] is not running (current attribute equals 0)) AND (yeelight ceiling off automation [automation.yeelight_ceiling_off] is not running (current attribute equals 0)) AND ((childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is on AND yeelight ceiling cr [light.yeelight_ceiling_cr] is off AND yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight] is off AND yeelight ceiling cr nightlight [light.yeelight_ceiling_cr_nightlight] is off) OR (childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is off AND yeelight ceiling cr [light.yeelight_ceiling_cr] is on)). ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] asking to correct the deviation, then turn off this automation [this.entity_id].", "natural_language": { "trigger": "The automation runs every three minutes.", "conditions": "It first checks that neither the yeelight ceiling on automation [automation.yeelight_ceiling_on] nor the yeelight ceiling off automation [automation.yeelight_ceiling_off] are currently running. Then, it checks for a mismatch between the contact sensor and the light state. Specifically, it triggers if the childrens room contact sensor [binary_sensor.0x158d0003f37a0f_contact] is on (likely meaning the switch is pressed/closed) but all the lights (yeelight ceiling cr [light.yeelight_ceiling_cr], yeelight ceiling cr ambilight [light.yeelight_ceiling_cr_ambilight], and yeelight ceiling cr nightlight [light.yeelight_ceiling_cr_nightlight]) are off. Alternatively, it also triggers if the contact sensor is off but the main light (yeelight ceiling cr [light.yeelight_ceiling_cr]) is on.", "action": "Sends a Telegram alert to a specific chat, asking if the light/switch mismatch should be corrected, and then disables itself to prevent repeated notifications." }, "human_like": "Checks every few minutes if the children's room light and its physical switch are out of sync, and sends a Telegram alert if they are.", "complexity": "medium" } }, { "id": "light gateway toggle", "result": { "structured": "TRIGGER: When contact sensor [binary_sensor.0x158d000359304c_contact] changes from closed (off) to open (on). CONDITIONS: turn on doorbell automation [automation.turn_on_doorbell] attribute 'current' is 0 AND alarm gateway button [input_boolean.alarm_gateway_button] is off. ACTIONS: Create a snapshot scene named 'before_light_door_open' from the current state of gateway light [light.gateway_light_04cf8cabd77b]. Turn on gateway light [light.gateway_light_04cf8cabd77b] to red (RGB 255,0,0) at full brightness. Wait 150 milliseconds. Turn off gateway light [light.gateway_light_04cf8cabd77b]. Wait 50 milliseconds. Turn on gateway light [light.gateway_light_04cf8cabd77b] to red (RGB 255,0,0) at full brightness. Wait 150 milliseconds. Turn off gateway light [light.gateway_light_04cf8cabd77b]. Restore the light to its previous state by activating scene before light door open [scene.before_light_door_open].", "natural_language": { "trigger": "When the contact sensor [binary_sensor.0x158d000359304c_contact] detects the door has been opened (changes from closed to open).", "conditions": "The turn on doorbell automation [automation.turn_on_doorbell] must not be currently running (its 'current' attribute is 0), and the alarm gateway button [input_boolean.alarm_gateway_button] must be turned off.", "action": "First, a snapshot of the current state of the gateway light [light.gateway_light_04cf8cabd77b] is saved as a scene named 'before_light_door_open'. Then, the light is flashed red twice: it turns on to bright red, waits briefly, turns off, waits a very short moment, turns on to bright red again, waits, and then turns off. Finally, the original light state is restored by activating the saved scene." }, "human_like": "When the door opens, the hallway light flashes red twice as a visual alert, but only if the doorbell automation isn't running and the alarm button is off.", "complexity": "medium" } }, { "id": "light gateway go to work on", "result": { "structured": "TRIGGER: When the time is 07:00:00. CONDITIONS: (alarm gateway button [input_boolean.alarm_gateway_button] is off) AND (the current weekday is Monday OR Tuesday OR Wednesday OR Thursday OR Friday). ACTIONS: Create a snapshot scene named 'before_on_go_to_work' for gateway light [light.gateway_light_04cf8cabd77b] AND turn on gateway light [light.gateway_light_04cf8cabd77b] with RGB color (230, 255, 0) and brightness 5.", "natural_language": { "trigger": "At exactly 7:00 AM.", "conditions": "If the alarm gateway button [input_boolean.alarm_gateway_button] is turned off, and it is a weekday (Monday through Friday).", "action": "First, create a snapshot of the current state of the gateway light [light.gateway_light_04cf8cabd77b] and save it as a scene named 'before_on_go_to_work'. Then, turn on the gateway light [light.gateway_light_04cf8cabd77b] with a specific yellow-green color and very low brightness." }, "human_like": "On weekday mornings at 7 AM, if the alarm is not active, it saves the current light state and turns on the hallway light with a dim, yellow-green color for going to work.", "complexity": "low" } }, { "id": "light gateway go to work off", "result": { "structured": "TRIGGER: At 07:20:00. CONDITIONS: (alarm gateway button [input_boolean.alarm_gateway_button] is off) AND (time is on a weekday (Monday, Tuesday, Wednesday, Thursday, Friday)). ACTIONS: Turn off gateway light [light.gateway_light_04cf8cabd77b] AND activate scene before on go to work [scene.before_on_go_to_work].", "natural_language": { "trigger": "At 7:20 AM.", "conditions": "If the alarm gateway button [input_boolean.alarm_gateway_button] is turned off, and the current day is a weekday (Monday through Friday).", "action": "Turn off the gateway light [light.gateway_light_04cf8cabd77b] and activate the scene before on go to work [scene.before_on_go_to_work]." }, "human_like": "Turns off the hallway light and activates a 'go to work' scene at 7:20 AM on weekdays, but only if the alarm gateway button is off.", "complexity": "low" } }, { "id": "restart integration relay yeelight ceiling unavailable", "result": { "structured": "TRIGGER: When yeelight ceiling cr [light.yeelight_ceiling_cr] changes to an unavailable state (null) OR when Home Assistant starts. CONDITIONS: (instances stoping [input_boolean.instances_stoping] is off) AND (more than 60 seconds have passed since this automation was last triggered) AND (yeelight ceiling cr [light.yeelight_ceiling_cr] has no value) AND (yeelight ceiling relay [switch.0x54ef441000096cbc] has a value). ACTIONS: Wait for up to 2 minutes until yeelight ceiling cr [light.yeelight_ceiling_cr] has a value OR instances stoping [input_boolean.instances_stoping] is on. If the wait times out AND local network availability [binary_sensor.local_network_availability] is on, then: Turn off yeelight ceiling relay [switch.0x54ef441000096cbc], delay 5 seconds, turn on yeelight ceiling relay [switch.0x54ef441000096cbc], delay 30 seconds, and reload the configuration entry for yeelight ceiling cr [light.yeelight_ceiling_cr].", "natural_language": { "trigger": "The automation triggers when the yeelight ceiling cr [light.yeelight_ceiling_cr] becomes unavailable, or when Home Assistant starts up.", "conditions": "The automation only runs if the instances stoping [input_boolean.instances_stoping] is off, if it has been at least 60 seconds since this automation last ran, if the yeelight ceiling cr [light.yeelight_ceiling_cr] currently has no value (is unavailable), and if the yeelight ceiling relay [switch.0x54ef441000096cbc] does have a value (is available).", "action": "First, the automation waits for up to two minutes for the light to become available or for the instances stoping flag to be turned on. If the wait times out and the local network is available, it will cycle the power to the light's relay by turning it off, waiting five seconds, turning it back on, waiting thirty seconds, and finally reloading the light's configuration entry to try and restore its connection." }, "human_like": "Automatically attempts to recover the children's room ceiling light when it becomes unavailable by power-cycling its relay and reloading its integration, provided the network is up.", "complexity": "high" } }, { "id": "turn on lg webos tv bedroom", "result": { "structured": "TRIGGER: When the lg smart tv [media_player.lg_smart_tv] receives a 'turn_on' command. CONDITIONS: The state of lg smart tv [media_player.lg_smart_tv] is 'off' OR 'unknown' OR 'unavailable'. ACTIONS: Send the specified infrared command via broadlink ir rm4 mini [remote.broadlink_ir_rm4_mini].", "natural_language": { "trigger": "When a command is issued to turn on the lg smart tv [media_player.lg_smart_tv].", "conditions": "The tv must currently be in a state of off, unknown, or unavailable.", "action": "Sends a pre-programmed infrared command using the broadlink ir rm4 mini [remote.broadlink_ir_rm4_mini] remote to power on the television." }, "human_like": "Uses an IR blaster to turn on the LG TV when a turn-on command is received, but only if the TV is not already on.", "complexity": "low" } }, { "id": "turn on samsung tv kitchen", "result": { "structured": "TRIGGER: When the samsungtv.turn_on event is triggered for tv samsung [media_player.tv_kotletochka_tv_sam]. CONDITIONS: The state of tv samsung [media_player.tv_kotletochka_tv_sam] is off OR unknown OR unavailable. ACTIONS: Call the service esphome.perenio_petra01_kitchen_send_samsung_command with data '0xE0E040BF'.", "natural_language": { "trigger": "When a command is received to turn on the TV Samsung [media_player.tv_kotletochka_tv_sam].", "conditions": "The TV must currently be in an off, unknown, or unavailable state.", "action": "Sends a specific infrared command (0xE0E040BF) via the Perenio Petra01 device in the kitchen to power on the TV." }, "human_like": "Sends an infrared power-on command to the kitchen Samsung TV when a turn-on request is made and the TV is off.", "complexity": "low" } }, { "id": "mqtt_sensors_discovery", "result": { "structured": "TRIGGER: When Home Assistant starts OR When an automation is reloaded. CONDITIONS: None. ACTIONS: In parallel, publish MQTT discovery messages for the following sensors and switches: MQTT Broker Uptime [sensor.mqtt_broker_uptime], permit_join_switch_z2m, permit join end z2m, router devices z2m, permit join current device z2m, check keenetic link down, Состояние моста, Zigbee2mqtt Coordinator Version, 0x5c0272fffec89454_local_temperature, 0x5c0272fffec89454_local_temperature_calibration, 0x60a423fffe968719_local_temperature, 0x60a423fffe968719_local_temperature_calibration, 0x5c0272fffec9db22_local_temperature, 0x5c0272fffec9db22_local_temperature_calibration, 0x5c0272fffe8de819_local_temperature, 0x5c0272fffe8de819_local_temperature_calibration, login ssh kotletochka dell srv, Kernel_EXT4_warning [binary_sensor.dmesg_ext4_warning], pve processor temperature.", "natural_language": { "trigger": "The automation triggers either when Home Assistant first starts up or when any automation configuration is reloaded.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation publishes a series of MQTT discovery configuration messages. These messages tell Home Assistant to create and manage various sensors and switches, including broker uptime, Zigbee2MQTT status and control switches, network diagnostics, thermostat temperature readings, SSH login logs, and system health sensors." }, "human_like": "This automation sets up MQTT device discovery for various system and Zigbee2MQTT sensors whenever Home Assistant starts or automations are reloaded.", "complexity": "medium" } }, { "id": "notification front door open long time", "result": { "structured": "TRIGGER: When contact sensor [binary_sensor.0x158d000359304c_contact] changes from closed (off) to open (on) AND remains open for 2 minutes. CONDITIONS: None. ACTIONS: Send a notification via telegram_enzokot_to_bot with title '⚠️ *Датчик открытия/закрытия*' and message 'Входная дверь: открыта более 2 минут'. Additionally, if lg smart tv [media_player.lg_smart_tv] is on, send a notification via kotletochka_tv with message 'Входная дверь: открыта более 2 минут'.", "natural_language": { "trigger": "When the contact sensor [binary_sensor.0x158d000359304c_contact] detects the door has opened and remains open for at least two minutes.", "conditions": "There are no additional conditions that must be met for the automation to run.", "action": "Sends a Telegram notification with a warning that the front door has been open for more than two minutes. If the LG Smart TV [media_player.lg_smart_tv] is turned on, it also sends a notification to the TV with the same message." }, "human_like": "Sends a warning notification if the front door is left open for more than two minutes.", "complexity": "low" } }, { "id": "notification lobby door open long time", "result": { "structured": "TRIGGER: When lobby door open long time [binary_sensor.lobby_door_open_long_time] changes from off to on OR When lobby door open long time [binary_sensor.lobby_door_open_long_time] changes from on to off. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram All Chat ID Secret [secret telegram_all_chat_id] with a title containing a lock or unlocked lock emoji and a message stating 'Тамбурная дверь: открыта более 5 минут' if the trigger was door_open, or 'Тамбурная дверь: закрыта' if the trigger was door_close.", "natural_language": { "trigger": "When the lobby door open long time [binary_sensor.lobby_door_open_long_time] sensor changes its state, either from closed to open or from open to closed.", "conditions": "There are no conditions for this automation.", "action": "Sends a silent Telegram message to the group identified by Telegram All Chat ID Secret [secret telegram_all_chat_id]. The message includes a title with an emoji (a lock for 'door closed' or an unlocked lock for 'door open') and a text stating whether the lobby door has been open for more than 5 minutes or is now closed." }, "human_like": "Sends a Telegram notification when the lobby door sensor reports it has been open for a long time or when it closes again.", "complexity": "low" } }, { "id": "notification sound front door open long time", "result": { "structured": "TRIGGER: When contact sensor [binary_sensor.0x158d000359304c_contact] changes from closed (off) to open (on) AND remains open for 2 minutes. CONDITIONS: (alarm gateway button [input_boolean.alarm_gateway_button] is off) AND (shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is disarmed) AND ((time is after 9:00:00 AND before 13:30:00) OR (time is after 16:30:00 AND before 21:00:00)). ACTIONS: Start front door ringtone timer [timer.front_door_ringtone]. In parallel, execute: 1. Turn on alice custom tts volume script [script.alice_custom_tts_volume] with variables for yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278], text 'Внимание Входная дверь открыта', and volume level 0.65. 2. Play ringtone (ID 10004, volume 15) on Xiaomi Aqara gateway with specified MAC.", "natural_language": { "trigger": "When the contact sensor [binary_sensor.0x158d000359304c_contact] on the front door opens and stays open for two minutes.", "conditions": "The alarm gateway button [input_boolean.alarm_gateway_button] must be off, the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be disarmed, and the current time must be between 9:00 AM and 1:30 PM or between 4:30 PM and 9:00 PM.", "action": "Starts the front door ringtone timer [timer.front_door_ringtone] and simultaneously plays a custom TTS announcement on the yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] saying 'Внимание Входная дверь открыта' at 65% volume, and plays a ringtone on the Xiaomi Aqara gateway." }, "human_like": "Plays an alert sound and announcement if the front door is left open for too long during specific daytime hours, provided the alarm system is disarmed.", "complexity": "medium" } }, { "id": "notification sound front door open long time repeat", "result": { "structured": "TRIGGER: When timer front door ringtone [timer.front_door_ringtone] finishes. CONDITIONS: contact sensor [binary_sensor.0x158d000359304c_contact] is open (on). ACTIONS: Start timer front door ringtone [timer.front_door_ringtone]. In parallel, run alice custom tts volume script [script.alice_custom_tts_volume] on yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] with text 'Внимание Входная дверь открыта' at volume 0.65 AND play ringtone ID 10004 at volume 15 on the Xiaomi Aqara gateway with MAC secret gateway1_mac.", "natural_language": { "trigger": "When the front door ringtone timer [timer.front_door_ringtone] finishes.", "conditions": "The contact sensor [binary_sensor.0x158d000359304c_contact] must be reporting that the door is open.", "action": "Restarts the front door ringtone timer [timer.front_door_ringtone]. Simultaneously, it triggers a custom text-to-speech announcement on the yandex station 1 [media_player.yandex_station_ff98f029b620413b35e5e278] saying 'Внимание Входная дверь открыта' at 65% volume, and plays a specific ringtone (ID 10004) at volume level 15 on a Xiaomi Aqara gateway." }, "human_like": "Repeats a voice and sound alert when the front door has been left open, reminding occupants to close it.", "complexity": "medium" } }, { "id": "notification sound front door open long time cancel", "result": { "structured": "TRIGGER: When the time reaches 13:30:00 OR when the time reaches 21:00:00 OR when contact sensor [binary_sensor.0x158d000359304c_contact] changes from open (on) to closed (off). CONDITIONS: front door ringtone timer [timer.front_door_ringtone] is active. ACTIONS: Cancel front door ringtone timer [timer.front_door_ringtone]. Additionally, if the trigger was contact sensor [binary_sensor.0x158d000359304c_contact] closing, then also stop the ringtone on the Xiaomi Aqara gateway with the specified MAC address.", "natural_language": { "trigger": "The automation can be triggered at 1:30 PM, at 9:00 PM, or when the contact sensor [binary_sensor.0x158d000359304c_contact] in the hallway changes from an open state to a closed state.", "conditions": "The automation only runs if the front door ringtone timer [timer.front_door_ringtone] is currently active.", "action": "It cancels the front door ringtone timer [timer.front_door_ringtone]. If the automation was triggered specifically by the contact sensor closing, it also sends a command to stop the ringtone on the Xiaomi Aqara gateway." }, "human_like": "Cancels a pending doorbell ringtone notification at scheduled times or when the front door is closed.", "complexity": "medium" } }, { "id": "notification front door open close", "result": { "structured": "TRIGGER: When contact sensor [binary_sensor.0x158d000359304c_contact] changes state from off to on OR from on to off. CONDITIONS: None. ACTIONS: Set variable text_for_message to 'открыта' if the new state is 'on', otherwise 'закрыта'. Then, in parallel: 1) Send a Telegram message with a title containing a door emoji and the text '*Датчик открытия/закрытия*', a message stating 'Входная дверь: {{ text_for_message }}', with notifications disabled, to the target secret telegram_enzokot_chat_id. 2) If lg smart tv [media_player.lg_smart_tv] is on, then send a notification via notify.kotletochka_tv with the message 'Входная дверь: {{ text_for_message }}'.", "natural_language": { "trigger": "Whenever the contact sensor [binary_sensor.0x158d000359304c_contact] changes its state, either from closed to open or from open to closed.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, the automation determines a text description: 'открыта' if the door is now open, or 'закрыта' if it is now closed. Then, it performs two actions simultaneously: it sends a silent Telegram message to a specific chat with a door status update, and if the lg smart tv [media_player.lg_smart_tv] is currently on, it also sends a notification to the TV." }, "human_like": "Sends notifications via Telegram and to the TV when the front door is opened or closed, keeping you informed of entryway activity.", "complexity": "medium" } }, { "id": "notification front door open armed", "result": { "structured": "TRIGGER: When contact sensor [binary_sensor.0x158d000359304c_contact] changes to open (on). CONDITIONS: shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is armed_away. ACTIONS: 1. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in variable sm_g973f_rezhim_ne_bespokoit. 2. If sm_g973f_rezhim_ne_bespokoit is 'off', send a 'command_dnd' notification with command 'off' to mobile_app_sm_g973f and wait up to 5 seconds for do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] to change state. 3. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in variable sm_g973f_rezhim_zvonka. 4. If sm_g973f_rezhim_zvonka is 'normal', send a 'command_ringer_mode' notification with command 'normal' to notify.notify. 5. Execute in parallel: a) Send a Telegram message to secret telegram_all_chat_id with an alarm notification and an inline button to stop the alarm. b) Send a high-priority notification via notify.notify with an alarm message and a 'stop_alarm' action. c) Send an SMS via notify.huawei_lte to secret sms_phone_all with an alarm message. 6. If sm_g973f_rezhim_zvonka is 'normal', send a 'command_ringer_mode' notification with the original ringer mode value to mobile_app_sm_g973f. 7. If sm_g973f_rezhim_ne_bespokoit is 'off', send a 'command_dnd' notification with the original do not disturb value to mobile_app_sm_g973f.", "natural_language": { "trigger": "When the contact sensor [binary_sensor.0x158d000359304c_contact] opens.", "conditions": "The shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be in the 'armed_away' state.", "action": "The automation first checks and temporarily modifies phone settings to ensure notifications are received. It stores the current 'Do Not Disturb' and 'Ringer Mode' states. If 'Do Not Disturb' is off, it sends a command to the phone to temporarily disable it and waits for confirmation. If the ringer mode is normal, it sends a command to ensure it stays that way. Then, it sends alarm notifications in parallel via Telegram, a high-priority mobile notification with an action to stop the alarm, and an SMS. Finally, it restores the phone's original 'Ringer Mode' and 'Do Not Disturb' settings." }, "human_like": "Sends urgent alarm notifications via multiple channels when the front door is opened while the house alarm is armed, and temporarily adjusts phone settings to ensure the alerts are received.", "complexity": "high" } }, { "id": "notification motion detected armed", "result": { "structured": "TRIGGER: When motion sensor 1 [binary_sensor.0x158d00054b8d72_motion] OR motion sensor 2 [binary_sensor.0x158d000566bde7_motion] OR motion sensor 3 [binary_sensor.0x158d0003953ee9_motion] changes state to 'on'. CONDITIONS: shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is armed_away. ACTIONS: Set variable sm_g973f_rezhim_ne_bespokoit to the state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor]. IF sm_g973f_rezhim_ne_bespokoit is 'off' THEN send a mobile notification to turn off Do Not Disturb mode and wait up to 5 seconds for do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] to change state. Set variable sm_g973f_rezhim_zvonka to the state of ringer mode [sensor.sm_g973f_ringer_mode]. IF sm_g973f_rezhim_zvonka is 'normal' THEN send a notification to set ringer mode to normal. In parallel: Send a Telegram message to secret telegram_all_chat_id [secret telegram_all_chat_id] with an alarm alert and an inline button to stop the alarm. Send a high-priority notification with an action to stop the alarm. Send an SMS via huawei_lte to secret sms_phone_all [secret sms_phone_all] with an alarm alert. IF sm_g973f_rezhim_zvonka is 'normal' THEN send a mobile notification to restore the original ringer mode. IF sm_g973f_rezhim_ne_bespokoit is 'off' THEN send a mobile notification to restore the original Do Not Disturb mode.", "natural_language": { "trigger": "When any of the motion sensors (motion sensor 1 [binary_sensor.0x158d00054b8d72_motion], motion sensor 2 [binary_sensor.0x158d000566bde7_motion], or motion sensor 3 [binary_sensor.0x158d0003953ee9_motion]) detects motion and changes its state to 'on'.", "conditions": "The shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be in the 'armed_away' state.", "action": "The automation first checks and temporarily modifies the phone's Do Not Disturb and ringer mode settings to ensure alerts are received. It then sends simultaneous alarm notifications via Telegram, a high-priority mobile notification, and an SMS message. Finally, it restores the phone's original Do Not Disturb and ringer mode settings if they were changed." }, "human_like": "Sends urgent alarm notifications via multiple channels when motion is detected while the house alarm is armed, ensuring phone settings allow for alerts.", "complexity": "high" } }, { "id": "notification open window armed", "result": { "structured": "TRIGGER: When any of the following window sensors changes to 'on' (open): window bed room group [binary_sensor.window_bed_room_group], window childrens room group [binary_sensor.window_childrens_room_group], window living room group [binary_sensor.window_living_room_group], window kitchen group [binary_sensor.window_kitchen_group]. CONDITIONS: shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is in state 'armed_away'. ACTIONS: 1. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in variable 'sm_g973f_rezhim_ne_bespokoit'. 2. If the stored value is 'off', send a mobile notification command to turn off Do Not Disturb mode and wait up to 5 seconds for the sensor to update. 3. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in variable 'sm_g973f_rezhim_zvonka'. 4. If the stored ringer mode is 'normal', send a notification command to set ringer mode to 'normal'. 5. In parallel: send a Telegram message with an alarm alert and an inline button to stop the alarm to secret telegram_all_chat_id; send a high-priority notification with an action to stop the alarm; send an SMS alert via Huawei LTE to secret sms_phone_all. 6. If the stored ringer mode was 'normal', send a mobile notification command to restore the original ringer mode. 7. If the stored Do Not Disturb mode was 'off', send a mobile notification command to restore the original Do Not Disturb mode.", "natural_language": { "trigger": "When any of the window sensors for the bedroom, children's room, living room, or kitchen reports a window is opened (changes state to 'on').", "conditions": "The shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be set to 'armed_away' mode.", "action": "First, it checks and temporarily modifies the phone's Do Not Disturb and ringer settings to ensure alerts are heard. Then, it sends simultaneous alarm notifications via Telegram, a high-priority mobile notification, and an SMS message. Finally, it restores the phone's original Do Not Disturb and ringer settings." }, "human_like": "Sends urgent alarm notifications via multiple channels when a window is opened while the house alarm is armed, ensuring phone settings don't silence the alert.", "complexity": "high" } }, { "id": "notification gateway alarm triggered normal mode", "result": { "structured": "TRIGGER: When alarm gateway 1 [alarm_control_panel.54ef44315770_alarm] OR alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm] OR alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm] changes state to triggered. CONDITIONS: alarm gateway button [input_boolean.alarm_gateway_button] is off AND shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] is disarmed. ACTIONS: 1. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in variable sm_g973f_rezhim_ne_bespokoit. 2. IF sm_g973f_rezhim_ne_bespokoit is 'off', THEN send a notification to mobile_app_sm_g973f with command 'off' to turn off Do Not Disturb mode AND wait up to 5 seconds for do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] to change state. 3. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in variable sm_g973f_rezhim_zvonka. 4. IF sm_g973f_rezhim_zvonka is 'normal', THEN send a notification to notify.notify with command 'normal' for ringer mode. 5. Execute the following actions in parallel: a. Send a Telegram message to secret telegram_all_chat_id [secret telegram_all_chat_id] with an inline button to stop the alarm. b. Send a high-priority notification via notify.notify with an action to stop the alarm. c. Send an SMS via notify.huawei_lte to secret sms_phone_all [secret sms_phone_all]. 6. IF sm_g973f_rezhim_zvonka is 'normal', THEN send a notification to mobile_app_sm_g973f to restore the ringer mode to its original value. 7. IF sm_g973f_rezhim_ne_bespokoit is 'off', THEN send a notification to mobile_app_sm_g973f to restore the Do Not Disturb mode to its original value.", "natural_language": { "trigger": "When any of the three alarm gateways (alarm gateway 1 [alarm_control_panel.54ef44315770_alarm], alarm gateway 2 [alarm_control_panel.54ef44cb80fd_alarm], or alarm gateway 3 [alarm_control_panel.54ef443127b2_alarm]) becomes triggered.", "conditions": "The alarm gateway button [input_boolean.alarm_gateway_button] must be off, and the main shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] must be in the disarmed state.", "action": "The automation first checks and temporarily disables the phone's Do Not Disturb mode if it's off, waiting for confirmation. It also checks the phone's ringer mode. It then sends parallel alerts: a Telegram message with a stop alarm button, a high-priority mobile notification with a stop alarm action, and an SMS. Finally, it restores the phone's original ringer and Do Not Disturb settings if they were changed." }, "human_like": "Sends urgent alerts via Telegram, mobile notification, and SMS when a gateway alarm is triggered, while temporarily managing phone settings to ensure the alerts are received.", "complexity": "high" } }, { "id": "vacuum cleaner error to all", "result": { "structured": "TRIGGER: When vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] attribute 'status' changes to 'Error' OR 'In Error' OR 'Charging Error'. CONDITIONS: None. ACTIONS: In parallel: 1. Send a photo to Telegram All Chat ID Secret [secret telegram_all_chat_id] with the current map from roborock vacuum map camera [camera.roborock_vacuum_map] and a caption indicating an error. 2. If lg smart tv [media_player.lg_smart_tv] is on, then send a notification to 'kotletochka_tv' with a help message.", "natural_language": { "trigger": "When the vacuum cleaner's status changes to indicate an error, such as 'Error', 'In Error', or 'Charging Error'.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation performs two actions at the same time. First, it sends a photo of the vacuum's current map to a specified Telegram chat, along with a message saying the vacuum needs help. Second, it checks if the LG smart TV is on, and if it is, it sends a notification to the TV with a help message for the vacuum." }, "human_like": "Alerts everyone via Telegram and the TV when the robot vacuum encounters an error, so someone can help it.", "complexity": "medium" } }, { "id": "vacuum cleaner after cleaning chita", "result": { "structured": "TRIGGER: When vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] changes state from 'returning' to 'docked'. CONDITIONS: The current total cleaned area from xiaomi vacuum total clean area [sensor.xiaomi_vacuum_cleaner_total_clean_area] is greater than the saved total area from total cleaned area saved [input_number.total_cleaned_area_saved] plus 30 (units). ACTIONS: Set variables: 'current_clean_area' to the formatted current clean area from xiaomi vacuum current clean area [sensor.xiaomi_vacuum_cleaner_current_clean_area] and 'current_clean_duration' to the formatted current clean duration from xiaomi vacuum current clean duration [sensor.xiaomi_vacuum_cleaner_current_clean_duration]. Then, in parallel: 1. Send a photo from roborock vacuum map camera [camera.roborock_vacuum_map] to Telegram Chita Chat ID Secret [secret telegram_chita_chat_id] with a caption containing the formatted duration and area, and a reminder to empty the water tank and dustbin. 2. Update total cleaned area saved [input_number.total_cleaned_area_saved] to the current total cleaned area value. 3. If lg smart tv [media_player.lg_smart_tv] is on, send a notification via notify.kotletochka_tv stating 'Степа: вернулся на базу'.", "natural_language": { "trigger": "When the vacuum cleaner named 'Степа' (vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner]) finishes returning and becomes docked.", "conditions": "The automation only runs if the total area cleaned in this session (from xiaomi vacuum total clean area [sensor.xiaomi_vacuum_cleaner_total_clean_area]) is more than 30 units greater than the last recorded total area (from total cleaned area saved [input_number.total_cleaned_area_saved]).", "action": "First, it calculates the current cleaning session's area and duration into readable formats. Then, it performs three actions simultaneously: it sends a photo of the vacuum's map to a specific Telegram chat with a message summarizing the cleaning job and a reminder to maintain the vacuum; it updates the saved total cleaned area to the new value; and if the LG TV is on, it sends a notification to the TV stating that 'Степа' has returned to base." }, "human_like": "Notifies the user via Telegram and TV when the robot vacuum finishes a cleaning session that was large enough, and reminds them to empty its water tank and dustbin.", "complexity": "medium" } }, { "id": "smoke detector alarm", "result": { "structured": "TRIGGER: When smoke sensor 1 [binary_sensor.0x158d0003943639_smoke] OR smoke sensor 2 [binary_sensor.0x158d00039a8358_smoke] OR smoke sensor 3 [binary_sensor.0x158d00039d9398_smoke] OR smoke sensor 4 [binary_sensor.0x158d00045ca483_smoke] OR smoke sensor 5 [binary_sensor.0x00158d00045cd551_smoke] changes state to 'on'. CONDITIONS: None. ACTIONS: Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] as a variable. If the stored variable equals 'off', send a command to turn off Do Not Disturb mode on mobile device sm_g973f and wait up to 5 seconds for the do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] to change state. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] as a variable. Create a list of area names for all smoke sensors currently in the 'on' state. If the ringer mode variable equals 'normal', send a command to set the notification ringer mode to normal. In parallel: Send a formatted message with the list of triggered areas to the Telegram All Chat ID Secret [secret telegram_all_chat_id] with an inline button to stop the alarm. Send a high-priority notification with the list of triggered areas via the notify service, including an action to stop the alarm. Send an SMS with the list of triggered areas to the SMS Phone All Secret [secret sms_phone_all] via a Huawei LTE gateway. If the ringer mode variable equals 'normal', send a command to restore the original ringer mode to mobile device sm_g973f. If the do not disturb variable equals 'off', send a command to restore the original Do Not Disturb mode to mobile device sm_g973f.", "natural_language": { "trigger": "When any of the five smoke sensors (smoke sensor 1, smoke sensor 2, smoke sensor 3, smoke sensor 4, or smoke sensor 5) detects smoke and changes its state to 'on'.", "conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon the trigger.", "action": "The automation first checks and stores the current 'Do Not Disturb' setting from the do not disturb sensor. If Do Not Disturb is off, it sends a command to the user's mobile phone to temporarily disable Do Not Disturb mode and waits briefly for confirmation. It then stores the current phone ringer mode. It compiles a list of the areas where smoke sensors have been triggered. If the phone's ringer mode was set to 'normal', it sends a command to ensure the notification ringer mode is set to normal. Next, it performs three actions simultaneously: it sends a detailed alert to a Telegram chat with a button to silence the alarm, sends a high-priority mobile notification with a stop alarm button, and sends an SMS alert via a Huawei LTE gateway. Finally, it restores the phone's original ringer mode and Do Not Disturb setting if they were changed at the start." }, "human_like": "Sends urgent alerts via Telegram, mobile notifications, and SMS when any smoke detector is triggered, while temporarily managing phone settings to ensure the alerts are received.", "complexity": "high" } }, { "id": "notification cert expired", "result": { "structured": "TRIGGER: When cert expired keenetic domain [binary_sensor.cert_expired_keenetic_domain] changes from off to on OR When cert expired asuscomm domain klg [binary_sensor.cert_expired_asuscomm_domain_klg] changes from off to on. CONDITIONS: None. ACTIONS: Send a Telegram message to the target defined by secret telegram_enzokot_chat_id [secret telegram_enzokot_chat_id]. The message title is '⚠️ *Сертификат SSL*'. The message body is a template that constructs a warning about the SSL certificate expiry, referencing the name of the triggering entity and the remaining time from a corresponding sensor.", "natural_language": { "trigger": "When the cert expired keenetic domain [binary_sensor.cert_expired_keenetic_domain] sensor changes state from off to on, or when the cert expired asuscomm domain klg [binary_sensor.cert_expired_asuscomm_domain_klg] sensor changes state from off to on.", "conditions": "There are no conditions that must be met.", "action": "Sends a formatted Telegram notification to a specific chat. The notification includes a warning title and a message that identifies which certificate is expiring and displays its remaining validity period." }, "human_like": "Sends a Telegram alert when an SSL certificate for a monitored domain is detected as expired.", "complexity": "low" } }, { "id": "update available or installed notification", "result": { "structured": "TRIGGER: When any entity's state changes. CONDITIONS: (The changed entity's entity_id starts with 'update.') AND (Both old_state and new_state exist) AND (new_state has attributes 'latest_version' AND 'installed_version') AND (old_state has attributes 'latest_version' AND 'installed_version') AND ((new_state is 'on' AND ((device_class is 'firmware' AND latest_version equals previous latest_version) OR latest_version is greater than previous latest_version) AND latest_version is not in [unknown, unavailable, none, None, null, ''] AND latest_version is not none) OR (old_state is 'on' AND new_state is 'off' AND ((device_class is 'firmware' AND installed_version equals previous installed_version) OR installed_version is greater than previous installed_version) AND installed_version is not in [unknown, unavailable, none, None, null, ''] AND installed_version is not none)). ACTIONS: Set variables (release_url, latest_version, installed_version, friendlyname). If installed_version did not change, send a Telegram message announcing an update was installed. Otherwise, in parallel: send a Telegram message announcing an update is available (with an install button if supported) AND, if the update entity's device_class is not 'firmware', send an HTML5 notification to N550JK [n550jk] announcing an update is available (with an install button if supported).", "natural_language": { "trigger": "Whenever any entity in the system changes its state.", "conditions": "The automation only proceeds if the entity that changed is an update entity (its ID starts with 'update.'). Both the previous and the new state of the entity must be known and contain version information (both 'latest_version' and 'installed_version' attributes). Furthermore, the change must represent a meaningful version update. This is true in two scenarios: either the update entity turns 'on', indicating an update is available, and its latest version is valid and either greater than before or unchanged for firmware updates; or the update entity turns from 'on' to 'off', indicating an update was installed, and its installed version is valid and either greater than before or unchanged for firmware updates.", "action": "The automation first calculates several variables, including a release URL, the new version numbers, and a friendly name for the entity. It then checks if the installed version changed. If it did not change (meaning an update was just installed), it sends a Telegram message to a specific chat announcing the successful installation. If the installed version did change (meaning a new update is available), it performs two actions in parallel: it sends a Telegram message with an 'Install' button (if supported) to announce the availability, and, if the update is not a device firmware update, it also sends a browser notification to the device named N550JK [n550jk] with an 'Update' action button." }, "human_like": "Sends notifications via Telegram and browser when a new system or integration update becomes available or has been successfully installed.", "complexity": "high" } }, { "id": "notification low battery zigbee", "result": { "structured": "TRIGGER: At 20:00:00 daily. CONDITIONS: (The group dynamic group sensor battery [group.dynamic_group_sensor_battery] contains at least one entity where: (the entity_id does NOT end with '_low_battery' AND its numeric state is less than or equal to 55 if a corresponding '_last_seen' or '_zigbee' sensor exists, otherwise less than or equal to 20) OR (the entity_id ends with '_low_battery' AND its state is 'on')). ACTIONS: Send a Telegram message to the target Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a list of devices meeting the low-battery condition, including their names and battery percentages.", "natural_language": { "trigger": "The automation runs every day at 8:00 PM.", "conditions": "It checks all battery sensors in the dynamic group sensor battery [group.dynamic_group_sensor_battery]. A device is considered to have a low battery if it is a regular battery sensor (not ending in '_low_battery') and its battery level is 55% or lower (if the device is a Zigbee device with a corresponding last_seen or zigbee sensor) or 20% or lower (if it is not a Zigbee device). Alternatively, if the device is a low battery indicator sensor (ending in '_low_battery'), it is considered low if its state is 'on'. The automation proceeds only if at least one device in the group meets these low-battery criteria.", "action": "Sends a Telegram notification to a specific chat, listing the names and battery percentages of all devices identified as having a low battery." }, "human_like": "Sends a daily evening Telegram alert listing any devices with low battery levels, using different thresholds for Zigbee and non-Zigbee sensors.", "complexity": "high" } }, { "id": "notification safety sockets on restart", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: heater socket [switch.0x842e14fffe5047f5] is on. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and message about the heater socket being on after restart.", "natural_language": { "trigger": "When Home Assistant restarts or starts up.", "conditions": "If the heater socket [switch.0x842e14fffe5047f5] is currently switched on.", "action": "Sends a notification via Telegram to the specified chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]) warning that the heater socket remained on after the Home Assistant restart." }, "human_like": "Sends a safety notification after a Home Assistant restart if the heater socket was left on.", "complexity": "low" } }, { "id": "notification safety sockets off", "result": { "structured": "TRIGGER: When any of the following power sensors reports a value above 3000: heater socket power [sensor.0x842e14fffe5047f5_power] OR water heater socket power [sensor.0x842e14fffe13a854_power] OR bedroom socket1 power [sensor.0x588e81fffeff5c4f_power] OR kitchen socket1 power [sensor.0x842e14fffe36661f_power] OR server ac power [sensor.shelly_plug_s_1_power] OR Bedroom Socket 2 Power [sensor.0x60a423fffef8d41a_power] OR shelly plug s 2 power [sensor.shelly_plug_s_2_power] OR shelly plug s nvr power [sensor.shelly_plug_s_nvr_power] OR shelly plug s keenetic hw power [sensor.shelly_plug_s_keenetic_hw_power] OR shelly plug s htr power [sensor.shelly_plug_s_htr_shelly_heated_tr_power]. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title '⚠️ *Управляемые розетки*' and a message containing the name of the device that triggered the alert.", "natural_language": { "trigger": "The automation triggers when the power consumption of any monitored smart socket exceeds 3000 watts. The monitored sockets include the heater socket, water heater socket, bedroom sockets, kitchen socket, server AC, and several other Shelly plug sockets.", "conditions": "There are no additional conditions that must be met for the action to run.", "action": "Sends a notification via Telegram to a specific chat, alerting the user that a power overload protection has been triggered. The message includes the name of the specific socket that exceeded the power limit." }, "human_like": "Sends a Telegram alert when any monitored smart plug consumes more than 3000 watts, helping to prevent electrical overloads.", "complexity": "low" } }, { "id": "notification public ip changed", "result": { "structured": "TRIGGER: When myip [sensor.myip] changes state. CONDITIONS: None. ACTIONS: In parallel: 1. Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message. The message states the external IP address is determined as `trigger.to_state.state` if the previous state was 'unavailable', 'unknown', or empty; otherwise, it states the external IP address changed from `trigger.from_state.state` to `trigger.to_state.state`. 2. Send a notification via notify.notify with a title and a message. The message states the external IP address is determined as trigger.to_state.state if the previous state was 'unavailable', 'unknown', or empty; otherwise, it states the external IP address changed from trigger.from_state.state to trigger.to_state.state. 3. Conditionally, if lg smart tv [media_player.lg_smart_tv] is on, then send a notification via notify.kotletochka_tv with the message 'Интернет: возможно переключились на LTE'.", "natural_language": { "trigger": "Whenever the state of the myip [sensor.myip] sensor changes.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "Three actions are performed in parallel. First, a formatted message is sent to a specific Telegram chat. The message either announces that the external IP address has been determined (if it was previously unknown) or that it has changed. Second, a similar notification is sent via the standard notification service. Third, a conditional check is performed: if the lg smart tv [media_player.lg_smart_tv] is turned on, a separate TV notification is sent suggesting a possible switch to LTE internet." }, "human_like": "Sends notifications when the home's external IP address changes, including a special alert to the TV if it's on.", "complexity": "medium" } }, { "id": "notification low level water", "result": { "structured": "TRIGGER: When zhimi humidifier cb1 low water level [binary_sensor.zhimi_humidifier_cb1_low_water_level] changes from off to on OR When zhimi humidifier ca4 low water level [binary_sensor.zhimi_humidifier_ca4_low_water_level] changes from off to on. CONDITIONS: The numeric value of the corresponding sensor (derived by replacing 'binary_sensor.' with 'sensor.' and removing '_low' from the triggering entity_id) is greater than 0. ACTIONS: Send a Telegram message to secret telegram_all_chat_id [secret telegram_all_chat_id] with a title and a message indicating it's time to add water to the humidifier, using the name of the triggering entity. In parallel, if lg smart tv [media_player.lg_smart_tv] is on, send a notification via notify.kotletochka_tv with a message indicating no water for the triggering humidifier.", "natural_language": { "trigger": "When the low water level sensor for either the zhimi humidifier cb1 [binary_sensor.zhimi_humidifier_cb1_low_water_level] or the zhimi humidifier ca4 [binary_sensor.zhimi_humidifier_ca4_low_water_level] changes from off (normal) to on (low).", "conditions": "The automation only proceeds if the numeric sensor value associated with the triggering humidifier (like a humidity or water level sensor) is greater than zero. This condition is checked using a template that transforms the binary sensor's entity ID to find its corresponding numeric sensor.", "action": "Sends a notification to a Telegram group [secret telegram_all_chat_id] with a message that it's time to refill the specific humidifier. At the same time, if the LG Smart TV [media_player.lg_smart_tv] is turned on, it also sends a notification to the TV." }, "human_like": "Sends alerts when a humidifier's water level is low, notifying via Telegram and the TV if it's on.", "complexity": "medium" } }, { "id": "notification vacuum maintenance", "result": { "structured": "TRIGGER: When vacuum cleaner main brush maintenance [binary_sensor.vacuum_cleaner_main_brush_maintenance] changes from off to on OR When vacuum cleaner side brush maintenance [binary_sensor.vacuum_cleaner_side_brush_maintenance] changes from off to on OR When vacuum cleaner filter maintenance [binary_sensor.vacuum_cleaner_filter_maintenance] changes from off to on OR When vacuum cleaner sensor dirty maintenance [binary_sensor.vacuum_cleaner_sensor_dirty_maintenance] changes from off to on. CONDITIONS: None. ACTIONS: Send a Telegram message to the target Telegram All Chat ID Secret [secret telegram_all_chat_id] with a title containing a wrench emoji and the name 'Степа', and a message stating that maintenance is required for the entity that triggered the automation.", "natural_language": { "trigger": "When any of the vacuum cleaner maintenance sensors, including the main brush, side brush, filter, or sensor dirty, changes its state from off to on.", "conditions": "There are no additional conditions that must be met for the action to run.", "action": "Sends a notification message via Telegram to a specific chat, indicating that maintenance is required for the specific vacuum cleaner component that triggered the alert." }, "human_like": "Sends a Telegram notification when any part of the vacuum cleaner requires maintenance.", "complexity": "low" } }, { "id": "notifications control voltage", "result": { "structured": "TRIGGER: When shelly em voltage [sensor.shelly_em_voltage] rises above 250 OR When shelly em voltage [sensor.shelly_em_voltage] falls below 180 OR When shelly em voltage [sensor.shelly_em_voltage] is between 179.9 and 250.1 (above 179.9 AND below 250.1). CONDITIONS: The trigger's previous state is not 'unavailable', 'unknown', or empty AND (trigger.above is None OR trigger.below is None OR (the previous state value is greater than or equal to trigger.below OR the previous state value is less than or equal to trigger.above)) AND both the previous and new state values are valid numbers greater than or equal to 0. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The message title is '⚠️ *Контроль напряжения*' for high/low voltage triggers, or '✅ *Контроль напряжения*' for the normal range trigger. The message body reports either 'Обнаружено *повышенное* напряжение сети XВ' if voltage is above 250, 'Обнаружено *пониженное* напряжение сети XВ' if voltage is below 180, or 'В сети *нормальное* напряжение XВ' if voltage is between 179.9 and 250.1, where X is the new voltage value.", "natural_language": { "trigger": "The automation triggers when the voltage reading from shelly em voltage [sensor.shelly_em_voltage] goes above 250 volts, falls below 180 volts, or enters the normal range between 179.9 and 250.1 volts.", "conditions": "Before sending a notification, the automation checks that the sensor's previous state was a valid reading (not 'unavailable', 'unknown', or empty). It also ensures the trigger logic is consistent (e.g., the previous value was actually outside the normal range when a high/low trigger fires) and that both the old and new voltage values are valid positive numbers.", "action": "Sends a formatted Telegram alert to the user's chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]). The message clearly indicates whether the voltage is high, low, or back to normal, and includes the exact voltage reading." }, "human_like": "Sends Telegram alerts when the mains voltage is too high, too low, or returns to a normal range.", "complexity": "medium" } }, { "id": "notifications backup instance info", "result": { "structured": "TRIGGER: When last google backup train [sensor.last_google_backup_train] changes state. CONDITIONS: The previous state of last google backup train [sensor.last_google_backup_train] is defined AND the new state of last google backup train [sensor.last_google_backup_train] is defined AND the previous state is not in the list ['unknown', 'unavailable', 'none', None, null, ''] AND the new state is not in the list ['unknown', 'unavailable', 'none', None, null, ''] AND the number of backups in the backup state [sensor.backup_state] attribute 'backups' is greater than 0. ACTIONS: First, update the entity disk use percent [sensor.disk_use_percent]. Then, wait for the state of disk use percent [sensor.disk_use_percent] to change, with a timeout of 10 seconds. Finally, send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message containing the name of the latest backup from backup state [sensor.backup_state], the current disk usage percentage from disk use percent [sensor.disk_use_percent], and the free space on Google Drive from backup state [sensor.backup_state].", "natural_language": { "trigger": "When the sensor tracking the last Google backup train [sensor.last_google_backup_train] changes its state.", "conditions": "The automation checks that the sensor's previous and new states are both valid and not in a list of invalid states like 'unknown' or 'unavailable'. It also verifies that there is at least one backup listed in the backup state [sensor.backup_state] sensor's attributes.", "action": "First, it refreshes the disk usage percentage sensor [sensor.disk_use_percent]. It then waits for that sensor to update its state, allowing up to 10 seconds for this to happen. Finally, it sends a formatted Telegram notification to a specific chat [secret telegram_enzokot_chat_id], reporting the name of the most recent backup, the current system disk usage percentage, and the amount of free space remaining on Google Drive." }, "human_like": "Sends a Telegram notification with details about a newly created backup, including disk usage and Google Drive free space, after a backup is detected.", "complexity": "medium" } }, { "id": "notifications failed login or block IP", "result": { "structured": "TRIGGER: When a persistent notification with ID 'http-login' is added OR updated OR When a persistent notification with ID 'ip-ban' is added OR updated. CONDITIONS: None. ACTIONS: In parallel: 1. Send a Telegram message to the chat identified by Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The message title includes an icon and 'Вход в систему'. The message content depends on the trigger: if triggered by 'http-login', it reports a failed login attempt from an extracted IP address; if triggered by 'ip-ban', it reports that the IP address is blocked after 5 login attempts. Both messages include a link to the IP address on whatismyipaddress.com and a link to the system logs from instance external url config [sensor.instance_external_url_config]. 2. Dismiss the persistent notification that triggered the automation.", "natural_language": { "trigger": "The automation triggers when a system notification about a failed HTTP login (ID 'http-login') is created or updated, or when a notification about an IP ban (ID 'ip-ban') is created or updated.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "The automation performs two actions simultaneously: it sends a detailed alert message to a specific Telegram chat, and it dismisses the system notification that caused the trigger. The Telegram message varies based on the type of alert, providing information about the suspicious IP address and a link to the system logs." }, "human_like": "Sends Telegram alerts and clears system notifications for failed login attempts or IP bans, keeping the user informed about security events.", "complexity": "medium" } }, { "id": "notification start or stop home assistant", "result": { "structured": "TRIGGER: When Home Assistant starts OR When Home Assistant shuts down. CONDITIONS: None. ACTIONS: Set a variable 'long_start_integrations_name' to a comma-separated list of integration names that took 9 seconds or more to set up (if sensor.start_time attribute 'setup_time' exists). If the trigger is Home Assistant start, then update the entities errors in system log command line [sensor.errors_in_system_log_command_line] and warnings in system log command line [sensor.warnings_in_system_log_command_line]. Finally, send a Telegram message to the target Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title indicating start (✅) or stop (⛔) and a message containing: for start - the startup time from start time [sensor.start_time], the core version from home assistant core update [update.home_assistant_core_update], error and warning counts from errors in system log command line [sensor.errors_in_system_log_command_line] and warnings in system log command line [sensor.warnings_in_system_log_command_line], and the list of slow integrations if any; for stop - the uptime from online custom [sensor.online_custom].", "natural_language": { "trigger": "The automation triggers either when Home Assistant finishes starting up or when it begins to shut down.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "First, it calculates a list of integrations that took 9 seconds or longer to start, if that information is available. If the trigger was the Home Assistant start event, it refreshes the sensor data for the error and warning counts. Then, it sends a detailed Telegram notification. For a start event, the message includes a green checkmark, the startup duration, the installed Home Assistant Core version, the current count of errors and warnings in the logs, and a list of any slow-starting integrations. For a shutdown event, the message includes a stop sign emoji and the total time Home Assistant was running." }, "human_like": "Sends a detailed Telegram notification when Home Assistant starts or stops, including performance metrics and system status.", "complexity": "medium" } }, { "id": "notifications errors in automations or scripts", "result": { "structured": "TRIGGER: When a system log event of level ERROR occurs. CONDITIONS: local network availability [binary_sensor.local_network_availability] is on AND the entity ID of the automation or script that caused the error (from trigger.event.data.name) does NOT match the entity ID of this automation (this.entity_id) AND the error message (from trigger.event.data.message) contains the substring 'Error while executing automation' OR 'Error executing script' AND the length of the error message is less than 4000 characters. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with HTML formatting, a title '⛔ Ошибка выполнения скрипта', and a message containing the escaped error message followed by a link to the logs page using the URL from instance external url config [sensor.instance_external_url_config].", "natural_language": { "trigger": "Whenever the Home Assistant system logs an event with the severity level ERROR.", "conditions": "The local network availability [binary_sensor.local_network_availability] must be on, indicating the network is available. The error must not have originated from this automation itself, to prevent self-notification loops. The error message must specifically mention either 'Error while executing automation' or 'Error executing script', filtering for automation and script execution errors only. Finally, the error message must be shorter than 4000 characters to ensure it fits within the notification.", "action": "Sends an HTML-formatted message via Telegram to the user's secret chat ID [secret telegram_enzokot_chat_id]. The message includes an error icon and a bold title 'Ошибка выполнения скрипта' (Script Execution Error), the full error message, and a clickable link to the Home Assistant logs page, using the external URL from instance external url config [sensor.instance_external_url_config]." }, "human_like": "Sends a Telegram alert when an automation or script fails with an error, provided the network is up and the error message is concise.", "complexity": "medium" } }, { "id": "notifications objects in unavailable status", "result": { "structured": "TRIGGER: When any state change event occurs. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off AND the new state of the triggering entity is 'unknown' OR 'unavailable' AND the triggering entity's ID is a member of the group important devices unavailable [group.important_devices_unavailable] AND the new state of the triggering entity is equal to its old state. ACTIONS: If instances stoping [input_boolean.instances_stoping] is off, then send a Telegram message to the secret chat ID [secret telegram_enzokot_chat_id] with a formatted notification containing the friendly name of the triggering entity and its new state.", "natural_language": { "trigger": "Whenever any entity in the system changes its state.", "conditions": "The automation only proceeds if the 'instances stoping' [input_boolean.instances_stoping] switch is off, the entity that changed state is now reporting a status of either 'unknown' or 'unavailable', the entity is a member of the 'important devices unavailable' [group.important_devices_unavailable] group, and the new state is the same as the old state (this condition is unusual and may be a check for a specific transition).", "action": "If the 'instances stoping' switch is still off, send a silent HTML-formatted message to a specific Telegram chat [secret telegram_enzokot_chat_id], notifying the user that the device's friendly name has changed its status to the new unavailable state." }, "human_like": "Sends a Telegram notification when an important device becomes unavailable or unknown, but only if a master control switch allows it.", "complexity": "medium" } }, { "id": "notifications on off water heater", "result": { "structured": "TRIGGER: When water heater socket power [sensor.0x842e14fffe13a854_power] changes state. CONDITIONS: (water heater season [input_boolean.water_heater_season] is on) AND (the old state value is not 'unknown', 'unavailable', 'none', None, null, or empty string AND the new state value is not 'unknown', 'unavailable', 'none', None, null, or empty string AND the new state value equals the old state value) AND ((the new state as integer is >= 850 AND the old state as integer is <= 30) OR (the new state as integer is < 30 AND the old state as integer is > 850)). ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and message indicating if the water heater is on or off, based on the power state.", "natural_language": { "trigger": "Whenever the power reading from the water heater socket power [sensor.0x842e14fffe13a854_power] sensor changes.", "conditions": "The water heater season [input_boolean.water_heater_season] must be turned on. The automation also checks that both the previous and new power state values are valid (not 'unknown', 'unavailable', 'none', None, null, or empty) and that they are numerically the same. Furthermore, it requires a significant power transition: either the new power is high (850 or more) while the old was low (30 or less), or the new power is low (less than 30) while the old was high (more than 850).", "action": "Sends a silent Telegram notification to a specific chat, Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The notification title includes an icon, and the message states whether the water heater is 'Включен' (On) or 'Отключен' (Off) based on whether the new power reading is at least 30." }, "human_like": "Sends a Telegram notification when the water heater power consumption makes a significant transition from high to low or low to high, but only during the water heater season.", "complexity": "medium" } }, { "id": "notifications stale google drive backup", "result": { "structured": "TRIGGER: When backups stale [binary_sensor.backups_stale] changes from off to on. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title containing an alert symbol and 'Резервное копирование БД', and a message stating there is a problem with Google Drive backup, including a link to the backup addon logs using the URL from instance external url config [sensor.instance_external_url_config].", "natural_language": { "trigger": "When the backups stale [binary_sensor.backups_stale] sensor changes state from off to on.", "conditions": "There are no additional conditions.", "action": "Sends a Telegram alert message to the specified chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]). The message has a warning title and includes a link to the Google Drive backup addon logs, using the external URL provided by instance external url config [sensor.instance_external_url_config]." }, "human_like": "Sends a Telegram notification when the Google Drive backup is detected as stale, providing a link to the logs for troubleshooting.", "complexity": "low" } }, { "id": "notifications entry discovery integrations", "result": { "structured": "TRIGGER: When a config_entry_discovered event occurs. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with the title '📟 *Устройства*' and a message containing a link to the integrations page using the URL from instance external url config [sensor.instance_external_url_config].", "natural_language": { "trigger": "When Home Assistant discovers a new device or integration on the network.", "conditions": "There are no conditions that must be met.", "action": "Sends a silent Telegram notification to a specific chat, providing a link to view the newly discovered device in the Home Assistant integrations panel." }, "human_like": "Sends a Telegram notification with a link whenever a new device is discovered on the network.", "complexity": "low" } }, { "id": "notifications entry discovery", "result": { "structured": "TRIGGER: When an entity registry update event occurs OR when a device registry update event occurs. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off. ACTIONS: Set variable 'name_for_send' based on the trigger: if the trigger is a device registry update, assign the device's user-defined name if it exists, otherwise assign a fallback value derived from the device's name or device ID; if the trigger is an entity registry update, assign an empty string. Then, send a Telegram message to the secret telegram_enzokot_chat_id [secret telegram_enzokot_chat_id] with HTML formatting, a title, and a message content that depends on the trigger: for a device registry update, the message includes the action (e.g., create, update, remove) and the 'name_for_send' variable; for an entity registry update, the message includes the action and the entity IDs involved (old and new).", "natural_language": { "trigger": "The automation triggers whenever there is an update to the Home Assistant entity registry or device registry.", "conditions": "It only proceeds if the instances stoping [input_boolean.instances_stoping] is turned off.", "action": "First, it prepares a variable containing a name for the device, using the user-defined name if available, or a fallback identifier. Then, it sends a silent HTML-formatted message to a specific Telegram chat. The message reports whether a device or entity was updated, created, or removed, including relevant names or IDs." }, "human_like": "Sends a Telegram notification when new devices or entities are discovered or updated in Home Assistant, but only when system shutdown is not in progress.", "complexity": "medium" } }, { "id": "notifications automation already running", "result": { "structured": "TRIGGER: When a system log event with level WARNING occurs. CONDITIONS: The log message contains the substring \"Already running\". ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title \"⚠️ Выполнение автоматизаций\" and a message containing the log event message text.", "natural_language": { "trigger": "When Home Assistant logs a system event with a WARNING level.", "conditions": "If the text of the logged warning message contains the phrase \"Already running\".", "action": "Sends a silent Telegram message to a specific chat, notifying the user that an automation attempted to run again while already active, and includes the original log message." }, "human_like": "Sends a Telegram notification when an automation tries to start while it's already running, to alert about potential conflicts.", "complexity": "low" } }, { "id": "system log critical error notify", "result": { "structured": "TRIGGER: When a system log event occurs with level FATAL OR When a system log event occurs with level CRITICAL. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with HTML formatting, a title containing an error icon and 'Ошибки системного журнала', and a message containing the triggered event's message and a link to the logs using instance external url config [sensor.instance_external_url_config].", "natural_language": { "trigger": "When the Home Assistant system log records an event with a severity level of FATAL or CRITICAL.", "conditions": "There are no additional conditions that must be met.", "action": "Sends a formatted HTML message via Telegram to the specified chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]). The message includes an error icon, a title, the log error message, and a clickable link to view the full logs using the instance external url config [sensor.instance_external_url_config]." }, "human_like": "Sends a Telegram alert when critical or fatal errors are logged in the Home Assistant system.", "complexity": "low" } }, { "id": "notifications sms unread or full storage", "result": { "structured": "TRIGGER: When huawei e3372h 320 sms unread [sensor.huawei_e3372h_320_sms_unread] changes state OR When huawei e3372h 320 sms storage full [binary_sensor.huawei_e3372h_320_sms_storage_full] changes from off to on. CONDITIONS: (The triggering entity is huawei e3372h 320 sms storage full [binary_sensor.huawei_e3372h_320_sms_storage_full] (id 'full_storage')) OR (The new state of huawei e3372h 320 sms unread [sensor.huawei_e3372h_320_sms_unread] is not in the list ['unknown', 'unavailable', 'none', None, null, ''] AND the integer value of the new state is greater than the integer value of the previous state). ACTIONS: Send a Telegram message to the secret chat Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message. The title includes an icon and header. The message reports either storage full or the new count of unread SMS, formatted with grammatical inflection, on the device named from the triggering entity's attributes.", "natural_language": { "trigger": "The automation triggers either when the sensor tracking unread SMS messages on the Huawei modem [sensor.huawei_e3372h_320_sms_unread] changes its value, or when the binary sensor indicating the modem's SMS storage is full [binary_sensor.huawei_e3372h_320_sms_storage_full] turns from off to on.", "conditions": "For the action to proceed, the condition checks if the trigger was specifically the storage full sensor turning on. If not, it then checks that the new state of the unread SMS sensor is a valid, non-error value and that the new numeric count is higher than the previous count, ensuring it only acts on an increase in unread messages.", "action": "Sends a silent Telegram message to a predefined private chat [secret telegram_enzokot_chat_id]. The message title includes an icon (envelope for new messages, inbox tray for full storage). The message body either announces that the SMS storage is full or states the new count of unread messages, correctly inflecting the word for 'unread', and identifies the modem by its device name." }, "human_like": "Sends a Telegram notification when the Huawei modem receives a new unread SMS message or when its SMS storage becomes full.", "complexity": "medium" } }, { "id": "notifications link down keenetic", "result": { "structured": "TRIGGER: When check keenetic link down binary [binary_sensor.check_keenetic_link_down] changes to off OR When check keenetic link down binary [binary_sensor.check_keenetic_link_down] changes to on OR When Home Assistant starts OR When an event_template_reloaded event occurs. CONDITIONS: counter keenetic link down [counter.counter_keenetic_link_down] is above 0. ACTIONS: In parallel: 1. Send an SMS notification to SMS Phone Enzokot Secret [secret sms_phone_enzokot] with a message containing the timestamp and status from check keenetic link down [sensor.check_keenetic_link_down] and a URL. 2. Reset counter keenetic link down [counter.counter_keenetic_link_down] to 0.", "natural_language": { "trigger": "The automation triggers when the binary sensor check keenetic link down binary [binary_sensor.check_keenetic_link_down] changes its state to either on or off, when Home Assistant starts up, or when a template reload event occurs.", "conditions": "The automation only proceeds if the counter keenetic link down [counter.counter_keenetic_link_down] has a value greater than zero.", "action": "It simultaneously sends an SMS alert to the phone number stored in SMS Phone Enzokot Secret [secret sms_phone_enzokot] with details about the Keenetic link status and resets the link down counter to zero." }, "human_like": "Sends an SMS alert and resets a counter when the Keenetic network link status changes, Home Assistant restarts, or templates are reloaded, but only if the counter indicates a prior issue.", "complexity": "medium" } }, { "id": "notifications new rss posts", "result": { "structured": "TRIGGER: When a feedreader event occurs. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off. ACTIONS: Set variable stormy_notification to true if the feed_url from the event contains 'shtormovye-i-ekstrennye-preduprezhdeniya' (case-insensitive). Send a Telegram message with HTML formatting. The target chat is Telegram All Chat ID Secret [secret telegram_all_chat_id] if stormy_notification is true, otherwise Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. Disable notifications if stormy_notification is false. Disable web page preview. The message title is '📰 RSS новости'. The message body is a hyperlink using the event's link and title, with the domain extracted from the link.", "natural_language": { "trigger": "Whenever a new RSS feed entry is received, indicated by a feedreader event.", "conditions": "The automation only runs if the instances stoping [input_boolean.instances_stoping] is turned off.", "action": "The automation checks if the new RSS post is a storm warning by looking for a specific keyword in the feed URL. If it is a storm warning, it sends a message to a group chat for everyone (Telegram All Chat ID Secret [secret telegram_all_chat_id]) and leaves notifications enabled. If it's a regular post, it sends the message only to a personal chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]) and silences the notification. The message is formatted as an HTML link showing the post's title and its website domain." }, "human_like": "Sends new RSS posts to Telegram, routing storm warnings to a group chat and other news to a personal chat.", "complexity": "medium" } }, { "id": "notifications warnings or errors in syslog", "result": { "structured": "TRIGGER: When the time matches the pattern every hour at 30 minutes past the hour OR When system log error counter [counter.system_log_error_counter] is above 5 OR When system log warning counter [counter.system_log_warning_counter] is above 10. CONDITIONS: (system log error counter [counter.system_log_error_counter] is greater than 0 OR system log warning counter [counter.system_log_warning_counter] is greater than 0) AND The current time is between 8:30:00 and 23:00:00. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message. The message includes the count of errors if greater than 0 and the count of warnings if greater than 0, along with a link to the logs using the URL from instance external url config [sensor.instance_external_url_config].", "natural_language": { "trigger": "The automation triggers every hour at 30 minutes past the hour, or when the system log error counter [counter.system_log_error_counter] exceeds 5, or when the system log warning counter [counter.system_log_warning_counter] exceeds 10.", "conditions": "The automation only proceeds if there is at least one error or warning in the system logs, meaning either the error counter or the warning counter is greater than zero. Additionally, it must be between 8:30 AM and 11:00 PM.", "action": "Sends a silent Telegram message to a specific chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]) with a formatted report. The report shows the number of errors and warnings from the system logs, if any are present, and includes a clickable link to view the full logs using the external URL provided by instance external url config [sensor.instance_external_url_config]." }, "human_like": "Sends a daily summary of system log errors and warnings via Telegram during daytime hours, or alerts immediately if thresholds are exceeded.", "complexity": "medium" } }, { "id": "telegram is offline for instance notification", "result": { "structured": "TRIGGER: When telegram status [sensor.telegram_status] changes from online to offline AND remains offline for 1 minute and 20 seconds. CONDITIONS: None. ACTIONS: If current time is between 08:00:00 and 23:00:00, then send an SMS notification via huawei_lte to SMS Phone Enzokot Secret [secret sms_phone_enzokot] with message '⚠ Telegram API недоступно' and a URL. Otherwise, send an email notification via email_enzokot_ha with title '⚠️ Трекинг устройств' and message 'Telegram API недоступно'.", "natural_language": { "trigger": "When the telegram status [sensor.telegram_status] changes from being online to offline and stays offline for at least one minute and twenty seconds.", "conditions": "There are no additional conditions that must be met for the automation to proceed.", "action": "Depending on the time of day, the automation will send a notification. If the current time is between 8:00 AM and 11:00 PM, it sends an SMS message via the huawei_lte service to the SMS Phone Enzokot Secret [secret sms_phone_enzokot] number, containing a warning message and a link. If it is outside of those hours, it sends an email via the email_enzokot_ha service with a warning title and message." }, "human_like": "Sends an alert via SMS during the day or email at night when the Telegram API becomes unavailable for over a minute.", "complexity": "medium" } }, { "id": "yandex station to or from local mode notification", "result": { "structured": "TRIGGER: When any of the following entities changes state: yandex station assumed state 1 [binary_sensor.yandex_station_ff98f029b620413b35e5e278_assumed_state] OR yandex station assumed state 2 [binary_sensor.yandex_station_lr0000000000000252130000de5d13d0_assumed_state] OR yandex station assumed state 3 [binary_sensor.yandex_station_m00ka4300h99tr_assumed_state] from 'off' to 'on' (trigger id: non_local) OR from 'on' to 'off'. CONDITIONS: None. ACTIONS: Send a Telegram message to the chat identified by Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with HTML parsing enabled and notifications disabled. The message includes a title with a warning or checkmark icon and a bold 'Device Tracking' header. The message body states the name of the triggering station and indicates it has either disabled local control mode (if trigger id is 'non_local') or switched to local control mode.", "natural_language": { "trigger": "When any of the three Yandex station assumed state sensors changes its state. Specifically, when it changes from 'off' to 'on' (a specific trigger named 'non_local') or from 'on' to 'off'.", "conditions": "There are no conditions for this automation.", "action": "Sends a silent HTML-formatted message to a specific Telegram chat. The message includes a title with an icon and a 'Device Tracking' header. The main message announces which Yandex station changed state and whether it has disabled or enabled its local control mode." }, "human_like": "Sends a Telegram notification when a Yandex station enters or exits local control mode.", "complexity": "medium" } }, { "id": "hot pipe low or up temperature notification", "result": { "structured": "TRIGGER: When hot pipe temperature sensor 1 [sensor.0x00158d0006c5f21e_temperature] OR hot pipe temperature sensor 2 [sensor.0x158d0006b860cf_temperature] OR hot pipe temperature sensor 3 [sensor.0x00158d0008386b56_temperature] remains below 40°C for 5 minutes OR When hot pipe temperature sensor 1 [sensor.0x00158d0006c5f21e_temperature] OR hot pipe temperature sensor 2 [sensor.0x158d0006b860cf_temperature] OR hot pipe temperature sensor 3 [sensor.0x00158d0008386b56_temperature] remains above 40°C for 5 minutes. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram All Chat ID Secret [secret telegram_all_chat_id] with a title and message indicating the hot water pipe is cooling down or heating up, based on which trigger fired. Additionally, if the trigger was for the temperature being below 40°C AND the triggering entity was hot pipe temperature sensor 1 [sensor.0x00158d0006c5f21e_temperature], also send an SMS via notify.huawei_lte to SMS Phone Enzokot Secret [secret sms_phone_enzokot] with a warning message about the pipe cooling down.", "natural_language": { "trigger": "The automation triggers when any of the three hot pipe temperature sensors (hot pipe temperature sensor 1 [sensor.0x00158d0006c5f21e_temperature], hot pipe temperature sensor 2 [sensor.0x158d0006b860cf_temperature], or hot pipe temperature sensor 3 [sensor.0x00158d0008386b56_temperature]) has a temperature that stays either below 40°C for five minutes or above 40°C for five minutes.", "conditions": "There are no conditions that must be met for the actions to run; the automation executes immediately upon a valid trigger.", "action": "The automation sends a notification to a Telegram chat (Telegram All Chat ID Secret [secret telegram_all_chat_id]) with a custom message and emoji indicating whether the hot water pipe is cooling down or heating up. If the specific trigger was for the temperature being below 40°C and it came from the hot pipe temperature sensor 1 [sensor.0x00158d0006c5f21e_temperature], it also sends an SMS warning to a specific phone number (SMS Phone Enzokot Secret [secret sms_phone_enzokot]) via a Huawei LTE router." }, "human_like": "Sends notifications when the temperature of any hot water pipe sensor remains too low or too high for five minutes, alerting via Telegram and, in a specific case, via SMS.", "complexity": "medium" } }, { "id": "system down uptime kuma notifications", "result": { "structured": "TRIGGER: When a webhook with ID 'secret webhook_id_system_down_uptime_kuma' is received via POST method. CONDITIONS: The webhook payload contains a non-null 'monitor' field. ACTIONS: Set variable 'status_from' to 'online' if the webhook payload's 'heartbeat.status' equals 1, otherwise set to 'offline'. Then, in parallel: 1. Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title containing an icon and 'Трекинг устройств', and a message stating the monitor's name and its network status. 2. If the monitor's name contains 'tsymbal' (case-insensitive) AND Internet Availability Ping [binary_sensor.internet_availability_ping] is 'on', then send an SMS via notify.huawei_lte to SMS Phone To4ko Secret [secret sms_phone_to4ko] with a message about the link status and a URL.", "natural_language": { "trigger": "The automation is triggered when a specific webhook, identified by 'secret webhook_id_system_down_uptime_kuma', is received via a POST request.", "conditions": "The automation only proceeds if the data received in the webhook contains a 'monitor' field that is not empty.", "action": "First, it determines a status based on the webhook data: if a heartbeat status is present and equals 1, the status is set to 'online'; otherwise, it's 'offline'. Then, it performs two actions simultaneously: it sends a formatted Telegram message to a specific chat, and if the monitor's name includes 'tsymbal' and the Internet Availability Ping [binary_sensor.internet_availability_ping] sensor is reporting 'on', it also sends an SMS notification with a link status update." }, "human_like": "Sends Telegram and optional SMS notifications when a monitored system's status changes, based on webhook alerts from an uptime monitor.", "complexity": "medium" } }, { "id": "gw2 alarm turn on off notification", "result": { "structured": "TRIGGER: When shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] changes state to armed_away OR disarmed (excluding transitions from unknown, unavailable, or empty). CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with the content: '🔇 Сигнализация *выключена*' if the alarm is disarmed, otherwise '🔉 Сигнализация *включена*'.", "natural_language": { "trigger": "When the shliuza alarm control panel [alarm_control_panel.signalka_shliuza_alarm] changes its state to either armed_away or disarmed, but not when it changes from an unknown, unavailable, or empty state.", "conditions": "There are no conditions for this automation.", "action": "Sends a Telegram notification to the Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The message will state '🔇 Сигнализация *выключена*' (Alarm is off) if the alarm is disarmed, or '🔉 Сигнализация *включена*' (Alarm is on) if the alarm is armed." }, "human_like": "Sends a Telegram notification when the alarm system is armed or disarmed.", "complexity": "low" } }, { "id": "repairs issue registry", "result": { "structured": "TRIGGER: When repairs state [sensor.repairs_state] changes state (excluding from unknown or unavailable) OR When Home Assistant starts (homeassistant_start). CONDITIONS: (Trigger is homeassistant_start AND repairs state [sensor.repairs_state] is greater than 0) OR (Trigger is homeassistant_start AND previous state of repairs state [sensor.repairs_state] is less than new state of repairs state [sensor.repairs_state]). ACTIONS: If trigger is homeassistant_start, delay for 2 seconds. Then, if the condition (same as above) is true, send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a formatted list of issues from repairs state [sensor.repairs_state].", "natural_language": { "trigger": "The automation triggers either when the repairs state [sensor.repairs_state] changes from any state except 'unknown' or 'unavailable', or when Home Assistant starts up.", "conditions": "The automation proceeds only if the trigger is the Home Assistant start event, and either the current number of issues in repairs state [sensor.repairs_state] is greater than zero, or the number of issues has increased compared to the previous state.", "action": "If the trigger is the Home Assistant start event, the automation waits for 2 seconds. Then, if the condition is met, it sends a formatted Telegram message to the Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id], listing all the issues from the repairs state [sensor.repairs_state] sensor." }, "human_like": "Sends a Telegram notification about system repair issues when Home Assistant starts or when the issue count changes, ensuring you're alerted to any problems.", "complexity": "medium" } }, { "id": "login ssh from servers", "result": { "structured": "TRIGGER: When login ssh kotletochka dell srv [sensor.login_ssh_kotletochka_dell_srv] changes state, provided the previous state is not 'unknown' AND not 'unavailable' AND the new state is not 'unknown' AND not 'unavailable'. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with HTML formatting. The message includes a title with a wrench emoji and 'Вход по SSH' in bold. The message body contains the friendly name of the sensor, the new state timestamp formatted as 'dd.mm.YYYY HH:MM:SS', and the attributes user, address, and tty from the triggering state, all in bold.", "natural_language": { "trigger": "Whenever the sensor login ssh kotletochka dell srv [sensor.login_ssh_kotletochka_dell_srv] changes to a new state, as long as the change is not from or to an 'unknown' or 'unavailable' status.", "conditions": "There are no explicit conditions for this automation.", "action": "Sends a formatted HTML message to a specific Telegram chat. The notification includes details about the SSH login event: the server name, the exact timestamp of the login, the username, the source IP address, and the terminal (tty) used." }, "human_like": "Sends a detailed Telegram notification whenever a successful SSH login is detected on the server.", "complexity": "low" } }, { "id": "xiaomi mi scale new weight", "result": { "structured": "TRIGGER: When xiaomi mi scale weight [sensor.esp_xiaomi_mi_scale_weight] changes state, provided the previous state was not 'unknown' AND not 'unavailable' AND the new state is not 'unknown' AND not 'unavailable'. CONDITIONS: None. ACTIONS: Set variables first_name_father, first_name_mother, and first_name_daughter to secret values. Then, send a Telegram message to secret telegram_all_chat_id [secret telegram_all_chat_id] with a title and a message. The message identifies the person based on the weight value: if weight >= 90, use first_name_father; else if weight >= 40, use first_name_mother; else use first_name_daughter. The message includes the weight value and its unit of measurement.", "natural_language": { "trigger": "Whenever the xiaomi mi scale weight [sensor.esp_xiaomi_mi_scale_weight] sensor reports a new weight measurement, but only if the sensor's state is changing from and to a known, available value (not 'unknown' or 'unavailable').", "conditions": "There are no additional conditions that need to be met.", "action": "The automation first sets up some secret name variables. Then, it sends a silent notification to a specific Telegram chat [secret telegram_all_chat_id]. The message announces a new weighing, identifies the person based on the measured weight (father for 90+ units, mother for 40+ units, otherwise daughter), and displays the exact weight with its unit." }, "human_like": "Sends a Telegram notification identifying which family member was weighed, based on the weight measured by the smart scale.", "complexity": "medium" } }, { "id": "host kernel ext4 warning", "result": { "structured": "TRIGGER: When kernel ext4 warning [binary_sensor.kernel_ext4_warning] changes from off to on OR at 10:30:00. CONDITIONS: kernel ext4 warning [binary_sensor.kernel_ext4_warning] is on. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with the title '⚠️ *Host Kernel log*' and a message containing the friendly name attribute of kernel ext4 warning [binary_sensor.kernel_ext4_warning].", "natural_language": { "trigger": "When the kernel ext4 warning [binary_sensor.kernel_ext4_warning] sensor turns on, or at 10:30:00 every day.", "conditions": "The kernel ext4 warning [binary_sensor.kernel_ext4_warning] sensor must be in the 'on' state.", "action": "Sends a silent Telegram message to the configured chat ID with a warning title and the friendly name of the kernel warning sensor." }, "human_like": "Sends a Telegram alert when a kernel ext4 warning is detected or as a daily reminder at 10:30 AM.", "complexity": "medium" } }, { "id": "notification wet entrance floor", "result": { "structured": "TRIGGER: When entrance floor wet sensor [binary_sensor.0x00158d000913dbf1_contact] changes from dry (off) to wet (on) AND remains wet for 5 seconds. CONDITIONS: (Current time is between 06:00:00 and 16:00:00 AND current day is Monday) AND (More than 1 hour has passed since this automation was last triggered). ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with title '🧹 *Влажная уборка*' and message 'Обнаружена уборка в общем коридоре' AND Send an SMS via notify.huawei_lte to SMS Phone Users 56 59 Secret [secret sms_phone_users56_59] with message 'Обнаружена уборка в общем коридоре' and data URL 'http://192.168.8.1/'.", "natural_language": { "trigger": "When the entrance floor wet sensor [binary_sensor.0x00158d000913dbf1_contact] detects that the floor has become wet and stays wet for at least 5 seconds.", "conditions": "The automation only runs if the current time is between 6 AM and 4 PM on a Monday, and if it has been more than one hour since this automation was last triggered.", "action": "Sends a notification via Telegram to the Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] and an SMS to the SMS Phone Users 56 59 Secret [secret sms_phone_users56_59], both stating that cleaning has been detected in the common corridor." }, "human_like": "Sends notifications when the floor in the entrance corridor is wet, indicating cleaning activity, but only on Monday mornings and afternoons, and not more than once per hour.", "complexity": "medium" } }, { "id": "notification water leak near nvr", "result": { "structured": "TRIGGER: When nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] OR nvr water leak sensor 2 [binary_sensor.0x00158d0009ea1c0e_water_leak] changes to state 'on' (leak detected) AND remains in that state for 10 seconds. CONDITIONS: None. ACTIONS: Execute the following actions in parallel: 1. Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and a message containing the friendly name of the triggering sensor. 2. Send an SMS via notify.huawei_lte to SMS Phone Users 59 60 Secret [secret sms_phone_users59_60] with a message containing the friendly name of the triggering sensor and a URL. 3. Execute a sequence: a. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in a variable. b. If the stored state is 'off', send a command to mobile_app_sm_g973f to turn off 'Do Not Disturb', then wait up to 5 seconds for the sensor state to change. c. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in a variable. d. If the stored state is 'normal', send a command via notify.notify to set the ringer mode to 'normal'. e. Send a high-priority notification via notify.notify with a title and message about the leak. f. If the stored ringer mode was 'normal', send a command to mobile_app_sm_g973f to restore the ringer mode to its original value. g. If the stored 'Do Not Disturb' state was 'off', send a command to mobile_app_sm_g973f to restore the 'Do Not Disturb' mode to its original value.", "natural_language": { "trigger": "When either the nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] or the nvr water leak sensor 2 [binary_sensor.0x00158d0009ea1c0e_water_leak] detects a water leak (changes to 'on') and remains in that state for at least 10 seconds.", "conditions": "There are no conditions that must be met for the actions to run; the automation proceeds directly after the trigger.", "action": "The automation performs several notifications and device adjustments simultaneously. It sends a formatted alert to a Telegram chat and an SMS to a phone number. It also runs a sequence on a mobile device: it first checks and temporarily disables the 'Do Not Disturb' mode if it was off, waits for confirmation, then checks and ensures the ringer mode is set to 'normal'. It then sends a high-priority phone notification about the leak. Finally, it attempts to restore the mobile device's original 'Do Not Disturb' and ringer mode settings." }, "human_like": "Sends urgent alerts via Telegram, SMS, and phone notification when a water leak is detected near the NVR, and temporarily adjusts phone settings to ensure the alert is seen.", "complexity": "high" } }, { "id": "notification open door nvr box", "result": { "structured": "TRIGGER: When nvr box door sensor [binary_sensor.0x00158d00093e4111_contact] changes from closed (off) to open (on) AND remains open for 5 seconds. CONDITIONS: None. ACTIONS: Execute the following actions in parallel: 1. Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and message about the NVR cabinet door opening. 2. Send an SMS via notify.huawei_lte to SMS Phone Enzokot Secret [secret sms_phone_enzokot] with a message about the NVR cabinet door opening. 3. Execute a sequence: a. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in a variable. b. If the stored state is 'off', send a command to mobile_app_sm_g973f to turn off Do Not Disturb mode, then wait up to 5 seconds for the sensor state to change. c. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in a variable. d. If the stored state is 'normal', send a command to notify.notify to set the ringer mode to normal. e. Send a high-priority notification via notify.notify with a title and message about the NVR cabinet door opening. f. If the stored ringer mode state was 'normal', send a command to mobile_app_sm_g973f to restore the ringer mode to its original state. g. If the stored Do Not Disturb state was 'off', send a command to mobile_app_sm_g973f to restore Do Not Disturb mode to its original state.", "natural_language": { "trigger": "When the nvr box door sensor [binary_sensor.0x00158d00093e4111_contact] detects the door has been open for at least 5 seconds.", "conditions": "There are no conditions that must be checked before performing the actions.", "action": "The automation sends multiple notifications in parallel: a message to Telegram and an SMS. It then performs a sequence of actions on a mobile device. First, it checks and temporarily disables the 'Do Not Disturb' mode if it was off, waiting for the change to register. Then, it checks the ringer mode and, if it was set to normal, sends a command to ensure it's in normal mode. After that, it sends a high-priority mobile notification about the door opening. Finally, it attempts to restore the original ringer mode and 'Do Not Disturb' settings on the mobile device." }, "human_like": "Sends alerts via Telegram, SMS, and a mobile notification when the NVR cabinet door is opened, and temporarily adjusts phone settings to ensure the alert is received.", "complexity": "high" } }, { "id": "notification overheating 1pm fan nvr box", "result": { "structured": "TRIGGER: When shelly 1pm fan nvr box overheating [binary_sensor.shelly_1pm_fan_nvr_box_overheating] changes from off to on AND remains on for 5 seconds OR When shelly 1pm fan nvr box temperature [sensor.shelly_1pm_fan_nvr_box_temperature] is above 35 AND remains above 35 for 5 seconds. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The message title is '🌡 *Реле кулера шкафа NVR*'. The message content is: If the trigger was the overheating sensor, then 'Обнаружен *перегрев* реле кулера шкафа NVR (*T=' + the current state of shelly 1pm fan nvr box device temperature [sensor.shelly_1pm_fan_nvr_box_device_temperature] + '*)', else 'Обнаружена высокая (*' + the state value of the numeric_state trigger + '*) температура в шкафу NVR'.", "natural_language": { "trigger": "The automation is triggered in one of two ways: either when the shelly 1pm fan nvr box overheating [binary_sensor.shelly_1pm_fan_nvr_box_overheating] sensor changes from off to on and stays on for at least 5 seconds, or when the shelly 1pm fan nvr box temperature [sensor.shelly_1pm_fan_nvr_box_temperature] sensor reads above 35 degrees and remains above that threshold for at least 5 seconds.", "conditions": "There are no conditions that need to be met for this automation to proceed.", "action": "Sends a notification via Telegram to a specific chat. The message has a fixed title about the NVR cabinet cooler relay. The body of the message depends on which trigger fired: if it was the overheating sensor, it reports an overheating event and includes the current device temperature from the shelly 1pm fan nvr box device temperature [sensor.shelly_1pm_fan_nvr_box_device_temperature] sensor. If the trigger was the high temperature reading, it reports the high temperature value that triggered the alert." }, "human_like": "Sends a Telegram alert if the NVR cabinet cooler relay is overheating or if the cabinet temperature gets too high.", "complexity": "medium" } }, { "id": "notification nvr in unavailable status", "result": { "structured": "TRIGGER: When kotletochka nvr hw restart button [button.kotletochka_nvr_hw_restart] becomes unavailable (null) AND remains so for 10 seconds. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off AND shelly plug s nvr power [sensor.shelly_plug_s_nvr_power] is below 15. ACTIONS: In parallel: 1. Send a Telegram message to secret telegram_enzokot_chat_id [secret telegram_enzokot_chat_id] with title '📼 *Состояние NVR*' and message 'Обнаружено *отключение* NVR'. 2. Send an SMS via notify.huawei_lte to secret sms_phone_enzokot [secret sms_phone_enzokot] with message 'Обнаружено отключение NVR'. 3. Execute a sequence: a. Store the current state of do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] in variable sm_g973f_rezhim_ne_bespokoit. b. If sm_g973f_rezhim_ne_bespokoit is 'off', send a mobile notification to sm_g973f with command 'off' to disable Do Not Disturb, then wait up to 5 seconds for do not disturb sensor [sensor.sm_g973f_do_not_disturb_sensor] to change state. c. Store the current state of ringer mode [sensor.sm_g973f_ringer_mode] in variable sm_g973f_rezhim_zvonka. d. If sm_g973f_rezhim_zvonka is 'normal', send a notification command to set ringer mode to 'normal'. e. Send a high-priority notification via notify.notify with title '📼 Состояние NVR' and message 'Обнаружено отключение NVR' on channel 'alarm_stream'. f. If sm_g973f_rezhim_zvonka is 'normal', send a mobile notification to sm_g973f with command to restore the original ringer mode (sm_g973f_rezhim_zvonka). g. If sm_g973f_rezhim_ne_bespokoit is 'off', send a mobile notification to sm_g973f with command to restore the original Do Not Disturb state (sm_g973f_rezhim_ne_bespokoit).", "natural_language": { "trigger": "The automation triggers when the kotletochka nvr hw restart button [button.kotletochka_nvr_hw_restart] becomes unavailable and stays in that state for at least 10 seconds.", "conditions": "Two conditions must be met: first, the instances stoping [input_boolean.instances_stoping] must be off, indicating that system instances are not currently stopping. Second, the power consumption of the NVR, measured by shelly plug s nvr power [sensor.shelly_plug_s_nvr_power], must be below 15 watts.", "action": "The automation performs several actions in parallel. It sends a Telegram alert to a secret chat and an SMS via a Huawei LTE modem. It also runs a sequence of steps on a mobile device: it checks and temporarily disables the 'Do Not Disturb' mode if it was off, waits for confirmation, checks the ringer mode, sends a high-priority notification with an alarm sound, and then restores the original 'Do Not Disturb' and ringer mode settings." }, "human_like": "Sends urgent alerts via Telegram, SMS, and mobile notifications when the NVR system becomes unavailable and its power drops, ensuring the user is notified even if their phone is in silent mode.", "complexity": "high" } }, { "id": "notification full battery level sm g973f", "result": { "structured": "TRIGGER: When sm g973f battery level [sensor.sm_g973f_battery_level] is above 99. CONDITIONS: sm g973f is charging [binary_sensor.sm_g973f_is_charging] is on. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with the title '🔋 *Состояние телефона*' and the message 'Телефон полностью заряжен'.", "natural_language": { "trigger": "When the battery level of the phone, sm g973f battery level [sensor.sm_g973f_battery_level], rises above 99 percent.", "conditions": "The phone must be charging, meaning sm g973f is charging [binary_sensor.sm_g973f_is_charging] is in the 'on' state.", "action": "Sends a notification via Telegram to the specified chat, Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id], with a title and message indicating the phone is fully charged." }, "human_like": "Sends a Telegram notification when the phone is fully charged and still plugged in.", "complexity": "low" } }, { "id": "notification tapo c100 cr or hw disconnected", "result": { "structured": "TRIGGER: When a webhook with ID 'secret webhook_id_cctv_cr_off' is received OR when a webhook with ID 'secret webhook_id_cctv_hw_off' is received. CONDITIONS: None. ACTIONS: Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with title '⚠️ *Трекинг устройств*' and message 'Камера в *{{- iif(trigger.id == 'cr', 'детской', 'коридоре') -}}* отключена'.", "natural_language": { "trigger": "When a specific webhook signal is received indicating that either the camera in the children's room (webhook ID 'secret webhook_id_cctv_cr_off') or the camera in the hallway (webhook ID 'secret webhook_id_cctv_hw_off') has been disconnected.", "conditions": "There are no additional conditions that must be met for this automation to run.", "action": "Sends a notification via Telegram to the user's specified chat (Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]). The message alerts the user that a camera is disconnected, specifying whether it's the one in the children's room or the hallway based on which webhook triggered the automation." }, "human_like": "Sends a Telegram alert when a specific security camera in either the children's room or the hallway goes offline.", "complexity": "low" } }, { "id": "notification forward message from download station to telegram", "result": { "structured": "TRIGGER: When an IMAP content event occurs with initial flag set to true. CONDITIONS: None. ACTIONS: In parallel, mark the IMAP message as seen using entry_id and uid from the trigger event AND fetch the IMAP message text using the same entry_id and uid, storing the result in variable message_text, then send a Telegram message to the target specified by secret telegram_enzokot_chat_id with title '📂 *Download station*' and the fetched message text, disabling web page preview.", "natural_language": { "trigger": "When a new email message is received and processed by the IMAP integration, specifically when the initial flag is true.", "conditions": "There are no conditions that must be met for the automation to proceed.", "action": "The automation performs two tasks simultaneously. First, it marks the email as 'seen' in the IMAP server. Second, it fetches the full text of the email, then sends that text as a formatted message to a specific Telegram chat, identified by the secret telegram_enzokot_chat_id." }, "human_like": "Forwards new email notifications from the download station directly to a Telegram chat.", "complexity": "medium" } }, { "id": "turn off nvr from water leak", "result": { "structured": "TRIGGER: When nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] OR nvr water leak sensor 2 [binary_sensor.0x00158d0009ea1c0e_water_leak] detects a water leak (state changes to 'on') AND remains in that state for 7 seconds. CONDITIONS: None. ACTIONS: In parallel: 1) Turn off shelly plug s nvr [switch.shelly_plug_s_nvr]. 2) If the triggering entity is nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] AND shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box] is currently on, then also turn off shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box].", "natural_language": { "trigger": "When either the nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] or the nvr water leak sensor 2 [binary_sensor.0x00158d0009ea1c0e_water_leak] detects water and remains in the 'leak detected' state for at least 7 seconds.", "conditions": "There are no conditions that must be checked before performing the actions.", "action": "The automation performs two actions simultaneously: it always turns off the shelly plug s nvr [switch.shelly_plug_s_nvr]. Additionally, if the leak was specifically detected by the nvr water leak sensor 1 and the shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box] is currently on, it will also turn off that fan." }, "human_like": "Automatically shuts off the NVR power and potentially a fan if a water leak is detected near the equipment for a few seconds.", "complexity": "medium" } }, { "id": "turn on fan nvr box every hour or above temperature", "result": { "structured": "TRIGGER: When the time pattern matches every hour at minute 0 (hourly) OR When shelly 1pm fan nvr box temperature [sensor.shelly_1pm_fan_nvr_box_temperature] is above 34.5. CONDITIONS: (shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box] is off AND nvr box door sensor [binary_sensor.0x00158d00093e4111_contact] is off) AND (nvr water leak sensor 2 [binary_sensor.0x00158d0009ea1c0e_water_leak] is off OR the entity has no value) AND (nvr water leak sensor 1 [binary_sensor.0x00158d0009ea0949_water_leak] is off OR the entity has no value) AND ((current time is between 9:00 and 21:00 OR shelly 1pm fan nvr box temperature [sensor.shelly_1pm_fan_nvr_box_temperature] is above 34.5) OR (trigger is NOT the time_trigger AND current time is after 21:00 or before 9:00)). ACTIONS: Turn on shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box].", "natural_language": { "trigger": "The automation triggers either at the start of every hour (e.g., 1:00, 2:00) or when the temperature sensor for the NVR box [sensor.shelly_1pm_fan_nvr_box_temperature] reports a value above 34.5 degrees.", "conditions": "The fan switch [switch.shelly_1pm_fan_nvr_box] and the NVR box door sensor [binary_sensor.0x00158d00093e4111_contact] must both be off. Additionally, both water leak sensors [binary_sensor.0x00158d0009ea1c0e_water_leak] and [binary_sensor.0x00158d0009ea0949_water_leak] must either be off or not have a valid state. Finally, the time-based condition ensures the fan can run: during daytime hours (9:00 to 21:00) or if the temperature is high, or if the trigger was the high temperature (not the hourly timer) during nighttime hours (after 21:00 or before 9:00).", "action": "Turns on the fan for the NVR box [switch.shelly_1pm_fan_nvr_box]." }, "human_like": "Turns on the NVR box fan hourly during the day or whenever the temperature gets too high, but only if the door is closed and there are no water leaks.", "complexity": "high" } }, { "id": "turn off fan nvr box when door is open", "result": { "structured": "TRIGGER: When nvr box door sensor [binary_sensor.0x00158d00093e4111_contact] changes from closed (off) to open (on) AND remains open for 3 seconds. CONDITIONS: shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box] is on. ACTIONS: Turn off shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box].", "natural_language": { "trigger": "When the nvr box door sensor [binary_sensor.0x00158d00093e4111_contact] opens and stays open for at least 3 seconds.", "conditions": "The shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box] must be currently switched on.", "action": "Turns off the shelly 1pm fan nvr box [switch.shelly_1pm_fan_nvr_box]." }, "human_like": "Turns off the fan in the NVR box when its door is opened.", "complexity": "low" } }, { "id": "night off water heater", "result": { "structured": "TRIGGER: When the time is 22:30:00 OR when the time is 06:15:00. CONDITIONS: water heater season [input_boolean.water_heater_season] is on. ACTIONS: If the trigger time is 22:30:00, turn off water heater socket [switch.0x842e14fffe13a854]. If the trigger time is 06:15:00, turn on water heater socket [switch.0x842e14fffe13a854].", "natural_language": { "trigger": "The automation runs at 10:30 PM or at 6:15 AM.", "conditions": "The automation only proceeds if the water heater season [input_boolean.water_heater_season] is turned on.", "action": "If it is 10:30 PM, the water heater socket [switch.0x842e14fffe13a854] is turned off. If it is 6:15 AM, the water heater socket [switch.0x842e14fffe13a854] is turned on." }, "human_like": "Turns the water heater off at night and back on in the morning, but only when the water heater season is active.", "complexity": "medium" } }, { "id": "night mode on heater", "result": { "structured": "TRIGGER: At 22:00:00. CONDITIONS: heater night mode [input_boolean.heater_night_mode] is on. ACTIONS: Turn on heater socket [switch.0x842e14fffe5047f5] AND Start turn off heater night mode timer [timer.turn_off_heater_night_mode].", "natural_language": { "trigger": "When the time reaches 10:00 PM.", "conditions": "If the heater night mode [input_boolean.heater_night_mode] is currently switched on.", "action": "Turns on the heater socket [switch.0x842e14fffe5047f5] and starts the turn off heater night mode timer [timer.turn_off_heater_night_mode]." }, "human_like": "Turns on the heater and starts a timer at 10 PM if night mode is enabled.", "complexity": "low" } }, { "id": "night mode off heater", "result": { "structured": "TRIGGER: When the time is 07:00:00. CONDITIONS: heater night mode [input_boolean.heater_night_mode] is on. ACTIONS: Cancel turn on heater night mode timer [timer.turn_on_heater_night_mode] AND Cancel turn off heater night mode timer [timer.turn_off_heater_night_mode] AND Turn off heater socket [switch.0x842e14fffe5047f5].", "natural_language": { "trigger": "At 7:00 AM.", "conditions": "If the heater night mode [input_boolean.heater_night_mode] is currently enabled.", "action": "Cancels both the 'turn on heater night mode' and 'turn off heater night mode' timers, and then turns off the heater socket [switch.0x842e14fffe5047f5]." }, "human_like": "Turns off the heater and cancels related night mode timers at 7 AM if night mode is active.", "complexity": "low" } }, { "id": "night mode timer heater off", "result": { "structured": "TRIGGER: When timer turn off heater night mode [timer.turn_off_heater_night_mode] finishes. CONDITIONS: heater night mode [input_boolean.heater_night_mode] is on AND the current time is between 22:00:00 and 07:00:00. ACTIONS: Turn off heater socket [switch.0x842e14fffe5047f5] AND start timer turn on heater night mode timer [timer.turn_on_heater_night_mode].", "natural_language": { "trigger": "When the 'turn off heater night mode' timer finishes.", "conditions": "The 'heater night mode' switch is turned on, and the current time is between 10:00 PM and 7:00 AM.", "action": "Turns off the heater socket and starts the 'turn on heater night mode' timer." }, "human_like": "Turns off the heater during night mode hours when a scheduled timer expires.", "complexity": "low" } }, { "id": "night mode timer heater on", "result": { "structured": "TRIGGER: When timer turn on heater night mode timer [timer.turn_on_heater_night_mode] finishes. CONDITIONS: heater night mode [input_boolean.heater_night_mode] is on AND current time is between 22:00:00 and 07:00:00. ACTIONS: Turn on heater socket [switch.0x842e14fffe5047f5] AND start timer turn off heater night mode timer [timer.turn_off_heater_night_mode].", "natural_language": { "trigger": "When the 'turn on heater night mode timer' [timer.turn_on_heater_night_mode] finishes.", "conditions": "The 'heater night mode' [input_boolean.heater_night_mode] must be switched on, and the current time must be between 10:00 PM and 7:00 AM.", "action": "Turns on the heater socket [switch.0x842e14fffe5047f5] and starts the 'turn off heater night mode timer' [timer.turn_off_heater_night_mode]." }, "human_like": "Turns on the heater in the children's room during the night when a scheduled timer ends, provided night mode is active.", "complexity": "medium" } }, { "id": "on off night mode heater at action time", "result": { "structured": "TRIGGER: When heater night mode [input_boolean.heater_night_mode] changes state. CONDITIONS: The current time is between 22:00:00 and 07:00:00. ACTIONS: If heater night mode [input_boolean.heater_night_mode] is off, trigger night mode off heater automation [automation.night_mode_off_heater]. If heater night mode [input_boolean.heater_night_mode] is on, trigger night mode on heater automation [automation.night_mode_on_heater].", "natural_language": { "trigger": "Whenever the heater night mode [input_boolean.heater_night_mode] switch changes its state.", "conditions": "The automation only runs if the current time is between 10:00 PM and 7:00 AM.", "action": "Depending on the state of the heater night mode switch, it triggers a different automation. If the switch is turned off, it triggers the night mode off heater automation [automation.night_mode_off_heater]. If the switch is turned on, it triggers the night mode on heater automation [automation.night_mode_on_heater]." }, "human_like": "During nighttime hours, this automation triggers the appropriate heater mode automation when the night mode switch is toggled.", "complexity": "medium" } }, { "id": "safety power socets off", "result": { "structured": "TRIGGER: When any of the following power sensors reports a value above 3000 watts: heater socket power [sensor.0x842e14fffe5047f5_power], water heater socket power [sensor.0x842e14fffe13a854_power], kitchen socket1 power [sensor.0x842e14fffe36661f_power], bedroom socket1 power [sensor.0x588e81fffeff5c4f_power], server ac power [sensor.shelly_plug_s_1_power], Bedroom Socket 2 Power [sensor.0x60a423fffef8d41a_power], shelly plug s 2 power [sensor.shelly_plug_s_2_power], shelly plug s nvr power [sensor.shelly_plug_s_nvr_power], shelly 1pm fan nvr box power [sensor.shelly_1pm_fan_nvr_box_power], shelly plug s keenetic hw power [sensor.shelly_plug_s_keenetic_hw_power], shelly plug s htr power [sensor.shelly_plug_s_htr_shelly_heated_tr_power]. CONDITIONS: None. ACTIONS: Turn off the corresponding switch for the triggering sensor. The switch entity ID is derived by replacing 'sensor' with 'switch' and removing '_power' from the triggering sensor's entity_id.", "natural_language": { "trigger": "When the power consumption of any monitored socket exceeds 3000 watts. This includes the heater socket, water heater socket, kitchen socket, bedroom sockets, server AC, and various Shelly smart plugs.", "conditions": "There are no additional conditions that must be met.", "action": "The automation automatically turns off the specific switch that corresponds to the socket whose power sensor triggered the event. It finds the correct switch by converting the sensor's entity ID (e.g., from 'sensor.example_power' to 'switch.example')." }, "human_like": "Automatically cuts power to any electrical socket that starts drawing an unsafe amount of current (over 3000W) to prevent overheating or fire hazards.", "complexity": "medium" } }, { "id": "restart night mode heater after reboot", "result": { "structured": "TRIGGER: When Home Assistant starts. CONDITIONS: heater night mode [input_boolean.heater_night_mode] is on AND the current time is between 22:00:00 and 07:00:00. ACTIONS: If heater socket [switch.0x842e14fffe5047f5] is off, trigger night mode timer heater on automation [automation.night_mode_timer_heater_on]. If heater socket [switch.0x842e14fffe5047f5] is on, trigger night mode timer heater off automation [automation.night_mode_timer_heater_off].", "natural_language": { "trigger": "When Home Assistant restarts or starts up.", "conditions": "The heater night mode [input_boolean.heater_night_mode] must be turned on, and the current time must be between 10:00 PM and 7:00 AM.", "action": "Depending on the current state of the heater socket [switch.0x842e14fffe5047f5], it triggers a different automation. If the heater socket is off, it triggers the 'night mode timer heater on' automation [automation.night_mode_timer_heater_on]. If the heater socket is on, it triggers the 'night mode timer heater off' automation [automation.night_mode_timer_heater_off]." }, "human_like": "Ensures the night mode heater schedule is correctly restored after a Home Assistant reboot by triggering the appropriate on or off timer automation.", "complexity": "medium" } }, { "id": "restart z2m or instance for energy", "result": { "structured": "TRIGGER: When any of the following energy sensors changes state: heater socket energy [sensor.0x842e14fffe5047f5_energy], water heater socket energy [sensor.0x842e14fffe13a854_energy], kitchen socket1 energy [sensor.0x842e14fffe36661f_energy], bedroom socket1 energy [sensor.0x588e81fffeff5c4f_energy], bedroom socket2 energy [sensor.0x60a423fffef8d41a_energy], yeelight ceiling relay energy [sensor.0x54ef441000096cbc_energy], shelly em energy [sensor.shelly_em_energy], server ac energy [sensor.shelly_plug_s_1_energy], shelly plug s 2 energy [sensor.shelly_plug_s_2_energy], kitchen light switch working area energy [sensor.0x54ef441000691265_energy], shelly plug s nvr energy [sensor.shelly_plug_s_nvr_energy], shelly 1pm fan nvr box energy [sensor.shelly_1pm_fan_nvr_box_energy], shelly plug s keenetic hw energy [sensor.shelly_plug_s_keenetic_hw_energy], shelly plug s htr energy [sensor.shelly_plug_s_htr_shelly_heated_tr_energy]. CONDITIONS: The new state (trigger.to_state.state) is NOT 'unknown', 'unavailable', or 'none' AND the previous state (trigger.from_state.state) is NOT 'unknown', 'unavailable', or 'none' AND the new state is different from the previous state. ACTIONS: Look up the corresponding input_number entity from a predefined mapping (entity_dict) based on the triggering sensor's entity_id, then set the value of that input_number to the new state value of the triggering sensor.", "natural_language": { "trigger": "When any of the listed energy sensors (e.g., heater socket energy [sensor.0x842e14fffe5047f5_energy], water heater socket energy [sensor.0x842e14fffe13a854_energy], etc.) reports a state change.", "conditions": "The change is only considered valid if the sensor's new state and its previous state are both valid (not 'unknown', 'unavailable', or 'none'), and the new state is actually different from the old state.", "action": "The automation uses a predefined mapping to find which input_number entity (like total heater socket saved [input_number.total_heater_socket_saved]) corresponds to the sensor that changed. It then updates that input_number with the sensor's new energy value." }, "human_like": "Backs up energy readings from various smart plugs and sensors into dedicated input_number helpers whenever a valid new reading is received.", "complexity": "medium" } }, { "id": "on move turn on garland childrens room", "result": { "structured": "TRIGGER: When motion sensor 1 [binary_sensor.0x158d00054b8d72_motion] changes from off to on. CONDITIONS: (Current time is after 08:30:00 AND before 12:30:00) OR (Current time is after 16:30:00 AND before 21:00:00). ACTIONS: If heater socket [switch.0x842e14fffe5047f5] is off, turn it on. Then, start turn off garland childrens room timer [timer.turn_off_garland_childrens_room] for 300 seconds.", "natural_language": { "trigger": "When motion sensor 1 [binary_sensor.0x158d00054b8d72_motion] detects motion (changes from off to on).", "conditions": "The automation runs only during specific time windows: either between 8:30 AM and 12:30 PM, or between 4:30 PM and 9:00 PM.", "action": "If the heater socket [switch.0x842e14fffe5047f5] is currently off, it is turned on. Then, a timer named turn off garland childrens room timer [timer.turn_off_garland_childrens_room] is started for 5 minutes (300 seconds)." }, "human_like": "Turns on a garland in the children's room when motion is detected during the morning or evening hours, and starts a timer to turn it off after 5 minutes.", "complexity": "medium" } }, { "id": "on timer turn off garland childrens room", "result": { "structured": "TRIGGER: When the timer turn off garland childrens room timer [timer.turn_off_garland_childrens_room] finishes. CONDITIONS: heater socket [switch.0x842e14fffe5047f5] is on. ACTIONS: Turn off heater socket [switch.0x842e14fffe5047f5].", "natural_language": { "trigger": "When the timer named 'turn off garland childrens room timer' [timer.turn_off_garland_childrens_room] finishes.", "conditions": "The heater socket [switch.0x842e14fffe5047f5] must currently be switched on.", "action": "Turn off the heater socket [switch.0x842e14fffe5047f5]." }, "human_like": "Automatically turns off the heater socket in the children's room when a specific timer finishes.", "complexity": "low" } }, { "id": "DB purge everyday", "result": { "structured": "TRIGGER: When the time is 01:00:00. CONDITIONS: None. ACTIONS: Purge the recorder database, keeping the last 30 days of data and repacking the database.", "natural_language": { "trigger": "Every day at 1:00 AM.", "conditions": "There are no conditions.", "action": "Purges the Home Assistant recorder database, keeping only the last 30 days of history and repacking the database to optimize storage." }, "human_like": "Automatically cleans up the Home Assistant database every night, keeping only the last month's data to save space.", "complexity": "low" } }, { "id": "speedtest_integration_restart", "result": { "structured": "TRIGGER: When the time pattern matches minutes equal to 45 (i.e., at 45 minutes past every hour). CONDITIONS: (instances stoping [input_boolean.instances_stoping] is off) AND (local network availability [binary_sensor.local_network_availability] is on) AND (speedtest ping [sensor.speedtest_ping] state is in ['unknown', 'unavailable', 'none'] AND speedtest download [sensor.speedtest_download] state is in ['unknown', 'unavailable', 'none'] AND speedtest upload [sensor.speedtest_upload] state is in ['unknown', 'unavailable', 'none']). ACTIONS: Reload the configuration entry for the integration providing sensor.speedtest_ping.", "natural_language": { "trigger": "The automation runs at 45 minutes past every hour.", "conditions": "The automation checks that the instances stoping [input_boolean.instances_stoping] is turned off, the local network availability [binary_sensor.local_network_availability] is on, and that all three speedtest sensors (speedtest ping [sensor.speedtest_ping], speedtest download [sensor.speedtest_download], and speedtest upload [sensor.speedtest_upload]) have a state that is either 'unknown', 'unavailable', or 'none'.", "action": "It reloads the configuration entry for the Speedtest integration, which is identified by the entry linked to the speedtest ping sensor." }, "human_like": "Automatically restarts the Speedtest integration if its sensors become unresponsive, but only when the network is available and system instances are not being stopped.", "complexity": "medium" } }, { "id": "speedtest_integration_restart_on_event", "result": { "structured": "TRIGGER: When the state of speedtest ping [sensor.speedtest_ping] changes OR When the state of speedtest download [sensor.speedtest_download] changes OR When the state of speedtest upload [sensor.speedtest_upload] changes. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off AND The time elapsed since the automation was last triggered is greater than 60 seconds AND local network availability [binary_sensor.local_network_availability] is on AND The new state of the changed entity equals its old state AND the new state is in the list ['unknown', 'unavailable', 'none']. ACTIONS: If instances stoping [input_boolean.instances_stoping] is off, then wait 30 seconds and reload the configuration entry for the speedtest integration.", "natural_language": { "trigger": "Whenever the state of the speedtest ping [sensor.speedtest_ping], speedtest download [sensor.speedtest_download], or speedtest upload [sensor.speedtest_upload] sensor changes.", "conditions": "The instances stoping [input_boolean.instances_stoping] must be off, at least 60 seconds must have passed since the automation last ran, the local network availability [binary_sensor.local_network_availability] must be on, and the state change must be to a problematic value (like 'unknown', 'unavailable', or 'none') without an actual change in the state value.", "action": "If the instances stoping [input_boolean.instances_stoping] is still off, the automation waits 30 seconds and then reloads the configuration entry for the speedtest integration to attempt to restore its functionality." }, "human_like": "Automatically restarts the speedtest integration if its sensors become stuck in an error state, ensuring network monitoring remains active.", "complexity": "medium" } }, { "id": "system_event_instances_starting_stoping_set", "result": { "structured": "TRIGGER: When Home Assistant starts OR When Home Assistant shuts down. CONDITIONS: None. ACTIONS: In parallel: If the trigger is homeassistant_start, turn off instances stoping [input_boolean.instances_stoping]; otherwise, turn it on. Also, if the trigger is homeassistant_start, turn on notifications objects in unavailable status automation [automation.notifications_objects_in_unavailable_status]; otherwise, turn it off.", "natural_language": { "trigger": "When Home Assistant starts up or when Home Assistant shuts down.", "conditions": "There are no additional conditions for this automation.", "action": "When Home Assistant starts, it turns off the 'instances stoping' [input_boolean.instances_stoping] flag and turns on the 'notifications objects in unavailable status' automation [automation.notifications_objects_in_unavailable_status]. When Home Assistant shuts down, it does the opposite: it turns on the 'instances stoping' flag and turns off the notification automation." }, "human_like": "Sets a system flag and manages a notification automation when Home Assistant starts or stops, helping to track the system state.", "complexity": "medium" } }, { "id": "counter increment link down keenetic", "result": { "structured": "TRIGGER: When check keenetic link down [sensor.check_keenetic_link_down] changes state. CONDITIONS: The new state is not in the list ['unknown', 'unavailable', 'none', None, null, '', 'null'] AND the previous state was an empty string AND the new state is equal to the previous state. ACTIONS: Increment counter keenetic link down [counter.counter_keenetic_link_down].", "natural_language": { "trigger": "Whenever the sensor check keenetic link down [sensor.check_keenetic_link_down] reports a change in its state.", "conditions": "The new state reported by the sensor must be a valid state (not 'unknown', 'unavailable', 'none', empty, or null). Furthermore, the previous state must have been an empty string, and the new state must be exactly the same as the previous state.", "action": "Increment the value of the counter keenetic link down [counter.counter_keenetic_link_down]." }, "human_like": "Counts how many times the Keenetic link status sensor reports a specific, unchanged state transition from an empty value.", "complexity": "medium" } }, { "id": "system log home assistant warning and error counter", "result": { "structured": "TRIGGER: When a Home Assistant system log event occurs with level ERROR OR When a Home Assistant system log event occurs with level WARNING. CONDITIONS: The automation's friendly name [this_name] is NOT contained within the log event's message string. ACTIONS: Increment the counter entity named 'counter.system_log_' + the lowercase log level + '_counter'.", "natural_language": { "trigger": "Whenever Home Assistant logs a system event with a severity level of either ERROR or WARNING.", "conditions": "The event's log message must not contain the name of this automation itself, which is 'system log home assistant warning and error counter'.", "action": "Increment a specific counter that tracks the number of these log events. The counter's name is built from the log level, for example, 'counter.system_log_error_counter' for errors and 'counter.system_log_warning_counter' for warnings." }, "human_like": "Counts Home Assistant system warnings and errors, but ignores any log messages that mention the automation's own name to avoid counting its own actions.", "complexity": "medium" } }, { "id": "system log clear warning and error reset counter", "result": { "structured": "TRIGGER: When a service call is made to the system_log domain with service clear. CONDITIONS: None. ACTIONS: Reset system log error counter [counter.system_log_error_counter] AND reset system log warning counter [counter.system_log_warning_counter].", "natural_language": { "trigger": "Whenever the Home Assistant system log is cleared via a service call.", "conditions": "There are no conditions that need to be met.", "action": "Resets both the system log error counter [counter.system_log_error_counter] and the system log warning counter [counter.system_log_warning_counter] to zero." }, "human_like": "Resets the log warning and error counters whenever the system log is cleared.", "complexity": "low" } }, { "id": "restart e3372h 320 modem unavailable", "result": { "structured": "TRIGGER: When huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] changes to an unavailable (null) state OR when Home Assistant starts. CONDITIONS: instances stoping [input_boolean.instances_stoping] is off AND huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] has no value. ACTIONS: Wait for up to 5 minutes until either huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] has a value OR instances stoping [input_boolean.instances_stoping] is on. If the wait times out AND local network availability [binary_sensor.local_network_availability] is on, then press e3372h 320 restart button [button.e3372h_320_restart].", "natural_language": { "trigger": "The automation triggers either when the huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] sensor becomes unavailable (changes to a null state), or when Home Assistant itself starts up.", "conditions": "The automation checks that the instances stoping [input_boolean.instances_stoping] is turned off, and that the huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] sensor indeed has no value.", "action": "It first waits for up to five minutes for the huawei e3372h 320 sinr [sensor.huawei_e3372h_320_sinr] sensor to regain a value or for the instances stoping [input_boolean.instances_stoping] to be turned on. If the wait period ends without either of those conditions being met and the local network availability [binary_sensor.local_network_availability] is on, it then presses the e3372h 320 restart button [button.e3372h_320_restart] to restart the modem." }, "human_like": "Automatically restarts the Huawei modem if its signal sensor becomes unavailable and does not recover within five minutes, provided the local network is up and system shutdown is not in progress.", "complexity": "medium" } }, { "id": "update input text telegram bot api token", "result": { "structured": "TRIGGER: When event_telegram_reloaded occurs. CONDITIONS: None. ACTIONS: Set var telegram bot api token [input_text.var_telegram_bot_api_token] to value 'secret telegram_api'.", "natural_language": { "trigger": "When the system receives an event named 'event_telegram_reloaded'.", "conditions": "There are no conditions that must be met.", "action": "Updates the value of the text variable 'var telegram bot api token' [input_text.var_telegram_bot_api_token] to the string 'secret telegram_api'." }, "human_like": "Updates the Telegram Bot API token in a text variable whenever the Telegram integration is reloaded.", "complexity": "low" } }, { "id": "cert_expiry_timestamp_asuscomm_unavailable", "result": { "structured": "TRIGGER: When cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] changes to an unavailable state (null) OR when Home Assistant starts. CONDITIONS: (instances stoping [input_boolean.instances_stoping] is off) AND (more than 60 seconds have passed since this automation was last triggered) AND (cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] has no value). ACTIONS: Wait for up to 1 minute until cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] has a value OR instances stoping [input_boolean.instances_stoping] becomes on. If the wait times out (wait.completed is false) AND local network availability [binary_sensor.local_network_availability] is on, then reload the configuration entry for cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm].", "natural_language": { "trigger": "The automation triggers when the cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] becomes unavailable (changes to null) or when Home Assistant starts up.", "conditions": "It proceeds only if the instances stoping [input_boolean.instances_stoping] is off, if more than 60 seconds have passed since this automation was last run, and if the cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] currently has no value.", "action": "First, the automation waits for up to one minute for the cert expiry timestamp asuscomm [sensor.cert_expiry_timestamp_asuscomm] to regain a value or for the instances stoping [input_boolean.instances_stoping] to be turned on. If the wait times out and the local network availability [binary_sensor.local_network_availability] is on, it attempts to fix the sensor by reloading its configuration entry." }, "human_like": "Attempts to recover the certificate expiry sensor if it becomes unavailable, by waiting briefly and then reloading its configuration when the network is available.", "complexity": "medium" } }, { "id": "repairs issue registry sensor update", "result": { "structured": "TRIGGER: When a repairs issue is created (event repairs_issue_registry_updated with action 'create') OR When Home Assistant starts. CONDITIONS: None. ACTIONS: Update the repairs state [sensor.repairs_state] entity.", "natural_language": { "trigger": "When a new repairs issue is created in the system, or when Home Assistant first starts up.", "conditions": "There are no additional conditions that must be met.", "action": "Refreshes the data for the repairs state [sensor.repairs_state] sensor." }, "human_like": "Updates the repairs status sensor whenever a new issue is created or when the system restarts.", "complexity": "low" } }, { "id": "entity_update_every_2_minutes", "result": { "structured": "TRIGGER: When the system time matches a pattern where minutes are divisible by 2 (every 2 minutes) OR when Home Assistant starts. CONDITIONS: None. ACTIONS: Update the entities internet availability nic ping [binary_sensor.internet_availability_nic_ping] and internet availability yandex ping [binary_sensor.internet_availability_yandex_ping].", "natural_language": { "trigger": "The automation triggers every two minutes, on the minute, and also when Home Assistant first starts up.", "conditions": "There are no conditions that must be met for the action to run.", "action": "Forces an immediate update of the state for two sensors: internet availability nic ping [binary_sensor.internet_availability_nic_ping] and internet availability yandex ping [binary_sensor.internet_availability_yandex_ping]." }, "human_like": "This automation regularly updates the internet connectivity sensors every two minutes and when the system starts, to ensure their status is current.", "complexity": "low" } }, { "id": "vacuum later start cleaning action\"", "result": { "structured": "TRIGGER: When vacuum ten minutes timer [timer.vacumm_ten_minutes] finishes. CONDITIONS: vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] is docked. ACTIONS: Start cleaning with vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] AND Send a Telegram message to the chat ID stored in var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] with the title '🚀 *Степа*' and the message 'Начал полную уборку' AND Set the value of var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] to secret telegram_chita_chat_id.", "natural_language": { "trigger": "When the vacuum ten minutes timer [timer.vacumm_ten_minutes] completes its countdown.", "conditions": "The vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] must be in its docked state.", "action": "The automation performs three actions in parallel: it starts the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] for a full cleaning, sends a Telegram message to a specific chat ID (stored in var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start]) announcing the start of cleaning, and then updates that stored chat ID to a new secret value (secret telegram_chita_chat_id)." }, "human_like": "Starts the vacuum cleaner and sends a notification after a timer expires, provided the vacuum is docked.", "complexity": "medium" } }, { "id": "vacuum later start cleaning not docked", "result": { "structured": "TRIGGER: When the timer vacuum ten minutes timer [timer.vacumm_ten_minutes] finishes. CONDITIONS: vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] is NOT in the 'docked' state. ACTIONS: Send a Telegram message to the chat ID stored in var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] with a warning title and a message stating the vacuum could not start cleaning because it is not docked, AND set the value of var chat id vacuum later start [input_text.var_chat_id_vacuum_later_start] to secret telegram_chita_chat_id.", "natural_language": { "trigger": "When the 'vacuum ten minutes timer' [timer.vacumm_ten_minutes] completes its countdown.", "conditions": "The vacuum cleaner, 'vacuum xiaomi' [vacuum.xiaomi_vacuum_cleaner], is not currently docked at its charging base.", "action": "Sends a warning message via Telegram to a specific chat ID, informing that the vacuum could not start a full cleaning because it is not on its dock. Simultaneously, it updates the stored chat ID variable to a new secret value." }, "human_like": "Sends a Telegram notification if the vacuum cleaner is not on its dock when a scheduled timer ends, preventing a missed cleaning.", "complexity": "medium" } }, { "id": "vacuum start stop camera map when docked cleaning", "result": { "structured": "TRIGGER: When vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] state changes OR When Home Assistant starts OR When event_xiaomi_cloud_map_extractor_reloaded event occurs. CONDITIONS: (Trigger is a state change AND the new state is different from the old state) OR (Trigger is not a state change). ACTIONS: IF vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] state is 'docked', 'unknown', 'unavailable', 'none', None, null, or empty string THEN wait 45 seconds, update roborock vacuum map camera [camera.roborock_vacuum_map], then turn off roborock vacuum map camera [camera.roborock_vacuum_map]. ELSE turn on roborock vacuum map camera [camera.roborock_vacuum_map].", "natural_language": { "trigger": "The automation triggers when the state of the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] changes, when Home Assistant starts up, or when a specific event named 'event_xiaomi_cloud_map_extractor_reloaded' is received.", "conditions": "The automation runs only if the trigger is a state change where the new state is different from the old state, or if the trigger is not a state change at all (like the Home Assistant start event or the custom event).", "action": "If the vacuum xiaomi [vacuum.xiaomi_vacuum_cleaner] is in a non-cleaning state (like docked, unknown, unavailable, or other invalid states), the automation waits 45 seconds, then updates the roborock vacuum map camera [camera.roborock_vacuum_map] and turns it off. Otherwise, if the vacuum is in any other state (presumably cleaning), it turns on the roborock vacuum map camera [camera.roborock_vacuum_map]." }, "human_like": "Manages the vacuum's map camera, turning it on when the vacuum is cleaning and off when it's docked or unavailable.", "complexity": "medium" } }, { "id": "zigbee_device_joined_notification", "result": { "structured": "TRIGGER: When an MQTT message is published to the topic 'zigbee2mqtt/bridge/event'. CONDITIONS: The MQTT message payload JSON has a 'type' field equal to 'device_interview' AND a 'data.status' field equal to 'successful' AND a 'data.supported' field that evaluates to true. ACTIONS: Send an HTML-formatted Telegram message to the target Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id]. The message includes a title with a bee emoji and bold text 'Добавление устройств Zigbee', and a body containing the friendly name, vendor, model, and description of the device from the trigger payload. Notifications are disabled for this message.", "natural_language": { "trigger": "Whenever a message is received on the MQTT topic 'zigbee2mqtt/bridge/event'.", "conditions": "The received message must contain specific data: the event type must be 'device_interview', the interview status must be 'successful', and the device must be marked as 'supported'.", "action": "Sends a formatted notification via Telegram to a specific chat. The message announces the addition of a new Zigbee device, including its friendly name, vendor, model, and description. The notification is sent silently (without sound or pop-up)." }, "human_like": "Sends a silent Telegram notification with details whenever a new supported Zigbee device is successfully added to the network.", "complexity": "medium" } }, { "id": "zigbee2mqtt_devices_last_seen", "result": { "structured": "TRIGGER: When the time pattern matches every hour (hours: /1). CONDITIONS: The template evaluates to true, meaning that within the group dynamic group sensor last seen [group.dynamic_group_sensor_last_seen], there is at least one sensor whose last seen timestamp is older than 3 hours OR whose state is not a valid value (None, 'None', or 'unknown'). ACTIONS: Send a Telegram message to the target Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title and message. The title includes a warning or checkmark icon and the text 'Контроль устройств Zigbee'. The message lists the names of devices from the group that have not been seen for over 3 hours or have an invalid state, or states that all devices are available.", "natural_language": { "trigger": "The automation runs every hour, on the hour.", "conditions": "The condition checks if any sensor within the dynamic group sensor last seen [group.dynamic_group_sensor_last_seen] has not reported data for more than three hours or has an invalid state (like None, 'None', or 'unknown').", "action": "Sends a Telegram notification to a specific chat. If any devices are missing, the message lists their names and includes a warning icon. If all devices are available, it sends a success message with a checkmark." }, "human_like": "Sends an hourly Telegram alert if any Zigbee devices haven't been seen for over three hours, helping monitor device connectivity.", "complexity": "high" } }, { "id": "zigbee2mqtt_devices_link_check", "result": { "structured": "TRIGGER: Every hour (time pattern: hours: /1). CONDITIONS: A template condition evaluates to true when the number of Zigbee devices with low link quality is greater than zero. Specifically, it expands the group dynamic group sensor linkquality [group.dynamic_group_sensor_linkquality], filters for entities whose state is not None or 'None', and checks each entity. If an entity's ID ends with '_linkquality' and its integer state is less than 15, OR if an entity's ID ends with '_zigbee' and its 'linkquality' attribute (converted to integer) is less than 15, it is counted. The condition is true if the count of such low-link-quality devices is greater than 0. ACTIONS: Execute the script zigbee2mqtt linkuality check [script.zigbee2mqtt_linkuality_check].", "natural_language": { "trigger": "The automation runs every hour.", "conditions": "A template condition checks all sensors in the dynamic group sensor linkquality [group.dynamic_group_sensor_linkquality]. It looks for Zigbee devices reporting a low link quality, specifically those with a link quality value below 15. This includes entities whose names end with '_linkquality' (checking their state) or '_zigbee' (checking their 'linkquality' attribute). The condition passes only if at least one such device is found to have low link quality.", "action": "Runs the script named zigbee2mqtt linkuality check [script.zigbee2mqtt_linkuality_check] to perform a link quality check." }, "human_like": "Checks hourly for Zigbee devices with poor signal strength and runs a diagnostic script if any are found.", "complexity": "medium" } }, { "id": "auto_local_temperature_calibration_thermostats", "result": { "structured": "TRIGGER: When the time pattern matches every 3 minutes. CONDITIONS: None. ACTIONS: Execute the following scripts in parallel: 1. Run script auto local temperature calibration thermostats [script.auto_local_temperature_calibration_thermostats] with parameters: namevalve='Bedroom valve with thermostat', objectvalve=Bedroom valve with thermostat [climate.0x60a423fffe968719], objectvalvewindow=bedroom valve window detection [switch.0x60a423fffe968719_window_detection], objectsensortemperature=esp xiaomi bedroom temperature [sensor.esp_xiaomi_bed_room_temperature]. 2. Run script auto local temperature calibration thermostats [script.auto_local_temperature_calibration_thermostats] with parameters: namevalve='Living room valve with thermostat', objectvalve=Living room valve with thermostat [climate.0x5c0272fffec9db22], objectvalvewindow=living room valve window detection [switch.0x5c0272fffec9db22_window_detection], objectsensortemperature=esp xiaomi living room temperature [sensor.esp_xiaomi_living_room_temperature]. 3. Run script auto local temperature calibration thermostats [script.auto_local_temperature_calibration_thermostats] with parameters: namevalve='Childrens room valve with thermostat', objectvalve=childrens room valve with thermostat [climate.0x5c0272fffec89454], objectvalvewindow=childrens room valve window detection [switch.0x5c0272fffec89454_window_detection], objectsensortemperature=esp xiaomi childrens room temperature [sensor.esp_xiaomi_childrens_room_temperature]. 4. Run script auto local temperature calibration thermostats [script.auto_local_temperature_calibration_thermostats] with parameters: namevalve='Kitchen valve with thermostat', objectvalve=kitchen valve with thermostat [climate.0x5c0272fffe8de819], objectvalvewindow=kitchen valve window detection [switch.0x5c0272fffe8de819_window_detection], objectsensortemperature=esp xiaomi kitchen temperature [sensor.esp_xiaomi_kitchen_temperature].", "natural_language": { "trigger": "The automation runs every three minutes.", "conditions": "There are no conditions for this automation.", "action": "It runs a temperature calibration script for four different thermostatic radiator valves in parallel. For the bedroom, it uses the Bedroom valve with thermostat [climate.0x60a423fffe968719], the bedroom valve window detection [switch.0x60a423fffe968719_window_detection], and the esp xiaomi bedroom temperature [sensor.esp_xiaomi_bed_room_temperature]. For the living room, it uses the Living room valve with thermostat [climate.0x5c0272fffec9db22], the living room valve window detection [switch.0x5c0272fffec9db22_window_detection], and the esp xiaomi living room temperature [sensor.esp_xiaomi_living_room_temperature]. For the children's room, it uses the childrens room valve with thermostat [climate.0x5c0272fffec89454], the childrens room valve window detection [switch.0x5c0272fffec89454_window_detection], and the esp xiaomi childrens room temperature [sensor.esp_xiaomi_childrens_room_temperature]. For the kitchen, it uses the kitchen valve with thermostat [climate.0x5c0272fffe8de819], the kitchen valve window detection [switch.0x5c0272fffe8de819_window_detection], and the esp xiaomi kitchen temperature [sensor.esp_xiaomi_kitchen_temperature]." }, "human_like": "Runs a temperature calibration routine for the smart radiator valves in the bedroom, living room, children's room, and kitchen every three minutes.", "complexity": "medium" } }, { "id": "auto_boost_mode_thermostats_at_sleeping_time", "result": { "structured": "TRIGGER: At 02:30:00 OR At 05:30:00. CONDITIONS: None. ACTIONS: In parallel: (IF thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] is on THEN set bedroom valve with thermostat [climate.0x60a423fffe968719] preset mode to boost) AND (IF thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] is on THEN set childrens room valve with thermostat [climate.0x5c0272fffec89454] preset mode to boost).", "natural_language": { "trigger": "The automation runs at two specific times: 2:30 AM and 5:30 AM.", "conditions": "There are no global conditions that must be met for the automation to proceed.", "action": "It performs two independent checks and actions simultaneously. First, it checks if the thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] is on. If it is, it sets the bedroom valve with thermostat [climate.0x60a423fffe968719] to boost mode. Second, it checks if the thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] is on. If it is, it sets the childrens room valve with thermostat [climate.0x5c0272fffec89454] to boost mode." }, "human_like": "Boosts the heating in the bedroom and children's room at night if their respective night mode switches are on, ensuring warmth during early morning hours.", "complexity": "medium" } }, { "id": "switching_thermostat_night_mode", "result": { "structured": "TRIGGER: When the state of thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] OR thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] OR auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time] changes. CONDITIONS: (thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] is off AND thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] is off AND auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time] is on) OR ((thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] is on OR thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] is on) AND auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time] is off). ACTIONS: If the triggering entity is an input_boolean (thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] or thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode]), then: If both thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] and thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode] are off, turn off auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time]; otherwise, turn it on. If the triggering entity is the automation [automation.auto_boost_mode_thermostats_at_sleeping_time], then: If auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time] is off, turn off both thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode] and thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode]; otherwise, turn them both on.", "natural_language": { "trigger": "When the state of either the thermostat bedroom night mode [input_boolean.thermostat_bedroom_night_mode], the thermostat childrensroom night mode [input_boolean.thermostat_childrensroom_night_mode], or the auto boost mode thermostats at sleeping time automation [automation.auto_boost_mode_thermostats_at_sleeping_time] changes.", "conditions": "The automation only runs if a specific logical relationship holds: either both bedroom night modes are off and the sleeping time automation is on, or at least one bedroom night mode is on and the sleeping time automation is off.", "action": "Depending on which entity triggered the change, the automation will adjust the others to maintain consistency. If a thermostat night mode input_boolean changed, it will turn the sleeping time automation off only if both night modes are off, otherwise it will turn the automation on. If the sleeping time automation changed, it will turn both thermostat night modes off if the automation is off, otherwise it will turn them both on." }, "human_like": "This automation keeps the thermostat night modes and the sleeping time boost automation in sync, ensuring they are never both active at the same time.", "complexity": "medium" } }, { "id": "auto_scrolling_thermostats_at_month", "result": { "structured": "TRIGGER: At 10:00:00 daily. CONDITIONS: The current day of the month is the 1st OR the 15th AND (childrens room valve with thermostat [climate.0x5c0272fffec89454] is in heat mode AND bedroom valve with thermostat [climate.0x60a423fffe968719] is in heat mode AND kitchen valve with thermostat [climate.0x5c0272fffe8de819] is in heat mode AND living room valve with thermostat [climate.0x5c0272fffec9db22] is in heat mode). ACTIONS: Set HVAC mode to 'off' for childrens room valve with thermostat [climate.0x5c0272fffec89454], bedroom valve with thermostat [climate.0x60a423fffe968719], kitchen valve with thermostat [climate.0x5c0272fffe8de819], and living room valve with thermostat [climate.0x5c0272fffec9db22]. Wait for 2 minutes. Set HVAC mode to 'heat' for childrens room valve with thermostat [climate.0x5c0272fffec89454], bedroom valve with thermostat [climate.0x60a423fffe968719], kitchen valve with thermostat [climate.0x5c0272fffe8de819], and living room valve with thermostat [climate.0x5c0272fffec9db22]. Wait for 1 minute. Send a Telegram message to Telegram Enzokot Chat ID Secret [secret telegram_enzokot_chat_id] with a title '🔧 *Обслуживание устройств*' and a message about performing TRV maintenance.", "natural_language": { "trigger": "The automation triggers every day at 10:00 AM.", "conditions": "It only runs if the current day of the month is either the 1st or the 15th, and if all four thermostatic radiator valves (the childrens room valve with thermostat [climate.0x5c0272fffec89454], the bedroom valve with thermostat [climate.0x60a423fffe968719], the kitchen valve with thermostat [climate.0x5c0272fffe8de819], and the living room valve with thermostat [climate.0x5c0272fffec9db22]) are currently set to heat mode.", "action": "The automation will turn off the heating mode for all four thermostatic radiator valves, wait for two minutes, then turn the heating mode back on for all of them. After another one-minute delay, it sends a silent Telegram notification to the specified chat ID [secret telegram_enzokot_chat_id] with a title '🔧 *Обслуживание устройств*' and a message stating that TRV maintenance has been performed and the physical position of the valve stems should be checked." }, "human_like": "On the 1st and 15th of each month at 10 AM, this automation cycles the heating mode for several radiator valves to perform maintenance and sends a notification.", "complexity": "medium" } }, { "id": "set_options_for_selected_router_for_permit_join_z2m", "result": { "structured": "TRIGGER: When sensor.router_devices_z2m [sensor.router_devices_z2m] state changes OR Home Assistant starts OR automation_reloaded event occurs OR a service call to reload the input_select domain occurs (with id input_select_reload). CONDITIONS: None. ACTIONS: If the trigger was the input_select_reload event, wait up to 2 seconds for input_select.selected_router_for_permit_join_z2m [input_select.selected_router_for_permit_join_z2m] to become null. Then, compute new_options: if sensor.router_devices_z2m [sensor.router_devices_z2m] state is greater than 0, use its 'routers' attribute list, else use ['Не выбрано']; prepend 'Не выбрано' to the list and deduplicate. Compute old_options_with_new: append the current value of input_select.selected_router_for_permit_join_z2m [input_select.selected_router_for_permit_join_z2m] to new_options and deduplicate. Set options of input_select.selected_router_for_permit_join_z2m [input_select.selected_router_for_permit_join_z2m] to old_options_with_new. Select the first option from new_options. Set options of input_select.selected_router_for_permit_join_z2m [input_select.selected_router_for_permit_join_z2m] to new_options. Select the first option of input_select.selected_router_for_permit_join_z2m [input_select.selected_router_for_permit_join_z2m].", "natural_language": { "trigger": "This automation runs when the state of the router devices z2m [sensor.router_devices_z2m] changes, when Home Assistant starts, when automations are reloaded, or when the input_select service is reloaded.", "conditions": "There are no explicit conditions.", "action": "If the automation was triggered by the input_select reload event, it waits briefly for the selected router for permit join z2m [input_select.selected_router_for_permit_join_z2m] to become empty. It then calculates a new list of router options based on the sensor data: if routers are available, it uses their names, otherwise it defaults to 'Не выбрано'. It ensures 'Не выбрано' is the first option. The automation updates the dropdown list with these options, preserving the current selection temporarily, then sets the selection to the first option (typically 'Не выбрано'), and finally refreshes the list to the clean set of options." }, "human_like": "Updates the list of available Zigbee routers for device pairing whenever router information changes or the system restarts, ensuring the selection menu is current and defaults to 'Not selected'.", "complexity": "high" } }, { "id": "start_selected_router_permit_join_z2m", "result": { "structured": "TRIGGER: When a service call is made to select an option on the input_select entity selected router for permit join z2m [input_select.selected_router_for_permit_join_z2m]. CONDITIONS: The service call was initiated by a user that corresponds to a valid person entity in the system. ACTIONS: Publish an MQTT message to the topic 'zigbee2mqtt/bridge/request/permit_join' with a payload that sets the permit join time to 254 and specifies the selected router device if the selected option is not 'Не выбрано', or sets the time to 0 if it is.", "natural_language": { "trigger": "Whenever someone changes the selected option in the 'selected router for permit join z2m' [input_select.selected_router_for_permit_join_z2m] dropdown.", "conditions": "The change must have been performed by a recognized user account that is linked to a person entity in Home Assistant.", "action": "Sends a command via MQTT to the Zigbee2MQTT bridge to either start or stop the device pairing mode (permit join). If the selected option is 'Не выбрано', it stops pairing. Otherwise, it starts pairing for 254 seconds, targeting the specific router device that was selected." }, "human_like": "Allows a recognized user to start or stop Zigbee device pairing on a selected router by choosing an option from a dropdown.", "complexity": "medium" } }, { "id": "set_option_for_selected_router_from_info_topic_z2m", "result": { "structured": "TRIGGER: When permit join switch z2m [switch.permit_join_switch_z2m] turns off OR When zigbee2mqtt add on permit join current device z2m [sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m] changes state. ACTIONS: Set variable permit_join_current_device to the state of zigbee2mqtt add on permit join current device z2m [sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m] if permit join switch z2m [switch.permit_join_switch_z2m] is on and the sensor has a value, otherwise set to 'Не выбрано'. Then, in parallel: IF the trigger was permit join switch z2m [switch.permit_join_switch_z2m] turning off AND Select Option [input_select.select_option] is not set to 'Не выбрано', THEN set selected router for permit join z2m [input_select.selected_router_for_permit_join_z2m] to 'Не выбрано'. IF the trigger was zigbee2mqtt add on permit join current device z2m [sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m] changing AND selected router for permit join z2m [input_select.selected_router_for_permit_join_z2m] is not equal to the variable permit_join_current_device, THEN set selected router for permit join z2m [input_select.selected_router_for_permit_join_z2m] to the value of permit_join_current_device.", "natural_language": { "trigger": "The automation triggers in two situations: when the permit join switch z2m [switch.permit_join_switch_z2m] is turned off, or when the sensor tracking the current device for Zigbee2MQTT permit join [sensor.zigbee2mqtt_add_on_permit_join_current_device_z2m] reports a new value.", "conditions": "This automation does not have separate conditions. The logic is embedded within the actions, using conditional checks.", "action": "First, it calculates a variable based on the state of the permit join switch and the current device sensor. Then, it performs two parallel checks. If the trigger was the permit join switch turning off and the general 'Select Option' dropdown is not set to 'Не выбрано', it resets the 'selected router for permit join' dropdown to 'Не выбрано'. If the trigger was the current device sensor updating and the selected router dropdown does not already match the newly calculated device name, it updates the selected router dropdown to that new device name." }, "human_like": "This automation manages the selection of a Zigbee router for device pairing, resetting the selection when pairing is turned off or updating it when a new device is being paired.", "complexity": "medium" } }, { "id": "start_timer_permit_join_timeout_z2m", "result": { "structured": "TRIGGER: When zigbee2mqtt add on permit join end z2m [sensor.zigbee2mqtt_add_on_permit_join_end_z2m] changes state OR When Home Assistant starts OR When an automation is reloaded. CONDITIONS: None. ACTIONS: Set variable 'time_remaining' to the difference between the sensor value (converted from milliseconds to seconds) and the current UTC timestamp in seconds. If time_remaining is greater than 0, start permit join timeout z2m timer [timer.permit_join_timeout_z2m] for the calculated duration. Otherwise, cancel permit join timeout z2m timer [timer.permit_join_timeout_z2m].", "natural_language": { "trigger": "The automation runs when the sensor tracking the Zigbee2MQTT permit join end time [sensor.zigbee2mqtt_add_on_permit_join_end_z2m] updates, when Home Assistant starts up, or when any automation is reloaded.", "conditions": "There are no conditions that must be met for the actions to run.", "action": "It calculates how many seconds are left until the permit join period ends. If there is time remaining, it starts a timer [timer.permit_join_timeout_z2m] to count down that remaining time. If the time has already elapsed or is zero, it cancels the timer." }, "human_like": "Manages a timer to match the remaining time for allowing new Zigbee devices to join the network, ensuring it's always in sync with the Zigbee2MQTT add-on.", "complexity": "medium" } } ]