first commit

This commit is contained in:
Simone Gallo 2026-02-09 11:14:43 +01:00
commit 75557a7f93
1703 changed files with 1446528 additions and 0 deletions

View File

@ -0,0 +1,11 @@
[
{
"name": "boiler service code number",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.ems_esp_boiler_boiler_service_code_number",
"device_id": null
}
}
]

View File

@ -0,0 +1,13 @@
- alias: Update Buderus
description: ''
triggers:
- trigger: state
entity_id:
- sensor.ems_esp_boiler_boiler_service_code_number
from: null
to: null
conditions: []
actions:
- action: python_script.buderus_states
data: {}
mode: single

View File

@ -0,0 +1,15 @@
[
{
"id": "Update Buderus",
"result": {
"structured": "TRIGGER: When boiler service code number [sensor.ems_esp_boiler_boiler_service_code_number] changes state. CONDITIONS: None. ACTIONS: Execute python_script.buderus_states.",
"natural_language": {
"trigger": "Whenever the boiler service code number [sensor.ems_esp_boiler_boiler_service_code_number] changes its value.",
"conditions": "There are no conditions.",
"action": "Runs a Python script named 'buderus_states'."
},
"human_like": "Updates the Buderus system whenever the boiler service code changes.",
"complexity": "low"
}
}
]

View File

@ -0,0 +1,17 @@
[
{
"id": "Update Buderus",
"automation": "- alias: Update Buderus\n description: ''\n triggers:\n - trigger: state\n entity_id:\n - sensor.ems_esp_boiler_boiler_service_code_number\n from: null\n to: null\n conditions: []\n actions:\n - action: python_script.buderus_states\n data: {}\n mode: single",
"config": [
{
"name": "boiler service code number",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.ems_esp_boiler_boiler_service_code_number",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,9 @@
{
"missing": [],
"added": [],
"used_entities": [
"sensor.ems_esp_boiler_boiler_service_code_number"
],
"used_devices": [],
"template_entities": []
}

View File

@ -0,0 +1,6 @@
{
"user": "00joshi",
"prompt_tokens": 1841,
"completion_tokens": 150,
"total_tokens": 1991
}

View File

@ -0,0 +1,119 @@
[
{
"name": "recycleapp restafval sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_restafval",
"device_id": null
}
},
{
"name": "recycleapp pmd sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_pmd",
"device_id": null
}
},
{
"name": "recycleapp papier sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_papier",
"device_id": null
}
},
{
"name": "garage door cover",
"room": "garage",
"type": "cover",
"id": {
"entity_id": "cover.garage_door",
"device_id": null
}
},
{
"name": "styrbar remote",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "b6a7367363b2689386e9ee5467f98824"
}
},
{
"name": "in vooraan switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.in_vooraan",
"device_id": null
}
},
{
"name": "in achteraan switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.in_achteraan",
"device_id": null
}
},
{
"name": "outside light switch",
"room": "outside",
"type": "switch",
"id": {
"entity_id": "b87e6e421ad0896f5896243b85567a30",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "cam02 doorbell sensor",
"room": null,
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.cam02_doorbell_doorbell",
"device_id": null
}
},
{
"name": "motion sensor 2",
"room": "garage",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection_2",
"device_id": null
}
},
{
"name": "garage light switch 1",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "83e7a8a998a7dbd377351e18b3b3e703",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 2",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "c7ac4270d47c95be72e39e25e9e646f2",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "motion sensor",
"room": "outside",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection",
"device_id": null
}
}
]

View File

@ -0,0 +1,264 @@
- id: '1578943797763'
alias: 'Notification: Garbage Collection'
description: ''
trigger:
- at: '18:45:00'
platform: time
condition:
- condition: or
conditions:
- condition: numeric_state
attribute: Days_until
below: '2'
above: '0'
entity_id: sensor.recycleapp_restafval
- condition: numeric_state
attribute: Days_until
below: '2'
above: '0'
entity_id: sensor.recycleapp_pmd
- condition: numeric_state
below: '2'
attribute: Days_until
above: '0'
entity_id: sensor.recycleapp_papier
action:
- service: notify.notify
data:
title: AFVAL
message: '{% if is_state_attr(''sensor.recycleapp_restafval'', ''Days_until'',
1) %} Restafval {% endif %} {% if is_state_attr(''sensor.recycleapp_pmd'',
''Days_until'', 1) %} PMD {% endif %} {% if is_state_attr(''sensor.recycleapp_papier'',
''Days_until'', 1) %} Papier {% endif %}
'
data:
icon_url: https://i.pinimg.com/originals/86/d9/27/86d92784a2c535e3bd783aec01bd1475.png
mode: single
- id: '1617014339885'
alias: 'Notification: Garage Open'
description: ''
trigger:
- platform: state
entity_id:
- cover.garage_door
to: open
for:
hours: 0
minutes: 5
seconds: 0
condition: []
action:
- service: notify.notify
data:
message: Garage has been open for more then 5 minutes!
title: Garage Open
data:
icon_url: https://img2.pngio.com/garage-free-business-icons-bus-garage-png-512_512.png
mode: single
- id: '1727525867473'
alias: STYRBAR
description: ''
triggers:
- domain: mqtt
device_id: b6a7367363b2689386e9ee5467f98824
type: action
subtype: 'on'
id: '1'
trigger: device
- domain: mqtt
device_id: b6a7367363b2689386e9ee5467f98824
type: action
subtype: 'off'
id: '2'
trigger: device
- domain: mqtt
device_id: b6a7367363b2689386e9ee5467f98824
type: action
subtype: arrow_right_click
id: '3'
trigger: device
- domain: mqtt
device_id: b6a7367363b2689386e9ee5467f98824
type: action
subtype: arrow_left_click
id: '4'
trigger: device
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: '1'
sequence:
- target:
entity_id:
- switch.in_vooraan
data: {}
action: switch.toggle
- conditions:
- condition: trigger
id: '2'
sequence:
- metadata: {}
data: {}
target:
entity_id: switch.in_achteraan
action: switch.toggle
- conditions:
- condition: trigger
id: '3'
sequence:
- data: {}
target:
entity_id: cover.garage_door
action: cover.close_cover
- conditions:
- condition: trigger
id: '4'
sequence:
- data: {}
target:
entity_id: cover.garage_door
action: cover.open_cover
mode: single
- id: '1686683677480'
alias: 'NFC: Toggle Garage'
description: ''
trigger:
- platform: tag
tag_id: b4bca8cf-e3a4-46b6-8a3c-8b2eedbda5e1
condition: []
action:
- service: cover.toggle
data: {}
target:
entity_id: cover.garage_door
mode: single
- id: '1689091034422'
alias: 'NFC: light outside'
description: ''
trigger:
- platform: tag
tag_id: 66c4f8be-a681-4913-b2a9-6cc87cb77582
condition: []
action:
- type: toggle
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: b87e6e421ad0896f5896243b85567a30
domain: switch
mode: single
- id: '1691999617422'
alias: 'Notification: Doorbell Ring'
description: Phone push doorbell
trigger:
- platform: state
entity_id:
- binary_sensor.cam02_doorbell_doorbell
to: 'on'
action:
- service: notify.mobile_app_pixel_6
data:
title: Doorbell
message: check unifi
data:
ttl: 0
priority: high
channel: alarm_stream
mode: single
- id: '1693896260197'
alias: 'PIR: Light Garage'
description: ''
trigger:
- platform: state
entity_id:
- binary_sensor.motion_sensor_motion_detection_2
to: null
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.motion_sensor_motion_detection_2
state: 'on'
sequence:
- type: turn_on
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: 83e7a8a998a7dbd377351e18b3b3e703
domain: switch
- type: turn_on
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: c7ac4270d47c95be72e39e25e9e646f2
domain: switch
default:
- type: turn_off
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: 83e7a8a998a7dbd377351e18b3b3e703
domain: switch
- type: turn_off
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: c7ac4270d47c95be72e39e25e9e646f2
domain: switch
mode: single
- id: '1695750254929'
alias: 'Automation: Lights off outside'
description: ''
trigger:
- platform: sun
event: sunrise
id: '1'
- platform: time
at: '22:30:00'
id: '2'
- platform: time
at: 08:00:00
id: '3'
- platform: state
entity_id:
- binary_sensor.motion_sensor_motion_detection
to: 'off'
id: '4'
condition:
- condition: or
conditions:
- condition: and
conditions:
- condition: trigger
id:
- '4'
- condition: time
after: '22:30:00'
before: 06:00:00
- condition: trigger
id:
- '1'
- '2'
- '3'
action:
- type: turn_off
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: b87e6e421ad0896f5896243b85567a30
domain: switch
mode: single
- id: '1699559709033'
alias: 'Automation: Light On Outside'
description: ''
trigger:
- platform: sun
event: sunset
- platform: time
at: 06:30:00
- platform: state
entity_id:
- binary_sensor.motion_sensor_motion_detection
to: 'on'
condition:
- condition: sun
before: sunrise
after: sunset
action:
- type: turn_on
device_id: 5a7e24120c207c869bb3bf761cb438df
entity_id: b87e6e421ad0896f5896243b85567a30
domain: switch
mode: single

View File

@ -0,0 +1,119 @@
[
{
"id": "'1578943797763'",
"result": {
"structured": "TRIGGER: At 18:45:00. CONDITIONS: (Days_until attribute of recycleapp restafval sensor [sensor.recycleapp_restafval] is greater than 0 AND less than 2) OR (Days_until attribute of recycleapp pmd sensor [sensor.recycleapp_pmd] is greater than 0 AND less than 2) OR (Days_until attribute of recycleapp papier sensor [sensor.recycleapp_papier] is greater than 0 AND less than 2). ACTIONS: Send a notification with title 'AFVAL' and a message that includes 'Restafval' if the Days_until attribute of recycleapp restafval sensor [sensor.recycleapp_restafval] equals 1, 'PMD' if the Days_until attribute of recycleapp pmd sensor [sensor.recycleapp_pmd] equals 1, and 'Papier' if the Days_until attribute of recycleapp papier sensor [sensor.recycleapp_papier] equals 1. The notification includes a custom icon.",
"natural_language": {
"trigger": "The automation triggers daily at 6:45 PM.",
"conditions": "It checks if the 'Days_until' attribute for any of the three garbage collection sensors is exactly 1. Specifically, it looks at the recycleapp restafval sensor [sensor.recycleapp_restafval], the recycleapp pmd sensor [sensor.recycleapp_pmd], and the recycleapp papier sensor [sensor.recycleapp_papier].",
"action": "Sends a notification titled 'AFVAL' with a message listing the types of garbage due for collection the next day. The message includes 'Restafval', 'PMD', or 'Papier' only if their respective sensor indicates collection in one day. The notification also displays a custom trash bin icon."
},
"human_like": "Sends a daily reminder in the evening if any garbage collection is scheduled for the next day.",
"complexity": "medium"
}
},
{
"id": "'1617014339885'",
"result": {
"structured": "TRIGGER: When garage door cover [cover.garage_door] remains open for 5 minutes. CONDITIONS: None. ACTIONS: Send a notification with title 'Garage Open' and message 'Garage has been open for more then 5 minutes!' using the notify service, including an icon.",
"natural_language": {
"trigger": "When the garage door cover [cover.garage_door] has been in the open position for at least five minutes.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification with the title 'Garage Open' and the message 'Garage has been open for more then 5 minutes!', which includes a specific icon."
},
"human_like": "Sends a notification if the garage door has been left open for more than five minutes.",
"complexity": "low"
}
},
{
"id": "'1727525867473'",
"result": {
"structured": "TRIGGER: When styrbar remote [device_id: b6a7367363b2689386e9ee5467f98824] sends an 'on' action OR When styrbar remote [device_id: b6a7367363b2689386e9ee5467f98824] sends an 'off' action OR When styrbar remote [device_id: b6a7367363b2689386e9ee5467f98824] sends an 'arrow_right_click' action OR When styrbar remote [device_id: b6a7367363b2689386e9ee5467f98824] sends an 'arrow_left_click' action. CONDITIONS: None. ACTIONS: If the trigger was 'on', toggle in vooraan switch [switch.in_vooraan]. If the trigger was 'off', toggle in achteraan switch [switch.in_achteraan]. If the trigger was 'arrow_right_click', close garage door cover [cover.garage_door]. If the trigger was 'arrow_left_click', open garage door cover [cover.garage_door].",
"natural_language": {
"trigger": "When a button on the styrbar remote [device_id: b6a7367363b2689386e9ee5467f98824] is pressed. Specifically, the automation triggers on the 'on', 'off', 'arrow_right_click', or 'arrow_left_click' actions from the remote.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "Depending on which button was pressed: pressing the 'on' button toggles the in vooraan switch [switch.in_vooraan]; pressing the 'off' button toggles the in achteraan switch [switch.in_achteraan]; pressing the 'arrow_right_click' button closes the garage door cover [cover.garage_door]; and pressing the 'arrow_left_click' button opens the garage door cover [cover.garage_door]."
},
"human_like": "This automation maps different buttons on a Styrbar remote to control a garage door and two switches, allowing for convenient remote operation.",
"complexity": "medium"
}
},
{
"id": "'1686683677480'",
"result": {
"structured": "TRIGGER: When NFC tag with ID b4bca8cf-e3a4-46b6-8a3c-8b2eedbda5e1 is scanned. CONDITIONS: None. ACTIONS: Toggle garage door cover [cover.garage_door].",
"natural_language": {
"trigger": "When a specific NFC tag with the ID b4bca8cf-e3a4-46b6-8a3c-8b2eedbda5e1 is scanned.",
"conditions": "There are no conditions that must be met.",
"action": "Toggles the state of the garage door cover [cover.garage_door], opening it if it is closed or closing it if it is open."
},
"human_like": "Toggles the garage door open or closed when a specific NFC tag is scanned.",
"complexity": "low"
}
},
{
"id": "'1689091034422'",
"result": {
"structured": "TRIGGER: When an NFC tag with ID 66c4f8be-a681-4913-b2a9-6cc87cb77582 is scanned. CONDITIONS: None. ACTIONS: Toggle the state of outside light switch [b87e6e421ad0896f5896243b85567a30].",
"natural_language": {
"trigger": "When a specific NFC tag (ID 66c4f8be-a681-4913-b2a9-6cc87cb77582) is scanned.",
"conditions": "There are no conditions that must be met.",
"action": "Toggles the outside light switch [b87e6e421ad0896f5896243b85567a30] on or off."
},
"human_like": "Toggles the outside light by scanning an NFC tag.",
"complexity": "low"
}
},
{
"id": "'1691999617422'",
"result": {
"structured": "TRIGGER: When cam02 doorbell sensor [binary_sensor.cam02_doorbell_doorbell] changes to on. CONDITIONS: None. ACTIONS: Send a high-priority notification to mobile_app_pixel_6 with title 'Doorbell' and message 'check unifi'.",
"natural_language": {
"trigger": "When the cam02 doorbell sensor [binary_sensor.cam02_doorbell_doorbell] detects a doorbell ring (changes to 'on').",
"conditions": "There are no conditions that must be met.",
"action": "Sends a high-priority push notification to the phone associated with mobile_app_pixel_6, with the title 'Doorbell' and the message 'check unifi'."
},
"human_like": "Sends a phone notification when the doorbell rings, prompting the user to check the camera feed.",
"complexity": "low"
}
},
{
"id": "'1693896260197'",
"result": {
"structured": "TRIGGER: When motion sensor 2 [binary_sensor.motion_sensor_motion_detection_2] changes state. CONDITIONS: None. ACTIONS: If motion sensor 2 [binary_sensor.motion_sensor_motion_detection_2] is on, turn on garage light switch 1 [83e7a8a998a7dbd377351e18b3b3e703] AND turn on garage light switch 2 [c7ac4270d47c95be72e39e25e9e646f2]; otherwise, turn off garage light switch 1 [83e7a8a998a7dbd377351e18b3b3e703] AND turn off garage light switch 2 [c7ac4270d47c95be72e39e25e9e646f2].",
"natural_language": {
"trigger": "Whenever the motion sensor 2 [binary_sensor.motion_sensor_motion_detection_2] detects any change in its state.",
"conditions": "There are no conditions that must be met.",
"action": "If the motion sensor 2 [binary_sensor.motion_sensor_motion_detection_2] is reporting motion (on), then both the garage light switch 1 [83e7a8a998a7dbd377351e18b3b3e703] and garage light switch 2 [c7ac4270d47c95be72e39e25e9e646f2] are turned on. If the motion sensor is not reporting motion (off), then both of those light switches are turned off."
},
"human_like": "Turns the garage lights on when motion is detected, and off when motion stops.",
"complexity": "low"
}
},
{
"id": "'1695750254929'",
"result": {
"structured": "TRIGGER: When sunrise occurs OR when the time is 22:30:00 OR when the time is 08:00:00 OR when motion sensor [binary_sensor.motion_sensor_motion_detection] stops detecting motion (to 'off'). CONDITIONS: ((Trigger is motion sensor [binary_sensor.motion_sensor_motion_detection] stops detecting motion AND the current time is between 22:30:00 and 06:00:00) OR (Trigger is sunrise OR 22:30:00 OR 08:00:00)). ACTIONS: Turn off outside light switch [b87e6e421ad0896f5896243b85567a30].",
"natural_language": {
"trigger": "The automation can be triggered by sunrise, by the clock reaching 22:30:00, by the clock reaching 08:00:00, or when the motion sensor [binary_sensor.motion_sensor_motion_detection] stops detecting motion.",
"conditions": "If the trigger was the motion sensor stopping, the automation only proceeds if the current time is between 22:30:00 and 06:00:00. If the trigger was sunrise, 22:30:00, or 08:00:00, the automation proceeds without any further time restriction.",
"action": "Turns off the outside light switch [b87e6e421ad0896f5896243b85567a30]."
},
"human_like": "Turns off the outside lights at specific times of day or after motion stops during the night.",
"complexity": "medium"
}
},
{
"id": "'1699559709033'",
"result": {
"structured": "TRIGGER: When the sun sets OR at 06:30:00 OR when motion sensor [binary_sensor.motion_sensor_motion_detection] detects motion (turns on). CONDITIONS: The current time is after sunset AND before sunrise. ACTIONS: Turn on outside light switch [b87e6e421ad0896f5896243b85567a30].",
"natural_language": {
"trigger": "The automation can be triggered by three events: the sun setting, the time reaching 6:30 AM, or the motion sensor [binary_sensor.motion_sensor_motion_detection] detecting motion.",
"conditions": "The automation will only proceed if the current time is during the night, specifically after sunset and before sunrise.",
"action": "Turns on the outside light switch [b87e6e421ad0896f5896243b85567a30]."
},
"human_like": "Turns on the outside light at sunset, at 6:30 AM, or when motion is detected, but only during nighttime hours.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,290 @@
[
{
"id": "'1578943797763'",
"automation": "- id: '1578943797763'\n alias: 'Notification: Garbage Collection'\n description: ''\n trigger:\n - at: '18:45:00'\n platform: time\n condition:\n - condition: or\n conditions:\n - condition: numeric_state\n attribute: Days_until\n below: '2'\n above: '0'\n entity_id: sensor.recycleapp_restafval\n - condition: numeric_state\n attribute: Days_until\n below: '2'\n above: '0'\n entity_id: sensor.recycleapp_pmd\n - condition: numeric_state\n below: '2'\n attribute: Days_until\n above: '0'\n entity_id: sensor.recycleapp_papier\n action:\n - service: notify.notify\n data:\n title: AFVAL\n message: '{% if is_state_attr(''sensor.recycleapp_restafval'', ''Days_until'',\n 1) %} Restafval {% endif %} {% if is_state_attr(''sensor.recycleapp_pmd'',\n ''Days_until'', 1) %} PMD {% endif %} {% if is_state_attr(''sensor.recycleapp_papier'',\n ''Days_until'', 1) %} Papier {% endif %}\n\n '\n data:\n icon_url: https://i.pinimg.com/originals/86/d9/27/86d92784a2c535e3bd783aec01bd1475.png\n mode: single",
"config": [
{
"name": "recycleapp restafval sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_restafval",
"device_id": null
}
},
{
"name": "recycleapp pmd sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_pmd",
"device_id": null
}
},
{
"name": "recycleapp papier sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.recycleapp_papier",
"device_id": null
}
}
]
},
{
"id": "'1617014339885'",
"automation": "- id: '1617014339885'\n alias: 'Notification: Garage Open'\n description: ''\n trigger:\n - platform: state\n entity_id:\n - cover.garage_door\n to: open\n for:\n hours: 0\n minutes: 5\n seconds: 0\n condition: []\n action:\n - service: notify.notify\n data:\n message: Garage has been open for more then 5 minutes!\n title: Garage Open\n data:\n icon_url: https://img2.pngio.com/garage-free-business-icons-bus-garage-png-512_512.png\n mode: single",
"config": [
{
"name": "garage door cover",
"room": "garage",
"type": "cover",
"id": {
"entity_id": "cover.garage_door",
"device_id": null
}
}
]
},
{
"id": "'1727525867473'",
"automation": "- id: '1727525867473'\n alias: STYRBAR\n description: ''\n triggers:\n - domain: mqtt\n device_id: b6a7367363b2689386e9ee5467f98824\n type: action\n subtype: 'on'\n id: '1'\n trigger: device\n - domain: mqtt\n device_id: b6a7367363b2689386e9ee5467f98824\n type: action\n subtype: 'off'\n id: '2'\n trigger: device\n - domain: mqtt\n device_id: b6a7367363b2689386e9ee5467f98824\n type: action\n subtype: arrow_right_click\n id: '3'\n trigger: device\n - domain: mqtt\n device_id: b6a7367363b2689386e9ee5467f98824\n type: action\n subtype: arrow_left_click\n id: '4'\n trigger: device\n conditions: []\n actions:\n - choose:\n - conditions:\n - condition: trigger\n id: '1'\n sequence:\n - target:\n entity_id:\n - switch.in_vooraan\n data: {}\n action: switch.toggle\n - conditions:\n - condition: trigger\n id: '2'\n sequence:\n - metadata: {}\n data: {}\n target:\n entity_id: switch.in_achteraan\n action: switch.toggle\n - conditions:\n - condition: trigger\n id: '3'\n sequence:\n - data: {}\n target:\n entity_id: cover.garage_door\n action: cover.close_cover\n - conditions:\n - condition: trigger\n id: '4'\n sequence:\n - data: {}\n target:\n entity_id: cover.garage_door\n action: cover.open_cover\n mode: single",
"config": [
{
"name": "garage door cover",
"room": "garage",
"type": "cover",
"id": {
"entity_id": "cover.garage_door",
"device_id": null
}
},
{
"name": "styrbar remote",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "b6a7367363b2689386e9ee5467f98824"
}
},
{
"name": "in vooraan switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.in_vooraan",
"device_id": null
}
},
{
"name": "in achteraan switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.in_achteraan",
"device_id": null
}
}
]
},
{
"id": "'1686683677480'",
"automation": "- id: '1686683677480'\n alias: 'NFC: Toggle Garage'\n description: ''\n trigger:\n - platform: tag\n tag_id: b4bca8cf-e3a4-46b6-8a3c-8b2eedbda5e1\n condition: []\n action:\n - service: cover.toggle\n data: {}\n target:\n entity_id: cover.garage_door\n mode: single",
"config": [
{
"name": "garage door cover",
"room": "garage",
"type": "cover",
"id": {
"entity_id": "cover.garage_door",
"device_id": null
}
}
]
},
{
"id": "'1689091034422'",
"automation": "- id: '1689091034422'\n alias: 'NFC: light outside'\n description: ''\n trigger:\n - platform: tag\n tag_id: 66c4f8be-a681-4913-b2a9-6cc87cb77582\n condition: []\n action:\n - type: toggle\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: b87e6e421ad0896f5896243b85567a30\n domain: switch\n mode: single",
"config": [
{
"name": "outside light switch",
"room": "outside",
"type": "switch",
"id": {
"entity_id": "b87e6e421ad0896f5896243b85567a30",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 1",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "83e7a8a998a7dbd377351e18b3b3e703",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 2",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "c7ac4270d47c95be72e39e25e9e646f2",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
}
]
},
{
"id": "'1691999617422'",
"automation": "- id: '1691999617422'\n alias: 'Notification: Doorbell Ring'\n description: Phone push doorbell\n trigger:\n - platform: state\n entity_id:\n - binary_sensor.cam02_doorbell_doorbell\n to: 'on'\n action:\n - service: notify.mobile_app_pixel_6\n data:\n title: Doorbell\n message: check unifi\n data:\n ttl: 0\n priority: high\n channel: alarm_stream\n mode: single",
"config": [
{
"name": "cam02 doorbell sensor",
"room": null,
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.cam02_doorbell_doorbell",
"device_id": null
}
}
]
},
{
"id": "'1693896260197'",
"automation": "- id: '1693896260197'\n alias: 'PIR: Light Garage'\n description: ''\n trigger:\n - platform: state\n entity_id:\n - binary_sensor.motion_sensor_motion_detection_2\n to: null\n condition: []\n action:\n - choose:\n - conditions:\n - condition: state\n entity_id: binary_sensor.motion_sensor_motion_detection_2\n state: 'on'\n sequence:\n - type: turn_on\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: 83e7a8a998a7dbd377351e18b3b3e703\n domain: switch\n - type: turn_on\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: c7ac4270d47c95be72e39e25e9e646f2\n domain: switch\n default:\n - type: turn_off\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: 83e7a8a998a7dbd377351e18b3b3e703\n domain: switch\n - type: turn_off\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: c7ac4270d47c95be72e39e25e9e646f2\n domain: switch\n mode: single",
"config": [
{
"name": "outside light switch",
"room": "outside",
"type": "switch",
"id": {
"entity_id": "b87e6e421ad0896f5896243b85567a30",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "motion sensor 2",
"room": "garage",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection_2",
"device_id": null
}
},
{
"name": "garage light switch 1",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "83e7a8a998a7dbd377351e18b3b3e703",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 2",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "c7ac4270d47c95be72e39e25e9e646f2",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "motion sensor",
"room": "outside",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection",
"device_id": null
}
}
]
},
{
"id": "'1695750254929'",
"automation": "- id: '1695750254929'\n alias: 'Automation: Lights off outside'\n description: ''\n trigger:\n - platform: sun\n event: sunrise\n id: '1'\n - platform: time\n at: '22:30:00'\n id: '2'\n - platform: time\n at: 08:00:00\n id: '3'\n - platform: state\n entity_id:\n - binary_sensor.motion_sensor_motion_detection\n to: 'off'\n id: '4'\n condition:\n - condition: or\n conditions:\n - condition: and\n conditions:\n - condition: trigger\n id:\n - '4'\n - condition: time\n after: '22:30:00'\n before: 06:00:00\n - condition: trigger\n id:\n - '1'\n - '2'\n - '3'\n action:\n - type: turn_off\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: b87e6e421ad0896f5896243b85567a30\n domain: switch\n mode: single",
"config": [
{
"name": "outside light switch",
"room": "outside",
"type": "switch",
"id": {
"entity_id": "b87e6e421ad0896f5896243b85567a30",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 1",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "83e7a8a998a7dbd377351e18b3b3e703",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 2",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "c7ac4270d47c95be72e39e25e9e646f2",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "motion sensor",
"room": "outside",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection",
"device_id": null
}
}
]
},
{
"id": "'1699559709033'",
"automation": "- id: '1699559709033'\n alias: 'Automation: Light On Outside'\n description: ''\n trigger:\n - platform: sun\n event: sunset\n - platform: time\n at: 06:30:00\n - platform: state\n entity_id:\n - binary_sensor.motion_sensor_motion_detection\n to: 'on'\n condition:\n - condition: sun\n before: sunrise\n after: sunset\n action:\n - type: turn_on\n device_id: 5a7e24120c207c869bb3bf761cb438df\n entity_id: b87e6e421ad0896f5896243b85567a30\n domain: switch\n mode: single",
"config": [
{
"name": "outside light switch",
"room": "outside",
"type": "switch",
"id": {
"entity_id": "b87e6e421ad0896f5896243b85567a30",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 1",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "83e7a8a998a7dbd377351e18b3b3e703",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "garage light switch 2",
"room": "garage",
"type": "switch",
"id": {
"entity_id": "c7ac4270d47c95be72e39e25e9e646f2",
"device_id": "5a7e24120c207c869bb3bf761cb438df"
}
},
{
"name": "motion sensor",
"room": "outside",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.motion_sensor_motion_detection",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,22 @@
{
"missing": [],
"added": [],
"used_entities": [
"5a7e24120c207c869bb3bf761cb438df",
"83e7a8a998a7dbd377351e18b3b3e703",
"b6a7367363b2689386e9ee5467f98824",
"b87e6e421ad0896f5896243b85567a30",
"binary_sensor.cam02_doorbell_doorbell",
"binary_sensor.motion_sensor_motion_detection",
"binary_sensor.motion_sensor_motion_detection_2",
"c7ac4270d47c95be72e39e25e9e646f2",
"cover.garage_door",
"sensor.recycleapp_papier",
"sensor.recycleapp_pmd",
"sensor.recycleapp_restafval",
"switch.in_achteraan",
"switch.in_vooraan"
],
"used_devices": [],
"template_entities": []
}

View File

@ -0,0 +1,6 @@
{
"user": "33Fraise33",
"prompt_tokens": 19253,
"completion_tokens": 2754,
"total_tokens": 22007
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,218 @@
{
"missing": [],
"added": [
"light.bedroom_left_switch_right",
"light.bedroom_right_switch_left",
"light.bedroom_right_switch_right",
"light.bedroom_switch_main",
"light.workroom_switch",
"switch.0x00158d0002530bd9",
"switch.kitchen_fartuh",
"switch.livingroom_socket_corner_r",
"switch.livingroom_socket_l",
"switch.livingroom_socket_r"
],
"used_entities": [
"3a9919ab25ad577158f751a70c35f8e2",
"61c0ac07893316543e261176eb0cb5f9",
"6ecc35aae49d8307be87809073a32233",
"719cda594198c3eafa3817b9230f2afa",
"8067572bca7252311fc2ce6152f90f34",
"89add52cab26b9b6bcad7e86fd6387ec",
"binary_sensor.0x00158d00044d5d11_contact",
"binary_sensor.andrei_is_home",
"binary_sensor.bathroom_humidity_max",
"binary_sensor.bathroom_humidity_min",
"binary_sensor.bathroom_motions",
"binary_sensor.bathroom_open_door",
"binary_sensor.doors_in_kitchen_livingroom",
"binary_sensor.hallway_door_contact",
"binary_sensor.hallway_motion_occupancy",
"binary_sensor.is_night_mode",
"binary_sensor.kitchen_need_ventilation",
"binary_sensor.livingroom_ventilation_need",
"binary_sensor.livingroom_ventilation_status",
"binary_sensor.masterskaia_balkon_contact",
"binary_sensor.plant_alert_euphorbia_leuconeura_illuminance",
"binary_sensor.plant_alert_euphorbia_leuconeura_soil",
"binary_sensor.plant_alert_euphorbia_leuconeura_temperature",
"binary_sensor.plant_alert_ficus_lyrata_soil",
"binary_sensor.plant_alert_ficus_lyrata_temperature",
"binary_sensor.server_temp_high",
"binary_sensor.someone_is_home",
"binary_sensor.temperature_below_20",
"binary_sensor.washing_machine_active",
"binary_sensor.washing_machine_finished",
"button.lxc_debian_105_reboot",
"button.lxc_debian_105_start",
"button.lxc_debian_105_stop",
"button.lxc_deluge_104_reboot",
"button.lxc_deluge_104_start",
"button.lxc_deluge_104_stop",
"button.lxc_jackett_102_reboot",
"button.lxc_jackett_102_start",
"button.lxc_jackett_102_stop",
"button.lxc_jellyfin_103_reboot",
"button.lxc_jellyfin_103_start",
"button.lxc_jellyfin_103_stop",
"button.lxc_mariadb_101_reboot",
"button.lxc_mariadb_101_start",
"button.lxc_mariadb_101_stop",
"button.lxc_minim_107_reboot",
"button.lxc_minim_107_start",
"button.lxc_minim_107_stop",
"button.qemu_haos12_3_100_reboot",
"cc6ef89720abb376a24e910e13f37902",
"cfd464e1cbfa3da2ddd4f2109d74eb4e",
"climate.konditsioner",
"d2c3001cdc59660c456de45aec09da91",
"fan.bathroom_relay_l1",
"fan.server_fan",
"group.bathroom_all_lights",
"group.cameras",
"group.living_room_tv",
"input_boolean.bathroom_cleaning_mode",
"input_boolean.bathroom_lights_startup_protection",
"input_boolean.bedroom_th_notice",
"input_boolean.climate_pre_restart_state",
"input_boolean.co2_text_notification_sensor",
"input_boolean.co2_voice_notification_sensor",
"input_boolean.door_open_climate_pre_state",
"input_boolean.door_open_fan_pre_state",
"input_boolean.door_open_humidifier_pre_state",
"input_boolean.fan_pre_restart_state",
"input_boolean.filter_replace_notified",
"input_boolean.force_camera_off",
"input_boolean.hallway_first_door_open",
"input_boolean.humidifier_pre_restart_state",
"input_boolean.kitchen_fan_cool_down",
"input_boolean.silent_mode",
"input_boolean.system_startup_phase",
"input_boolean.washing_machine_pre_restart_state",
"input_boolean.washing_machine_running",
"input_boolean.winter_mode",
"input_boolean.workroom_th_notice",
"input_datetime.last_euphorbia_leuconeura_illuminance_notification",
"input_datetime.last_euphorbia_leuconeura_soil_notification",
"input_datetime.last_euphorbia_leuconeura_temperature_notification",
"input_datetime.last_ficus_lyrata_soil_notification",
"input_datetime.last_ficus_lyrata_temperature_notification",
"input_datetime.washing_machine_started_at",
"input_number.bathroom_timer_duration",
"input_number.co2_notification_reset_period",
"input_number.hallway_blink_count",
"input_number.hallway_timer_duration",
"input_number.kitchen_fan_delay_min",
"input_number.kitchen_notification_cooldown_min",
"input_number.low_th_notification_reset_period",
"input_number.plants_notification_cooldown_hours",
"input_number.server_fan_delay_min",
"input_number.server_temp_off_persist_min",
"input_number.wm_min_cycle_min",
"input_text.currently_home",
"input_text.telegram_allowed_users",
"light.all_lights",
"light.bathroom_main",
"light.bathroom_spot_c1_philips",
"light.bathroom_spot_c2_philips",
"light.bathroom_spot_l1_philips",
"light.bathroom_spot_r1_philips",
"light.bathroom_spot_r2_philips",
"light.gateway_light_04cf8c977cdd",
"light.hallway_switch",
"light.kitchen_fartuh",
"light.kitchen_main_light",
"light.light_bathroom",
"light.livingroom_main_switch_left",
"light.livingroom_main_switch_right",
"light.livingroom_scone_dimmer",
"light.working_room_led",
"media_player.yandex_station_ff98f0294437799304d0788d",
"person.master",
"script.bathroom_toggle_day_mode",
"script.bathroom_toggle_night_mode",
"script.bathroom_turn_on_day_mode",
"script.bathroom_turn_on_night_mode",
"script.check_all_plants",
"script.plant_check_conditions",
"script.send_bathroom_status",
"script.send_bedroom_status",
"script.send_hallway_status",
"script.send_kitchen_status",
"script.send_livingroom_status",
"script.send_main_menu",
"script.send_pve_status",
"script.send_system_status",
"script.send_workroom_status",
"script.toggle_device",
"script.turn_on",
"script.yandex_tts_click_outdoor_button",
"script.yandex_tts_co2_alert",
"script.yandex_tts_co2_normal",
"script.yandex_tts_door_status",
"script.yandex_tts_hum_status",
"script.yandex_tts_kitchen_fan_alert",
"script.yandex_tts_kondicioner_warning",
"script.yandex_tts_ppm_status",
"script.yandex_tts_shaking_outdoor_button",
"script.yandex_tts_temp_status",
"script.yandex_tts_washing_machine_finished",
"script.yandex_tts_washing_machine_reminder",
"sensor.0xa4c13861a18df7c8_temperature",
"sensor.bathroom_washing_machine_power",
"sensor.illumination_04cf8c977cdd",
"sensor.konditsioner_filter_remaining_life",
"sensor.pixel_8_pro_battery_level",
"sensor.pixel_8_pro_battery_state",
"sensor.srednee_znachenie_temperatury_v_masterskoi_2",
"sensor.temperatura_v_spalne_sglazhennaia",
"switch.0x00158d0002530ba3",
"switch.chuangmi_cn_309825146_ipc019_on_p_2_1",
"switch.chuangmi_cn_311366982_ipc019_on_p_2_1",
"switch.evolution_hf_878",
"switch.my_multi_outlet_left",
"switch.my_multi_outlet_right",
"switch.smart_plug_in_unit_vykliuchatel",
"switch.sonoff_10024c81be",
"switch.zhimi_mb3_a5d3_switch_status",
"timer.bathroom_fan_cooldown",
"timer.bedroom_th_notice_reset",
"timer.kitchen_fan_delay_timer",
"timer.kitchen_notification_cooldown_timer",
"timer.server_fan_delay",
"timer.server_temp_off_persist",
"timer.timer_bathroom",
"timer.timer_hallway"
],
"used_devices": [],
"template_entities": [
"binary_sensor.andrei_is_home",
"binary_sensor.hallway_door_contact",
"binary_sensor.hallway_motion_occupancy",
"binary_sensor.masterskaia_balkon_contact",
"climate.konditsioner",
"input_datetime.last_euphorbia_leuconeura_illuminance_notification",
"input_datetime.last_euphorbia_leuconeura_soil_notification",
"input_datetime.last_euphorbia_leuconeura_temperature_notification",
"input_datetime.last_ficus_lyrata_soil_notification",
"input_datetime.last_ficus_lyrata_temperature_notification",
"input_datetime.washing_machine_started_at",
"input_number.bathroom_timer_duration",
"input_number.co2_notification_reset_period",
"input_number.hallway_blink_count",
"input_number.hallway_timer_duration",
"input_number.kitchen_fan_delay_min",
"input_number.kitchen_notification_cooldown_min",
"input_number.low_th_notification_reset_period",
"input_number.plants_notification_cooldown_hours",
"input_number.server_fan_delay_min",
"input_number.server_temp_off_persist_min",
"input_number.wm_min_cycle_min",
"light.working_room_led",
"sensor.0xa4c13861a18df7c8_temperature",
"sensor.bathroom_washing_machine_power",
"sensor.pixel_8_pro_battery_level",
"sensor.srednee_znachenie_temperatury_v_masterskoi_2",
"sensor.temperatura_v_spalne_sglazhennaia"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "51n1au5k1",
"prompt_tokens": 291899,
"completion_tokens": 43411,
"total_tokens": 335310
}

View File

@ -0,0 +1,83 @@
[
{
"name": "entryway speaker",
"room": "entryway",
"type": "media_player",
"id": {
"entity_id": "media_player.entryway_speaker",
"device_id": null
}
},
{
"name": "living room climate",
"room": "living_room",
"type": "climate",
"id": {
"entity_id": "climate.living_room",
"device_id": null
}
},
{
"name": "living room speaker",
"room": "living_room",
"type": "media_player",
"id": {
"entity_id": "media_player.living_room_speaker",
"device_id": null
}
},
{
"name": "house speaker",
"room": "house",
"type": "media_player",
"id": {
"entity_id": "media_player.house_speaker",
"device_id": null
}
},
{
"name": "ambient rgb led",
"room": null,
"type": "light",
"id": {
"entity_id": "light.ambient_rgb_led",
"device_id": null
}
},
{
"name": "room x lights",
"room": "room_x",
"type": "light",
"id": {
"entity_id": "light.room_x_lights",
"device_id": null
}
},
{
"name": "room x pir motion sensor",
"room": "room_x",
"type": "alarm_control_panel",
"id": {
"entity_id": "alarm_control_panel.room_x_pir_motion_sensor",
"device_id": null
}
},
{
"name": "alarm state visual tts indication no helpers",
"room": null,
"type": "automation",
"id": {
"entity_id": "automation.alarm_state_visual_tts_indication_no_helpers",
"device_id": null
}
},
{
"name": "text to speech google en com",
"room": null,
"type": "tts",
"id": {
"entity_id": "tts.google_en_com",
"device_id": null
}
}
]

View File

@ -0,0 +1,288 @@
- alias: Entryway Smart Welcome - Door & Motion Confirmed
mode: single
triggers:
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 7
id: door_opened
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 8
id: motion_detected
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: door_opened
sequence:
- wait_for_trigger:
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 8
timeout:
seconds: 60
continue_on_timeout: false
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.entryway_speaker
message: Entryway door opened. Welcome home, brave traveller!
target:
entity_id: tts.google_en_com
- alias: HVAC Auto Pause/Resume - Door & Window with Grace Periods
mode: restart
triggers:
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 7
id: door_opened
- platform: event
event_type: sia_event
event_data:
code: BR
ri: 7
id: door_closed
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: door_opened
sequence:
- delay: 00:05:00
- wait_for_trigger:
- platform: event
event_type: sia_event
event_data:
code: BR
ri: 2
timeout: 00:00:01
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger is none }}'
sequence:
- service: climate.set_hvac_mode
target:
entity_id: climate.living_room
data:
hvac_mode: 'off'
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.living_room_speaker
message: HVAC paused. Door or Window remained open for over 5 minutes.
target:
entity_id: tts.google_en_com
- conditions:
- condition: trigger
id: door_closed
sequence:
- delay: 00:05:00
- wait_for_trigger:
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 2
timeout: 00:00:01
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ wait.trigger is none }}'
sequence:
- service: climate.set_hvac_mode
target:
entity_id: climate.living_room
data:
hvac_mode: heat
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.living_room_speaker
message: HVAC resumed. Door stayed closed for 5 minutes.
target:
entity_id: tts.google_en_com
- alias: Alarm State Visual & TTS Indication (No Helpers)
mode: restart
trigger:
- platform: event
event_type: sia_event
event_data:
code: CL
ri: 10
id: armed_away
- platform: event
event_type: sia_event
event_data:
code: OP
ri: 10
id: disarmed
- platform: event
event_type: sia_event
event_data:
code: NL
ri: 10
id: night_mode
- platform: event
event_type: sia_event
event_data:
code: BA
ri: 10
id: triggered
variables:
last_state: '{{ state_attr(alarm_control_panel.room_x_pir_motion_sensor, ''last_state'')
| default(''disarmed'') }}'
action:
- choose:
- conditions:
- condition: trigger
id: armed_away
sequence:
- service: light.turn_on
target:
entity_id: light.ambient_rgb_led
data:
brightness_pct: 70
rgb_color:
- 255
- 0
- 0
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.house_speaker
message: Security Alarm was Armed Away
target:
entity_id: tts.google_en_com
- service: automation.set_state
data:
entity_id: automation.alarm_state_visual_tts_indication_no_helpers
state: armed_away
- conditions:
- condition: trigger
id: disarmed
sequence:
- service: light.turn_on
target:
entity_id: light.ambient_rgb_led
data:
brightness_pct: 50
rgb_color:
- 0
- 255
- 0
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.house_speaker
message: Alarm was Disarmed
target:
entity_id: tts.google_en_com
- service: automation.set_state
data:
entity_id: automation.alarm_state_visual_tts_indication_no_helpers
state: disarmed
- conditions:
- condition: trigger
id: night_mode
sequence:
- service: light.turn_on
target:
entity_id: light.ambient_rgb_led
data:
brightness_pct: 25
rgb_color:
- 128
- 0
- 128
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.house_speaker
message: Night Mode engaged for Security Alarm
target:
entity_id: tts.google_en_com
- service: automation.set_state
data:
entity_id: automation.alarm_state_visual_tts_indication_no_helpers
state: night_mode
- conditions:
- condition: trigger
id: triggered
- condition: template
value_template: '{{ last_state in [''armed_away'', ''night_mode''] }} ## Check
if last state variable is in Armed Away/Night mode
'
sequence:
- repeat:
while:
- condition: template
value_template: '{{ last_state in [''armed_away'', ''night_mode''] }}
'
sequence:
- service: light.turn_on
target:
entity_id: light.ambient_rgb_led
data:
brightness_pct: 100
rgb_color:
- 255
- 0
- 0
- delay: 00:00:03
- service: light.turn_off
target:
entity_id: light.ambient_rgb_led
- delay: 00:00:03
- service: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.house_speaker
message: Security Alarm Triggered!
target:
entity_id: tts.google_en_com
- delay: 00:00:15
- alias: Room X Lights On for 1m30s
triggers:
- platform: event
event_type: sia_event
event_data:
code: BA
ri: '8'
conditions:
- condition: state
entity_id: light.room_x_lights
state: 'off'
actions:
- action: light.turn_on
target:
entity_id: light.room_x_lights
- delay:
hours: 0
minutes: 1
seconds: 30
- action: light.turn_off
target:
entity_id: light.room_x_lights
mode: single

View File

@ -0,0 +1,54 @@
[
{
"id": "Entryway Smart Welcome - Door & Motion Confirmed",
"result": {
"structured": "TRIGGER: When an SIA event with code BA and ri 7 occurs (door_opened) OR When an SIA event with code BA and ri 8 occurs (motion_detected). CONDITIONS: None. ACTIONS: If the trigger was door_opened, wait for up to 60 seconds for an SIA event with code BA and ri 8 (motion_detected). If motion_detected occurs within the timeout, then use text to speech google en com [tts.google_en_com] to make entryway speaker [media_player.entryway_speaker] say 'Entryway door opened. Welcome home, brave traveller!'.",
"natural_language": {
"trigger": "The automation is triggered when either a specific door opening event (SIA event code BA, ri 7) or a specific motion detection event (SIA event code BA, ri 8) occurs.",
"conditions": "There are no conditions that must be met before the action can run.",
"action": "If the automation was triggered by the door opening event, it will wait for up to one minute for the corresponding motion detection event. If motion is detected within that minute, the system will play a welcome message on the entryway speaker [media_player.entryway_speaker] using the Google text-to-speech service [tts.google_en_com]."
},
"human_like": "Plays a welcome message when the entryway door is opened and motion is detected shortly after, confirming someone has entered.",
"complexity": "medium"
}
},
{
"id": "HVAC Auto Pause/Resume - Door & Window with Grace Periods",
"result": {
"structured": "TRIGGER: When an SIA event with code BA and ri 7 occurs (door_opened) OR when an SIA event with code BR and ri 7 occurs (door_closed). CONDITIONS: None. ACTIONS: (IF door_opened trigger fires THEN wait 5 minutes, THEN wait up to 1 second for an SIA event with code BR and ri 2, THEN IF no such event occurred within the timeout (wait.trigger is none) THEN set living room climate [climate.living_room] HVAC mode to off AND use text to speech google en com [tts.google_en_com] to speak 'HVAC paused. Door or Window remained open for over 5 minutes.' on living room speaker [media_player.living_room_speaker]) OR (IF door_closed trigger fires THEN wait 5 minutes, THEN wait up to 1 second for an SIA event with code BA and ri 2, THEN IF no such event occurred within the timeout (wait.trigger is none) THEN set living room climate [climate.living_room] HVAC mode to heat AND use text to speech google en com [tts.google_en_com] to speak 'HVAC resumed. Door stayed closed for 5 minutes.' on living room speaker [media_player.living_room_speaker]).",
"natural_language": {
"trigger": "The automation is triggered by one of two specific security system (SIA) events: either a 'door opened' event (code BA, ri 7) or a 'door closed' event (code BR, ri 7).",
"conditions": "There are no conditions that must be met before the actions can run.",
"action": "If the trigger was a 'door opened' event, the automation waits for 5 minutes. After this delay, it checks for a very brief moment (1 second) for a specific 'door closed' event (code BR, ri 2). If that specific closing event does not happen within that second, it assumes the door has remained open. It then turns off the living room climate [climate.living_room] and announces via the living room speaker [media_player.living_room_speaker] that the HVAC is paused because a door or window was open for over 5 minutes. Conversely, if the trigger was a 'door closed' event, it waits 5 minutes and then checks for a specific 'door opened' event (code BA, ri 2) for 1 second. If that opening event does not occur, it assumes the door has stayed closed. It then sets the living room climate [climate.living_room] to heat mode and announces that the HVAC has resumed."
},
"human_like": "Pauses the living room heating or cooling if a door or window is left open for more than 5 minutes, and resumes it once the door has been securely closed for the same amount of time, with voice announcements for both actions.",
"complexity": "high"
}
},
{
"id": "Alarm State Visual & TTS Indication (No Helpers)",
"result": {
"structured": "TRIGGER: When a SIA event with code CL and ri 10 occurs (armed_away) OR When a SIA event with code OP and ri 10 occurs (disarmed) OR When a SIA event with code NL and ri 10 occurs (night_mode) OR When a SIA event with code BA and ri 10 occurs (triggered). CONDITIONS: For the triggered path only, the last_state variable (derived from the last_state attribute of room x pir motion sensor [alarm_control_panel.room_x_pir_motion_sensor]) must be armed_away OR night_mode. ACTIONS: If triggered is armed_away: Turn on ambient rgb led [light.ambient_rgb_led] to 70% brightness, red color, AND speak 'Security Alarm was Armed Away' via house speaker [media_player.house_speaker] using text to speech google en com [tts.google_en_com], AND set the state of alarm state visual tts indication no helpers [automation.alarm_state_visual_tts_indication_no_helpers] to armed_away. If triggered is disarmed: Turn on ambient rgb led [light.ambient_rgb_led] to 50% brightness, green color, AND speak 'Alarm was Disarmed' via house speaker [media_player.house_speaker] using text to speech google en com [tts.google_en_com], AND set the state of alarm state visual tts indication no helpers [automation.alarm_state_visual_tts_indication_no_helpers] to disarmed. If triggered is night_mode: Turn on ambient rgb led [light.ambient_rgb_led] to 25% brightness, purple color, AND speak 'Night Mode engaged for Security Alarm' via house speaker [media_player.house_speaker] using text to speech google en com [tts.google_en_com], AND set the state of alarm state visual tts indication no helpers [automation.alarm_state_visual_tts_indication_no_helpers] to night_mode. If triggered is triggered AND last_state is armed_away OR night_mode: Repeat the following sequence while last_state is armed_away OR night_mode: Turn on ambient rgb led [light.ambient_rgb_led] to 100% brightness, red color, wait 3 seconds, turn off ambient rgb led [light.ambient_rgb_led], wait 3 seconds, speak 'Security Alarm Triggered!' via house speaker [media_player.house_speaker] using text to speech google en com [tts.google_en_com], wait 15 seconds.",
"natural_language": {
"trigger": "The automation is triggered by specific SIA alarm system events: when the alarm is armed away (code CL), disarmed (code OP), set to night mode (code NL), or triggered (code BA). All events have a common receiver identifier (ri) of 10.",
"conditions": "For the alarm triggered event, there is an additional condition that the alarm's last known state, retrieved from the room x pir motion sensor [alarm_control_panel.room_x_pir_motion_sensor], must have been either 'armed_away' or 'night_mode'. The other trigger paths (armed away, disarmed, night mode) have no additional conditions.",
"action": "Depending on which event triggered the automation, it performs a specific sequence. For 'armed away', it sets the ambient rgb led [light.ambient_rgb_led] to red at 70% brightness, announces 'Security Alarm was Armed Away' on the house speaker [media_player.house_speaker], and records this state in the automation itself. For 'disarmed', it sets the light to green at 50% brightness, announces 'Alarm was Disarmed', and records the state. For 'night mode', it sets the light to purple at 25% brightness, announces 'Night Mode engaged for Security Alarm', and records the state. For a 'triggered' event, but only if the alarm was previously armed, it enters a flashing and announcement loop: it repeatedly turns the light to bright red, waits, turns it off, waits, announces 'Security Alarm Triggered!', and waits again, continuing as long as the alarm's last state remains armed."
},
"human_like": "This automation provides visual and spoken feedback for the alarm system's state, changing a light's color and making announcements when the alarm is armed, disarmed, set to night mode, or triggered.",
"complexity": "high"
}
},
{
"id": "Room X Lights On for 1m30s",
"result": {
"structured": "TRIGGER: When an event of type sia_event occurs with event_data code BA AND ri 8. CONDITIONS: room x lights [light.room_x_lights] is off. ACTIONS: Turn on room x lights [light.room_x_lights], wait for 1 minute and 30 seconds, then turn off room x lights [light.room_x_lights].",
"natural_language": {
"trigger": "When a specific security system event (sia_event) with the code BA and identifier ri 8 is received.",
"conditions": "The room x lights [light.room_x_lights] must be off.",
"action": "Turn on the room x lights [light.room_x_lights], keep them on for one minute and thirty seconds, and then turn them off."
},
"human_like": "Turns on the lights in Room X for a minute and a half when a specific security alarm event occurs, provided the lights are off.",
"complexity": "low"
}
}
]

View File

@ -0,0 +1,125 @@
[
{
"id": "Entryway Smart Welcome - Door & Motion Confirmed",
"automation": "- alias: Entryway Smart Welcome - Door & Motion Confirmed\n mode: single\n triggers:\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 7\n id: door_opened\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 8\n id: motion_detected\n conditions: []\n actions:\n - choose:\n - conditions:\n - condition: trigger\n id: door_opened\n sequence:\n - wait_for_trigger:\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 8\n timeout:\n seconds: 60\n continue_on_timeout: false\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.entryway_speaker\n message: Entryway door opened. Welcome home, brave traveller!\n target:\n entity_id: tts.google_en_com",
"config": [
{
"name": "entryway speaker",
"room": "entryway",
"type": "media_player",
"id": {
"entity_id": "media_player.entryway_speaker",
"device_id": null
}
},
{
"name": "text to speech google en com",
"room": null,
"type": "tts",
"id": {
"entity_id": "tts.google_en_com",
"device_id": null
}
}
]
},
{
"id": "HVAC Auto Pause/Resume - Door & Window with Grace Periods",
"automation": "- alias: HVAC Auto Pause/Resume - Door & Window with Grace Periods\n mode: restart\n triggers:\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 7\n id: door_opened\n - platform: event\n event_type: sia_event\n event_data:\n code: BR\n ri: 7\n id: door_closed\n conditions: []\n actions:\n - choose:\n - conditions:\n - condition: trigger\n id: door_opened\n sequence:\n - delay: 00:05:00\n - wait_for_trigger:\n - platform: event\n event_type: sia_event\n event_data:\n code: BR\n ri: 2\n timeout: 00:00:01\n continue_on_timeout: true\n - choose:\n - conditions:\n - condition: template\n value_template: '{{ wait.trigger is none }}'\n sequence:\n - service: climate.set_hvac_mode\n target:\n entity_id: climate.living_room\n data:\n hvac_mode: 'off'\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.living_room_speaker\n message: HVAC paused. Door or Window remained open for over 5 minutes.\n target:\n entity_id: tts.google_en_com\n - conditions:\n - condition: trigger\n id: door_closed\n sequence:\n - delay: 00:05:00\n - wait_for_trigger:\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 2\n timeout: 00:00:01\n continue_on_timeout: true\n - choose:\n - conditions:\n - condition: template\n value_template: '{{ wait.trigger is none }}'\n sequence:\n - service: climate.set_hvac_mode\n target:\n entity_id: climate.living_room\n data:\n hvac_mode: heat\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.living_room_speaker\n message: HVAC resumed. Door stayed closed for 5 minutes.\n target:\n entity_id: tts.google_en_com",
"config": [
{
"name": "living room climate",
"room": "living_room",
"type": "climate",
"id": {
"entity_id": "climate.living_room",
"device_id": null
}
},
{
"name": "living room speaker",
"room": "living_room",
"type": "media_player",
"id": {
"entity_id": "media_player.living_room_speaker",
"device_id": null
}
},
{
"name": "text to speech google en com",
"room": null,
"type": "tts",
"id": {
"entity_id": "tts.google_en_com",
"device_id": null
}
}
]
},
{
"id": "Alarm State Visual & TTS Indication (No Helpers)",
"automation": "- alias: Alarm State Visual & TTS Indication (No Helpers)\n mode: restart\n trigger:\n - platform: event\n event_type: sia_event\n event_data:\n code: CL\n ri: 10\n id: armed_away\n - platform: event\n event_type: sia_event\n event_data:\n code: OP\n ri: 10\n id: disarmed\n - platform: event\n event_type: sia_event\n event_data:\n code: NL\n ri: 10\n id: night_mode\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: 10\n id: triggered\n variables:\n last_state: '{{ state_attr(alarm_control_panel.room_x_pir_motion_sensor, ''last_state'')\n | default(''disarmed'') }}'\n action:\n - choose:\n - conditions:\n - condition: trigger\n id: armed_away\n sequence:\n - service: light.turn_on\n target:\n entity_id: light.ambient_rgb_led\n data:\n brightness_pct: 70\n rgb_color:\n - 255\n - 0\n - 0\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.house_speaker\n message: Security Alarm was Armed Away\n target:\n entity_id: tts.google_en_com\n - service: automation.set_state\n data:\n entity_id: automation.alarm_state_visual_tts_indication_no_helpers\n state: armed_away\n - conditions:\n - condition: trigger\n id: disarmed\n sequence:\n - service: light.turn_on\n target:\n entity_id: light.ambient_rgb_led\n data:\n brightness_pct: 50\n rgb_color:\n - 0\n - 255\n - 0\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.house_speaker\n message: Alarm was Disarmed\n target:\n entity_id: tts.google_en_com\n - service: automation.set_state\n data:\n entity_id: automation.alarm_state_visual_tts_indication_no_helpers\n state: disarmed\n - conditions:\n - condition: trigger\n id: night_mode\n sequence:\n - service: light.turn_on\n target:\n entity_id: light.ambient_rgb_led\n data:\n brightness_pct: 25\n rgb_color:\n - 128\n - 0\n - 128\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.house_speaker\n message: Night Mode engaged for Security Alarm\n target:\n entity_id: tts.google_en_com\n - service: automation.set_state\n data:\n entity_id: automation.alarm_state_visual_tts_indication_no_helpers\n state: night_mode\n - conditions:\n - condition: trigger\n id: triggered\n - condition: template\n value_template: '{{ last_state in [''armed_away'', ''night_mode''] }} ## Check\n if last state variable is in Armed Away/Night mode\n\n '\n sequence:\n - repeat:\n while:\n - condition: template\n value_template: '{{ last_state in [''armed_away'', ''night_mode''] }}\n\n '\n sequence:\n - service: light.turn_on\n target:\n entity_id: light.ambient_rgb_led\n data:\n brightness_pct: 100\n rgb_color:\n - 255\n - 0\n - 0\n - delay: 00:00:03\n - service: light.turn_off\n target:\n entity_id: light.ambient_rgb_led\n - delay: 00:00:03\n - service: tts.speak\n metadata: {}\n data:\n cache: true\n media_player_entity_id: media_player.house_speaker\n message: Security Alarm Triggered!\n target:\n entity_id: tts.google_en_com\n - delay: 00:00:15",
"config": [
{
"name": "house speaker",
"room": "house",
"type": "media_player",
"id": {
"entity_id": "media_player.house_speaker",
"device_id": null
}
},
{
"name": "ambient rgb led",
"room": null,
"type": "light",
"id": {
"entity_id": "light.ambient_rgb_led",
"device_id": null
}
},
{
"name": "room x pir motion sensor",
"room": "room_x",
"type": "alarm_control_panel",
"id": {
"entity_id": "alarm_control_panel.room_x_pir_motion_sensor",
"device_id": null
}
},
{
"name": "alarm state visual tts indication no helpers",
"room": null,
"type": "automation",
"id": {
"entity_id": "automation.alarm_state_visual_tts_indication_no_helpers",
"device_id": null
}
},
{
"name": "text to speech google en com",
"room": null,
"type": "tts",
"id": {
"entity_id": "tts.google_en_com",
"device_id": null
}
}
]
},
{
"id": "Room X Lights On for 1m30s",
"automation": "- alias: Room X Lights On for 1m30s\n triggers:\n - platform: event\n event_type: sia_event\n event_data:\n code: BA\n ri: '8'\n conditions:\n - condition: state\n entity_id: light.room_x_lights\n state: 'off'\n actions:\n - action: light.turn_on\n target:\n entity_id: light.room_x_lights\n - delay:\n hours: 0\n minutes: 1\n seconds: 30\n - action: light.turn_off\n target:\n entity_id: light.room_x_lights\n mode: single",
"config": [
{
"name": "room x lights",
"room": "room_x",
"type": "light",
"id": {
"entity_id": "light.room_x_lights",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,18 @@
{
"missing": [],
"added": [
"alarm_control_panel.room_x_pir_motion_sensor",
"media_player.entryway_speaker",
"media_player.house_speaker",
"media_player.living_room_speaker"
],
"used_entities": [
"automation.alarm_state_visual_tts_indication_no_helpers",
"climate.living_room",
"light.ambient_rgb_led",
"light.room_x_lights",
"tts.google_en_com"
],
"used_devices": [],
"template_entities": []
}

View File

@ -0,0 +1,6 @@
{
"user": "AlexeiakaTechnik",
"prompt_tokens": 9347,
"completion_tokens": 2159,
"total_tokens": 11506
}

View File

@ -0,0 +1,56 @@
[
{
"name": "declencheur 5 min timer",
"room": null,
"type": "timer",
"id": {
"entity_id": "timer.declencheur_5_min",
"device_id": null
}
},
{
"name": "conso prod power sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.conso_prod_power",
"device_id": null
}
},
{
"name": "gaspillage batterie sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.gaspillage_batterie",
"device_id": null
}
},
{
"name": "powerstream 1230 custom load power settings",
"room": null,
"type": "number",
"id": {
"entity_id": "number.powerstream_1230_custom_load_power_settings",
"device_id": null
}
},
{
"name": "powerstream 1230 battery input watts sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.powerstream_1230_battery_input_watts",
"device_id": null
}
},
{
"name": "consigne reelle number",
"room": null,
"type": "number",
"id": {
"entity_id": "number.consigne_reelle",
"device_id": null
}
}
]

View File

@ -0,0 +1,69 @@
- alias: Correction Conso estimé/shelly si injection trop importante
description: Redémarrage de la conso de la maison vue depuis le shelly ou en estimation
complémentaire prise périodiquement si détection d'un déphasage
triggers:
- entity_id:
- timer.declencheur_5_min
from: null
to: idle
trigger: state
alias: Déclenchement périodique
id: Déclenchement périodique 5 min
enabled: false
- alias: Lorsque l'injection est > 50 W pendant 15 sec
trigger: numeric_state
entity_id:
- sensor.conso_prod_power
for:
hours: 0
minutes: 0
seconds: 15
below: -50
id: injection > 50 W pendant 15 sec
enabled: false
- trigger: numeric_state
entity_id:
- sensor.gaspillage_batterie
for:
hours: 0
minutes: 0
seconds: 20
above: 15
conditions:
- alias: Lorsque Gaspillage est > 5 W
condition: numeric_state
entity_id: sensor.gaspillage_batterie
above: 15
- condition: numeric_state
entity_id: number.powerstream_1230_custom_load_power_settings
above: 70
alias: Lorsque la conso estimée de la maison est > 70 W
actions:
- action: notify.persistent_notification
metadata: {}
data:
message: '"Conso maison : {{ states(''sensor.conso_prod_power'') }} - Injection
batterie {{ states(''sensor.powerstream_1230_battery_input_watts'') }}- Gaspillage
batterie {{ states(''sensor.gaspillage_batterie'') }} - Ancienne consigne
: {{ states(''number.powerstream_1230_custom_load_power_settings'') }} - Nouvelle
consigne : {{ states(''number.consigne_reelle'') }} "'
title: Correction Charge maison à 70 W
alias: Notifier de l'action d'ajustement
enabled: false
- action: logbook.log
metadata: {}
data:
name: Ajustement shelly
message: '"Conso maison : {{ states(''sensor.conso_prod_power'') }} - Injection
batterie {{ states(''sensor.powerstream_1230_battery_input_watts'') }}- Gaspillage
batterie {{ states(''sensor.gaspillage_batterie'') }} - Ancienne consigne
: {{ states(''number.powerstream_1230_custom_load_power_settings'') }} - Nouvelle
consigne : {{ states(''number.consigne_reelle'') }}"'
- action: number.set_value
metadata: {}
data:
value: '{{ states(''number.consigne_reelle'') | float(70) }}'
target:
entity_id: number.powerstream_1230_custom_load_power_settings
mode: queued
max: 10

View File

@ -0,0 +1,15 @@
[
{
"id": "Correction Conso estimé/shelly si injection trop importante",
"result": {
"structured": "TRIGGER: When declencheur 5 min timer [timer.declencheur_5_min] changes from any state to idle OR When conso prod power sensor [sensor.conso_prod_power] remains below -50 W for 15 seconds OR When gaspillage batterie sensor [sensor.gaspillage_batterie] remains above 15 W for 20 seconds. CONDITIONS: gaspillage batterie sensor [sensor.gaspillage_batterie] is above 15 W AND powerstream 1230 custom load power settings [number.powerstream_1230_custom_load_power_settings] is above 70. ACTIONS: Send a persistent notification titled 'Correction Charge maison à 70 W' with a message containing sensor values AND Log an entry named 'Ajustement shelly' with a message containing sensor values AND Set powerstream 1230 custom load power settings [number.powerstream_1230_custom_load_power_settings] to the value of consigne reelle number [number.consigne_reelle] (defaulting to 70 if unavailable).",
"natural_language": {
"trigger": "This automation can start in three ways: when the periodic 5-minute timer finishes, when the production consumption power sensor shows an injection (negative consumption) greater than 50 watts for 15 seconds, or when the battery waste sensor reports a value above 15 watts for 20 seconds.",
"conditions": "For the automation to proceed, the battery waste sensor must be above 15 watts, and the estimated house consumption setting must be above 70 watts.",
"action": "If triggered and conditions are met, the automation sends a notification and logs an entry with details about the current power values. It then adjusts the house consumption power setting to match a target value, defaulting to 70 watts if needed."
},
"human_like": "This automation corrects the estimated house power consumption from a Shelly device by adjusting a power setting when excessive battery injection or waste is detected, helping to keep the system in balance.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,62 @@
[
{
"id": "Correction Conso estimé/shelly si injection trop importante",
"automation": "- alias: Correction Conso estimé/shelly si injection trop importante\n description: Redémarrage de la conso de la maison vue depuis le shelly ou en estimation\n complémentaire prise périodiquement si détection d'un déphasage\n triggers:\n - entity_id:\n - timer.declencheur_5_min\n from: null\n to: idle\n trigger: state\n alias: Déclenchement périodique\n id: Déclenchement périodique 5 min\n enabled: false\n - alias: Lorsque l'injection est > 50 W pendant 15 sec\n trigger: numeric_state\n entity_id:\n - sensor.conso_prod_power\n for:\n hours: 0\n minutes: 0\n seconds: 15\n below: -50\n id: injection > 50 W pendant 15 sec\n enabled: false\n - trigger: numeric_state\n entity_id:\n - sensor.gaspillage_batterie\n for:\n hours: 0\n minutes: 0\n seconds: 20\n above: 15\n conditions:\n - alias: Lorsque Gaspillage est > 5 W\n condition: numeric_state\n entity_id: sensor.gaspillage_batterie\n above: 15\n - condition: numeric_state\n entity_id: number.powerstream_1230_custom_load_power_settings\n above: 70\n alias: Lorsque la conso estimée de la maison est > 70 W\n actions:\n - action: notify.persistent_notification\n metadata: {}\n data:\n message: '\"Conso maison : {{ states(''sensor.conso_prod_power'') }} - Injection\n batterie {{ states(''sensor.powerstream_1230_battery_input_watts'') }}- Gaspillage\n batterie {{ states(''sensor.gaspillage_batterie'') }} - Ancienne consigne\n : {{ states(''number.powerstream_1230_custom_load_power_settings'') }} - Nouvelle\n consigne : {{ states(''number.consigne_reelle'') }} \"'\n title: Correction Charge maison à 70 W\n alias: Notifier de l'action d'ajustement\n enabled: false\n - action: logbook.log\n metadata: {}\n data:\n name: Ajustement shelly\n message: '\"Conso maison : {{ states(''sensor.conso_prod_power'') }} - Injection\n batterie {{ states(''sensor.powerstream_1230_battery_input_watts'') }}- Gaspillage\n batterie {{ states(''sensor.gaspillage_batterie'') }} - Ancienne consigne\n : {{ states(''number.powerstream_1230_custom_load_power_settings'') }} - Nouvelle\n consigne : {{ states(''number.consigne_reelle'') }}\"'\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ states(''number.consigne_reelle'') | float(70) }}'\n target:\n entity_id: number.powerstream_1230_custom_load_power_settings\n mode: queued\n max: 10",
"config": [
{
"name": "declencheur 5 min timer",
"room": null,
"type": "timer",
"id": {
"entity_id": "timer.declencheur_5_min",
"device_id": null
}
},
{
"name": "conso prod power sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.conso_prod_power",
"device_id": null
}
},
{
"name": "gaspillage batterie sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.gaspillage_batterie",
"device_id": null
}
},
{
"name": "powerstream 1230 custom load power settings",
"room": null,
"type": "number",
"id": {
"entity_id": "number.powerstream_1230_custom_load_power_settings",
"device_id": null
}
},
{
"name": "powerstream 1230 battery input watts sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.powerstream_1230_battery_input_watts",
"device_id": null
}
},
{
"name": "consigne reelle number",
"room": null,
"type": "number",
"id": {
"entity_id": "number.consigne_reelle",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,20 @@
{
"missing": [],
"added": [],
"used_entities": [
"number.consigne_reelle",
"number.powerstream_1230_custom_load_power_settings",
"sensor.conso_prod_power",
"sensor.gaspillage_batterie",
"sensor.powerstream_1230_battery_input_watts",
"timer.declencheur_5_min"
],
"used_devices": [],
"template_entities": [
"number.consigne_reelle",
"number.powerstream_1230_custom_load_power_settings",
"sensor.conso_prod_power",
"sensor.gaspillage_batterie",
"sensor.powerstream_1230_battery_input_watts"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "Angelius007",
"prompt_tokens": 2808,
"completion_tokens": 450,
"total_tokens": 3258
}

View File

@ -0,0 +1,119 @@
[
{
"name": "MPC battery power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.mpc_batt_power",
"device_id": null
}
},
{
"name": "MPC grid power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.mpc_grid_power",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS rated charging power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_ess_rated_charging_power",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS rated discharging power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_ess_rated_discharging_power",
"device_id": null
}
},
{
"name": "Sigenergy plant remote EMS control mode",
"room": null,
"type": "select",
"id": {
"entity_id": "select.sigen_plant_remote_ems_control_mode",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS max charging limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_ess_max_charging_limit",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS max discharging limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_ess_max_discharging_limit",
"device_id": null
}
},
{
"name": "Sigenergy plant PCS import limitation",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_pcs_import_limitation",
"device_id": null
}
},
{
"name": "Home feed in price",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.home_feed_in_price",
"device_id": null
}
},
{
"name": "Home general price",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.home_general_price",
"device_id": null
}
},
{
"name": "Sigenergy plant grid connection status",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_grid_connection_status",
"device_id": null
}
},
{
"name": "Sigenergy plant grid export limitation",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_grid_export_limitation",
"device_id": null
}
},
{
"name": "Sigenergy plant PV max power limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_pv_max_power_limit",
"device_id": null
}
}
]

View File

@ -0,0 +1,193 @@
- alias: EMHASS Sigenergy Battery Management
description: Automatically control the Sigenergy battery system using the EMHASS
energy plan
triggers:
- trigger: state
entity_id:
- sensor.mpc_batt_power
- sensor.mpc_grid_power
from: null
to: null
actions:
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- variables:
p_batt: '{{ states(''sensor.mpc_batt_power'') | int(0) }}'
p_batt_kw: '{{ (p_batt / 1000) | round(3) }}'
p_grid: '{{ states(''sensor.mpc_grid_power'') | int(0) }}'
max_charge_rate: '{{ states(''sensor.sigen_plant_ess_rated_charging_power'')
| float(0) }}'
max_discharge_rate: '{{ states(''sensor.sigen_plant_ess_rated_discharging_power'')
| float(0) }}'
max_import_rate_kw: 100
- choose:
- conditions:
- condition: template
value_template: '{{ p_grid == 0 }}'
sequence:
- action: select.select_option
metadata: {}
data:
option: Maximum Self Consumption
target:
entity_id: select.sigen_plant_remote_ems_control_mode
alias: Maximum Self Consumption
- action: number.set_value
metadata: {}
data:
value: '{{ max_charge_rate }}'
target:
entity_id:
- number.sigen_plant_ess_max_charging_limit
- action: number.set_value
metadata: {}
data:
value: '{{ max_discharge_rate }}'
target:
entity_id:
- number.sigen_plant_ess_max_discharging_limit
alias: Check self consume conditions
- conditions:
- condition: template
value_template: '{{ p_batt > 0 or (p_grid < 0 and p_batt == 0) }}'
sequence:
- action: select.select_option
metadata: {}
data:
option: Command Discharging (PV First)
target:
entity_id: select.sigen_plant_remote_ems_control_mode
- action: number.set_value
metadata: {}
data:
value: '{{ p_batt_kw }}'
target:
entity_id: number.sigen_plant_ess_max_discharging_limit
alias: Check discharge conditions
- conditions:
- condition: template
value_template: '{{ p_batt < 0 }}'
sequence:
- action: select.select_option
metadata: {}
data:
option: Command Charging (PV First)
target:
entity_id: select.sigen_plant_remote_ems_control_mode
- action: number.set_value
metadata: {}
data:
value: '{{ p_batt_kw | abs }}'
target:
entity_id:
- number.sigen_plant_ess_max_charging_limit
- action: number.set_value
metadata: {}
data:
value: '{{ max_import_rate_kw if p_grid > 0 else 0 }}'
target:
entity_id:
- number.sigen_plant_pcs_import_limitation
alias: Check charge conditions
- conditions:
- condition: template
value_template: '{{ p_batt == 0 }}'
sequence:
- action: select.select_option
metadata: {}
data:
option: Standby
target:
entity_id: select.sigen_plant_remote_ems_control_mode
- action: number.set_value
metadata: {}
data:
value: 0
target:
entity_id:
- number.sigen_plant_pcs_import_limitation
alias: Check standby conditions
mode: single
- alias: Sigenergy Inverter Curtailment
description: Automatically manage negative energy prices by curtailing exporting
and solar generation
variables:
max_export_kw: 30
max_pv_kw: 100
triggers:
- trigger: numeric_state
entity_id:
- sensor.home_feed_in_price
below: 0
id: negative_fit
- trigger: numeric_state
entity_id:
- sensor.home_feed_in_price
id: positive_fit
above: 0
- trigger: numeric_state
entity_id:
- sensor.home_general_price
above: 0
id: positive_price
- trigger: numeric_state
entity_id:
- sensor.home_general_price
below: 0
id: negative_price
- trigger: state
entity_id:
- sensor.sigen_plant_grid_connection_status
from: null
to: null
id: grid_connection_change
actions:
- alias: Curtail if feedin price is negative
if:
- condition: numeric_state
entity_id: sensor.home_feed_in_price
below: 0
then:
- action: number.set_value
metadata: {}
data:
value: 0
target:
entity_id: number.sigen_plant_grid_export_limitation
alias: Set export limit to 0
else:
- action: number.set_value
metadata: {}
data:
value: '{{ max_export_kw }}'
target:
entity_id: number.sigen_plant_grid_export_limitation
alias: Set export limit to 30
- alias: Ignore PV if usage price is negative
if:
- condition: numeric_state
entity_id: sensor.home_general_price
below: 0
- condition: state
entity_id: sensor.sigen_plant_grid_connection_status
state: On Grid
then:
- action: number.set_value
metadata: {}
data:
value: 0
target:
entity_id: number.sigen_plant_pv_max_power_limit
alias: Set PV limit to 0
else:
- action: number.set_value
metadata: {}
data:
value: '{{ max_pv_kw }}'
target:
entity_id: number.sigen_plant_pv_max_power_limit
alias: Set PV limit to Maximum
mode: single

View File

@ -0,0 +1,28 @@
[
{
"id": "EMHASS Sigenergy Battery Management",
"result": {
"structured": "TRIGGER: When MPC battery power [sensor.mpc_batt_power] OR MPC grid power [sensor.mpc_grid_power] changes state. CONDITIONS: None. ACTIONS: Wait 1 second, then set variables: p_batt (MPC battery power value), p_batt_kw (p_batt in kW), p_grid (MPC grid power value), max_charge_rate (Sigenergy plant ESS rated charging power [sensor.sigen_plant_ess_rated_charging_power] value), max_discharge_rate (Sigenergy plant ESS rated discharging power [sensor.sigen_plant_ess_rated_discharging_power] value), max_import_rate_kw (100). Then, choose one sequence based on conditions: IF (p_grid equals 0) THEN set Sigenergy plant remote EMS control mode [select.sigen_plant_remote_ems_control_mode] to 'Maximum Self Consumption', set Sigenergy plant ESS max charging limit [number.sigen_plant_ess_max_charging_limit] to max_charge_rate, AND set Sigenergy plant ESS max discharging limit [number.sigen_plant_ess_max_discharging_limit] to max_discharge_rate. ELSE IF (p_batt is greater than 0 OR (p_grid is less than 0 AND p_batt equals 0)) THEN set Sigenergy plant remote EMS control mode [select.sigen_plant_remote_ems_control_mode] to 'Command Discharging (PV First)' AND set Sigenergy plant ESS max discharging limit [number.sigen_plant_ess_max_discharging_limit] to p_batt_kw. ELSE IF (p_batt is less than 0) THEN set Sigenergy plant remote EMS control mode [select.sigen_plant_remote_ems_control_mode] to 'Command Charging (PV First)', set Sigenergy plant ESS max charging limit [number.sigen_plant_ess_max_charging_limit] to absolute value of p_batt_kw, AND set Sigenergy plant PCS import limitation [number.sigen_plant_pcs_import_limitation] to max_import_rate_kw if p_grid is greater than 0, otherwise 0. ELSE IF (p_batt equals 0) THEN set Sigenergy plant remote EMS control mode [select.sigen_plant_remote_ems_control_mode] to 'Standby' AND set Sigenergy plant PCS import limitation [number.sigen_plant_pcs_import_limitation] to 0.",
"natural_language": {
"trigger": "The automation triggers whenever the MPC battery power [sensor.mpc_batt_power] or the MPC grid power [sensor.mpc_grid_power] changes its state.",
"conditions": "There are no explicit conditions that must be met before the actions run; the automation executes immediately after the trigger.",
"action": "After a one-second delay, the automation reads the current power values and sets several variables. It then evaluates a series of rules to decide how to control the Sigenergy battery system. If there is no grid power flow, it sets the system to 'Maximum Self Consumption' mode and configures the maximum charge and discharge limits to their rated values. If the battery is discharging or the grid is exporting while the battery is idle, it switches to 'Command Discharging (PV First)' mode and sets the discharge limit to the current battery power. If the battery is charging, it switches to 'Command Charging (PV First)' mode, sets the charge limit to the current charging power, and adjusts the grid import limit based on whether power is being imported. If the battery is neither charging nor discharging, it puts the system into 'Standby' mode and sets the grid import limit to zero."
},
"human_like": "This automation manages the home battery system by automatically switching its operating mode and setting power limits based on real-time energy production and consumption.",
"complexity": "medium"
}
},
{
"id": "Sigenergy Inverter Curtailment",
"result": {
"structured": "TRIGGER: When Home feed in price [sensor.home_feed_in_price] is below 0 OR when Home feed in price [sensor.home_feed_in_price] is above 0 OR when Home general price [sensor.home_general_price] is above 0 OR when Home general price [sensor.home_general_price] is below 0 OR when Sigenergy plant grid connection status [sensor.sigen_plant_grid_connection_status] changes state. CONDITIONS: None. ACTIONS: (If Home feed in price [sensor.home_feed_in_price] is below 0, then set Sigenergy plant grid export limitation [number.sigen_plant_grid_export_limitation] to 0, else set it to 30) AND (If Home general price [sensor.home_general_price] is below 0 AND Sigenergy plant grid connection status [sensor.sigen_plant_grid_connection_status] is On Grid, then set Sigenergy plant PV max power limit [number.sigen_plant_pv_max_power_limit] to 0, else set it to 100).",
"natural_language": {
"trigger": "The automation triggers when the Home feed in price [sensor.home_feed_in_price] becomes positive or negative, when the Home general price [sensor.home_general_price] becomes positive or negative, or when the Sigenergy plant grid connection status [sensor.sigen_plant_grid_connection_status] changes its state.",
"conditions": "There are no global conditions. The actions themselves contain conditional logic.",
"action": "The automation performs two independent actions. First, it checks the feed-in price. If the price is negative, it sets the Sigenergy plant grid export limitation [number.sigen_plant_grid_export_limitation] to zero to stop exporting power. Otherwise, it sets the export limit to 30 kW. Second, it checks the general usage price and the grid connection status. If the usage price is negative and the system is on-grid, it sets the Sigenergy plant PV max power limit [number.sigen_plant_pv_max_power_limit] to zero to curtail solar generation. Otherwise, it sets the PV limit to its maximum of 100 kW."
},
"human_like": "Automatically adjusts solar export and generation limits based on electricity prices to avoid paying for exporting power during negative price periods.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,131 @@
[
{
"id": "EMHASS Sigenergy Battery Management",
"automation": "- alias: EMHASS Sigenergy Battery Management\n description: Automatically control the Sigenergy battery system using the EMHASS\n energy plan\n triggers:\n - trigger: state\n entity_id:\n - sensor.mpc_batt_power\n - sensor.mpc_grid_power\n from: null\n to: null\n actions:\n - delay:\n hours: 0\n minutes: 0\n seconds: 1\n milliseconds: 0\n - variables:\n p_batt: '{{ states(''sensor.mpc_batt_power'') | int(0) }}'\n p_batt_kw: '{{ (p_batt / 1000) | round(3) }}'\n p_grid: '{{ states(''sensor.mpc_grid_power'') | int(0) }}'\n max_charge_rate: '{{ states(''sensor.sigen_plant_ess_rated_charging_power'')\n | float(0) }}'\n max_discharge_rate: '{{ states(''sensor.sigen_plant_ess_rated_discharging_power'')\n | float(0) }}'\n max_import_rate_kw: 100\n - choose:\n - conditions:\n - condition: template\n value_template: '{{ p_grid == 0 }}'\n sequence:\n - action: select.select_option\n metadata: {}\n data:\n option: Maximum Self Consumption\n target:\n entity_id: select.sigen_plant_remote_ems_control_mode\n alias: Maximum Self Consumption\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ max_charge_rate }}'\n target:\n entity_id:\n - number.sigen_plant_ess_max_charging_limit\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ max_discharge_rate }}'\n target:\n entity_id:\n - number.sigen_plant_ess_max_discharging_limit\n alias: Check self consume conditions\n - conditions:\n - condition: template\n value_template: '{{ p_batt > 0 or (p_grid < 0 and p_batt == 0) }}'\n sequence:\n - action: select.select_option\n metadata: {}\n data:\n option: Command Discharging (PV First)\n target:\n entity_id: select.sigen_plant_remote_ems_control_mode\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ p_batt_kw }}'\n target:\n entity_id: number.sigen_plant_ess_max_discharging_limit\n alias: Check discharge conditions\n - conditions:\n - condition: template\n value_template: '{{ p_batt < 0 }}'\n sequence:\n - action: select.select_option\n metadata: {}\n data:\n option: Command Charging (PV First)\n target:\n entity_id: select.sigen_plant_remote_ems_control_mode\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ p_batt_kw | abs }}'\n target:\n entity_id:\n - number.sigen_plant_ess_max_charging_limit\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ max_import_rate_kw if p_grid > 0 else 0 }}'\n target:\n entity_id:\n - number.sigen_plant_pcs_import_limitation\n alias: Check charge conditions\n - conditions:\n - condition: template\n value_template: '{{ p_batt == 0 }}'\n sequence:\n - action: select.select_option\n metadata: {}\n data:\n option: Standby\n target:\n entity_id: select.sigen_plant_remote_ems_control_mode\n - action: number.set_value\n metadata: {}\n data:\n value: 0\n target:\n entity_id:\n - number.sigen_plant_pcs_import_limitation\n alias: Check standby conditions\n mode: single",
"config": [
{
"name": "MPC battery power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.mpc_batt_power",
"device_id": null
}
},
{
"name": "MPC grid power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.mpc_grid_power",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS rated charging power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_ess_rated_charging_power",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS rated discharging power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_ess_rated_discharging_power",
"device_id": null
}
},
{
"name": "Sigenergy plant remote EMS control mode",
"room": null,
"type": "select",
"id": {
"entity_id": "select.sigen_plant_remote_ems_control_mode",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS max charging limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_ess_max_charging_limit",
"device_id": null
}
},
{
"name": "Sigenergy plant ESS max discharging limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_ess_max_discharging_limit",
"device_id": null
}
},
{
"name": "Sigenergy plant PCS import limitation",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_pcs_import_limitation",
"device_id": null
}
}
]
},
{
"id": "Sigenergy Inverter Curtailment",
"automation": "- alias: Sigenergy Inverter Curtailment\n description: Automatically manage negative energy prices by curtailing exporting\n and solar generation\n variables:\n max_export_kw: 30\n max_pv_kw: 100\n triggers:\n - trigger: numeric_state\n entity_id:\n - sensor.home_feed_in_price\n below: 0\n id: negative_fit\n - trigger: numeric_state\n entity_id:\n - sensor.home_feed_in_price\n id: positive_fit\n above: 0\n - trigger: numeric_state\n entity_id:\n - sensor.home_general_price\n above: 0\n id: positive_price\n - trigger: numeric_state\n entity_id:\n - sensor.home_general_price\n below: 0\n id: negative_price\n - trigger: state\n entity_id:\n - sensor.sigen_plant_grid_connection_status\n from: null\n to: null\n id: grid_connection_change\n actions:\n - alias: Curtail if feedin price is negative\n if:\n - condition: numeric_state\n entity_id: sensor.home_feed_in_price\n below: 0\n then:\n - action: number.set_value\n metadata: {}\n data:\n value: 0\n target:\n entity_id: number.sigen_plant_grid_export_limitation\n alias: Set export limit to 0\n else:\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ max_export_kw }}'\n target:\n entity_id: number.sigen_plant_grid_export_limitation\n alias: Set export limit to 30\n - alias: Ignore PV if usage price is negative\n if:\n - condition: numeric_state\n entity_id: sensor.home_general_price\n below: 0\n - condition: state\n entity_id: sensor.sigen_plant_grid_connection_status\n state: On Grid\n then:\n - action: number.set_value\n metadata: {}\n data:\n value: 0\n target:\n entity_id: number.sigen_plant_pv_max_power_limit\n alias: Set PV limit to 0\n else:\n - action: number.set_value\n metadata: {}\n data:\n value: '{{ max_pv_kw }}'\n target:\n entity_id: number.sigen_plant_pv_max_power_limit\n alias: Set PV limit to Maximum\n mode: single",
"config": [
{
"name": "Home feed in price",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.home_feed_in_price",
"device_id": null
}
},
{
"name": "Home general price",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.home_general_price",
"device_id": null
}
},
{
"name": "Sigenergy plant grid connection status",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.sigen_plant_grid_connection_status",
"device_id": null
}
},
{
"name": "Sigenergy plant grid export limitation",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_grid_export_limitation",
"device_id": null
}
},
{
"name": "Sigenergy plant PV max power limit",
"room": null,
"type": "number",
"id": {
"entity_id": "number.sigen_plant_pv_max_power_limit",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,26 @@
{
"missing": [],
"added": [],
"used_entities": [
"number.sigen_plant_ess_max_charging_limit",
"number.sigen_plant_ess_max_discharging_limit",
"number.sigen_plant_grid_export_limitation",
"number.sigen_plant_pcs_import_limitation",
"number.sigen_plant_pv_max_power_limit",
"select.sigen_plant_remote_ems_control_mode",
"sensor.home_feed_in_price",
"sensor.home_general_price",
"sensor.mpc_batt_power",
"sensor.mpc_grid_power",
"sensor.sigen_plant_ess_rated_charging_power",
"sensor.sigen_plant_ess_rated_discharging_power",
"sensor.sigen_plant_grid_connection_status"
],
"used_devices": [],
"template_entities": [
"sensor.mpc_batt_power",
"sensor.mpc_grid_power",
"sensor.sigen_plant_ess_rated_charging_power",
"sensor.sigen_plant_ess_rated_discharging_power"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "AnnableLab",
"prompt_tokens": 5652,
"completion_tokens": 1358,
"total_tokens": 7010
}

View File

@ -0,0 +1,29 @@
[
{
"name": "next water date sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.next_water_date",
"device_id": null
}
},
{
"name": "current water mains usage sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.current_water_mains_usage",
"device_id": null
}
},
{
"name": "water usage mains sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.water_usage_mains",
"device_id": null
}
}
]

View File

@ -0,0 +1,46 @@
- alias: Import water usage
description: Import water usage
triggers:
- trigger: time
at: 08:30:00
- trigger: state
entity_id:
- sensor.next_water_date
conditions:
- condition: template
value_template: '{{ as_local(as_datetime(states(''sensor.next_water_date'')))
< now() - timedelta(days = 1) }}'
actions:
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- variables:
next_date: '{{ states(''sensor.next_water_date'') }}'
- if:
- condition: or
conditions:
- condition: state
entity_id: sensor.current_water_mains_usage
state: unavailable
- condition: state
entity_id: sensor.current_water_mains_usage
state: unknown
then:
- action: pyscript.force_water_state
data:
stat_id: sensor.water_usage_mains
tally: 0
- action: pyscript.import_water_usage
metadata: {}
data:
mains_water_stat_id: sensor.water_usage_mains
mains_water_serial: mainswaterserialnumberhere
sew_username: usernamehere
sew_password: passwordhere
browserless: http://browserless:3000
token: browserlesstokenhere
target_date: '{{ next_date }}'
mode: queued
max: 2

View File

@ -0,0 +1,15 @@
[
{
"id": "Import water usage",
"result": {
"structured": "TRIGGER: When the time is 08:30:00 daily OR When the state of next water date sensor [sensor.next_water_date] changes. CONDITIONS: The date value stored in next water date sensor [sensor.next_water_date] is more than one day in the past. ACTIONS: Wait for 1 minute. Set a variable 'next_date' to the current state of next water date sensor [sensor.next_water_date]. If current water mains usage sensor [sensor.current_water_mains_usage] is unavailable OR current water mains usage sensor [sensor.current_water_mains_usage] is unknown, then call service pyscript.force_water_state to reset water usage mains sensor [sensor.water_usage_mains] tally to 0. Then, call service pyscript.import_water_usage with the target_date set to the variable 'next_date'.",
"natural_language": {
"trigger": "The automation runs every day at 8:30 AM, or whenever the next water date sensor [sensor.next_water_date] changes its state.",
"conditions": "It only proceeds if the date value reported by the next water date sensor [sensor.next_water_date] is more than one day old.",
"action": "After a one-minute delay, the automation stores the current date from the next water date sensor [sensor.next_water_date]. It then checks if the current water mains usage sensor [sensor.current_water_mains_usage] is unavailable or unknown; if so, it resets the water usage mains sensor [sensor.water_usage_mains] tally to zero. Finally, it imports water usage data for the stored target date."
},
"human_like": "Imports water usage data from an external service when the scheduled date is overdue, ensuring the system is ready before fetching new data.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,35 @@
[
{
"id": "Import water usage",
"automation": "- alias: Import water usage\n description: Import water usage\n triggers:\n - trigger: time\n at: 08:30:00\n - trigger: state\n entity_id:\n - sensor.next_water_date\n conditions:\n - condition: template\n value_template: '{{ as_local(as_datetime(states(''sensor.next_water_date'')))\n < now() - timedelta(days = 1) }}'\n actions:\n - delay:\n hours: 0\n minutes: 1\n seconds: 0\n milliseconds: 0\n - variables:\n next_date: '{{ states(''sensor.next_water_date'') }}'\n - if:\n - condition: or\n conditions:\n - condition: state\n entity_id: sensor.current_water_mains_usage\n state: unavailable\n - condition: state\n entity_id: sensor.current_water_mains_usage\n state: unknown\n then:\n - action: pyscript.force_water_state\n data:\n stat_id: sensor.water_usage_mains\n tally: 0\n - action: pyscript.import_water_usage\n metadata: {}\n data:\n mains_water_stat_id: sensor.water_usage_mains\n mains_water_serial: mainswaterserialnumberhere\n sew_username: usernamehere\n sew_password: passwordhere\n browserless: http://browserless:3000\n token: browserlesstokenhere\n target_date: '{{ next_date }}'\n mode: queued\n max: 2",
"config": [
{
"name": "next water date sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.next_water_date",
"device_id": null
}
},
{
"name": "current water mains usage sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.current_water_mains_usage",
"device_id": null
}
},
{
"name": "water usage mains sensor",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.water_usage_mains",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,14 @@
{
"missing": [],
"added": [
"sensor.water_usage_mains"
],
"used_entities": [
"sensor.current_water_mains_usage",
"sensor.next_water_date"
],
"used_devices": [],
"template_entities": [
"sensor.next_water_date"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "BJReplay",
"prompt_tokens": 2226,
"completion_tokens": 415,
"total_tokens": 2641
}

View File

@ -0,0 +1,101 @@
[
{
"name": "quick clean mode",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.quick_clean_mode",
"device_id": null
}
},
{
"name": "quick clean start",
"room": null,
"type": "input_datetime",
"id": {
"entity_id": "input_datetime.quick_clean_start",
"device_id": null
}
},
{
"name": "pool flow monitor flow gpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.pool_flow_monitor_flow_gpm",
"device_id": null
}
},
{
"name": "esp32 pool pump pump actual rpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.esp32_pool_pump_pump_actual_rpm",
"device_id": null
}
},
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "esp32 pool pump pool pump run",
"room": "pool",
"type": "switch",
"id": {
"entity_id": "switch.esp32_pool_pump_pool_pump_run",
"device_id": null
}
},
{
"name": "pool pump manual",
"room": "pool",
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.pool_pump_manual",
"device_id": null
}
},
{
"name": "quick clean timer",
"room": "pool",
"type": "timer",
"id": {
"entity_id": "timer.quick_clean_timer",
"device_id": null
}
},
{
"name": "esp32 pool pump pump target rpm",
"room": "pool",
"type": "number",
"id": {
"entity_id": "number.esp32_pool_pump_pump_target_rpm",
"device_id": null
}
},
{
"name": "quick clean button",
"room": "pool",
"type": "input_button",
"id": {
"entity_id": "input_button.quick_clean_button",
"device_id": null
}
},
{
"name": "stage start time",
"room": "pool",
"type": "input_datetime",
"id": {
"entity_id": "input_datetime.stage_start_time",
"device_id": null
}
}
]

View File

@ -0,0 +1,274 @@
- alias: End Quick Clean Mode
description: Turns off Quick Clean Mode after 8 hours
triggers:
- minutes: /10
trigger: time_pattern
conditions:
- condition: state
entity_id: input_boolean.quick_clean_mode
state: 'on'
- condition: template
value_template: '{{ now() >= (states(''input_datetime.quick_clean_start'') | as_datetime
+ timedelta(hours=8)) }}
'
actions:
- target:
entity_id: input_boolean.quick_clean_mode
action: input_boolean.turn_off
data: {}
mode: single
- alias: ✅ Flow Restored - Clear Alert
description: ''
triggers:
- entity_id: sensor.pool_flow_monitor_flow_gpm
above: 0.1
trigger: numeric_state
conditions:
- condition: numeric_state
entity_id: sensor.esp32_pool_pump_pump_actual_rpm
above: 0
actions:
- data:
notification_id: pool_pump_flow_warning
action: persistent_notification.dismiss
- alias: Gallon Counter Increment
description: ''
triggers:
- minutes: /1
trigger: time_pattern
conditions:
- condition: numeric_state
entity_id: sensor.pool_flow_monitor_flow_gpm
above: 0
actions:
- repeat:
count: '{{ states(''sensor.pool_flow_monitor_flow_gpm'') | float | round(0)
}}'
sequence:
- target:
entity_id: counter.gallons_this_cycle
action: counter.increment
data: {}
- alias: Pool Pump Manual Override - Turn Off
description: Reset manual override when pump turns off
triggers:
- entity_id: switch.esp32_pool_pump_pool_pump_run
to: 'off'
trigger: state
conditions: []
actions:
- target:
entity_id: input_boolean.pool_pump_manual
action: input_boolean.turn_off
data: {}
mode: single
- alias: Pool Pump Manual Override - Turn On
description: Set manual override if pump is turned on outside of automation
triggers:
- entity_id: switch.esp32_pool_pump_pool_pump_run
to: 'on'
trigger: state
conditions:
- condition: not
conditions:
- condition: time
after: 07:59:00
before: 08:01:00
- condition: state
entity_id: input_boolean.pool_pump_manual
state: 'off'
actions:
- target:
entity_id: input_boolean.pool_pump_manual
action: input_boolean.turn_on
data: {}
mode: single
- alias: Pump Cycle End - Stop at 18000 Gallons
description: ''
triggers:
- entity_id: counter.gallons_this_cycle
above: 17999
trigger: numeric_state
conditions:
- condition: time
after: 08:00:00
actions:
- target:
entity_id: switch.esp32_pool_pump_pool_pump_run
action: switch.turn_off
data: {}
mode: single
- alias: Pump Cycle Start - 3000 RPM at 8 AM
description: ''
triggers:
- at: 08:00:00
trigger: time
conditions:
- condition: state
entity_id: timer.quick_clean_timer
state: idle
actions:
- target:
entity_id: switch.esp32_pool_pump_pool_pump_run
action: switch.turn_on
data: {}
- target:
entity_id: number.esp32_pool_pump_pump_target_rpm
data:
value: 3000
action: number.set_value
mode: single
- alias: Pump Cycle Step 2 - 2450 RPM at 6000 Gallons
description: ''
triggers:
- entity_id: counter.gallons_this_cycle
above: 5999
below: 12000
trigger: numeric_state
conditions:
- condition: time
after: 08:00:00
- condition: state
entity_id: timer.quick_clean_timer
state: idle
actions:
- target:
entity_id: number.esp32_pool_pump_pump_target_rpm
data:
value: 2450
action: number.set_value
mode: single
- alias: Pump Cycle Step 3 - 1700 RPM at 12000 Gallons
description: ''
triggers:
- entity_id: counter.gallons_this_cycle
above: 11999
below: 18000
trigger: numeric_state
conditions:
- condition: time
after: 08:00:00
- condition: state
entity_id: timer.quick_clean_timer
state: idle
actions:
- target:
entity_id: number.esp32_pool_pump_pump_target_rpm
data:
value: 1700
action: number.set_value
mode: single
- alias: ⚠️ Pump Running But No Flow (3+ Minutes)
description: Alerts if RPM > 0 but flow is zero for more than 3 minutes.
triggers:
- entity_id:
- sensor.esp32_pool_pump_pump_actual_rpm
- sensor.pool_flow_monitor_flow_gpm
for: 00:03:00
trigger: state
conditions:
- condition: numeric_state
entity_id: sensor.esp32_pool_pump_pump_actual_rpm
above: 0
- condition: numeric_state
entity_id: sensor.pool_flow_monitor_flow_gpm
below: 0.1
actions:
- data:
title: ⚠️ Pool Pump Flow Warning
message: The pump is running (RPM > 0) but flow is 0 GPM. Please check for clogs,
closed valves, or airlocks.
action: notify.persistent_notification
mode: single
- alias: Reset Gallons After Pump Idle
description: ''
triggers:
- entity_id:
- sensor.pool_flow_monitor_flow_gpm
- sensor.esp32_pool_pump_pump_actual_rpm
to: '0'
for: 00:02:00
trigger: state
conditions:
- condition: numeric_state
entity_id: sensor.pool_flow_monitor_flow_gpm
below: 0.1
- condition: numeric_state
entity_id: sensor.esp32_pool_pump_pump_actual_rpm
below: 1
actions:
- target:
entity_id: counter.gallons_this_cycle
action: counter.reset
data: {}
mode: single
- alias: Start Quick Clean Mode
description: Activates Quick Clean Mode for 8 hours
triggers:
- event_type: call_service
event_data:
domain: input_button
service: press
service_data:
entity_id: input_button.quick_clean_button
trigger: event
- trigger: webhook
allowed_methods:
- POST
- PUT
- GET
local_only: true
webhook_id: INSERT WEBHOOK ID HERE
conditions: []
actions:
- target:
entity_id: input_datetime.quick_clean_start
data:
datetime: '{{ now().isoformat() }}'
action: input_datetime.set_datetime
- target:
entity_id: input_boolean.quick_clean_mode
action: input_boolean.turn_on
data: {}
- action: script.pool_pump_quick_clean
data: {}
- action: timer.start
metadata: {}
data: {}
target:
entity_id: timer.quick_clean_timer
- action: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.gallons_this_cycle
mode: single
- alias: Update Pump Stage Start Time
description: ''
triggers:
- entity_id: counter.gallons_this_cycle
below: 1
trigger: numeric_state
- entity_id: counter.gallons_this_cycle
above: 5999
below: 6001
trigger: numeric_state
- entity_id: counter.gallons_this_cycle
above: 11999
below: 12001
trigger: numeric_state
- entity_id: counter.gallons_this_cycle
above: 17999
trigger: numeric_state
conditions:
- condition: numeric_state
entity_id: sensor.esp32_pool_pump_pump_actual_rpm
above: 0
actions:
- target:
entity_id: input_datetime.stage_start_time
data:
datetime: '{{ now().isoformat() }}'
action: input_datetime.set_datetime
mode: single

View File

@ -0,0 +1,171 @@
[
{
"id": "End Quick Clean Mode",
"result": {
"structured": "TRIGGER: Every 10 minutes (time pattern). CONDITIONS: (quick clean mode [input_boolean.quick_clean_mode] is on) AND (current time is greater than or equal to (the datetime value stored in quick clean start [input_datetime.quick_clean_start] plus 8 hours)). ACTIONS: Turn off quick clean mode [input_boolean.quick_clean_mode].",
"natural_language": {
"trigger": "The automation triggers every 10 minutes.",
"conditions": "The automation checks if the quick clean mode [input_boolean.quick_clean_mode] is currently on, and if the current time is at least 8 hours after the start time stored in quick clean start [input_datetime.quick_clean_start].",
"action": "It turns off the quick clean mode [input_boolean.quick_clean_mode]."
},
"human_like": "Automatically turns off the Quick Clean Mode after it has been active for 8 hours.",
"complexity": "medium"
}
},
{
"id": "✅ Flow Restored - Clear Alert",
"result": {
"structured": "TRIGGER: When pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] rises above 0.1 GPM. CONDITIONS: esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] is above 0 RPM. ACTIONS: Dismiss the persistent notification with ID 'pool_pump_flow_warning'.",
"natural_language": {
"trigger": "When the pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] detects a flow rate greater than 0.1 gallons per minute.",
"conditions": "The automation only proceeds if the esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] is greater than 0 RPM, meaning the pump is actively running.",
"action": "Clears the persistent alert notification with the ID 'pool_pump_flow_warning'."
},
"human_like": "Clears the pool pump flow warning alert when water flow is restored and the pump is running.",
"complexity": "low"
}
},
{
"id": "Gallon Counter Increment",
"result": {
"structured": "TRIGGER: Every minute when the time pattern matches minutes: /1. CONDITIONS: pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] is above 0. ACTIONS: Repeat the following sequence a number of times equal to the rounded integer value of pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm]: Increment gallons this cycle [counter.gallons_this_cycle].",
"natural_language": {
"trigger": "The automation runs every minute, on the minute.",
"conditions": "It only proceeds if the pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] sensor reports a value greater than zero.",
"action": "It increments the gallons this cycle [counter.gallons_this_cycle] counter. The number of increments performed equals the current flow rate value from the sensor, rounded to the nearest whole number."
},
"human_like": "Every minute, it adds gallons to a counter based on the current pool flow rate, effectively tracking total gallons pumped per cycle.",
"complexity": "medium"
}
},
{
"id": "Pool Pump Manual Override - Turn Off",
"result": {
"structured": "TRIGGER: When esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run] turns off. CONDITIONS: None. ACTIONS: Turn off pool pump manual [input_boolean.pool_pump_manual].",
"natural_language": {
"trigger": "When the pool pump switch [switch.esp32_pool_pump_pool_pump_run] is turned off.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off the manual override flag [input_boolean.pool_pump_manual]."
},
"human_like": "Automatically resets the pool pump manual override when the pump is turned off.",
"complexity": "low"
}
},
{
"id": "Pool Pump Manual Override - Turn On",
"result": {
"structured": "TRIGGER: When esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run] turns on. CONDITIONS: (NOT (time is between 07:59:00 and 08:01:00)) AND (pool pump manual [input_boolean.pool_pump_manual] is off). ACTIONS: Turn on pool pump manual [input_boolean.pool_pump_manual].",
"natural_language": {
"trigger": "When the pool pump switch, esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run], is turned on.",
"conditions": "If the current time is not between 7:59 AM and 8:01 AM, and the manual override flag, pool pump manual [input_boolean.pool_pump_manual], is currently off.",
"action": "Activates the manual override by turning on the pool pump manual [input_boolean.pool_pump_manual] input boolean."
},
"human_like": "Sets a manual override flag for the pool pump if it is turned on outside of its scheduled time window.",
"complexity": "medium"
}
},
{
"id": "Pump Cycle End - Stop at 18000 Gallons",
"result": {
"structured": "TRIGGER: When gallons this cycle [counter.gallons_this_cycle] exceeds 17999. CONDITIONS: The current time is after 08:00:00. ACTIONS: Turn off esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run].",
"natural_language": {
"trigger": "When the gallons this cycle [counter.gallons_this_cycle] counter rises above 17,999 gallons.",
"conditions": "The automation only runs if the current time is after 8:00 AM.",
"action": "Turns off the pool pump by switching off esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run]."
},
"human_like": "Stops the pool pump after it has pumped 18,000 gallons, but only if it's after 8 AM.",
"complexity": "low"
}
},
{
"id": "Pump Cycle Start - 3000 RPM at 8 AM",
"result": {
"structured": "TRIGGER: At 08:00:00 daily. CONDITIONS: quick clean timer [timer.quick_clean_timer] is idle. ACTIONS: Turn on esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run] AND set esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm] to 3000.",
"natural_language": {
"trigger": "Every day at 8:00 AM.",
"conditions": "The quick clean timer [timer.quick_clean_timer] must not be running; it must be in an idle state.",
"action": "Turns on the pool pump by activating the switch esp32 pool pump pool pump run [switch.esp32_pool_pump_pool_pump_run] and sets the pump's target speed to 3000 RPM via the number entity esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm]."
},
"human_like": "Starts the pool pump at 8 AM for a daily cycle, setting it to run at 3000 RPM, but only if a quick clean timer is not active.",
"complexity": "low"
}
},
{
"id": "Pump Cycle Step 2 - 2450 RPM at 6000 Gallons",
"result": {
"structured": "TRIGGER: When gallons this cycle [counter.gallons_this_cycle] is above 5999 AND below 12000. CONDITIONS: The current time is after 08:00:00 AND quick clean timer [timer.quick_clean_timer] is idle. ACTIONS: Set esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm] to 2450.",
"natural_language": {
"trigger": "When the gallons this cycle [counter.gallons_this_cycle] counter reaches a value between 6000 and 11999 gallons.",
"conditions": "The automation only runs if the current time is after 8:00 AM and the quick clean timer [timer.quick_clean_timer] is not currently running (idle).",
"action": "Sets the pool pump's target speed to 2450 RPM by updating the esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm]."
},
"human_like": "Increases the pool pump speed to 2450 RPM after a certain amount of water has been filtered, but only during the day and when a cleaning cycle isn't active.",
"complexity": "low"
}
},
{
"id": "Pump Cycle Step 3 - 1700 RPM at 12000 Gallons",
"result": {
"structured": "TRIGGER: When gallons this cycle [counter.gallons_this_cycle] is above 11999 AND below 18000. CONDITIONS: The time is after 08:00:00 AND quick clean timer [timer.quick_clean_timer] is idle. ACTIONS: Set esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm] to 1700.",
"natural_language": {
"trigger": "When the gallons this cycle [counter.gallons_this_cycle] counter reaches a value between 12,000 and 17,999 gallons.",
"conditions": "The automation only runs if the current time is after 8:00 AM and the quick clean timer [timer.quick_clean_timer] is not currently active (idle).",
"action": "Sets the target speed of the pool pump to 1700 RPM by updating the esp32 pool pump pump target rpm [number.esp32_pool_pump_pump_target_rpm]."
},
"human_like": "Increases the pool pump speed to 1700 RPM when the water volume reaches a specific range, but only during the day and when a cleaning cycle isn't running.",
"complexity": "low"
}
},
{
"id": "⚠️ Pump Running But No Flow (3+ Minutes)",
"result": {
"structured": "TRIGGER: When esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] OR pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] changes state AND remains stable for 3 minutes. CONDITIONS: esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] is greater than 0 AND pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] is less than 0.1. ACTIONS: Send a persistent notification with title '⚠️ Pool Pump Flow Warning' and message 'The pump is running (RPM > 0) but flow is 0 GPM. Please check for clogs, closed valves, or airlocks.'.",
"natural_language": {
"trigger": "When either the esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] or the pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] sensor changes its value and then remains unchanged for at least three minutes.",
"conditions": "The pump's actual RPM reading must be above zero, and the measured water flow must be below 0.1 gallons per minute.",
"action": "Creates a persistent notification with a warning title and a message advising to check for clogs, closed valves, or airlocks in the pool pump system."
},
"human_like": "Sends an alert if the pool pump is running but no water is flowing for more than three minutes, indicating a potential blockage or system issue.",
"complexity": "medium"
}
},
{
"id": "Reset Gallons After Pump Idle",
"result": {
"structured": "TRIGGER: When pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] OR esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] changes to 0 and remains for 2 minutes. CONDITIONS: pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] is below 0.1 AND esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] is below 1. ACTIONS: Reset gallons this cycle [counter.gallons_this_cycle].",
"natural_language": {
"trigger": "When either the pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] or the esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] changes to zero and stays at zero for two minutes.",
"conditions": "The pool flow monitor flow gpm [sensor.pool_flow_monitor_flow_gpm] must be below 0.1, and the esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] must be below 1.",
"action": "Resets the gallons this cycle [counter.gallons_this_cycle] counter to zero."
},
"human_like": "Resets the pool's gallon counter when the pump has been idle for two minutes.",
"complexity": "low"
}
},
{
"id": "Start Quick Clean Mode",
"result": {
"structured": "TRIGGER: When the quick clean button [input_button.quick_clean_button] is pressed OR when a specific webhook (ID: INSERT WEBHOOK ID HERE) is received via POST, PUT, or GET method locally. CONDITIONS: None. ACTIONS: Set the quick clean start [input_datetime.quick_clean_start] to the current date and time, turn on quick clean mode [input_boolean.quick_clean_mode], execute the script pool_pump_quick_clean, start the quick clean timer [timer.quick_clean_timer], and reset the gallons this cycle [counter.gallons_this_cycle] counter.",
"natural_language": {
"trigger": "The automation is triggered either by pressing the quick clean button [input_button.quick_clean_button] or by receiving a specific local webhook request.",
"conditions": "There are no conditions that must be met for the automation to run.",
"action": "The automation records the current time in the quick clean start [input_datetime.quick_clean_start] input, activates the quick clean mode [input_boolean.quick_clean_mode], runs the pool pump quick clean script, starts the quick clean timer [timer.quick_clean_timer], and resets the gallons this cycle [counter.gallons_this_cycle] counter to zero."
},
"human_like": "Starts the pool's quick clean mode for 8 hours, resetting the cycle counter and starting a timer.",
"complexity": "low"
}
},
{
"id": "Update Pump Stage Start Time",
"result": {
"structured": "TRIGGER: When gallons this cycle [counter.gallons_this_cycle] is below 1 OR when gallons this cycle [counter.gallons_this_cycle] is between 5999 and 6001 (above 5999 AND below 6001) OR when gallons this cycle [counter.gallons_this_cycle] is between 11999 and 12001 (above 11999 AND below 12001) OR when gallons this cycle [counter.gallons_this_cycle] is above 17999. CONDITIONS: esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] is above 0. ACTIONS: Set stage start time [input_datetime.stage_start_time] to the current date and time.",
"natural_language": {
"trigger": "When the gallons this cycle [counter.gallons_this_cycle] falls below 1 gallon, or reaches approximately 6000 gallons (between 5999 and 6001), or reaches approximately 12000 gallons (between 11999 and 12001), or exceeds 17999 gallons.",
"conditions": "The esp32 pool pump pump actual rpm [sensor.esp32_pool_pump_pump_actual_rpm] must be greater than zero, indicating the pump is running.",
"action": "Updates the stage start time [input_datetime.stage_start_time] to the current date and time."
},
"human_like": "Records the start time for a new pump stage whenever the water usage counter hits specific thresholds, but only if the pump is currently running.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,386 @@
[
{
"id": "End Quick Clean Mode",
"automation": "- alias: End Quick Clean Mode\n description: Turns off Quick Clean Mode after 8 hours\n triggers:\n - minutes: /10\n trigger: time_pattern\n conditions:\n - condition: state\n entity_id: input_boolean.quick_clean_mode\n state: 'on'\n - condition: template\n value_template: '{{ now() >= (states(''input_datetime.quick_clean_start'') | as_datetime\n + timedelta(hours=8)) }}\n\n '\n actions:\n - target:\n entity_id: input_boolean.quick_clean_mode\n action: input_boolean.turn_off\n data: {}\n mode: single",
"config": [
{
"name": "quick clean mode",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.quick_clean_mode",
"device_id": null
}
},
{
"name": "quick clean start",
"room": null,
"type": "input_datetime",
"id": {
"entity_id": "input_datetime.quick_clean_start",
"device_id": null
}
}
]
},
{
"id": "✅ Flow Restored - Clear Alert",
"automation": "- alias: ✅ Flow Restored - Clear Alert\n description: ''\n triggers:\n - entity_id: sensor.pool_flow_monitor_flow_gpm\n above: 0.1\n trigger: numeric_state\n conditions:\n - condition: numeric_state\n entity_id: sensor.esp32_pool_pump_pump_actual_rpm\n above: 0\n actions:\n - data:\n notification_id: pool_pump_flow_warning\n action: persistent_notification.dismiss",
"config": [
{
"name": "pool flow monitor flow gpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.pool_flow_monitor_flow_gpm",
"device_id": null
}
},
{
"name": "esp32 pool pump pump actual rpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.esp32_pool_pump_pump_actual_rpm",
"device_id": null
}
}
]
},
{
"id": "Gallon Counter Increment",
"automation": "- alias: Gallon Counter Increment\n description: ''\n triggers:\n - minutes: /1\n trigger: time_pattern\n conditions:\n - condition: numeric_state\n entity_id: sensor.pool_flow_monitor_flow_gpm\n above: 0\n actions:\n - repeat:\n count: '{{ states(''sensor.pool_flow_monitor_flow_gpm'') | float | round(0)\n }}'\n sequence:\n - target:\n entity_id: counter.gallons_this_cycle\n action: counter.increment\n data: {}",
"config": [
{
"name": "pool flow monitor flow gpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.pool_flow_monitor_flow_gpm",
"device_id": null
}
},
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
}
]
},
{
"id": "Pool Pump Manual Override - Turn Off",
"automation": "- alias: Pool Pump Manual Override - Turn Off\n description: Reset manual override when pump turns off\n triggers:\n - entity_id: switch.esp32_pool_pump_pool_pump_run\n to: 'off'\n trigger: state\n conditions: []\n actions:\n - target:\n entity_id: input_boolean.pool_pump_manual\n action: input_boolean.turn_off\n data: {}\n mode: single",
"config": [
{
"name": "esp32 pool pump pool pump run",
"room": "pool",
"type": "switch",
"id": {
"entity_id": "switch.esp32_pool_pump_pool_pump_run",
"device_id": null
}
},
{
"name": "pool pump manual",
"room": "pool",
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.pool_pump_manual",
"device_id": null
}
}
]
},
{
"id": "Pool Pump Manual Override - Turn On",
"automation": "- alias: Pool Pump Manual Override - Turn On\n description: Set manual override if pump is turned on outside of automation\n triggers:\n - entity_id: switch.esp32_pool_pump_pool_pump_run\n to: 'on'\n trigger: state\n conditions:\n - condition: not\n conditions:\n - condition: time\n after: 07:59:00\n before: 08:01:00\n - condition: state\n entity_id: input_boolean.pool_pump_manual\n state: 'off'\n actions:\n - target:\n entity_id: input_boolean.pool_pump_manual\n action: input_boolean.turn_on\n data: {}\n mode: single",
"config": [
{
"name": "esp32 pool pump pool pump run",
"room": "pool",
"type": "switch",
"id": {
"entity_id": "switch.esp32_pool_pump_pool_pump_run",
"device_id": null
}
},
{
"name": "pool pump manual",
"room": "pool",
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.pool_pump_manual",
"device_id": null
}
}
]
},
{
"id": "Pump Cycle End - Stop at 18000 Gallons",
"automation": "- alias: Pump Cycle End - Stop at 18000 Gallons\n description: ''\n triggers:\n - entity_id: counter.gallons_this_cycle\n above: 17999\n trigger: numeric_state\n conditions:\n - condition: time\n after: 08:00:00\n actions:\n - target:\n entity_id: switch.esp32_pool_pump_pool_pump_run\n action: switch.turn_off\n data: {}\n mode: single",
"config": [
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "esp32 pool pump pool pump run",
"room": "pool",
"type": "switch",
"id": {
"entity_id": "switch.esp32_pool_pump_pool_pump_run",
"device_id": null
}
}
]
},
{
"id": "Pump Cycle Start - 3000 RPM at 8 AM",
"automation": "- alias: Pump Cycle Start - 3000 RPM at 8 AM\n description: ''\n triggers:\n - at: 08:00:00\n trigger: time\n conditions:\n - condition: state\n entity_id: timer.quick_clean_timer\n state: idle\n actions:\n - target:\n entity_id: switch.esp32_pool_pump_pool_pump_run\n action: switch.turn_on\n data: {}\n - target:\n entity_id: number.esp32_pool_pump_pump_target_rpm\n data:\n value: 3000\n action: number.set_value\n mode: single",
"config": [
{
"name": "esp32 pool pump pool pump run",
"room": "pool",
"type": "switch",
"id": {
"entity_id": "switch.esp32_pool_pump_pool_pump_run",
"device_id": null
}
},
{
"name": "quick clean timer",
"room": "pool",
"type": "timer",
"id": {
"entity_id": "timer.quick_clean_timer",
"device_id": null
}
},
{
"name": "esp32 pool pump pump target rpm",
"room": "pool",
"type": "number",
"id": {
"entity_id": "number.esp32_pool_pump_pump_target_rpm",
"device_id": null
}
}
]
},
{
"id": "Pump Cycle Step 2 - 2450 RPM at 6000 Gallons",
"automation": "- alias: Pump Cycle Step 2 - 2450 RPM at 6000 Gallons\n description: ''\n triggers:\n - entity_id: counter.gallons_this_cycle\n above: 5999\n below: 12000\n trigger: numeric_state\n conditions:\n - condition: time\n after: 08:00:00\n - condition: state\n entity_id: timer.quick_clean_timer\n state: idle\n actions:\n - target:\n entity_id: number.esp32_pool_pump_pump_target_rpm\n data:\n value: 2450\n action: number.set_value\n mode: single",
"config": [
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "quick clean timer",
"room": "pool",
"type": "timer",
"id": {
"entity_id": "timer.quick_clean_timer",
"device_id": null
}
},
{
"name": "esp32 pool pump pump target rpm",
"room": "pool",
"type": "number",
"id": {
"entity_id": "number.esp32_pool_pump_pump_target_rpm",
"device_id": null
}
}
]
},
{
"id": "Pump Cycle Step 3 - 1700 RPM at 12000 Gallons",
"automation": "- alias: Pump Cycle Step 3 - 1700 RPM at 12000 Gallons\n description: ''\n triggers:\n - entity_id: counter.gallons_this_cycle\n above: 11999\n below: 18000\n trigger: numeric_state\n conditions:\n - condition: time\n after: 08:00:00\n - condition: state\n entity_id: timer.quick_clean_timer\n state: idle\n actions:\n - target:\n entity_id: number.esp32_pool_pump_pump_target_rpm\n data:\n value: 1700\n action: number.set_value\n mode: single",
"config": [
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "quick clean timer",
"room": "pool",
"type": "timer",
"id": {
"entity_id": "timer.quick_clean_timer",
"device_id": null
}
},
{
"name": "esp32 pool pump pump target rpm",
"room": "pool",
"type": "number",
"id": {
"entity_id": "number.esp32_pool_pump_pump_target_rpm",
"device_id": null
}
}
]
},
{
"id": "⚠️ Pump Running But No Flow (3+ Minutes)",
"automation": "- alias: ⚠️ Pump Running But No Flow (3+ Minutes)\n description: Alerts if RPM > 0 but flow is zero for more than 3 minutes.\n triggers:\n - entity_id:\n - sensor.esp32_pool_pump_pump_actual_rpm\n - sensor.pool_flow_monitor_flow_gpm\n for: 00:03:00\n trigger: state\n conditions:\n - condition: numeric_state\n entity_id: sensor.esp32_pool_pump_pump_actual_rpm\n above: 0\n - condition: numeric_state\n entity_id: sensor.pool_flow_monitor_flow_gpm\n below: 0.1\n actions:\n - data:\n title: ⚠️ Pool Pump Flow Warning\n message: The pump is running (RPM > 0) but flow is 0 GPM. Please check for clogs,\n closed valves, or airlocks.\n action: notify.persistent_notification\n mode: single",
"config": [
{
"name": "pool flow monitor flow gpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.pool_flow_monitor_flow_gpm",
"device_id": null
}
},
{
"name": "esp32 pool pump pump actual rpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.esp32_pool_pump_pump_actual_rpm",
"device_id": null
}
}
]
},
{
"id": "Reset Gallons After Pump Idle",
"automation": "- alias: Reset Gallons After Pump Idle\n description: ''\n triggers:\n - entity_id:\n - sensor.pool_flow_monitor_flow_gpm\n - sensor.esp32_pool_pump_pump_actual_rpm\n to: '0'\n for: 00:02:00\n trigger: state\n conditions:\n - condition: numeric_state\n entity_id: sensor.pool_flow_monitor_flow_gpm\n below: 0.1\n - condition: numeric_state\n entity_id: sensor.esp32_pool_pump_pump_actual_rpm\n below: 1\n actions:\n - target:\n entity_id: counter.gallons_this_cycle\n action: counter.reset\n data: {}\n mode: single",
"config": [
{
"name": "pool flow monitor flow gpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.pool_flow_monitor_flow_gpm",
"device_id": null
}
},
{
"name": "esp32 pool pump pump actual rpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.esp32_pool_pump_pump_actual_rpm",
"device_id": null
}
},
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
}
]
},
{
"id": "Start Quick Clean Mode",
"automation": "- alias: Start Quick Clean Mode\n description: Activates Quick Clean Mode for 8 hours\n triggers:\n - event_type: call_service\n event_data:\n domain: input_button\n service: press\n service_data:\n entity_id: input_button.quick_clean_button\n trigger: event\n - trigger: webhook\n allowed_methods:\n - POST\n - PUT\n - GET\n local_only: true\n webhook_id: INSERT WEBHOOK ID HERE\n conditions: []\n actions:\n - target:\n entity_id: input_datetime.quick_clean_start\n data:\n datetime: '{{ now().isoformat() }}'\n action: input_datetime.set_datetime\n - target:\n entity_id: input_boolean.quick_clean_mode\n action: input_boolean.turn_on\n data: {}\n - action: script.pool_pump_quick_clean\n data: {}\n - action: timer.start\n metadata: {}\n data: {}\n target:\n entity_id: timer.quick_clean_timer\n - action: counter.reset\n metadata: {}\n data: {}\n target:\n entity_id: counter.gallons_this_cycle\n mode: single",
"config": [
{
"name": "quick clean mode",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.quick_clean_mode",
"device_id": null
}
},
{
"name": "quick clean start",
"room": null,
"type": "input_datetime",
"id": {
"entity_id": "input_datetime.quick_clean_start",
"device_id": null
}
},
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "quick clean timer",
"room": "pool",
"type": "timer",
"id": {
"entity_id": "timer.quick_clean_timer",
"device_id": null
}
},
{
"name": "quick clean button",
"room": "pool",
"type": "input_button",
"id": {
"entity_id": "input_button.quick_clean_button",
"device_id": null
}
}
]
},
{
"id": "Update Pump Stage Start Time",
"automation": "- alias: Update Pump Stage Start Time\n description: ''\n triggers:\n - entity_id: counter.gallons_this_cycle\n below: 1\n trigger: numeric_state\n - entity_id: counter.gallons_this_cycle\n above: 5999\n below: 6001\n trigger: numeric_state\n - entity_id: counter.gallons_this_cycle\n above: 11999\n below: 12001\n trigger: numeric_state\n - entity_id: counter.gallons_this_cycle\n above: 17999\n trigger: numeric_state\n conditions:\n - condition: numeric_state\n entity_id: sensor.esp32_pool_pump_pump_actual_rpm\n above: 0\n actions:\n - target:\n entity_id: input_datetime.stage_start_time\n data:\n datetime: '{{ now().isoformat() }}'\n action: input_datetime.set_datetime\n mode: single",
"config": [
{
"name": "esp32 pool pump pump actual rpm",
"room": "pool",
"type": "sensor",
"id": {
"entity_id": "sensor.esp32_pool_pump_pump_actual_rpm",
"device_id": null
}
},
{
"name": "gallons this cycle",
"room": "pool",
"type": "counter",
"id": {
"entity_id": "counter.gallons_this_cycle",
"device_id": null
}
},
{
"name": "stage start time",
"room": "pool",
"type": "input_datetime",
"id": {
"entity_id": "input_datetime.stage_start_time",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,22 @@
{
"missing": [],
"added": [],
"used_entities": [
"counter.gallons_this_cycle",
"input_boolean.pool_pump_manual",
"input_boolean.quick_clean_mode",
"input_button.quick_clean_button",
"input_datetime.quick_clean_start",
"input_datetime.stage_start_time",
"number.esp32_pool_pump_pump_target_rpm",
"sensor.esp32_pool_pump_pump_actual_rpm",
"sensor.pool_flow_monitor_flow_gpm",
"switch.esp32_pool_pump_pool_pump_run",
"timer.quick_clean_timer"
],
"used_devices": [],
"template_entities": [
"input_datetime.quick_clean_start",
"sensor.pool_flow_monitor_flow_gpm"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "BShurilla",
"prompt_tokens": 26225,
"completion_tokens": 3601,
"total_tokens": 29826
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,195 @@
{
"missing": [
"shellyswitch25_10d315",
"shellyswitch25_10eaa4",
"shellyswitch25_f37a8c",
"shellyswitch25_f37b28"
],
"added": [
"input_datetime.robi_start_weekdays",
"input_datetime.robi_start_weekends",
"media_player.erdgeschoss",
"media_player.flur",
"media_player.googlehome9539",
"media_player.kristina",
"media_player.nest_mini",
"media_player.soundblaster",
"script.telegram_callback",
"sensor.ender_3_s1_pro_thumbnail",
"weather.openweathermap"
],
"used_entities": [
"63713a671de1472e84d5832bcb399f0e",
"binary_sensor.all_lights_off",
"binary_sensor.garage_open_too_long",
"binary_sensor.mower_rainsensor_triggered",
"binary_sensor.tor_ist_geschlossen",
"button.fritz_box_5590_fiber_cleanup",
"button.fritz_box_7590_ax_cleanup",
"button.garage_ptz_down",
"button.garage_ptz_left",
"button.garage_ptz_right",
"button.garage_ptz_stop",
"button.garage_ptz_up",
"button.garage_ptz_zoom_in",
"button.garage_ptz_zoom_out",
"button.innen_ptz_down",
"button.innen_ptz_left",
"button.innen_ptz_right",
"button.innen_ptz_stop",
"button.innen_ptz_up",
"button.innen_ptz_zoom_in",
"button.innen_ptz_zoom_out",
"calendar.dienstplan_natalja_schick",
"camera.ender_3_s1_pro_sony",
"cover.markise",
"cover.rolladen",
"cover.seitenmarkise",
"cover.shellyswitch25_10d315",
"cover.shellyswitch25_10eaa4",
"cover.shellyswitch25_f37a8c",
"cover.shellyswitch25_f37b28",
"cover.tor",
"d65b64c785a29ffed795c6d22780bb9f",
"db8b13c767d84865a607aca77975a221",
"e26c53c9fa2534a4da69f77b06f7414f",
"group.family",
"group.family_wlan",
"input_boolean.alarm_indoor",
"input_boolean.irrigation_cycle1_enable",
"input_boolean.irrigation_cycle1_enable_saved_state",
"input_boolean.irrigation_cycle1_manual_run",
"input_boolean.irrigation_cycle1_running",
"input_boolean.irrigation_cycle2_enable",
"input_boolean.irrigation_cycle2_enable_saved_state",
"input_boolean.irrigation_cycle2_manual_run",
"input_boolean.irrigation_cycle2_running",
"input_boolean.irrigation_master_control_switch",
"input_boolean.nataljas_night_shift",
"input_boolean.torteil",
"input_boolean.w10_irrigation_manual_run",
"input_boolean.w10_irrigation_running",
"input_boolean.w10_irrigation_use_sensor_data",
"input_number.radio_volume",
"input_number.w10_irrigation_",
"input_number.w10_irrigation_moisture_threshold",
"input_number.w10_irrigation_temperature_threshold",
"input_select.irrigation_cycle",
"input_select.irrigation_cycle1_schedule_time",
"input_select.irrigation_cycle1_watering_days",
"input_select.irrigation_cycle2_schedule_time",
"input_select.irrigation_cycle2_watering_days",
"input_select.radio_player",
"input_select.radio_station",
"input_select.robi_fan_speed_list",
"input_select.robi_zone",
"input_select.wled_effects_loop",
"input_text.irrigation_current_zone",
"lawn_mower.mower",
"light.innen_status_led",
"light.shelly1pmminig3_34b7da8db254_switch_0",
"light.shellyswitch25_10a36d_channel_1",
"light.shellyswitch25_10a36d_channel_2",
"light.sonoffbnsz01",
"light.sonoffpow_01",
"light.sonoffpow_03",
"light.sonoffpow_04",
"light.tuyaplug3",
"media_player.gq75qn92catxzg",
"media_player.home_group",
"media_player.sony_kd55x8505b",
"media_player.sony_kd_55x8505b",
"scene.camera_detection_on",
"script.alarm_play",
"script.irrigation_irrigate_a_zone",
"script.irrigation_run_a_cycle",
"script.w10_irrigation_stop",
"select.garage_ptz_preset",
"sensor.as25_bluetooth_connection",
"sensor.barma_partia_de_cert_expiry",
"sensor.ble_temperature_temperatur_gt",
"sensor.ender_3_s1_pro_current_print_state",
"sensor.ender_3_s1_pro_extruder_temperature",
"sensor.mower_error",
"sensor.rasen_moisture",
"sensor.rasen_temperature",
"sensor.robi_last_clean_start",
"sensor.tor_distanz",
"sensor.torposition",
"sun.sun",
"switch.alarm_play",
"switch.garage_siren_on_event",
"switch.irrigation_pump",
"switch.irrigation_switches_zone1",
"switch.irrigation_switches_zone2",
"switch.irrigation_switches_zone3",
"switch.irrigation_valves",
"switch.irrigation_zone1_valve",
"switch.irrigation_zone2_valve",
"switch.irrigation_zone3_valve",
"switch.sonoffs20_2",
"switch.st_virtual_switch1",
"switch.st_virtual_switch2",
"switch.tor",
"switch.torteil",
"switch.tuyaplug1",
"switch.tuyaplug2",
"switch.weihnachten",
"timer.alarm_indoor",
"timer.irrigation_zone_duration",
"vacuum.robi"
],
"used_devices": [
"shellyswitch25_10d315",
"shellyswitch25_10eaa4",
"shellyswitch25_f37a8c",
"shellyswitch25_f37b28"
],
"template_entities": [
"binary_sensor.mower_rainsensor_triggered",
"calendar.dienstplan_natalja_schick",
"cover.shellyswitch25_10d315",
"cover.shellyswitch25_10eaa4",
"cover.shellyswitch25_f37a8c",
"cover.shellyswitch25_f37b28",
"cover.tor",
"group.family",
"input_boolean.irrigation_cycle1_enable",
"input_boolean.irrigation_cycle1_enable_saved_state",
"input_boolean.irrigation_cycle1_running",
"input_boolean.irrigation_cycle2_enable",
"input_boolean.irrigation_cycle2_enable_saved_state",
"input_boolean.irrigation_cycle2_running",
"input_boolean.irrigation_master_control_switch",
"input_boolean.w10_irrigation_use_sensor_data",
"input_number.radio_volume",
"input_number.w10_irrigation_",
"input_number.w10_irrigation_moisture_threshold",
"input_number.w10_irrigation_temperature_threshold",
"input_select.irrigation_cycle",
"input_select.radio_player",
"input_select.robi_zone",
"light.shelly1pmminig3_34b7da8db254_switch_0",
"light.shellyswitch25_10a36d_channel_1",
"light.shellyswitch25_10a36d_channel_2",
"light.sonoffpow_01",
"light.sonoffpow_03",
"light.sonoffpow_04",
"light.tuyaplug3",
"media_player.sony_kd55x8505b",
"script.irrigation_run_a_cycle",
"sensor.barma_partia_de_cert_expiry",
"sensor.ble_temperature_temperatur_gt",
"sensor.ender_3_s1_pro_current_print_state",
"sensor.mower_error",
"sensor.rasen_moisture",
"sensor.rasen_temperature",
"sensor.robi_last_clean_start",
"switch.alarm_play",
"switch.irrigation_zone1_valve",
"switch.irrigation_zone2_valve",
"switch.sonoffs20_2",
"switch.tuyaplug2",
"vacuum.robi"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "Barma-lej",
"prompt_tokens": 189498,
"completion_tokens": 28064,
"total_tokens": 217562
}

View File

@ -0,0 +1,65 @@
[
{
"name": "PV clipped in next 24 hours",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.pv_clipped_in_next_24_hours",
"device_id": null
}
},
{
"name": "predbat pv energy",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.pv_energy",
"device_id": null
}
},
{
"name": "predbat rates",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.rates",
"device_id": null
}
},
{
"name": "predbat soc kw h0",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.soc_kw_h0",
"device_id": null
}
},
{
"name": "predbat manual export",
"room": null,
"type": "select",
"id": {
"entity_id": "select.predbat_manual_export",
"device_id": null
}
},
{
"name": "predbat manual freeze export",
"room": null,
"type": "select",
"id": {
"entity_id": "select.predbat_manual_freeze_export",
"device_id": null
}
},
{
"name": "givtcp geserial pv power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.givtcp_geserial_pv_power",
"device_id": null
}
}
]

View File

@ -0,0 +1,168 @@
- alias: PV clipping - Forecast clipped PV for next 24 hours
description: 'Calculates forecast clipped PV for day = sum of 5 minute predbat.pv_energy forecasts
> inverter limit.
Change the variables to suit your set-up. Adjust the tuning_factor to optimise
battery availability. The tuning factor is designed to account for spikey solar
due to intermittent clouds and how aggressive you want to be with making room
in the battery - the lower the value, the more room it will make.'
triggers:
- event: sunrise
offset: 0
trigger: sun
conditions: []
actions:
- variables:
tuning_factor: 0.9
inverter_limit_kW: 5
inverter_limit: '{{ inverter_limit_kW / 12 }}'
- metadata: {}
data:
value: "{% set pv_clipped = namespace(value=0.0) %} {% set pv_prev\
\ = namespace(value=0.0) %} {% set pv_cur = namespace(value=0.0) %}\
\ {% if state_attr('predbat.pv_energy', 'results') %}\n {%- for five_min_period\
\ in state_attr('predbat.pv_energy', 'results') -%}\n {% if loop.index0\
\ == 0 %}\n {%- set pv_prev.value = state_attr('predbat.pv_energy', 'results')[five_min_period]\
\ | float -%}\n {% else %}\n {%- set pv_cur.value = state_attr('predbat.pv_energy',\
\ 'results')[five_min_period] | float -%}\n {% set tuned_clipped = (pv_cur.value\
\ - pv_prev.value) / tuning_factor %}\n {% if tuned_clipped > inverter_limit\
\ %}\n {%- set pv_clipped.value = pv_clipped.value + tuned_clipped\
\ - inverter_limit -%}\n {% endif %}\n {%- set pv_prev.value = pv_cur.value\
\ -%}\n {% endif %}\n {# Only look at the next 24 hours (each loop is\
\ 5 minutes) #}\n {% if loop.index0 == 288 %}\n {% break %}\n {%\
\ endif %}\n {%- endfor -%} \n{% endif %} {{ pv_clipped.value }}\n"
target:
entity_id: input_number.pv_clipped_in_next_24_hours
action: input_number.set_value
mode: single
- alias: PV clipping - make room in battery at sunrise
description: "Make room in battery at sunrise if PV clipping is forecast in the\
\ next 24 hours \nAdjust the variables to suit your set-up. The sunrise_to_clipping_hours\
\ variable is the number of hours from sunrise to when your set-up is first at\
\ risk of clipping. Round up to the nearest half-hour eg 3.5\nIf any clipping\
\ is predicted, the automation sets the first 30-min export for (sunrise_to_clipping_hours\
\ - 0.5) hours after sunrise. Then backfills towards sunrise with appropriate\
\ force export and freeze export slots. Assumes a straight-line increase in export\
\ capacity being taken up by solar export from sunrise to clipping start. And\
\ a corresponding decrease in availability for battery export. Does not account\
\ for load."
triggers:
- event: sunrise
offset: '120'
trigger: sun
conditions:
- condition: numeric_state
entity_id: predbat.rates
above: 0
- condition: template
value_template: '{{ states(''input_number.pv_clipped_in_next_24_hours'') | float
> 0 }}
'
actions:
- variables:
inverter_limit: 5
bat_capacity_max: 9.5
bat_discharge_max: 3.6
sunrise_to_clipping_hours: 4
slots: '{{ (sunrise_to_clipping_hours * 2) | int }}'
soc: '{{ states(''predbat.soc_kw_h0'') | float }}'
- repeat:
sequence:
- if:
- condition: template
value_template: '{{ states(''input_number.pv_clipped_in_next_24_hours'')
| float > 0 }}'
then:
- metadata: {}
data:
option: '{% set t = utcnow().strftime("%s") | int %} {# Round up
the time to nearest half-hour #} {# Set 30-min export for offset
seconds after sunrise #} {% set offset = (slots - repeat.index) *
1800 %} {{ (t - (t % 1800) + offset) | timestamp_custom("%H:%M:%S")
}}
'
target:
entity_id: select.predbat_manual_export
action: select.select_option
- action: input_number.set_value
metadata: {}
data:
value: "{# Assume straight line climb in solar export from 0 to inverter_limit\
\ over sunrise_to_clipping_hours. #} {% set solar_export = (slots\
\ - repeat.index) * (inverter_limit / slots) %} {% set available_export_capacity\
\ = inverter_limit - solar_export %} {# How much battery can be\
\ exported in 30-min period? #} {% set battery_export = min(bat_discharge_max,\
\ available_export_capacity) / 2 %} {# If the battery isn't full,\
\ we already have some spare capacity for clipping. #} {% set clipping\
\ = namespace(value=states('input_number.pv_clipped_in_next_24_hours')\
\ | float) %} {% if repeat.index == 1 %}\n {%- set clipping.value\
\ = clipping.value - (bat_capacity_max - soc) -%}\n{% endif %} {# We\
\ don't need to export more than the current battery SOC. #} {% set\
\ excess = min(soc, clipping.value) %} {{ max(excess - battery_export,\
\ 0) }}\n"
target:
entity_id: input_number.pv_clipped_in_next_24_hours
else:
- metadata: {}
data:
option: '{% set t = utcnow().strftime("%s") | int %} {# Round up
the time to nearest half-hour #} {# Set 30-min freeze charge for
offset seconds after sunrise #} {% set offset = (slots - repeat.index)
* 1800 %} {{ (t - (t % 1800) + offset) | timestamp_custom("%H:%M:%S")
}}
'
target:
entity_id: select.predbat_manual_freeze_export
action: select.select_option
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
count: '{{ slots }}'
mode: single
- alias: PV clipping - PV goes above inverter limit
description: Set predbat force manual export for this 30-min period. (Replace geserial
with your GE inverter serial number. Replace 5000 with your hybrid inverter limit
in Watts.)
triggers:
- entity_id:
- sensor.givtcp_geserial_pv_power
above: 5000
trigger: numeric_state
- minutes: '1'
trigger: time_pattern
- minutes: '31'
trigger: time_pattern
conditions:
- condition: sun
before: sunset
after: sunrise
- condition: numeric_state
entity_id: predbat.rates
above: 0
- condition: template
value_template: "{# Check this half-hour is not already set to force export #}\
\ \n{% set t = utcnow().strftime(\"%s\") | int %} \n{% set half_hour = (t -\
\ (t % 1800 )) | timestamp_custom(\"%H:%M:%S\") %}\n{{ half_hour not in states('select.predbat_manual_export')\
\ }}"
- condition: numeric_state
entity_id: sensor.givtcp_geserial_pv_power
above: 5000
- condition: numeric_state
entity_id: predbat.soc_kw_h0
above: 1
actions:
- metadata: {}
data:
option: '{# Round down the time to nearest half-hour #} {% set t = utcnow().strftime("%s")
| int %} {{ (t - (t % 1800 )) | timestamp_custom("%H:%M:%S") }}
'
target:
entity_id: select.predbat_manual_export
action: select.select_option
mode: single

View File

@ -0,0 +1,41 @@
[
{
"id": "PV clipping - Forecast clipped PV for next 24 hours",
"result": {
"structured": "TRIGGER: At sunrise. CONDITIONS: None. ACTIONS: Set variable tuning_factor to 0.9. Set variable inverter_limit_kW to 5. Set variable inverter_limit to inverter_limit_kW divided by 12. Then, if predbat pv energy [predbat.pv_energy] has a 'results' attribute, iterate over the first 288 five-minute forecast values (representing the next 24 hours). For each five-minute interval after the first, calculate the difference between the current and previous forecast value, divide by tuning_factor, and if the result exceeds inverter_limit, add the excess to a cumulative total. Finally, set the value of PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] to that cumulative total.",
"natural_language": {
"trigger": "The automation runs at sunrise each day.",
"conditions": "There are no conditions that must be met for the automation to proceed.",
"action": "It first defines a tuning factor of 0.9 and an inverter power limit of 5 kW. It then retrieves the 5-minute solar energy forecast data from the predbat pv energy [predbat.pv_energy] sensor. For the next 24 hours of forecast data, it calculates the energy difference between each consecutive 5-minute period, adjusts it by the tuning factor, and sums up any amount that would exceed the inverter's capacity. This total forecasted 'clipped' solar energy, which would be lost due to the inverter limit, is then saved to the input_number.pv_clipped_in_next_24_hours [input_number.pv_clipped_in_next_24_hours] entity."
},
"human_like": "This automation estimates how much solar energy will be lost (clipped) due to inverter limits over the next 24 hours, running the calculation at sunrise each day.",
"complexity": "medium"
}
},
{
"id": "PV clipping - make room in battery at sunrise",
"result": {
"structured": "TRIGGER: At sunrise with a 120-second offset. CONDITIONS: predbat rates [predbat.rates] is above 0 AND PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] is greater than 0. ACTIONS: Set local variables: inverter_limit=5, bat_capacity_max=9.5, bat_discharge_max=3.6, sunrise_to_clipping_hours=4, slots=8, soc=predbat soc kw h0 [predbat.soc_kw_h0]. Then, repeat the following sequence 8 times with a 1-second delay between iterations: For each iteration, if PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] is greater than 0, then select a 30-minute export slot in predbat manual export [select.predbat_manual_export] at a calculated time offset after sunrise and set PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] to a new value computed from solar export, battery export, and clipping predictions. Otherwise, select a 30-minute freeze export slot in predbat manual freeze export [select.predbat_manual_freeze_export] at a calculated time offset after sunrise.",
"natural_language": {
"trigger": "The automation triggers 120 seconds after sunrise.",
"conditions": "It requires that the predbat rates [predbat.rates] sensor shows a value above zero, and the PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] input number is greater than zero, indicating that some solar power clipping is forecast.",
"action": "First, it sets several internal variables based on the system's configuration, including the inverter limit, battery capacity, discharge rate, and the time from sunrise to when clipping might start. It then enters a loop that runs eight times (once for each half-hour slot). In each loop iteration, if clipping is still predicted, it schedules a 30-minute export slot in the predbat manual export [select.predbat_manual_export] selector for a specific time after sunrise and recalculates the remaining predicted clipping amount, adjusting the PV clipped in next 24 hours [input_number.pv_clipped_in_next_24_hours] value. If no clipping is predicted for that iteration, it instead schedules a 30-minute freeze export slot in the predbat manual freeze export [select.predbat_manual_freeze_export] selector. A one-second delay is added between each loop iteration."
},
"human_like": "This automation proactively manages battery export around sunrise to create space for potential solar power clipping later in the day, based on a 24-hour forecast.",
"complexity": "high"
}
},
{
"id": "PV clipping - PV goes above inverter limit",
"result": {
"structured": "TRIGGER: When givtcp geserial pv power [sensor.givtcp_geserial_pv_power] exceeds 5000 Watts OR at 1 minute past the hour OR at 31 minutes past the hour. CONDITIONS: (Sun is above the horizon, i.e., after sunrise AND before sunset) AND (predbat rates [predbat.rates] is greater than 0) AND (The current half-hour time slot is not already present in the options of predbat manual export [select.predbat_manual_export]) AND (givtcp geserial pv power [sensor.givtcp_geserial_pv_power] exceeds 5000 Watts) AND (predbat soc kw h0 [predbat.soc_kw_h0] is greater than 1). ACTIONS: Set predbat manual export [select.predbat_manual_export] to the current half-hour time slot (rounded down to the nearest half-hour).",
"natural_language": {
"trigger": "The automation triggers when the solar panel power sensor [sensor.givtcp_geserial_pv_power] goes above 5000 Watts, or at 1 minute past any hour, or at 31 minutes past any hour.",
"conditions": "The automation only runs during daylight hours, when the sun is up. It also requires that the predbat rates [predbat.rates] are positive, that the current half-hour time slot is not already selected in the predbat manual export [select.predbat_manual_export] list, that the solar power [sensor.givtcp_geserial_pv_power] is currently above 5000 Watts, and that the predicted battery state of charge [predbat.soc_kw_h0] is above 1 kilowatt-hour.",
"action": "It sets the predbat manual export [select.predbat_manual_export] to the current half-hour time period, effectively marking this period for forced export."
},
"human_like": "Forces manual export for the current half-hour period when solar production is high enough to potentially exceed the inverter's limit, ensuring excess power is sent to the grid.",
"complexity": "medium"
}
}
]

View File

@ -0,0 +1,119 @@
[
{
"id": "PV clipping - Forecast clipped PV for next 24 hours",
"automation": "- alias: PV clipping - Forecast clipped PV for next 24 hours\n description: 'Calculates forecast clipped PV for day = sum of 5 minute predbat.pv_energy forecasts\n > inverter limit.\n\n Change the variables to suit your set-up. Adjust the tuning_factor to optimise\n battery availability. The tuning factor is designed to account for spikey solar\n due to intermittent clouds and how aggressive you want to be with making room\n in the battery - the lower the value, the more room it will make.'\n triggers:\n - event: sunrise\n offset: 0\n trigger: sun\n conditions: []\n actions:\n - variables:\n tuning_factor: 0.9\n inverter_limit_kW: 5\n inverter_limit: '{{ inverter_limit_kW / 12 }}'\n - metadata: {}\n data:\n value: \"{% set pv_clipped = namespace(value=0.0) %} {% set pv_prev\\\n \\ = namespace(value=0.0) %} {% set pv_cur = namespace(value=0.0) %}\\\n \\ {% if state_attr('predbat.pv_energy', 'results') %}\\n {%- for five_min_period\\\n \\ in state_attr('predbat.pv_energy', 'results') -%}\\n {% if loop.index0\\\n \\ == 0 %}\\n {%- set pv_prev.value = state_attr('predbat.pv_energy', 'results')[five_min_period]\\\n \\ | float -%}\\n {% else %}\\n {%- set pv_cur.value = state_attr('predbat.pv_energy',\\\n \\ 'results')[five_min_period] | float -%}\\n {% set tuned_clipped = (pv_cur.value\\\n \\ - pv_prev.value) / tuning_factor %}\\n {% if tuned_clipped > inverter_limit\\\n \\ %}\\n {%- set pv_clipped.value = pv_clipped.value + tuned_clipped\\\n \\ - inverter_limit -%}\\n {% endif %}\\n {%- set pv_prev.value = pv_cur.value\\\n \\ -%}\\n {% endif %}\\n {# Only look at the next 24 hours (each loop is\\\n \\ 5 minutes) #}\\n {% if loop.index0 == 288 %}\\n {% break %}\\n {%\\\n \\ endif %}\\n {%- endfor -%} \\n{% endif %} {{ pv_clipped.value }}\\n\"\n target:\n entity_id: input_number.pv_clipped_in_next_24_hours\n action: input_number.set_value\n mode: single",
"config": [
{
"name": "PV clipped in next 24 hours",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.pv_clipped_in_next_24_hours",
"device_id": null
}
},
{
"name": "predbat pv energy",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.pv_energy",
"device_id": null
}
}
]
},
{
"id": "PV clipping - make room in battery at sunrise",
"automation": "- alias: PV clipping - make room in battery at sunrise\n description: \"Make room in battery at sunrise if PV clipping is forecast in the\\\n \\ next 24 hours \\nAdjust the variables to suit your set-up. The sunrise_to_clipping_hours\\\n \\ variable is the number of hours from sunrise to when your set-up is first at\\\n \\ risk of clipping. Round up to the nearest half-hour eg 3.5\\nIf any clipping\\\n \\ is predicted, the automation sets the first 30-min export for (sunrise_to_clipping_hours\\\n \\ - 0.5) hours after sunrise. Then backfills towards sunrise with appropriate\\\n \\ force export and freeze export slots. Assumes a straight-line increase in export\\\n \\ capacity being taken up by solar export from sunrise to clipping start. And\\\n \\ a corresponding decrease in availability for battery export. Does not account\\\n \\ for load.\"\n triggers:\n - event: sunrise\n offset: '120'\n trigger: sun\n conditions:\n - condition: numeric_state\n entity_id: predbat.rates\n above: 0\n - condition: template\n value_template: '{{ states(''input_number.pv_clipped_in_next_24_hours'') | float\n > 0 }}\n\n '\n actions:\n - variables:\n inverter_limit: 5\n bat_capacity_max: 9.5\n bat_discharge_max: 3.6\n sunrise_to_clipping_hours: 4\n slots: '{{ (sunrise_to_clipping_hours * 2) | int }}'\n soc: '{{ states(''predbat.soc_kw_h0'') | float }}'\n - repeat:\n sequence:\n - if:\n - condition: template\n value_template: '{{ states(''input_number.pv_clipped_in_next_24_hours'')\n | float > 0 }}'\n then:\n - metadata: {}\n data:\n option: '{% set t = utcnow().strftime(\"%s\") | int %} {# Round up\n the time to nearest half-hour #} {# Set 30-min export for offset\n seconds after sunrise #} {% set offset = (slots - repeat.index) *\n 1800 %} {{ (t - (t % 1800) + offset) | timestamp_custom(\"%H:%M:%S\")\n }}\n\n '\n target:\n entity_id: select.predbat_manual_export\n action: select.select_option\n - action: input_number.set_value\n metadata: {}\n data:\n value: \"{# Assume straight line climb in solar export from 0 to inverter_limit\\\n \\ over sunrise_to_clipping_hours. #} {% set solar_export = (slots\\\n \\ - repeat.index) * (inverter_limit / slots) %} {% set available_export_capacity\\\n \\ = inverter_limit - solar_export %} {# How much battery can be\\\n \\ exported in 30-min period? #} {% set battery_export = min(bat_discharge_max,\\\n \\ available_export_capacity) / 2 %} {# If the battery isn't full,\\\n \\ we already have some spare capacity for clipping. #} {% set clipping\\\n \\ = namespace(value=states('input_number.pv_clipped_in_next_24_hours')\\\n \\ | float) %} {% if repeat.index == 1 %}\\n {%- set clipping.value\\\n \\ = clipping.value - (bat_capacity_max - soc) -%}\\n{% endif %} {# We\\\n \\ don't need to export more than the current battery SOC. #} {% set\\\n \\ excess = min(soc, clipping.value) %} {{ max(excess - battery_export,\\\n \\ 0) }}\\n\"\n target:\n entity_id: input_number.pv_clipped_in_next_24_hours\n else:\n - metadata: {}\n data:\n option: '{% set t = utcnow().strftime(\"%s\") | int %} {# Round up\n the time to nearest half-hour #} {# Set 30-min freeze charge for\n offset seconds after sunrise #} {% set offset = (slots - repeat.index)\n * 1800 %} {{ (t - (t % 1800) + offset) | timestamp_custom(\"%H:%M:%S\")\n }}\n\n '\n target:\n entity_id: select.predbat_manual_freeze_export\n action: select.select_option\n - delay:\n hours: 0\n minutes: 0\n seconds: 1\n milliseconds: 0\n count: '{{ slots }}'\n mode: single",
"config": [
{
"name": "PV clipped in next 24 hours",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.pv_clipped_in_next_24_hours",
"device_id": null
}
},
{
"name": "predbat rates",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.rates",
"device_id": null
}
},
{
"name": "predbat soc kw h0",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.soc_kw_h0",
"device_id": null
}
},
{
"name": "predbat manual export",
"room": null,
"type": "select",
"id": {
"entity_id": "select.predbat_manual_export",
"device_id": null
}
},
{
"name": "predbat manual freeze export",
"room": null,
"type": "select",
"id": {
"entity_id": "select.predbat_manual_freeze_export",
"device_id": null
}
}
]
},
{
"id": "PV clipping - PV goes above inverter limit",
"automation": "- alias: PV clipping - PV goes above inverter limit\n description: Set predbat force manual export for this 30-min period. (Replace geserial\n with your GE inverter serial number. Replace 5000 with your hybrid inverter limit\n in Watts.)\n triggers:\n - entity_id:\n - sensor.givtcp_geserial_pv_power\n above: 5000\n trigger: numeric_state\n - minutes: '1'\n trigger: time_pattern\n - minutes: '31'\n trigger: time_pattern\n conditions:\n - condition: sun\n before: sunset\n after: sunrise\n - condition: numeric_state\n entity_id: predbat.rates\n above: 0\n - condition: template\n value_template: \"{# Check this half-hour is not already set to force export #}\\\n \\ \\n{% set t = utcnow().strftime(\\\"%s\\\") | int %} \\n{% set half_hour = (t -\\\n \\ (t % 1800 )) | timestamp_custom(\\\"%H:%M:%S\\\") %}\\n{{ half_hour not in states('select.predbat_manual_export')\\\n \\ }}\"\n - condition: numeric_state\n entity_id: sensor.givtcp_geserial_pv_power\n above: 5000\n - condition: numeric_state\n entity_id: predbat.soc_kw_h0\n above: 1\n actions:\n - metadata: {}\n data:\n option: '{# Round down the time to nearest half-hour #} {% set t = utcnow().strftime(\"%s\")\n | int %} {{ (t - (t % 1800 )) | timestamp_custom(\"%H:%M:%S\") }}\n\n '\n target:\n entity_id: select.predbat_manual_export\n action: select.select_option\n mode: single",
"config": [
{
"name": "predbat rates",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.rates",
"device_id": null
}
},
{
"name": "predbat soc kw h0",
"room": null,
"type": "sensor",
"id": {
"entity_id": "predbat.soc_kw_h0",
"device_id": null
}
},
{
"name": "predbat manual export",
"room": null,
"type": "select",
"id": {
"entity_id": "select.predbat_manual_export",
"device_id": null
}
},
{
"name": "givtcp geserial pv power",
"room": null,
"type": "sensor",
"id": {
"entity_id": "sensor.givtcp_geserial_pv_power",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,20 @@
{
"missing": [],
"added": [
"predbat.pv_energy"
],
"used_entities": [
"input_number.pv_clipped_in_next_24_hours",
"predbat.rates",
"predbat.soc_kw_h0",
"select.predbat_manual_export",
"select.predbat_manual_freeze_export",
"sensor.givtcp_geserial_pv_power"
],
"used_devices": [],
"template_entities": [
"input_number.pv_clipped_in_next_24_hours",
"predbat.soc_kw_h0",
"select.predbat_manual_export"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "CJDumbleton",
"prompt_tokens": 7816,
"completion_tokens": 1491,
"total_tokens": 9307
}

2567
Chris-V/Chris-V.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,665 @@
[
{
"id": "a4fe52e0-99f0-449d-9bc7-50378d9d6df8",
"result": {
"structured": "TRIGGER: When sun [sun.sun] elevation is below -3.0 OR when household group [group.household] changes state to home. CONDITIONS: The current time is before evening ambiance end [input_datetime.evening_ambiance_end] AND sun [sun.sun] elevation is below -3.0 AND household group [group.household] is home. ACTIONS: Run evening ambiance script [script.evening_ambiance] AND turn on backyard string light [light.backyard_string], front porch light [light.front_porch], side porch sconce [light.side_porch_sconce], and shed outdoor light [light.shed_outdoor].",
"natural_language": {
"trigger": "The automation can be triggered in two ways: when the sun's elevation falls below -3 degrees, indicating it is well below the horizon, or when the household group changes its state to 'home'.",
"conditions": "For the automation to run, all of the following must be true: the current time must be before the time set in the evening ambiance end input, the sun's elevation must be below -3 degrees, and the household group must be in the 'home' state.",
"action": "The automation runs the evening ambiance script and turns on a set of outdoor lights, including the backyard string light, the front porch light, the side porch sconce, and the shed outdoor light, all in parallel."
},
"human_like": "Turns on the evening ambiance and outdoor lights when it's night time and someone is home.",
"complexity": "medium"
}
},
{
"id": "2c48ecbc-7b65-4938-af37-dcda12952465",
"result": {
"structured": "TRIGGER: When chris person [person.chris] OR karine person [person.karine] OR guests group [group.guests] changes state to home. CONDITIONS: sun [sun.sun] elevation is below -3.0. ACTIONS: Turn on front porch light [light.front_porch] AND side porch sconce [light.side_porch_sconce].",
"natural_language": {
"trigger": "When either Chris, Karine, or any guest arrives home, as indicated by their person or group state changing to 'home'.",
"conditions": "The sun must be below the horizon, specifically with an elevation lower than -3.0 degrees, indicating it is dark outside.",
"action": "Turns on the front porch light and the side porch sconce to illuminate the entryways."
},
"human_like": "Turns on the porch lights when someone arrives home after dark.",
"complexity": "low"
}
},
{
"id": "a109af89-0910-45b2-9a0e-11d3ae43ec7c",
"result": {
"structured": "TRIGGER: When outdoor lights [light.outdoor_lights] turn on AND remain on for 5 minutes OR When the time reaches the value set in evening ambiance end [input_datetime.evening_ambiance_end] OR When guest mode [binary_sensor.guest_mode] turns off. CONDITIONS: guest mode [binary_sensor.guest_mode] is off AND outdoor lights [light.outdoor_lights] is on AND remains on for 5 minutes AND the current time is after the value set in evening ambiance end [input_datetime.evening_ambiance_end] AND before 15:00:00. ACTIONS: Turn off outdoor lights [light.outdoor_lights].",
"natural_language": {
"trigger": "The automation can start when the outdoor lights [light.outdoor_lights] have been on for five minutes, when the scheduled time for 'evening ambiance end' [input_datetime.evening_ambiance_end] arrives, or when the guest mode [binary_sensor.guest_mode] is deactivated.",
"conditions": "For the action to run, the guest mode [binary_sensor.guest_mode] must be off, the outdoor lights [light.outdoor_lights] must be on and have been on for five minutes, and the current time must be after the scheduled 'evening ambiance end' [input_datetime.evening_ambiance_end] but before 3:00 PM.",
"action": "Turns off the outdoor lights [light.outdoor_lights]."
},
"human_like": "Automatically turns off the outdoor lights after the evening ambiance period ends, but only if guest mode is not active.",
"complexity": "medium"
}
},
{
"id": "36afcfe6-d475-447c-b089-d33aec62a774",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR When audio broadcast todo [todo.audio_broadcast] changes state OR When household group [group.household] is home for 120 seconds OR When the time matches input_datetime.broadcast_weekday_start [input_datetime.broadcast_weekday_start] OR input_datetime.broadcast_weekend_start [input_datetime.broadcast_weekend_start]. CONDITIONS: (audio broadcast todo [todo.audio_broadcast] has a numeric value above 0) AND (household group [group.household] is home AND remains so for 120 seconds) AND ((time is after broadcast weekday start [input_datetime.broadcast_weekday_start] AND before broadcast weekday end [input_datetime.broadcast_weekday_end] AND weekday is Monday, Tuesday, Wednesday, or Thursday) OR (time is after broadcast weekday start [input_datetime.broadcast_weekday_start] AND before broadcast weekend end [input_datetime.broadcast_weekend_end] AND weekday is Friday) OR (time is after broadcast weekend start [input_datetime.broadcast_weekend_start] AND before broadcast weekend end [input_datetime.broadcast_weekend_end] AND weekday is Saturday) OR (time is after broadcast weekend start [input_datetime.broadcast_weekend_start] AND before broadcast weekday end [input_datetime.broadcast_weekday_end] AND weekday is Sunday)). ACTIONS: Get items with status 'needs_action' from audio broadcast todo [todo.audio_broadcast] and store in variable 'broadcast_items'. Set variable 'broadcast_item' to the first item in the list. Run broadcast notification script [script.broadcast_notification] with the message from the item's description or summary. Wait until broadcast notification script [script.broadcast_notification] is off. Run manage broadcast queue script [script.manage_broadcast_queue] with action 'pop' and tag from the item's summary.",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when Home Assistant first starts, whenever the audio broadcast todo [todo.audio_broadcast] list changes, when the household group [group.household] has been at home for two minutes, or at specific scheduled times defined by the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekend start [input_datetime.broadcast_weekend_start].",
"conditions": "For the automation to proceed, several conditions must be met. First, the audio broadcast todo [todo.audio_broadcast] must have at least one pending item (its numeric state is above zero). Second, the household group [group.household] must be home and have been in that state for at least two minutes. Finally, the current time must fall within a permitted broadcast window. This window depends on the day of the week: on weekdays (Monday to Thursday), it's between the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekday end [input_datetime.broadcast_weekday_end]; on Friday, it's between the broadcast weekday start [input_datetime.broadcast_weekday_start] and broadcast weekend end [input_datetime.broadcast_weekend_end]; on Saturday, it's between the broadcast weekend start [input_datetime.broadcast_weekend_start] and broadcast weekend end [input_datetime.broadcast_weekend_end]; and on Sunday, it's between the broadcast weekend start [input_datetime.broadcast_weekend_start] and broadcast weekday end [input_datetime.broadcast_weekday_end].",
"action": "The automation fetches the list of pending items from the audio broadcast todo [todo.audio_broadcast]. It takes the first item from this list and uses its description (or summary if no description exists) as a message. It then triggers the broadcast notification script [script.broadcast_notification] to announce this message. After waiting for that script to finish, it calls the manage broadcast queue script [script.manage_broadcast_queue] to remove the processed item from the queue."
},
"human_like": "This automation announces pending audio notifications from a to-do list, but only when someone is home and during allowed time windows based on the day of the week.",
"complexity": "high"
}
},
{
"id": "e50d2e13-9c88-4b02-89af-e863a7d763d5",
"result": {
"structured": "TRIGGER: When chris remote entity select [input_select.chris_remote_entity] changes state. CONDITIONS: None. ACTIONS: Wait for 300 seconds (5 minutes), then set chris remote entity select [input_select.chris_remote_entity] to the option 'light.bedside_chris'.",
"natural_language": {
"trigger": "Whenever the selected option in the chris remote entity select [input_select.chris_remote_entity] changes.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "After a delay of 5 minutes, the automation resets the chris remote entity select [input_select.chris_remote_entity] back to the default option, which is 'light.bedside_chris'."
},
"human_like": "Resets the selection for Chris's remote control back to his bedside light after five minutes.",
"complexity": "low"
}
},
{
"id": "ff872bdf-a0af-4e30-9aa3-449d7ff4367b",
"result": {
"structured": "TRIGGER: When chris remote color select [input_select.chris_remote_color] changes state. CONDITIONS: None. ACTIONS: Turn on the light entity whose ID is the current state of chris remote entity select [input_select.chris_remote_entity] and set its color to the new state value of chris remote color select [input_select.chris_remote_color].",
"natural_language": {
"trigger": "Whenever the selected value in the chris remote color select [input_select.chris_remote_color] changes.",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the light that is currently selected in the chris remote entity select [input_select.chris_remote_entity] and sets its color to the newly selected color from the chris remote color select [input_select.chris_remote_color]."
},
"human_like": "Applies the selected color from Chris' remote to the currently selected light.",
"complexity": "low"
}
},
{
"id": "abf7b09f-0e7b-4b0c-b6ef-85631f25c63e",
"result": {
"structured": "TRIGGER: When a ZHA event from device with IEEE address 00:0d:6f:ff:fe:61:69:25 occurs. CONDITIONS: None. ACTIONS: Execute actions defined by the blueprint 'zha/bedside_remote.yaml', which will map remote button presses to actions based on the selected entity from chris remote entity select [input_select.chris_remote_entity] and the selected color from chris remote color select [input_select.chris_remote_color].",
"natural_language": {
"trigger": "When a button is pressed on Chris' ZHA remote control device (identified by its IEEE address 00:0d:6f:ff:fe:61:69:25).",
"conditions": "There are no specific conditions; the automation runs whenever the remote button is pressed.",
"action": "Uses a predefined blueprint to map the specific button press to an action. The action performed depends on the current selections in the 'chris remote entity select' [input_select.chris_remote_entity] and 'chris remote color select' [input_select.chris_remote_color] dropdowns."
},
"human_like": "Maps the buttons on Chris' bedside remote to control different lights and scenes based on pre-selected options.",
"complexity": "medium"
}
},
{
"id": "1ff64444-5414-49d5-b314-b0a3a82075c5",
"result": {
"structured": "TRIGGER: When default theme select [input_select.default_theme] changes state OR use alarm theme [binary_sensor.use_alarm_theme] changes state OR winter credit peak event [binary_sensor.winter_credit_peak_event] changes state. CONDITIONS: None. ACTIONS: Set the frontend theme based on a template. The template logic: If use dark theme [binary_sensor.use_dark_theme] is on, set mode to 'dark', otherwise 'light'. If use alarm theme [binary_sensor.use_alarm_theme] is on, set theme to 'ios-{mode}-mode-red'. Else, if winter credit peak event [binary_sensor.winter_credit_peak_event] is on, set theme to 'ios-{mode}-mode-light-blue'. Otherwise, set theme to the current state of default theme select [input_select.default_theme], defaulting to 'default'.",
"natural_language": {
"trigger": "The automation triggers whenever the default theme select [input_select.default_theme], the use alarm theme [binary_sensor.use_alarm_theme], or the winter credit peak event [binary_sensor.winter_credit_peak_event] changes its state.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "It updates the frontend theme. The theme is chosen based on the current states of several sensors. First, it determines if the dark mode is active by checking use dark theme [binary_sensor.use_dark_theme]. If the alarm theme is active (use alarm theme [binary_sensor.use_alarm_theme]), it applies a red-themed variant. If not, but a winter credit peak event is active (winter credit peak event [binary_sensor.winter_credit_peak_event]), it applies a light blue-themed variant. If neither special condition is true, it uses the theme selected in default theme select [input_select.default_theme], falling back to a default theme if needed."
},
"human_like": "Dynamically changes the Home Assistant interface theme based on alarm status, energy events, and user preferences.",
"complexity": "medium"
}
},
{
"id": "a87a26c7-b1d4-4080-842b-4ee8a6e5b6f5",
"result": {
"structured": "TRIGGER: When any of the following entities change state: use dark theme [binary_sensor.use_dark_theme], automatic night theme [input_boolean.automatic_night_theme], day theme select [input_select.day_theme], or night theme select [input_select.night_theme] OR When Home Assistant starts. CONDITIONS: automatic night theme [input_boolean.automatic_night_theme] is on. ACTIONS: Set the option of default theme select [input_select.default_theme] to the value of night theme select [input_select.night_theme] if use dark theme [binary_sensor.use_dark_theme] is on, otherwise set it to the value of day theme select [input_select.day_theme]; if the resulting value is unavailable, use 'default'.",
"natural_language": {
"trigger": "The automation triggers either when Home Assistant starts, or when there is a change in the state of any of the following: the use dark theme sensor [binary_sensor.use_dark_theme], the automatic night theme toggle [input_boolean.automatic_night_theme], the day theme selector [input_select.day_theme], or the night theme selector [input_select.night_theme].",
"conditions": "The automation only proceeds if the automatic night theme toggle [input_boolean.automatic_night_theme] is switched on.",
"action": "It updates the default theme selector [input_select.default_theme] based on the current theme mode. If the use dark theme sensor [binary_sensor.use_dark_theme] indicates dark mode is active, it selects the option from the night theme selector [input_select.night_theme]. Otherwise, it selects the option from the day theme selector [input_select.day_theme]. If the selected value is unavailable, it falls back to 'default'."
},
"human_like": "Automatically updates the system's default theme based on the time of day (day or night) when the automatic theme switching feature is enabled.",
"complexity": "medium"
}
},
{
"id": "54655af9-ddc7-491d-9200-41aaaddbb21a",
"result": {
"structured": "TRIGGER: When household group [group.household] changes from home to not_home AND remains not_home for 30 minutes. CONDITIONS: guest mode [binary_sensor.guest_mode] is off. ACTIONS: Execute everything off script [script.everything_off] AND lock kitchen door lock [lock.kitchen_door].",
"natural_language": {
"trigger": "When all members of the household group [group.household] leave home and remain away for at least 30 minutes.",
"conditions": "If guest mode [binary_sensor.guest_mode] is not active.",
"action": "Runs the 'everything off' script [script.everything_off] and locks the kitchen door lock [lock.kitchen_door]."
},
"human_like": "Turns everything off and locks the kitchen door when everyone has left the house for 30 minutes and guest mode is not on.",
"complexity": "low"
}
},
{
"id": "77087f1e-f617-4fa6-8520-22793f3c1bfb",
"result": {
"structured": "TRIGGER: When use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] changes to off. CONDITIONS: None. ACTIONS: Call service ground floor heat pump use internal temperature [esphome.ground_floor_heat_pump_use_internal_temperature].",
"natural_language": {
"trigger": "When the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is turned off.",
"conditions": "There are no conditions that must be met.",
"action": "Switch the heat pump to use its internal temperature probe by calling the service ground floor heat pump use internal temperature [esphome.ground_floor_heat_pump_use_internal_temperature]."
},
"human_like": "Switches the heat pump to use its internal temperature sensor when the virtual probe setting is turned off.",
"complexity": "low"
}
},
{
"id": "4c8cf214-db8a-4d0e-b039-f502dc5e21ed",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR When use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] turns on OR When heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] remains in any state other than 'unavailable' for 5 seconds. CONDITIONS: use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is on AND heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] is NOT unavailable. ACTIONS: Call service ground floor heat pump set remote temperature [esphome.ground_floor_heat_pump_set_remote_temperature] with the temperature value from heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] rounded to the nearest whole number.",
"natural_language": {
"trigger": "The automation triggers in three situations: when Home Assistant first starts up, when the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is switched on, or when the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] remains in a valid state (not 'unavailable') for at least five seconds.",
"conditions": "The automation only proceeds if the use heat pump virtual probe [input_boolean.use_heat_pump_virtual_probe] is currently turned on, and the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] is not reporting as 'unavailable'.",
"action": "It sends a command to the ground floor heat pump set remote temperature [esphome.ground_floor_heat_pump_set_remote_temperature] service, providing the current temperature reading from the heat pump virtual probe sensor [sensor.heat_pump_virtual_probe] as a rounded whole number."
},
"human_like": "This automation synchronizes the heat pump's external temperature probe with the thermostat reading whenever the virtual probe feature is enabled.",
"complexity": "medium"
}
},
{
"id": "6ea34d47-1181-4c94-9ab6-43fe4c0b42cc",
"result": {
"structured": "TRIGGER: When latest home assistant version [sensor.latest_home_assistant_version] changes to any state that is NOT 'unknown' AND NOT 'unavailable'. CONDITIONS: The new state of latest home assistant version [sensor.latest_home_assistant_version] is a higher version number than the current state of current home assistant version [sensor.current_home_assistant_version]. ACTIONS: Execute python script notify [python_script.notify] with a persistent notification to the admin target, tagged 'hass_version', containing a title 'Home Assistant Update', a message 'Home Assistant {{ trigger.to_state.state }} is available.', and a URL to the corresponding GitHub release.",
"natural_language": {
"trigger": "Whenever the latest home assistant version [sensor.latest_home_assistant_version] sensor updates to a valid state, excluding 'unknown' or 'unavailable'.",
"conditions": "The newly reported version for the latest home assistant version [sensor.latest_home_assistant_version] must be greater than the version currently reported by the current home assistant version [sensor.current_home_assistant_version] sensor.",
"action": "Sends a persistent notification to the admin user via the python script notify [python_script.notify] script. The notification is tagged for version updates, includes a title and message announcing the new version's availability, and provides a direct link to its GitHub release page."
},
"human_like": "Sends a notification when a newer version of Home Assistant is detected as available.",
"complexity": "medium"
}
},
{
"id": "0c595e90-4186-4152-b80e-41a491749dde",
"result": {
"structured": "TRIGGER: When a persistent_notification.create service call occurs with notification_id 'http-login'. CONDITIONS: None. ACTIONS: Execute python script notify [python_script.notify] with push_target 'admin', title set to the notification title from the trigger, and message set to the notification message from the trigger.",
"natural_language": {
"trigger": "When the Home Assistant system attempts to create a persistent notification with the specific ID 'http-login'.",
"conditions": "There are no additional conditions that must be met.",
"action": "It runs the python script notify [python_script.notify] to send a push notification to the 'admin' target, using the title and message from the original notification."
},
"human_like": "Sends an admin push notification whenever a failed login attempt is detected by the system.",
"complexity": "low"
}
},
{
"id": "673d5462-19e1-4a63-ad41-75c0690dcaa2",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR When Home Assistant shuts down. CONDITIONS: None. ACTIONS: Send a notification to admin with message 'Home-Assistant has {{ action }}.'",
"natural_language": {
"trigger": "When Home Assistant starts up or when Home Assistant shuts down.",
"conditions": "There are no conditions.",
"action": "Sends a notification to the admin user with a message stating whether Home Assistant has started up or shut down."
},
"human_like": "Sends a notification when Home Assistant starts or shuts down.",
"complexity": "low"
}
},
{
"id": "c7929657-8241-478e-9a89-d2562c720120",
"result": {
"structured": "TRIGGER: When jinja2 custom templates updated event [event.jinja2_custom_templates_updated] changes state. CONDITIONS: None. ACTIONS: Execute the service homeassistant.reload_custom_templates.",
"natural_language": {
"trigger": "When the jinja2 custom templates updated event [event.jinja2_custom_templates_updated] is triggered.",
"conditions": "There are no conditions that need to be met.",
"action": "Reloads all custom Jinja2 templates in Home Assistant."
},
"human_like": "Automatically reloads custom Jinja2 templates whenever they are updated.",
"complexity": "low"
}
},
{
"id": "2c7d9807-9f19-4b55-b944-17005a27e6c0",
"result": {
"structured": "TRIGGER: When presence armed [binary_sensor.presence_armed] changes from off to on. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with the message 'Intrusion alarm armed.' AND execute the script initialize alarm states script [script.initialize_alarm_states].",
"natural_language": {
"trigger": "When the presence armed [binary_sensor.presence_armed] sensor changes from off to on.",
"conditions": "There are no conditions for this automation.",
"action": "Sends a notification to the intrusion log notify [notify.intrusion_log] stating 'Intrusion alarm armed.' and then runs the initialize alarm states script [script.initialize_alarm_states]."
},
"human_like": "Arms the home intrusion alarm system, logs the event, and initializes the alarm's internal states.",
"complexity": "low"
}
},
{
"id": "249f90de-0afe-4735-9b17-a59f035ec4f3",
"result": {
"structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes from on to off. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a message containing the current state of presence armed id text [input_text.presence_armed_id] followed by the text 'Intrusion cleared.'.",
"natural_language": {
"trigger": "When the intrusion activity [binary_sensor.intrusion_activity] sensor changes from an active (on) to an inactive (off) state.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "Sends a notification to the intrusion log notify [notify.intrusion_log] service. The notification message includes the current value of the presence armed id text [input_text.presence_armed_id] field, followed by the text 'Intrusion cleared.'."
},
"human_like": "Logs a message to the intrusion log whenever an intrusion alert is cleared.",
"complexity": "low"
}
},
{
"id": "64ef04c6-d94c-4d70-a116-d50ab1b295a5",
"result": {
"structured": "TRIGGER: When presence armed [binary_sensor.presence_armed] changes from on to off. CONDITIONS: None. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a message containing the current state of presence armed id text [input_text.presence_armed_id].",
"natural_language": {
"trigger": "When the presence armed [binary_sensor.presence_armed] sensor changes from being armed (on) to disarmed (off).",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "Sends a notification to the intrusion log notify [notify.intrusion_log] service. The message includes the current text value stored in presence armed id text [input_text.presence_armed_id] to indicate which alarm was disarmed."
},
"human_like": "Logs a message to the intrusion log whenever the presence alarm is disarmed.",
"complexity": "low"
}
},
{
"id": "1bbacc2c-2ce3-428a-bfdd-6d9480be23b8",
"result": {
"structured": "TRIGGER: When current door sensor [sensor.current_door] OR current motion sensor [sensor.current_motion] OR current window sensor [sensor.current_window] changes state. OR When any of the 58 listed light, fan, or switch button press events occur (e.g., hallway spots dimmer on pressed [event.hallway_spots_dimmer_on_pressed], kitchen track light dimmer off pressed [event.kitchen_track_light_dimmer_off_pressed], etc.). CONDITIONS: presence armed [binary_sensor.presence_armed] is on AND the template condition '{{ entity_id != '''' }}' evaluates to true (ensuring the entity_id variable is not empty). ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with a formatted message containing the presence armed id text [input_text.presence_armed_id] and the triggering entity's device name and ID. AND Add an item to the intrusion record todo [todo.intrusion_record] list containing the triggering entity_id.",
"natural_language": {
"trigger": "This automation triggers in two ways. First, when any of the three activity sensors (current door sensor [sensor.current_door], current motion sensor [sensor.current_motion], or current window sensor [sensor.current_window]) changes its state. Second, when any of 58 specific button press events for lights, fans, or switches throughout the house is detected, such as a hallway dimmer being turned on or a bathroom fan switch being pressed.",
"conditions": "For the automation to proceed, the security system must be armed, meaning the presence armed [binary_sensor.presence_armed] sensor must be in the 'on' state. Additionally, the automation checks that the internal variable 'entity_id' (which captures the source of the trigger) is not empty.",
"action": "When triggered and conditions are met, the automation performs two actions. It sends an alert notification to the intrusion log notify [notify.intrusion_log] service, formatting a message that includes a system ID from presence armed id text [input_text.presence_armed_id] and details about the triggering device. It also logs the event by adding the entity ID of the triggering source as a new item in the intrusion record todo [todo.intrusion_record] list."
},
"human_like": "Logs potential intrusion activity by sending an alert and creating a record whenever sensors detect movement, doors/windows opening, or lights/fans being operated while the security system is armed.",
"complexity": "medium"
}
},
{
"id": "6943625e-997b-4650-b608-acb10bf3ca57",
"result": {
"structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes state. CONDITIONS: silence intrusion alarm [input_boolean.silence_intrusion_alarm] is off. ACTIONS: Execute the 'alarm/start_alarm.yaml' blueprint with inputs: name='Intrusion', group=binary_sensor.intrusion_activity, tag={{ states('input_text.presence_armed_id') }}, actions list containing 'silence_{{ states('input_text.presence_armed_id') }}' titled 'Silence' and 'reset_{{ states('input_text.presence_armed_id') }}' titled 'Reset'.",
"natural_language": {
"trigger": "When the intrusion activity sensor [binary_sensor.intrusion_activity] detects a change in state.",
"conditions": "The automation only runs if the silence intrusion alarm switch [input_boolean.silence_intrusion_alarm] is turned off.",
"action": "It starts an alarm procedure using a predefined blueprint. The alarm is named 'Intrusion', monitors the group of sensors defined by intrusion activity [binary_sensor.intrusion_activity], and uses the current value of the presence armed id text [input_text.presence_armed_id] as a tag. The alarm provides two actions: one to silence it and one to reset it, with their specific names also derived from the presence armed id text."
},
"human_like": "Starts an intrusion alarm when suspicious activity is detected, unless the alarm has been manually silenced.",
"complexity": "medium"
}
},
{
"id": "8e77137f-af56-48bd-b82c-7e5bb0ab4ff8",
"result": {
"structured": "TRIGGER: When intrusion activity [binary_sensor.intrusion_activity] changes state. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is off. ACTIONS: Clear alarm notifications for the alarm group 'Intrusion' using the tag value from presence armed id text [input_text.presence_armed_id].",
"natural_language": {
"trigger": "Whenever the state of the intrusion activity [binary_sensor.intrusion_activity] sensor changes.",
"conditions": "The intrusion activity [binary_sensor.intrusion_activity] must be off, indicating no active intrusion.",
"action": "Clears all active alarm notifications associated with the 'Intrusion' alarm group, using a unique tag derived from the current value of the presence armed id text [input_text.presence_armed_id] input."
},
"human_like": "Clears the intrusion alarm notifications when the system detects that the intrusion is no longer active.",
"complexity": "low"
}
},
{
"id": "65383759-a03c-4c81-9965-7154e83626fd",
"result": {
"structured": "TRIGGER: When an HTML5 notification is clicked OR a mobile app notification action occurs. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is on AND the notification action equals 'silence_' concatenated with the current value of presence armed id text [input_text.presence_armed_id]. ACTIONS: Turn on silence intrusion alarm [input_boolean.silence_intrusion_alarm] AND send a notification to intrusion log notify [notify.intrusion_log] with the message: (current value of presence armed id text [input_text.presence_armed_id]) Intrusion alarm silenced.",
"natural_language": {
"trigger": "When a user clicks on an HTML5 notification or performs a mobile app notification action.",
"conditions": "The intrusion activity [binary_sensor.intrusion_activity] sensor must be active (on), and the notification action that triggered the automation must exactly match the text 'silence_' followed by the current value stored in the presence armed id text [input_text.presence_armed_id] field.",
"action": "It turns on the silence intrusion alarm [input_boolean.silence_intrusion_alarm] input boolean and sends a log message to the intrusion log notify [notify.intrusion_log] service, which includes the current armed ID value."
},
"human_like": "Silences the intrusion alarm audio when a specific notification action is clicked while an intrusion is active, and logs the event.",
"complexity": "medium"
}
},
{
"id": "f1d67201-6a81-4214-a528-8a5afff919c0",
"result": {
"structured": "TRIGGER: When an HTML5 notification is clicked OR a mobile app notification action occurs. CONDITIONS: intrusion activity [binary_sensor.intrusion_activity] is on AND the trigger event's action data equals the string 'reset_' concatenated with the current value of presence armed id text [input_text.presence_armed_id]. ACTIONS: Send a notification to intrusion log notify [notify.intrusion_log] with the message: (current value of presence armed id text [input_text.presence_armed_id]) Intrusion alarm cleared manually. AND run the initialize alarm states script [script.initialize_alarm_states].",
"natural_language": {
"trigger": "When a user clicks on an HTML5 notification or performs a specific action from a mobile app notification.",
"conditions": "The intrusion activity [binary_sensor.intrusion_activity] must be in the 'on' state, and the action taken in the notification must match a specific pattern: the word 'reset_' followed by the current value stored in the presence armed id text [input_text.presence_armed_id] field.",
"action": "Sends a log message to the intrusion log notify [notify.intrusion_log] service, stating that the intrusion alarm has been manually cleared, and then runs the initialize alarm states script [script.initialize_alarm_states] to reset the alarm system."
},
"human_like": "Clears the intrusion alarm and resets the system when a specific notification action is confirmed.",
"complexity": "medium"
}
},
{
"id": "686ea290-b4ee-4220-ad02-e233771483b7",
"result": {
"structured": "TRIGGER: When karine remote entity select [input_select.karine_remote_entity] changes state. CONDITIONS: None. ACTIONS: Wait 300 seconds (5 minutes) AND then set karine remote entity select [input_select.karine_remote_entity] to the option 'light.bedside_karine'.",
"natural_language": {
"trigger": "Whenever the karine remote entity select [input_select.karine_remote_entity] changes its selected value.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "After a delay of 5 minutes, the automation resets the karine remote entity select [input_select.karine_remote_entity] back to the default option, which is 'light.bedside_karine'."
},
"human_like": "Resets Karine's remote control selection back to her bedside light after five minutes.",
"complexity": "low"
}
},
{
"id": "3ff136d3-b8cb-4016-bf56-c9b0a4b65e09",
"result": {
"structured": "TRIGGER: When karine remote color select [input_select.karine_remote_color] changes state. CONDITIONS: None. ACTIONS: Turn on the light entity whose ID is the current state of karine remote entity select [input_select.karine_remote_entity] and set its color to the new state value of karine remote color select [input_select.karine_remote_color].",
"natural_language": {
"trigger": "Whenever the value of the karine remote color select [input_select.karine_remote_color] changes.",
"conditions": "There are no additional conditions that must be met.",
"action": "Turns on the specific light that is currently selected in the karine remote entity select [input_select.karine_remote_entity] and sets its color to the newly selected value from the karine remote color select [input_select.karine_remote_color]."
},
"human_like": "Applies the selected color to the chosen light whenever the color selection is changed.",
"complexity": "low"
}
},
{
"id": "b214c9a3-937d-4391-9915-98185b7cb152",
"result": {
"structured": "TRIGGER: When a ZHA remote button event occurs from device with IEEE address 14:b4:57:ff:fe:7c:23:0e. CONDITIONS: None. ACTIONS: Execute actions defined by the blueprint 'zha/bedside_remote.yaml', which uses the selected entity from karine remote entity select [input_select.karine_remote_entity] and the selected color from karine remote color select [input_select.karine_remote_color] to map button presses to device/light control.",
"natural_language": {
"trigger": "When Karine's ZHA remote (device IEEE 14:b4:57:ff:fe:7c:23:0e) sends a button press event.",
"conditions": "There are no additional conditions; the automation runs whenever the remote button is pressed.",
"action": "Uses the predefined blueprint 'zha/bedside_remote.yaml' to map the button press to an action. The specific action depends on the current selections in the karine remote entity select [input_select.karine_remote_entity] (which chooses the target device) and the karine remote color select [input_select.karine_remote_color] (which may choose a color or effect)."
},
"human_like": "Maps the buttons on Karine's bedside remote to control lights or other devices based on user selections.",
"complexity": "medium"
}
},
{
"id": "automation.notify_jammed_lock",
"result": {
"structured": "TRIGGER: When kitchen door lock jammed [binary_sensor.kitchen_door_lock_jammed] changes state to on OR off. CONDITIONS: None. ACTIONS: If the new state is on, then send a high-priority, persistent audio notification to the household with the title 'The kitchen door lock is jammed.' using python script notify [python_script.notify]. If the new state is off, then dismiss the persistent notification with the same tag using python script notify [python_script.notify].",
"natural_language": {
"trigger": "Whenever the kitchen door lock jammed [binary_sensor.kitchen_door_lock_jammed] sensor changes its state, either to 'on' (jammed) or 'off' (not jammed).",
"conditions": "There are no additional conditions that must be met for the automation to run.",
"action": "If the sensor reports that the lock is jammed (state 'on'), the system sends a high-priority, persistent audio notification to all household members, alerting them that the kitchen door lock is jammed. If the sensor reports that the lock is no longer jammed (state 'off'), the system dismisses the previously sent persistent notification."
},
"human_like": "Sends and clears a household alert when the kitchen door lock becomes jammed or unjammed.",
"complexity": "low"
}
},
{
"id": "f614d09a-6589-4e21-9f86-205edea10917",
"result": {
"structured": "TRIGGER: When master bed occupied chris [binary_sensor.master_bed_occupied_chris] OR master bed occupied karine [binary_sensor.master_bed_occupied_karine] changes to on. CONDITIONS: (master bed occupied both [binary_sensor.master_bed_occupied_both] is off) AND (karine person [person.karine] OR chris person [person.chris] is home). ACTIONS: If conditions are met, run bedtime script [script.bedtime]; otherwise, lock kitchen door lock [lock.kitchen_door] AND run everything off script [script.everything_off].",
"natural_language": {
"trigger": "When either the master bed occupied chris [binary_sensor.master_bed_occupied_chris] or the master bed occupied karine [binary_sensor.master_bed_occupied_karine] sensor detects that the bed is occupied (turns on).",
"conditions": "If the master bed occupied both [binary_sensor.master_bed_occupied_both] sensor is off, indicating the bed is not already marked as occupied by both, and at least one of the people, karine person [person.karine] or chris person [person.chris], is at home.",
"action": "If the conditions are satisfied, the bedtime script [script.bedtime] is executed. If not, the kitchen door lock [lock.kitchen_door] is locked and the everything off script [script.everything_off] is run."
},
"human_like": "When someone gets into bed, it either starts the bedtime routine if the bed isn't already marked as occupied by both and someone is home, or otherwise locks the kitchen door and turns everything off.",
"complexity": "medium"
}
},
{
"id": "650fdbf6-2f22-4bd0-b430-c8a1c29d3217",
"result": {
"structured": "TRIGGER: When master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] is pressed twice OR When master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] is pressed twice OR When master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] is pressed three times OR When master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] is pressed three times. CONDITIONS: None. ACTIONS: If trigger is master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] pressed twice, turn on bedside chris light [light.bedside_chris]. If trigger is master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] pressed twice, turn off bedside chris light [light.bedside_chris]. If trigger is master bedroom spots dimmer on pressed [event.master_bedroom_spots_dimmer_on_pressed] pressed three times, turn on master bedroom lights [light.master_bedroom_lights]. If trigger is master bedroom spots dimmer off pressed [event.master_bedroom_spots_dimmer_off_pressed] pressed three times, turn off master bedroom lights [light.master_bedroom_lights].",
"natural_language": {
"trigger": "When the 'on' button on the master bedroom spots dimmer is pressed twice, when the 'off' button on the master bedroom spots dimmer is pressed twice, when the 'on' button is pressed three times, or when the 'off' button is pressed three times.",
"conditions": "There are no additional conditions that must be met.",
"action": "Depending on which button press sequence is detected: a double-press of the 'on' button turns on the bedside chris light [light.bedside_chris]; a double-press of the 'off' button turns it off. A triple-press of the 'on' button turns on all the master bedroom lights [light.master_bedroom_lights]; a triple-press of the 'off' button turns them off."
},
"human_like": "Controls specific lights in the master bedroom using double and triple presses of the dimmer switch's on and off buttons.",
"complexity": "medium"
}
},
{
"id": "7d71c23b-929c-4553-a150-2f990fc7ff87",
"result": {
"structured": "TRIGGER: When master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] is pressed OR When master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] is pressed. CONDITIONS: None. ACTIONS: If the trigger is master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] pressed twice, turn on bedside karine light [light.bedside_karine]. If the trigger is master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] pressed twice, turn off bedside karine light [light.bedside_karine]. If the trigger is master bedroom sconces dimmer on pressed [event.master_bedroom_sconces_dimmer_on_pressed] pressed three times, turn on master bedroom lights [light.master_bedroom_lights]. If the trigger is master bedroom sconces dimmer off pressed [event.master_bedroom_sconces_dimmer_off_pressed] pressed three times, turn off master bedroom lights [light.master_bedroom_lights].",
"natural_language": {
"trigger": "When the 'on' button on the master bedroom sconces dimmer [event.master_bedroom_sconces_dimmer_on_pressed] is pressed, or when the 'off' button on the master bedroom sconces dimmer [event.master_bedroom_sconces_dimmer_off_pressed] is pressed.",
"conditions": "There are no conditions that must be met for the automation to run.",
"action": "Depending on the specific button press pattern, different lights are controlled. A double press of the 'on' button turns on the bedside karine light [light.bedside_karine]. A double press of the 'off' button turns off the bedside karine light [light.bedside_karine]. A triple press of the 'on' button turns on all the master bedroom lights [light.master_bedroom_lights]. A triple press of the 'off' button turns off all the master bedroom lights [light.master_bedroom_lights]."
},
"human_like": "Controls specific lights in the master bedroom using double and triple presses of the sconce dimmer's on and off buttons.",
"complexity": "medium"
}
},
{
"id": "0a607c5b-9dc1-4e86-b46c-f5dd6ebcc542",
"result": {
"structured": "TRIGGER: When master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] is pressed twice quickly OR When master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] is pressed twice quickly. CONDITIONS: None. ACTIONS: If triggered by master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] double-press, turn on master bedroom sconces [light.master_bedroom_sconces] AND master bedroom spots [light.master_bedroom_spots]. If triggered by master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] double-press, turn off master bedroom lights [light.master_bedroom_lights].",
"natural_language": {
"trigger": "When the master bedroom closet light switch on pressed [event.master_bedroom_closet_light_switch_on_pressed] is double-pressed, or when the master bedroom closet light switch off pressed [event.master_bedroom_closet_light_switch_off_pressed] is double-pressed.",
"conditions": "There are no additional conditions; the automation runs immediately upon the trigger.",
"action": "If the double-press is on the 'on' paddle, it turns on the master bedroom sconces [light.master_bedroom_sconces] and the master bedroom spots [light.master_bedroom_spots]. If the double-press is on the 'off' paddle, it turns off the master bedroom lights [light.master_bedroom_lights]."
},
"human_like": "Uses double-presses on the closet light switch to control specific lighting scenes in the master bedroom, turning on sconces and spots or turning off all lights.",
"complexity": "medium"
}
},
{
"id": "a8b031db-937a-4b34-bd64-a30f51900ed0",
"result": {
"structured": "TRIGGER: When the temperature attribute of any of the following climate entities changes and remains stable for 5 seconds: heat pump climate [climate.heat_pump], basement hallway thermostat [climate.basement_hallway_thermostat], dining room thermostat [climate.dining_room_thermostat], guest bedroom thermostat [climate.guest_bedroom_thermostat], living room thermostat [climate.living_room_thermostat], lounge thermostat [climate.lounge_thermostat], master bedroom thermostat [climate.master_bedroom_thermostat], office thermostat [climate.office_thermostat], studio thermostat [climate.studio_thermostat]. CONDITIONS: The trigger condition is a template that evaluates to true if either the climate entity's preset_mode attribute is not 'none' OR the calculated target_setpoint (based on the related input_select and input_number entities) does not equal the current temperature setpoint (trigger.to_state.attributes.temperature). ACTIONS: Set the corresponding input_select entity (derived from the trigger entity name) to the 'Manual' option.",
"natural_language": {
"trigger": "When the temperature setting of any of the listed climate thermostats changes and stays at the new value for 5 seconds.",
"conditions": "If the thermostat is currently using a preset mode (i.e., its preset_mode is not 'none'), or if the calculated target temperature (based on the selected auto mode and its corresponding setpoint) differs from the thermostat's current temperature setpoint.",
"action": "Switch the corresponding room's mode selector to 'Manual' to indicate manual control is active."
},
"human_like": "Automatically switches a thermostat's control mode to 'Manual' when its temperature setting differs from the calculated target or when a preset is active, ensuring the system reflects manual overrides.",
"complexity": "medium"
}
},
{
"id": "0954c8e4-8429-4777-a8ba-4a1c99853ea2",
"result": {
"structured": "TRIGGER: When any of the following state changes occur: heat pump mode select [input_select.heat_pump_mode] OR basement hallway thermostat mode select [input_select.basement_hallway_thermostat_mode] OR dining room thermostat mode select [input_select.dining_room_thermostat_mode] OR guest bedroom thermostat mode select [input_select.guest_bedroom_thermostat_mode] OR living room thermostat mode select [input_select.living_room_thermostat_mode] OR lounge thermostat mode select [input_select.lounge_thermostat_mode] OR master bedroom thermostat mode select [input_select.master_bedroom_thermostat_mode] OR office thermostat mode select [input_select.office_thermostat_mode] OR studio thermostat mode select [input_select.studio_thermostat_mode] changes to 'Auto'. OR When any of the following state changes occur: heat pump auto mode select [input_select.heat_pump_auto_mode] OR basement hallway thermostat auto mode select [input_select.basement_hallway_thermostat_auto_mode] OR dining room thermostat auto mode select [input_select.dining_room_thermostat_auto_mode] OR guest bedroom thermostat auto mode select [input_select.guest_bedroom_thermostat_auto_mode] OR living room thermostat auto mode select [input_select.living_room_thermostat_auto_mode] OR lounge thermostat auto mode select [input_select.lounge_thermostat_auto_mode] OR master bedroom thermostat auto mode select [input_select.master_bedroom_thermostat_auto_mode] OR office thermostat auto mode select [input_select.office_thermostat_auto_mode] OR studio thermostat auto mode select [input_select.studio_thermostat_auto_mode] changes to 'null'. OR When any of the following state changes occur: heat pump comfort setpoint [input_number.heat_pump_comfort_setpoint] OR basement hallway thermostat comfort setpoint [input_number.basement_hallway_thermostat_comfort_setpoint] OR dining room thermostat comfort setpoint [input_number.dining_room_thermostat_comfort_setpoint] OR guest bedroom thermostat comfort setpoint [input_number.guest_bedroom_thermostat_comfort_setpoint] OR living room thermostat comfort setpoint [input_number.living_room_thermostat_comfort_setpoint] OR lounge thermostat comfort setpoint [input_number.lounge_thermostat_comfort_setpoint] OR master bedroom thermostat comfort setpoint [input_number.master_bedroom_thermostat_comfort_setpoint] OR office thermostat comfort setpoint [input_number.office_thermostat_comfort_setpoint] OR studio thermostat comfort setpoint [input_number.studio_thermostat_comfort_setpoint] changes to 'null' AND remains for 5 seconds. OR When any of the following state changes occur: heat pump eco setpoint [input_number.heat_pump_eco_setpoint] OR basement hallway thermostat eco setpoint [input_number.basement_hallway_thermostat_eco_setpoint] OR dining room thermostat eco setpoint [input_number.dining_room_thermostat_eco_setpoint] OR guest bedroom thermostat eco setpoint [input_number.guest_bedroom_thermostat_eco_setpoint] OR living room thermostat eco setpoint [input_number.living_room_thermostat_eco_setpoint] OR lounge thermostat eco setpoint [input_number.lounge_thermostat_eco_setpoint] OR master bedroom thermostat eco setpoint [input_number.master_bedroom_thermostat_eco_setpoint] OR office thermostat eco setpoint [input_number.office_thermostat_eco_setpoint] OR studio thermostat eco setpoint [input_number.studio_thermostat_eco_setpoint] changes to 'null' AND remains for 5 seconds. CONDITIONS: (The mode for the specific zone derived from the triggering entity is 'Auto') AND (The target temperature setpoint for that zone, based on its current auto mode, is different from its current climate temperature). ACTIONS: Set the temperature for the corresponding climate entity (derived from the triggering entity's name) to the calculated target setpoint.",
"natural_language": {
"trigger": "This automation triggers when any of several related input selects or input numbers change state. Specifically, it runs if a thermostat mode select for any zone (like the heat pump, basement hallway, dining room, etc.) is set to 'Auto'. It also triggers if the corresponding auto mode select for any zone changes to 'null'. Additionally, it triggers if a comfort setpoint number for any zone changes to 'null' and stays that way for 5 seconds, or if an eco setpoint number for any zone changes to 'null' and stays that way for 5 seconds.",
"conditions": "For the automation to proceed, the system checks conditions based on the specific zone that triggered it. It first determines the zone's name from the triggering entity. It then checks that the zone's overall mode is set to 'Auto'. Finally, it calculates the target temperature based on the zone's selected auto mode (like 'Comfort' or 'Eco') and compares it to the zone's current climate temperature. The action only runs if these two temperatures are different.",
"action": "The automation updates the temperature setpoint for the climate entity corresponding to the triggered zone. It sets the temperature to the newly calculated target value."
},
"human_like": "This automation automatically updates the temperature for any climate zone when its mode or setpoint settings are changed, ensuring the actual thermostat matches the desired comfort or eco setting.",
"complexity": "high"
}
},
{
"id": "330d72c1-954a-4d1e-a3e1-47412d134dc5",
"result": {
"structured": "TRIGGER: When any climate entity (referenced by *id001) changes state to any value that is NOT 'Auto'. CONDITIONS: None. ACTIONS: Start the timer entity whose ID is derived by replacing '_mode' with '_manual_mode_reset' in the triggering entity's object_id, with a duration equal to the current value of climate manual mode timer [input_datetime.climate_manual_mode_timer].",
"natural_language": {
"trigger": "When the mode of any climate entity changes to any setting other than 'Auto'.",
"conditions": "There are no conditions for this automation.",
"action": "Starts a timer. The specific timer to start is determined by taking the name of the climate entity that triggered the automation, replacing the text '_mode' with '_manual_mode_reset' in its internal identifier. This timer is set to run for the duration currently stored in the climate manual mode timer [input_datetime.climate_manual_mode_timer]."
},
"human_like": "Starts a countdown to automatically revert a climate system back to 'Auto' mode after it has been manually overridden.",
"complexity": "medium"
}
},
{
"id": "5c387ec4-b18b-4ec6-9174-8d844e7e88e9",
"result": {
"structured": "TRIGGER: When any of the following timers changes from active to idle: heat pump manual mode reset timer [timer.heat_pump_manual_mode_reset], basement hallway thermostat manual mode reset timer [timer.basement_hallway_thermostat_manual_mode_reset], dining room thermostat manual mode reset timer [timer.dining_room_thermostat_manual_mode_reset], guest bedroom thermostat manual mode reset timer [timer.guest_bedroom_thermostat_manual_mode_reset], living room thermostat manual mode reset timer [timer.living_room_thermostat_manual_mode_reset], lounge thermostat manual mode reset timer [timer.lounge_thermostat_manual_mode_reset], master bedroom thermostat manual mode reset timer [timer.master_bedroom_thermostat_manual_mode_reset], office thermostat manual mode reset timer [timer.office_thermostat_manual_mode_reset], studio thermostat manual mode reset timer [timer.studio_thermostat_manual_mode_reset]. CONDITIONS: climate scheduling enabled [input_boolean.climate_scheduling_enabled] is on. ACTIONS: Set the corresponding input_select entity (derived from the triggering timer's object_id by replacing '_manual_mode_reset' with '_mode') to the option 'Auto'.",
"natural_language": {
"trigger": "When any of the listed manual mode reset timers finishes its countdown, transitioning from an active state to an idle state.",
"conditions": "The climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch must be turned on.",
"action": "For the specific timer that triggered, the automation calculates the corresponding climate mode selector by removing the '_manual_mode_reset' suffix from the timer's name and adding '_mode', then sets that selector to the 'Auto' option."
},
"human_like": "Automatically returns a thermostat's mode to 'Auto' when its manual override timer expires, provided climate scheduling is enabled.",
"complexity": "medium"
}
},
{
"id": "2e58b9fa-1838-4c38-8b4a-d38b43c76105",
"result": {
"structured": "TRIGGER: When Home Assistant starts OR When climate scheduling enabled [input_boolean.climate_scheduling_enabled] changes from off to on. CONDITIONS: None. ACTIONS: For each item in the list referenced by *id002, if the state of the current item is 'idle', then set the corresponding input select entity (derived from the current item's object_id by replacing '_manual_mode_reset' with '_mode') to the 'Auto' option.",
"natural_language": {
"trigger": "The automation runs either when Home Assistant first starts up, or when the climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch is turned on.",
"conditions": "There are no conditions that must be met for the actions to run.",
"action": "For each climate-related timer or entity in a predefined list, if it is currently in an 'idle' state, the automation changes its associated climate mode selector to 'Auto'. This effectively resets any manual climate mode back to the automatic, managed setting."
},
"human_like": "Resets all climate zones back to automatic mode when scheduling is enabled or at system startup, provided their manual timers have expired.",
"complexity": "medium"
}
},
{
"id": "88b9562c-a5bf-4be6-bd7b-d3dfe109a816",
"result": {
"structured": "TRIGGER: When any of the following battery sensors reports a value below 0 after applying a template: basement bathroom multisensor battery [sensor.basement_bathroom_multisensor_battery], basement smoke co detector battery [sensor.basement_smoke_co_detector_battery], chris bedside remote battery [sensor.chris_bedside_remote_battery], drake battery [sensor.drake_battery], guest bedroom window sensor battery [sensor.guest_bedroom_window_sensor_battery], karine bedside remote battery [sensor.karine_bedside_remote_battery], kitchen door lock battery [sensor.kitchen_door_lock_battery], kitchen door sensor battery [sensor.kitchen_door_sensor_battery], kitchen sink leak sensor battery [sensor.kitchen_sink_leak_sensor_battery], living room door sensor battery [sensor.living_room_door_sensor_battery], living room remote battery [sensor.living_room_remote_battery], living room smoke co detector battery [sensor.living_room_smoke_co_detector_battery], laundry motion sensor battery [sensor.laundry_motion_sensor_battery], lounge airthings battery [sensor.lounge_airthings_battery], lounge window sensor battery [sensor.lounge_window_sensor_battery], main bathroom multisensor battery [sensor.main_bathroom_multisensor_battery], maitre doyle battery [sensor.maitre_doyle_battery], snicket battery [sensor.snicket_battery], spidy battery [sensor.spidy_battery], studio window sensor battery [sensor.studio_window_sensor_battery], ups battery status [sensor.ups_battery_status], viny battery [sensor.viny_battery], water heater leak sensor battery [sensor.water_heater_leak_sensor_battery], workshop motion sensor battery [sensor.workshop_motion_sensor_battery]. The template value is 100 if the sensor state is 'unknown' or 'unavailable', otherwise it is the integer state minus the entity's battery_warning_level attribute (default 25) minus 1. CONDITIONS: None. ACTIONS: Call python script notify [python_script.notify] with persistent notification, push target 'household', a tag based on the triggering entity, a title to replace the triggering entity's name, and a message suggesting a search for the battery type on Amazon if defined.",
"natural_language": {
"trigger": "When any of the listed battery sensors, such as the basement bathroom multisensor battery [sensor.basement_bathroom_multisensor_battery], basement smoke co detector battery [sensor.basement_smoke_co_detector_battery], and others, reports a value that falls below zero after a calculation. The calculation treats 'unknown' or 'unavailable' states as 100, otherwise it subtracts a device-specific warning level (default 25) and 1 from the reported battery level.",
"conditions": "There are no additional conditions; the automation runs whenever the trigger condition is met.",
"action": "Sends a persistent notification to the 'household' push target, tagged uniquely for the specific device. The notification includes a title prompting replacement of the low-battery device and, if the device has a defined battery type, a message suggesting a search for that battery type on Amazon with a direct link."
},
"human_like": "Sends a notification to the household when any monitored device's battery level falls below its warning threshold, helping to ensure timely battery replacements.",
"complexity": "medium"
}
},
{
"id": "994eba31-84de-4769-8958-f24b5346111a",
"result": {
"structured": "TRIGGER: When the problem attribute changes for drake plant [plant.drake] OR spidy plant [plant.spidy] OR viny plant [plant.viny]. CONDITIONS: None. ACTIONS: If the filtered list of issues is empty, send a persistent notification to the household via python script notify [python_script.notify] with audio enabled only if broadcast plant problems [input_boolean.broadcast_plant_problems] is on, using a tag to allow dismissal. Otherwise, send a persistent notification to the household via python script notify [python_script.notify] with audio enabled only if broadcast plant problems [input_boolean.broadcast_plant_problems] is on, including a title and a message listing the filtered issues (renamed: 'moisture low' to 'thirsty', 'moisture high' to 'drowning', 'temperature low' to 'cold', 'temperature high' to 'hot', 'conductivity low' to 'hungry', excluding 'unavailable', 'unknown', 'none', battery/brightness issues, and 'conductivity high').",
"natural_language": {
"trigger": "Whenever the 'problem' attribute changes for any of the monitored plants: drake plant [plant.drake], spidy plant [plant.spidy], or viny plant [plant.viny].",
"conditions": "There are no additional conditions that must be met for the automation to proceed.",
"action": "The automation processes the list of problems reported by the plant. It filters out generic or irrelevant issues like 'unavailable', 'unknown', 'none', battery or brightness warnings, and 'conductivity high'. It also renames certain problems to more user-friendly terms (e.g., 'moisture low' becomes 'thirsty'). If no relevant issues remain after filtering, it sends a silent, persistent notification to the household that can be dismissed, with audio playback only if the 'broadcast plant problems' [input_boolean.broadcast_plant_problems] switch is on. If there are relevant issues, it sends a similar notification but includes a title asking to check the plant and a message listing the issues in a natural sentence format."
},
"human_like": "Sends a smart notification about plant health issues, filtering out false alarms and translating sensor readings into plain English like 'thirsty' or 'cold'.",
"complexity": "medium"
}
},
{
"id": "91bb52da-440a-4082-a6f3-4e58253a51c8",
"result": {
"structured": "TRIGGER: When any of the following persons changes state to home: guest cava person [person.guest_cava] OR guest gipa person [person.guest_gipa] OR Guest Laboro [person.guest_laboro] OR Guest Stfr [person.guest_stfr] OR Guest Syvi [person.guest_syvi]. CONDITIONS: (Notify Individual Guest Arrivals [input_boolean.notify_individual_guest_arrivals] is on) OR (the count attribute of sensor.guests_home equals '1'). ACTIONS: Execute python script notify [python_script.notify] with persistent notification to household, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} is here', and message '{{ state_attr('sensor.guests_home', 'count') }} guests are home.'.",
"natural_language": {
"trigger": "When any of the tracked guest persons (guest cava person [person.guest_cava], guest gipa person [person.guest_gipa], Guest Laboro [person.guest_laboro], Guest Stfr [person.guest_stfr], or Guest Syvi [person.guest_syvi]) arrives home.",
"conditions": "If the option to notify individual guest arrivals is turned on via Notify Individual Guest Arrivals [input_boolean.notify_individual_guest_arrivals], or if the sensor tracking guests at home reports that exactly one guest is currently home.",
"action": "Sends a persistent notification to the household with a tag specific to the arriving guest, a title announcing their arrival, and a message stating the current total number of guests at home."
},
"human_like": "Notifies the household when a guest arrives home, either when individual notifications are enabled or when it's the first guest to arrive.",
"complexity": "medium"
}
},
{
"id": "33ae901e-24b8-4576-b876-4d2a87a7bd3b",
"result": {
"structured": "TRIGGER: When chris person [person.chris] OR karine person [person.karine] changes state to home. CONDITIONS: Notify Household Changes [input_boolean.notify_household_changes] is on. ACTIONS: Execute python script notify [python_script.notify] with data: push_target admin, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} arrived home.', message 'Household is {{ states_translated('group.household') }}.'.",
"natural_language": {
"trigger": "When either chris person [person.chris] or karine person [person.karine] arrives home.",
"conditions": "The notification feature must be enabled, meaning the Notify Household Changes [input_boolean.notify_household_changes] input boolean is turned on.",
"action": "Sends a notification to the admin push target using the python script notify [python_script.notify]. The notification includes a dynamic tag, a title stating which person arrived home, and a message showing the current household composition."
},
"human_like": "Sends a notification when Chris or Karine arrives home, but only if the household change notifications are enabled.",
"complexity": "low"
}
},
{
"id": "b3882bea-08d5-4c54-a076-092754457354",
"result": {
"structured": "TRIGGER: When any person entity in the group referenced by *id003 changes state from home. CONDITIONS: Notify Household Changes [input_boolean.notify_household_changes] is on. ACTIONS: Execute python script notify [python_script.notify] with data: push_target admin, tag presence_{{ trigger.to_state.object_id }}, title '{{ trigger.to_state.name }} left home.', message 'Household is {{ states_translated('group.household') }}.'.",
"natural_language": {
"trigger": "When a person tracked by the system changes their state from being at home.",
"conditions": "The automation only runs if the 'Notify Household Changes' [input_boolean.notify_household_changes] switch is turned on.",
"action": "Sends a notification to the admin via a Python script. The notification includes a custom tag, a title stating which person left home, and a message listing the current household status."
},
"human_like": "Sends a notification when a household member leaves home, but only if notification alerts are enabled.",
"complexity": "low"
}
},
{
"id": "fd33012e-1f9a-4205-8c29-3639015bd2ad",
"result": {
"structured": "TRIGGER: When Scheduled Climate Preset [sensor.scheduled_climate_preset] changes state to null OR when climate scheduling enabled [input_boolean.climate_scheduling_enabled] turns on. CONDITIONS: climate scheduling enabled [input_boolean.climate_scheduling_enabled] is on AND sensor.scheduled_climate_preset has a valid value. ACTIONS: Execute script.apply_scheduled_climate_preset.",
"natural_language": {
"trigger": "When the Scheduled Climate Preset [sensor.scheduled_climate_preset] changes to a null state, or when the climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch is turned on.",
"conditions": "The climate scheduling enabled [input_boolean.climate_scheduling_enabled] switch must be on, and the Scheduled Climate Preset [sensor.scheduled_climate_preset] sensor must have a valid, non-null value.",
"action": "Runs the script named apply_scheduled_climate_preset to apply the scheduled climate settings."
},
"human_like": "Applies a scheduled climate preset when scheduling is enabled and a valid preset is available.",
"complexity": "medium"
}
},
{
"id": "a179c0b0-9c03-4be6-9437-c2bd6c58e9b7",
"result": {
"structured": "TRIGGER: When a new device is detected on the network (event: device_tracker_new_device). CONDITIONS: None. ACTIONS: Execute the python script notify [python_script.notify] with parameters: push_target 'admin', persistent 'true', title 'New device detected on network', and message containing the event data.",
"natural_language": {
"trigger": "Whenever a new device is discovered on the home network, triggering a 'device_tracker_new_device' event.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "Sends a persistent notification to the admin user with the title 'New device detected on network' and a message containing the full data from the triggering event."
},
"human_like": "Sends an admin notification whenever a new device connects to the home network.",
"complexity": "low"
}
},
{
"id": "778a17bc-898a-43ca-a457-b42c5c32b193",
"result": {
"structured": "TRIGGER: When Network Media [switch.network_media] changes to any state (on or off) AND remains in that new state for 45 seconds. CONDITIONS: Notify Server Outages [input_boolean.notify_server_outages] is on. ACTIONS: Run python script notify [python_script.notify] with data: push_target=admin, tag=server_{{ trigger.to_state.object_id }}, title='{{ trigger.to_state.name }} server is {{ state }}line', url=/admin-infrastructure/network, push_data.entity_id={{ trigger.entity_id }}, push_actions: action=power_{{ state_action }}_server, title=Power {{ state_action }}, icon=/local/icons/power-plug-{{ state_action }}.png. (Variables: state = 'on' if trigger state is 'on' else 'off'; state_action = opposite of state).",
"natural_language": {
"trigger": "When the Network Media [switch.network_media] server changes its state to either on or off and remains in that new state for 45 seconds.",
"conditions": "The automation only runs if the Notify Server Outages [input_boolean.notify_server_outages] switch is turned on.",
"action": "Sends a notification to the admin user via a Python script. The notification includes a title indicating whether the server is online or offline, a link to the network admin page, and a quick action button to toggle the server's power state. The notification is tagged for easy management."
},
"human_like": "Sends an admin notification with a power toggle option when a server's state changes and remains stable for 45 seconds, provided outage notifications are enabled.",
"complexity": "medium"
}
},
{
"id": "ed45f4fc-3c90-456d-b499-516f568adf4e",
"result": {
"structured": "TRIGGER: When an html5_notification.clicked OR mobile_app_notification_action event occurs AND the event data includes an action property with the value 'power_on_server'. CONDITIONS: None. ACTIONS: Turn on the switch entity specified by the entity_id property within the data object of the triggering event.",
"natural_language": {
"trigger": "When a user clicks on an HTML5 notification or taps a mobile app notification action button, and that click or tap is specifically for the 'power_on_server' action.",
"conditions": "There are no additional conditions that need to be met for this automation to run.",
"action": "Turns on the specific switch whose entity ID is provided in the data of the notification event that triggered the automation."
},
"human_like": "Turns on a server when you click the 'power_on_server' button in a notification.",
"complexity": "low"
}
},
{
"id": "c4358eec-8328-4049-ba29-25438eb44fa6",
"result": {
"structured": "TRIGGER: When an HTML5 notification is clicked with action 'power_off_server' OR when a mobile app notification action is performed with action 'power_off_server'. CONDITIONS: None. ACTIONS: Turn off the switch entity specified by the entity_id contained in the notification event data.",
"natural_language": {
"trigger": "When a user clicks on an HTML5 notification or taps a mobile app notification action, specifically the one labeled 'power_off_server'.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Turns off the specific switch whose entity_id was provided in the data of the notification that was clicked."
},
"human_like": "Turns off a server when the user confirms the action by clicking a specific notification.",
"complexity": "low"
}
},
{
"id": "5cdf949f-e2e8-48b2-88c1-59f2c2f4fad2",
"result": {
"structured": "TRIGGER: When UPS Online Status [binary_sensor.ups_online_status] changes to off and remains off for 30 seconds. ACTIONS: 1. Send a persistent notification with a dynamic message and actions. The message includes: a status update on Managed Auxiliary Servers [switch.managed_auxialiary_servers] and, if Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on, a countdown of shutdown_minutes (2) minutes. The notification includes interactive actions 'Shutdown now' and 'Cancel' based on the states of Managed Auxiliary Servers [switch.managed_auxialiary_servers] and Power Outage Manage Devices [input_boolean.power_outage_manage_devices]. 2. CONDITION: Check if Managed Auxiliary Servers [switch.managed_auxialiary_servers] is on. If true, proceed. 3. WAIT for one of the following triggers: UPS Online Status [binary_sensor.ups_online_status] changes to on, OR a notification action 'power_outage_shutdown' is clicked, OR a notification action 'power_outage_cancel' is clicked. The wait times out after a duration defined by a template: if Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on, the timeout is shutdown_minutes (2) minutes; otherwise, it is 240 minutes. Continue execution after timeout. 4. CONDITION: Evaluate a template condition. The condition is true if UPS Online Status [binary_sensor.ups_online_status] is off AND ((the wait timed out AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is on) OR (the wait did not time out AND the triggered action was not 'power_outage_cancel')). 5. If the condition is true, execute: Turn off Network Media [switch.network_media]. 6. Send a final persistent notification stating auxiliary servers have been shutdown.",
"natural_language": {
"trigger": "The automation starts when the UPS Online Status [binary_sensor.ups_online_status] indicates a power outage by turning off and staying off for 30 seconds.",
"conditions": "After the trigger, the automation checks if the Managed Auxiliary Servers [switch.managed_auxialiary_servers] are currently turned on. If they are, it proceeds to wait for one of three events: the UPS status returning to online, a user clicking the 'Shutdown now' button in the notification, or a user clicking the 'Cancel' button in the notification. This wait period lasts for 2 minutes if automatic device management is enabled via Power Outage Manage Devices [input_boolean.power_outage_manage_devices], otherwise it waits for 4 hours. After the wait, a final condition is evaluated. The shutdown proceeds only if the UPS is still offline and either the wait timed out while automatic management was enabled, or a user explicitly triggered the 'Shutdown now' action (and not 'Cancel').",
"action": "Initially, a detailed notification is sent to the household with the power outage status and interactive options. If the final conditions are met, the automation turns off the Network Media [switch.network_media] switch and sends a follow-up notification confirming the shutdown."
},
"human_like": "Manages auxiliary servers during a power outage by sending alerts and, based on user interaction or a timer, safely shutting down network equipment.",
"complexity": "high"
}
},
{
"id": "37c346a4-c34f-40bf-9ad9-d34407afc29c",
"result": {
"structured": "TRIGGER: When UPS Online Status [binary_sensor.ups_online_status] changes to 'on' AND remains for 60 seconds OR when Home Assistant starts. CONDITIONS: UPS Online Status [binary_sensor.ups_online_status] is 'on' AND remains for 60 seconds. ACTIONS: 1. Execute python script notify [python_script.notify] with a custom message. 2. Check if Managed Auxiliary Servers [switch.managed_auxialiary_servers] is 'off' AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is 'on'. 3. Wait for either UPS Online Status [binary_sensor.ups_online_status] to change to 'off' OR for a notification action 'power_restored_cancel' to be clicked, with a timeout of {{ power_on_minutes }} minutes. 4. If the wait times out AND UPS Online Status [binary_sensor.ups_online_status] is 'on' AND Power Outage Manage Devices [input_boolean.power_outage_manage_devices] is 'on', then turn on Network Media [switch.network_media].",
"natural_language": {
"trigger": "The automation triggers when the UPS Online Status [binary_sensor.ups_online_status] reports that power is restored (turns on) and stays on for 60 seconds, or when Home Assistant itself starts up.",
"conditions": "It requires that the UPS Online Status [binary_sensor.ups_online_status] is confirmed to be on and stable for 60 seconds.",
"action": "First, it sends a detailed notification via the python script notify [python_script.notify], informing the household that power has been restored and providing status about auxiliary servers. Then, if the Managed Auxiliary Servers [switch.managed_auxialiary_servers] are off and the Power Outage Manage Devices [input_boolean.power_outage_manage_devices] setting is enabled, it waits for a user cancellation or for the UPS to go offline again. If neither happens within a configurable time (default 2 minutes), and power is still on and device management is enabled, it automatically turns on the Network Media [switch.network_media] switch."
},
"human_like": "Notifies the household when power is restored after an outage and can automatically power on network media devices after a delay, unless cancelled.",
"complexity": "high"
}
},
{
"id": "dc44848a-cdb1-4b0b-bd76-711a2f81e4b2",
"result": {
"structured": "TRIGGER: When Chris Pixel 6 Last Notification [sensor.chris_pixel_6_last_notification] changes state to a null value. CONDITIONS: (Winter Credit Enabled [binary_sensor.winter_credit_enabled] is on) AND (The notification's package attribute equals 'com.hydroquebec.mf_android') AND (The notification's text attribute contains the phrase 'Winter Credit Option:') AND (The notification's text attribute does NOT contain the phrase 'Reminder.'). ACTIONS: Parse the notification text to find date and time patterns. If no patterns are found or the parsing count does not match the expected number of events, create a persistent notification with an error message. Otherwise, for each parsed event, create a calendar entry in Climate Exceptions [calendar.climate_exceptions] with a preset summary, the original text as a description, and calculated start and end times. Specifically, for each peak event period, create three consecutive calendar events: a 'Boost' preset for 90 minutes before the event, a 'Winter Credit: Peak Event' preset for the event duration, and another 'Boost' preset for 90 minutes after the event.",
"natural_language": {
"trigger": "When a new notification is received on the Chris Pixel 6 Last Notification [sensor.chris_pixel_6_last_notification] sensor.",
"conditions": "The Winter Credit Enabled [binary_sensor.winter_credit_enabled] must be turned on. The notification must be from the Hydro-Québec app (package 'com.hydroquebec.mf_android'). The notification text must contain the phrase 'Winter Credit Option:' and must not contain the word 'Reminder.'.",
"action": "The automation extracts date and time information from the notification text. If it fails to parse the information correctly, it creates an error notification for debugging. If successful, it creates a series of events in the Climate Exceptions [calendar.climate_exceptions] calendar. For each peak electricity period mentioned, it schedules a 'Winter Credit: Peak Event' for the duration of the peak, and surrounds it with 'Boost' periods 90 minutes before and after the event."
},
"human_like": "Automatically schedules heating adjustments in the calendar when a Hydro-Québec winter credit peak event notification is received, adding boost periods before and after the event.",
"complexity": "high"
}
},
{
"id": "automation.detect_dead_zwave_nodes",
"result": {
"structured": "TRIGGER: When any of the 52 listed node status sensors changes from 'alive' to 'dead' AND remains 'dead' for 60 seconds, OR when any of the same 52 sensors changes from 'dead' to 'alive'. CONDITIONS: None. ACTIONS: Execute the python script notify [python_script.notify] with a persistent notification sent to the admin push target. The notification includes a title formatted as '☠️ [Device Name] is dead', where the device name is derived from the triggering entity's name. The notification is tagged with the triggering entity's ID and includes a dismiss flag set to 'false' for a dead state transition and 'true' for an alive state transition.",
"natural_language": {
"trigger": "The automation triggers in two scenarios. First, if any one of the 52 Z-Wave node status sensors, such as Backyard Outlet Node Status [sensor.backyard_outlet_node_status] or Basement Bathroom Fan Switch Node Status [sensor.basement_bathroom_fan_switch_node_status], changes its state from 'alive' to 'dead' and stays in the 'dead' state for a full minute. Second, if any of those same sensors changes its state from 'dead' back to 'alive'.",
"conditions": "There are no conditions that must be met for the action to run; the automation proceeds immediately upon a valid trigger.",
"action": "Sends a persistent push notification to the system administrator. The notification's title indicates which device node has died (e.g., '☠️ Backyard Outlet is dead'), using a cleaned-up version of the sensor's name. If the node came back alive, the notification includes a flag allowing it to be dismissed."
},
"human_like": "Monitors all Z-Wave devices in the home and sends an alert if any of them stop responding or come back online.",
"complexity": "medium"
}
}
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,312 @@
{
"missing": [],
"added": [
"esphome.ground_floor_heat_pump_set_remote_temperature",
"esphome.ground_floor_heat_pump_use_internal_temperature",
"input_datetime.broadcast_weekday_end",
"input_datetime.broadcast_weekday_start",
"input_datetime.broadcast_weekend_end",
"input_datetime.broadcast_weekend_start",
"input_datetime.evening_ambiance_end",
"notify.send_message",
"python_script.notify",
"script.bedtime",
"script.evening_ambiance",
"script.everything_off",
"script.initialize_alarm_states",
"script.manage_broadcast_queue"
],
"used_entities": [
"binary_sensor.guest_mode",
"binary_sensor.intrusion_activity",
"binary_sensor.kitchen_door_lock_jammed",
"binary_sensor.master_bed_occupied_both",
"binary_sensor.master_bed_occupied_chris",
"binary_sensor.master_bed_occupied_karine",
"binary_sensor.presence_armed",
"binary_sensor.ups_online_status",
"binary_sensor.use_alarm_theme",
"binary_sensor.use_dark_theme",
"binary_sensor.winter_credit_enabled",
"binary_sensor.winter_credit_peak_event",
"calendar.climate_exceptions",
"climate.basement_hallway_thermostat",
"climate.dining_room_thermostat",
"climate.guest_bedroom_thermostat",
"climate.heat_pump",
"climate.living_room_thermostat",
"climate.lounge_thermostat",
"climate.master_bedroom_thermostat",
"climate.office_thermostat",
"climate.studio_thermostat",
"event.backyard_soffit_spots_dimmer_off_pressed",
"event.backyard_soffit_spots_dimmer_on_pressed",
"event.basement_bathroom_fan_switch_off_pressed",
"event.basement_bathroom_fan_switch_on_pressed",
"event.basement_bathroom_light_switch_off_pressed",
"event.basement_bathroom_light_switch_on_pressed",
"event.basement_bathroom_vanity_dimmer_off_pressed",
"event.basement_bathroom_vanity_dimmer_on_pressed",
"event.basement_hallway_dimmer_off_pressed",
"event.basement_hallway_dimmer_on_pressed",
"event.bookshelf_light_switch_off_pressed",
"event.bookshelf_light_switch_on_pressed",
"event.dining_room_light_dimmer_off_pressed",
"event.dining_room_light_dimmer_on_pressed",
"event.downstairs_light_switch_off_pressed",
"event.downstairs_light_switch_on_pressed",
"event.foyer_light_switch_off_pressed",
"event.foyer_light_switch_on_pressed",
"event.front_porch_light_switch_off_pressed",
"event.front_porch_light_switch_on_pressed",
"event.guest_bedroom_closet_light_switch_off_pressed",
"event.guest_bedroom_closet_light_switch_on_pressed",
"event.guest_bedroom_spots_dimmer_off_pressed",
"event.guest_bedroom_spots_dimmer_on_pressed",
"event.hallway_spots_dimmer_off_pressed",
"event.hallway_spots_dimmer_on_pressed",
"event.jinja2_custom_templates_updated",
"event.kitchen_sink_light_switch_off_pressed",
"event.kitchen_sink_light_switch_on_pressed",
"event.kitchen_track_light_dimmer_off_pressed",
"event.kitchen_track_light_dimmer_on_pressed",
"event.laundry_dimmer_off_pressed",
"event.laundry_dimmer_on_pressed",
"event.living_room_dimmer_off_pressed",
"event.living_room_dimmer_on_pressed",
"event.lounge_dimmer_off_pressed",
"event.lounge_dimmer_on_pressed",
"event.main_bathroom_dimmer_off_pressed",
"event.main_bathroom_dimmer_on_pressed",
"event.main_bathroom_fan_switch_off_pressed",
"event.main_bathroom_fan_switch_on_pressed",
"event.main_bathroom_vanity_light_switch_off_pressed",
"event.main_bathroom_vanity_light_switch_on_pressed",
"event.master_bedroom_closet_light_switch_off_pressed",
"event.master_bedroom_closet_light_switch_on_pressed",
"event.master_bedroom_sconces_dimmer_off_pressed",
"event.master_bedroom_sconces_dimmer_on_pressed",
"event.master_bedroom_spots_dimmer_off_pressed",
"event.master_bedroom_spots_dimmer_on_pressed",
"event.office_spots_dimmer_off_pressed",
"event.office_spots_dimmer_on_pressed",
"event.shed_light_switch_off_pressed",
"event.shed_light_switch_on_pressed",
"event.shed_outdoor_light_switch_off_pressed",
"event.shed_outdoor_light_switch_on_pressed",
"event.side_porch_sconce_dimmer_off_pressed",
"event.side_porch_sconce_dimmer_on_pressed",
"event.staircase_dimmer_off_pressed",
"event.staircase_dimmer_on_pressed",
"event.studio_panel_light_switch_off_pressed",
"event.studio_panel_light_switch_on_pressed",
"event.studio_spots_dimmer_off_pressed",
"event.studio_spots_dimmer_on_pressed",
"event.workshop_light_switch_off_pressed",
"event.workshop_light_switch_on_pressed",
"group.guests",
"group.household",
"input_boolean.automatic_night_theme",
"input_boolean.broadcast_plant_problems",
"input_boolean.climate_scheduling_enabled",
"input_boolean.notify_household_changes",
"input_boolean.notify_individual_guest_arrivals",
"input_boolean.notify_server_outages",
"input_boolean.power_outage_manage_devices",
"input_boolean.silence_intrusion_alarm",
"input_boolean.use_heat_pump_virtual_probe",
"input_datetime.climate_manual_mode_timer",
"input_number.basement_hallway_thermostat_comfort_setpoint",
"input_number.basement_hallway_thermostat_eco_setpoint",
"input_number.dining_room_thermostat_comfort_setpoint",
"input_number.dining_room_thermostat_eco_setpoint",
"input_number.guest_bedroom_thermostat_comfort_setpoint",
"input_number.guest_bedroom_thermostat_eco_setpoint",
"input_number.heat_pump_comfort_setpoint",
"input_number.heat_pump_eco_setpoint",
"input_number.living_room_thermostat_comfort_setpoint",
"input_number.living_room_thermostat_eco_setpoint",
"input_number.lounge_thermostat_comfort_setpoint",
"input_number.lounge_thermostat_eco_setpoint",
"input_number.master_bedroom_thermostat_comfort_setpoint",
"input_number.master_bedroom_thermostat_eco_setpoint",
"input_number.office_thermostat_comfort_setpoint",
"input_number.office_thermostat_eco_setpoint",
"input_number.studio_thermostat_comfort_setpoint",
"input_number.studio_thermostat_eco_setpoint",
"input_select.basement_hallway_thermostat_auto_mode",
"input_select.basement_hallway_thermostat_mode",
"input_select.chris_remote_color",
"input_select.chris_remote_entity",
"input_select.day_theme",
"input_select.default_theme",
"input_select.dining_room_thermostat_auto_mode",
"input_select.dining_room_thermostat_mode",
"input_select.guest_bedroom_thermostat_auto_mode",
"input_select.guest_bedroom_thermostat_mode",
"input_select.heat_pump_auto_mode",
"input_select.heat_pump_mode",
"input_select.karine_remote_color",
"input_select.karine_remote_entity",
"input_select.living_room_thermostat_auto_mode",
"input_select.living_room_thermostat_mode",
"input_select.lounge_thermostat_auto_mode",
"input_select.lounge_thermostat_mode",
"input_select.master_bedroom_thermostat_auto_mode",
"input_select.master_bedroom_thermostat_mode",
"input_select.night_theme",
"input_select.office_thermostat_auto_mode",
"input_select.office_thermostat_mode",
"input_select.studio_thermostat_auto_mode",
"input_select.studio_thermostat_mode",
"input_text.presence_armed_id",
"light.backyard_string",
"light.bedside_chris",
"light.bedside_karine",
"light.front_porch",
"light.master_bedroom_lights",
"light.master_bedroom_sconces",
"light.master_bedroom_spots",
"light.outdoor_lights",
"light.shed_outdoor",
"light.side_porch_sconce",
"lock.kitchen_door",
"notify.intrusion_log",
"person.chris",
"person.guest_cava",
"person.guest_gipa",
"person.guest_laboro",
"person.guest_stfr",
"person.guest_syvi",
"person.karine",
"plant.drake",
"plant.spidy",
"plant.viny",
"script.broadcast_notification",
"sensor.backyard_outlet_node_status",
"sensor.backyard_soffit_spots_dimmer_node_status",
"sensor.basement_bathroom_fan_switch_node_status",
"sensor.basement_bathroom_light_switch_node_status",
"sensor.basement_bathroom_multisensor_battery",
"sensor.basement_bathroom_multisensor_node_status",
"sensor.basement_bathroom_vanity_dimmer_node_status",
"sensor.basement_hallway_dimmer_node_status",
"sensor.basement_hallway_thermostat_node_status",
"sensor.basement_smoke_co_detector_battery",
"sensor.basement_smoke_co_detector_node_status",
"sensor.bookshelf_light_switch_node_status",
"sensor.chris_bedside_remote_battery",
"sensor.chris_pixel_6_last_notification",
"sensor.current_door",
"sensor.current_home_assistant_version",
"sensor.current_motion",
"sensor.current_window",
"sensor.dining_room_light_dimmer_node_status",
"sensor.dining_room_thermostat_node_status",
"sensor.downstairs_light_switch_node_status",
"sensor.drake_battery",
"sensor.front_porch_light_switch_node_status",
"sensor.guest_bedroom_closet_light_switch_node_status",
"sensor.guest_bedroom_dimmer_node_status",
"sensor.guest_bedroom_thermostat_node_status",
"sensor.guest_bedroom_window_sensor_battery",
"sensor.guest_bedroom_window_sensor_node_status",
"sensor.hallway_spots_dimmer_node_status",
"sensor.heat_pump_virtual_probe",
"sensor.karine_bedside_remote_battery",
"sensor.kitchen_door_lock_battery",
"sensor.kitchen_door_lock_node_status",
"sensor.kitchen_door_sensor_battery",
"sensor.kitchen_door_sensor_node_status",
"sensor.kitchen_sink_leak_sensor_battery",
"sensor.kitchen_sink_leak_sensor_node_status",
"sensor.kitchen_sink_light_switch_node_status",
"sensor.kitchen_track_light_dimmer_node_status",
"sensor.latest_home_assistant_version",
"sensor.laundry_dimmer_node_status",
"sensor.laundry_motion_sensor_battery",
"sensor.laundry_motion_sensor_node_status",
"sensor.living_room_couch_outlet_node_status",
"sensor.living_room_door_sensor_battery",
"sensor.living_room_door_sensor_node_status",
"sensor.living_room_remote_battery",
"sensor.living_room_remote_node_status",
"sensor.living_room_smoke_co_detector_battery",
"sensor.living_room_smoke_co_detector_node_status",
"sensor.living_room_thermostat_node_status",
"sensor.lounge_airthings_battery",
"sensor.lounge_dimmer_node_status",
"sensor.lounge_thermostat_node_status",
"sensor.lounge_window_sensor_battery",
"sensor.lounge_window_sensor_node_status",
"sensor.lydia_power_strip_node_status",
"sensor.main_bathroom_dimmer_node_status",
"sensor.main_bathroom_fan_switch_node_status",
"sensor.main_bathroom_multisensor_battery",
"sensor.main_bathroom_multisensor_node_status",
"sensor.main_bathroom_vanity_light_switch_node_status",
"sensor.main_water_shut_off_valve_node_status",
"sensor.maitre_doyle_battery",
"sensor.master_bedroom_closet_light_switch_node_status",
"sensor.master_bedroom_sconces_switch_node_status",
"sensor.master_bedroom_spots_switch_node_status",
"sensor.master_bedroom_thermostat_node_status",
"sensor.office_lamp_node_status",
"sensor.office_spots_dimmer_node_status",
"sensor.office_thermostat_node_status",
"sensor.scheduled_climate_preset",
"sensor.shed_light_switch_node_status",
"sensor.shed_outdoor_light_switch_node_status",
"sensor.side_porch_sconce_dimmer_node_status",
"sensor.snicket_battery",
"sensor.spidy_battery",
"sensor.staircase_dimmer_node_status",
"sensor.studio_dimmer_node_status",
"sensor.studio_thermostat_node_status",
"sensor.studio_window_sensor_battery",
"sensor.studio_window_sensor_node_status",
"sensor.ups_battery_status",
"sensor.viny_battery",
"sensor.washing_machine_leak_sensor_node_status",
"sensor.water_heater_leak_sensor_battery",
"sensor.water_heater_leak_sensor_node_status",
"sensor.water_heater_switch_node_status",
"sensor.workshop_light_switch_node_status",
"sensor.workshop_motion_sensor_battery",
"sensor.workshop_motion_sensor_node_status",
"sun.sun",
"switch.managed_auxialiary_servers",
"switch.network_media",
"timer.basement_hallway_thermostat_manual_mode_reset",
"timer.dining_room_thermostat_manual_mode_reset",
"timer.guest_bedroom_thermostat_manual_mode_reset",
"timer.heat_pump_manual_mode_reset",
"timer.living_room_thermostat_manual_mode_reset",
"timer.lounge_thermostat_manual_mode_reset",
"timer.master_bedroom_thermostat_manual_mode_reset",
"timer.office_thermostat_manual_mode_reset",
"timer.studio_thermostat_manual_mode_reset",
"todo.audio_broadcast",
"todo.intrusion_record"
],
"used_devices": [],
"template_entities": [
"binary_sensor.ups_online_status",
"binary_sensor.use_alarm_theme",
"binary_sensor.use_dark_theme",
"binary_sensor.winter_credit_enabled",
"binary_sensor.winter_credit_peak_event",
"input_boolean.broadcast_plant_problems",
"input_boolean.notify_individual_guest_arrivals",
"input_boolean.power_outage_manage_devices",
"input_datetime.climate_manual_mode_timer",
"input_select.chris_remote_entity",
"input_select.default_theme",
"input_select.karine_remote_entity",
"input_text.presence_armed_id",
"script.broadcast_notification",
"sensor.current_home_assistant_version",
"sensor.heat_pump_virtual_probe",
"switch.managed_auxialiary_servers"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "Chris-V",
"prompt_tokens": 124110,
"completion_tokens": 18769,
"total_tokens": 142879
}

View File

@ -0,0 +1,20 @@
[
{
"name": "G5 bullet motion sensor",
"room": null,
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.g5_bullet_motion",
"device_id": null
}
},
{
"name": "mobile app your device",
"room": null,
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_your_device",
"device_id": null
}
}
]

View File

@ -0,0 +1,19 @@
- alias: 'Security: Camera Motion Notification'
description: Sends a notification with video upon motion detection.
triggers:
- entity_id:
- binary_sensor.g5_bullet_motion
trigger: state
from: 'on'
to: 'off'
actions:
- data:
message: Motion detected at Camera XXX
data:
image: /api/unifiprotect/thumbnail/{{ config_entry_id(trigger.entity_id) }}/{{
trigger.from_state.attributes.event_id }}
video: /api/unifiprotect/video/{{ config_entry_id(trigger.entity_id) }}/{{
trigger.from_state.attributes.event_id }}
action: notify.mobile_app_your_device
mode: single
max_exceeded: silent

View File

@ -0,0 +1,15 @@
[
{
"id": "'Security: Camera Motion Notification'",
"result": {
"structured": "TRIGGER: When G5 bullet motion sensor [binary_sensor.g5_bullet_motion] changes from motion detected (on) to no motion (off). CONDITIONS: None. ACTIONS: Send a notification via mobile app your device [notify.mobile_app_your_device] with the message 'Motion detected at Camera XXX', including an image and video thumbnail from the motion event.",
"natural_language": {
"trigger": "When the G5 bullet motion sensor [binary_sensor.g5_bullet_motion] stops detecting motion, changing its state from 'on' to 'off'.",
"conditions": "There are no conditions that must be met for this automation to proceed.",
"action": "Sends a push notification to the user's mobile device via mobile app your device [notify.mobile_app_your_device]. The notification contains the message 'Motion detected at Camera XXX' and includes an image and a video clip of the event that just ended."
},
"human_like": "Sends a mobile notification with a video clip when motion is no longer detected by the security camera, alerting the user to recent activity.",
"complexity": "low"
}
}
]

View File

@ -0,0 +1,26 @@
[
{
"id": "'Security: Camera Motion Notification'",
"automation": "- alias: 'Security: Camera Motion Notification'\n description: Sends a notification with video upon motion detection.\n triggers:\n - entity_id:\n - binary_sensor.g5_bullet_motion\n trigger: state\n from: 'on'\n to: 'off'\n actions:\n - data:\n message: Motion detected at Camera XXX\n data:\n image: /api/unifiprotect/thumbnail/{{ config_entry_id(trigger.entity_id) }}/{{\n trigger.from_state.attributes.event_id }}\n video: /api/unifiprotect/video/{{ config_entry_id(trigger.entity_id) }}/{{\n trigger.from_state.attributes.event_id }}\n action: notify.mobile_app_your_device\n mode: single\n max_exceeded: silent",
"config": [
{
"name": "G5 bullet motion sensor",
"room": null,
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.g5_bullet_motion",
"device_id": null
}
},
{
"name": "mobile app your device",
"room": null,
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_your_device",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,11 @@
{
"missing": [],
"added": [
"notify.mobile_app_your_device"
],
"used_entities": [
"binary_sensor.g5_bullet_motion"
],
"used_devices": [],
"template_entities": []
}

View File

@ -0,0 +1,6 @@
{
"user": "D-Jeffrey",
"prompt_tokens": 1986,
"completion_tokens": 258,
"total_tokens": 2244
}

View File

@ -0,0 +1,20 @@
[
{
"name": "PC Bluetooth Connection",
"room": "office",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.pc_bluetooth_connection",
"device_id": null
}
},
{
"name": "Notify Me Script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.notify_me",
"device_id": null
}
}
]

View File

@ -0,0 +1,54 @@
- alias: Bluetooth Low Battery Notification
description: Sends a notification when a bluetooth device battery level falls below
40%
triggers:
- trigger: state
entity_id:
- binary_sensor.pc_bluetooth_connection
attribute: devices
actions:
- variables:
devices_below_threshold: "{% set result = namespace(value=[]) %} {% set from_devices\
\ = trigger.from_state.attributes.devices or [] %} {% set to_devices = trigger.to_state.attributes.devices\
\ or [] %}\n{% for to_device in to_devices %}\n {% set from_device = (from_devices\
\ | selectattr('name', 'equalto', to_device.name) | list | first) %}\n {%\
\ if to_device.battery is defined and to_device.battery | int < 40 %}\n \
\ {% if from_device is not none and from_device.battery is defined %}\n \
\ {% if from_device.battery | int >= 40 %}\n {% set result.value\
\ = result.value + [to_device] %}\n {% endif %}\n {% endif %}\n {%\
\ endif %}\n{% endfor %} {{ result.value }}\n"
- condition: template
value_template: '{{ devices_below_threshold | length > 0 }}'
- repeat:
for_each: '{{ devices_below_threshold }}'
sequence:
- data:
volume_level: 0.8
title: Low Battery Alert
message: '{{ repeat.item.name }}''s battery is at {{ repeat.item.battery
}}%'
notification_data:
tags: battery
action: script.notify_me
mode: single
- alias: PC Bluetooth Monitor Webhook
description: ''
triggers:
- trigger: webhook
allowed_methods:
- POST
- PUT
local_only: true
webhook_id: bluetooth_monitor
conditions: []
actions:
- action: python_script.set_state
data:
entity_id: binary_sensor.pc_bluetooth_connection
state: '{{ ''on'' if trigger.json.bluetooth_connected == True else ''off''}}
'
last_updated: '{{ trigger.json.timestamp }}'
device_count: '{{ trigger.json.devices | length }}'
devices: '{{ trigger.json.devices }}'
mode: single

View File

@ -0,0 +1,28 @@
[
{
"id": "Bluetooth Low Battery Notification",
"result": {
"structured": "TRIGGER: When the devices attribute of PC Bluetooth Connection [binary_sensor.pc_bluetooth_connection] changes state. CONDITIONS: The template condition evaluates to true, meaning the variable devices_below_threshold contains at least one device. ACTIONS: For each device in the devices_below_threshold list, run the Notify Me Script [script.notify_me] with a notification title 'Low Battery Alert' and a message stating the device's name and battery percentage.",
"natural_language": {
"trigger": "Whenever the list of connected devices reported by the PC Bluetooth Connection [binary_sensor.pc_bluetooth_connection] changes.",
"conditions": "The automation checks if the custom variable 'devices_below_threshold' contains any devices. This variable is computed by the automation's first action: it compares the new and old lists of devices from the trigger, and only includes devices whose battery level has just dropped below 40%.",
"action": "For each device identified as having a newly low battery, it sends a notification using the Notify Me Script [script.notify_me]. The notification will have a title 'Low Battery Alert' and a message specifying the device's name and its current battery percentage."
},
"human_like": "Sends a notification when a Bluetooth device's battery level falls below 40%.",
"complexity": "medium"
}
},
{
"id": "PC Bluetooth Monitor Webhook",
"result": {
"structured": "TRIGGER: When a webhook with ID 'bluetooth_monitor' is received via POST or PUT method, restricted to local network only. CONDITIONS: None. ACTIONS: Execute python_script.set_state to update PC Bluetooth Connection [binary_sensor.pc_bluetooth_connection] with state 'on' if trigger.json.bluetooth_connected is True, otherwise 'off'. Also set the entity's last_updated attribute to trigger.json.timestamp, device_count to the length of trigger.json.devices, and devices to trigger.json.devices.",
"natural_language": {
"trigger": "When a specific webhook request, identified by 'bluetooth_monitor', is sent to Home Assistant from the local network using either the POST or PUT method.",
"conditions": "There are no conditions that must be met.",
"action": "Updates the PC Bluetooth Connection [binary_sensor.pc_bluetooth_connection] sensor. It sets the sensor's state to 'on' if the webhook data indicates a Bluetooth connection is active, or 'off' if not. It also records the timestamp from the webhook, the number of connected devices, and the list of devices themselves as attributes of the sensor."
},
"human_like": "Updates a sensor to show whether a PC is connected to Bluetooth devices whenever a local webhook is received.",
"complexity": "low"
}
}
]

View File

@ -0,0 +1,41 @@
[
{
"id": "Bluetooth Low Battery Notification",
"automation": "- alias: Bluetooth Low Battery Notification\n description: Sends a notification when a bluetooth device battery level falls below\n 40%\n triggers:\n - trigger: state\n entity_id:\n - binary_sensor.pc_bluetooth_connection\n attribute: devices\n actions:\n - variables:\n devices_below_threshold: \"{% set result = namespace(value=[]) %} {% set from_devices\\\n \\ = trigger.from_state.attributes.devices or [] %} {% set to_devices = trigger.to_state.attributes.devices\\\n \\ or [] %}\\n{% for to_device in to_devices %}\\n {% set from_device = (from_devices\\\n \\ | selectattr('name', 'equalto', to_device.name) | list | first) %}\\n {%\\\n \\ if to_device.battery is defined and to_device.battery | int < 40 %}\\n \\\n \\ {% if from_device is not none and from_device.battery is defined %}\\n \\\n \\ {% if from_device.battery | int >= 40 %}\\n {% set result.value\\\n \\ = result.value + [to_device] %}\\n {% endif %}\\n {% endif %}\\n {%\\\n \\ endif %}\\n{% endfor %} {{ result.value }}\\n\"\n - condition: template\n value_template: '{{ devices_below_threshold | length > 0 }}'\n - repeat:\n for_each: '{{ devices_below_threshold }}'\n sequence:\n - data:\n volume_level: 0.8\n title: Low Battery Alert\n message: '{{ repeat.item.name }}''s battery is at {{ repeat.item.battery\n }}%'\n notification_data:\n tags: battery\n action: script.notify_me\n mode: single",
"config": [
{
"name": "PC Bluetooth Connection",
"room": "office",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.pc_bluetooth_connection",
"device_id": null
}
},
{
"name": "Notify Me Script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.notify_me",
"device_id": null
}
}
]
},
{
"id": "PC Bluetooth Monitor Webhook",
"automation": "- alias: PC Bluetooth Monitor Webhook\n description: ''\n triggers:\n - trigger: webhook\n allowed_methods:\n - POST\n - PUT\n local_only: true\n webhook_id: bluetooth_monitor\n conditions: []\n actions:\n - action: python_script.set_state\n data:\n entity_id: binary_sensor.pc_bluetooth_connection\n state: '{{ ''on'' if trigger.json.bluetooth_connected == True else ''off''}}\n\n '\n last_updated: '{{ trigger.json.timestamp }}'\n device_count: '{{ trigger.json.devices | length }}'\n devices: '{{ trigger.json.devices }}'\n mode: single",
"config": [
{
"name": "PC Bluetooth Connection",
"room": "office",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.pc_bluetooth_connection",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,11 @@
{
"missing": [],
"added": [
"script.notify_me"
],
"used_entities": [
"binary_sensor.pc_bluetooth_connection"
],
"used_devices": [],
"template_entities": []
}

6
D3SOX/token-summary.json Normal file
View File

@ -0,0 +1,6 @@
{
"user": "D3SOX",
"prompt_tokens": 4111,
"completion_tokens": 594,
"total_tokens": 4705
}

1829
DJBenson/DJBenson.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,254 @@
{
"missing": [],
"added": [
"binary_sensor.bathroom_binary_sensors",
"binary_sensor.door_contact_contact",
"input_boolean.bathroom_occupancy_helper",
"input_boolean.dishwasher_automation_self_trigger",
"input_boolean.dishwasher_job_cycle",
"input_boolean.dryer_automation_self_trigger",
"input_boolean.washing_machine_automation_self_trigger",
"input_boolean.washing_machine_job_cycle",
"input_datetime.bathroom_last_motion",
"input_datetime.bathroom_night_end",
"input_datetime.bathroom_night_start",
"input_datetime.heating_automation_end_time",
"input_datetime.heating_automation_start_time",
"input_datetime.kids_lights_off_weekday",
"input_datetime.kids_lights_off_weekend",
"input_datetime.kids_lights_out",
"input_datetime.master_bedroom_lights_off_am",
"input_datetime.octopus_go_off_peak_end",
"input_datetime.octopus_go_off_peak_start",
"input_datetime.start_of_kids_bedtime",
"input_datetime.synology_nas_shut_down_time",
"input_datetime.synology_nas_start_time",
"input_number.heating_automation_minimum_internal_temperature",
"light.ikea_led2035g10_landing",
"light.ikea_tradfri_led2035g10",
"sensor.dishwasher_energy_power",
"sensor.lumi_lumi_sen_ill_mgl01_illuminance",
"sensor.tasmota_energy_power",
"sensor.washingmachine_energy_power",
"switch.dishwasher",
"switch.tasmota_6",
"switch.washingmachine",
"timer.dishwasher_delayed_job_completion_timer",
"timer.dryer_delayed_job_completion_timer",
"timer.washing_machine_delayed_job_completion_timer"
],
"used_entities": [
"06bbe71fbeda062d4c873167f88495c4",
"13ff591684fab210e196fd1e5b72b37e",
"2c0a4369b033b5ef7e8fedbfa30abb0f",
"3370d04b7ff80f8083990d294b3bd01b",
"33d593b9a5375f714ad2ad6a93dbb1f8",
"54167e25f784cea84dbf3699a277e260",
"5c6fe9297a29501c1b5cbe311065dd39",
"5e868b278814b618bf258ae395a1358c",
"61f9c63578d75df91ecb5c6463fb91c8",
"6d1f04a713e3d15eb1df4a170e6da93d",
"814ef11cf14e3dcfcd1341bb5bf7cb98",
"925d9b89952a34621a5660622e2d3ab1",
"9c56b6e42144c29116d5c51d41c6a0a5",
"9d296a1490273b3d1f63b1f8055dda92",
"9f24909fc3d2d24894d3855bb9905d4a",
"b0972a48b3f209015f387e0e8a36c474",
"b10706c56923680ebd822ca2da14e087",
"ba0003bb3f3278e9e0c2b9d3ff98d26b",
"binary_sensor.aqara_rtcgq13lm_occupancy",
"binary_sensor.aurora_visibility_aurora_visibility_alert",
"binary_sensor.bluetooth_radio",
"binary_sensor.bluetooth_radio_2",
"binary_sensor.bv70vdl_ev_battery_charge",
"binary_sensor.bv70vdl_ev_battery_plug",
"binary_sensor.bv70vdl_tire_pressure_all",
"binary_sensor.do_not_disturb",
"binary_sensor.grid_status",
"binary_sensor.heiman_cosensor_ef_3_0_iaszone",
"binary_sensor.heiman_smokesensor_ef_3_0_iaszone",
"binary_sensor.heiman_smokesensor_ef_3_0_iaszone_2",
"binary_sensor.internet",
"binary_sensor.landing_motion",
"binary_sensor.lumi_lumi_motion_agl04_iaszone",
"binary_sensor.lumi_lumi_motion_agl04_occupancy",
"binary_sensor.lumi_lumi_sensor_magnet_aq2_opening",
"binary_sensor.ramses_rf",
"binary_sensor.rfxtrx433",
"binary_sensor.rtl433_dongle",
"binary_sensor.school_day",
"binary_sensor.sonoff_zigbee_3_0_usb_dongle_plus",
"binary_sensor.workday_sensor",
"button.kids_bedroom_4_way_switch_identify",
"c53730b0680e2b69fe48ee4402b789b1",
"caba5eff8e8af6e4295cfba68159c656",
"calendar.octopus_energy_saving_sessions",
"cd63a92d4200b7767391b4421c12bdec",
"climate.home",
"d71e950cd4686d97294e7d6802d51f29",
"dccd62e50d847fc0e16580a4a0afde21",
"e4d0b8bdaaaaa86fb38beaec451d697c",
"eb34842260ff4412790dea2b0e13b5e8",
"eeddeb7c0df4fc8ba5e7e0f1d34b1eba",
"f8861f1cadb0fa928b8ec0a4c11e642d",
"f8fb2ca1130dadb5200218a5ff048811",
"input_boolean.bathroom_door_alerts",
"input_boolean.bathroom_temporary_override",
"input_boolean.do_not_disturb",
"input_boolean.heater",
"input_boolean.override_heating",
"input_button.meaco_fan_eco_mode",
"input_button.meaco_fan_horizontal_oscillation",
"input_button.meaco_fan_light",
"input_button.meaco_fan_power",
"input_button.meaco_fan_pre_off",
"input_button.meaco_fan_pre_on",
"input_button.meaco_fan_speed",
"input_button.meaco_fan_speed_2",
"input_button.meaco_fan_vertical_oscillation",
"input_button.start_timer",
"input_button.stop_times",
"input_datetime.internet_down_time",
"input_datetime.internet_restored_time",
"input_datetime.octopus_free_electricity_end",
"input_datetime.octopus_free_electricity_start",
"input_number.bathroom_override_parameter",
"input_number.e_on_gas",
"input_number.electricity_standing_charge",
"input_number.gas_standing_charge",
"input_number.givenergy_evc_charge_power_limit",
"input_number.givenergy_evc_max_battery_discharge_power",
"input_number.givenergy_evc_max_import_capacity",
"input_number.givenergy_evc_session_energy_limit",
"input_number.givenergy_evc_solar_export_split",
"input_number.heating_automation_setpoint",
"input_number.octopus_go",
"input_number.octopus_go_off_peak",
"input_number.octopus_go_peak",
"input_select.dishwasher_state_machine",
"input_select.dryer_state_machine",
"input_select.givenergy_evc_configuration_mode",
"input_select.givenergy_evc_configure_inverter_mode",
"input_select.givenergy_evc_mode",
"input_select.solar_charger_priority",
"input_select.solar_output_source_priority",
"input_select.washing_machine_state_machine",
"input_text.octopus_free_electricity_regex_date",
"input_text.octopus_free_electricity_regex_end",
"input_text.octopus_free_electricity_regex_start",
"input_text.wled_d9dc04_text",
"input_text.wled_f1352d_text",
"light.all_christmas_lights",
"light.all_kids_bedroom_lights",
"light.all_master_bathroom_lights",
"light.all_master_bedroom_lights",
"light.bathroom",
"light.bed_light_huelight",
"light.candelabra",
"light.dining_room_lights",
"light.ikea_tradfri_led2005r5_1",
"light.ikea_tradfri_led2005r5_2",
"light.ikea_tradfri_led2005r5_3",
"light.ikea_tradfri_led2005r5_4",
"light.ikea_tradfri_led2005r5_5",
"light.kids_bedroom_light",
"light.kids_bedroom_light_light",
"light.kids_led_lights",
"light.landing_light",
"light.master_bedroom_light_light",
"light.outside_christmas_lights",
"light.signify_netherlands_b_v_llc013_huelight",
"light.silicon_labs_ezsp_all_zigbee_lights_zha_group_0x0008",
"light.storylight",
"light.twinkly_69dced",
"media_player.channels_apple_tv_dining_room",
"media_player.channels_apple_tv_kitchen",
"media_player.channels_apple_tv_living_room",
"media_player.landing_echo_dot",
"openhasp.comms_cabinet",
"proximity.home",
"scene.bathroom_night_toilet_and_sink_lights_only_warm_white_50_brightness",
"scene.before",
"scene.landing_light",
"scene.reset_bathroom_lights_lights_off",
"scene.reset_bathroom_lights_lights_on",
"script.1682284192701",
"script.away_mode",
"script.car_ev_battery_low",
"script.notification_handler",
"script.restart_plex",
"script.turn_off_bathroom_lights_if_on_for_extended_period",
"script.turn_off_kids_bedroom_light_if_on_for_extended_period",
"select.daily_energy_octopus",
"select.dishwasher",
"select.octopus_go",
"select.tumble_dryer",
"select.washing_machine",
"sensor.average_household_temperature",
"sensor.bathroom_light_level_below_threshold",
"sensor.dining_room_dehumidifier_state",
"sensor.givenergy_evc_charge_power_limit",
"sensor.givenergy_evc_configuration_mode",
"sensor.givenergy_evc_inverter_control_mode",
"sensor.givenergy_evc_max_battery_discharge_power",
"sensor.givenergy_evc_max_import_capacity",
"sensor.givenergy_evc_mode",
"sensor.givenergy_evc_session_energy_limit",
"sensor.givenergy_evc_solar_export_split",
"sensor.hpds_temperature_11",
"sensor.ibs_th_10f3_temperature",
"sensor.jessicaiphone_battery_level",
"sensor.jonathans_ipad_pro_battery_level",
"sensor.kitchen_echo_dot_next_timer",
"sensor.kitchen_energy_state",
"sensor.macos_internal_battery_level",
"sensor.myphone_battery_level",
"sensor.myphone_battery_state",
"sensor.people_home",
"sensor.plex_synology",
"sensor.sabnzbd_status",
"sensor.ups_status_data",
"sensor.uptime_78",
"sun.sun",
"switch.abigail_s_ipad",
"switch.diningroomdehumidifier",
"switch.george_s_ipad",
"switch.kitchendehumidifier",
"switch.saving_session",
"switch.synology_ds2419_ii",
"timer.alexa_timer_kitchen",
"timer.bathroom_override",
"timer.heating_override"
],
"used_devices": [],
"template_entities": [
"input_datetime.internet_down_time",
"input_datetime.internet_restored_time",
"input_number.bathroom_override_parameter",
"input_number.electricity_standing_charge",
"input_number.givenergy_evc_charge_power_limit",
"input_number.givenergy_evc_max_import_capacity",
"input_number.givenergy_evc_session_energy_limit",
"input_number.heating_automation_setpoint",
"input_number.octopus_go_off_peak",
"input_number.octopus_go_peak",
"input_select.givenergy_evc_configuration_mode",
"input_select.givenergy_evc_mode",
"input_select.solar_charger_priority",
"input_select.solar_output_source_priority",
"input_text.octopus_free_electricity_regex_date",
"input_text.octopus_free_electricity_regex_end",
"input_text.octopus_free_electricity_regex_start",
"openhasp.comms_cabinet",
"sensor.givenergy_evc_charge_power_limit",
"sensor.givenergy_evc_configuration_mode",
"sensor.givenergy_evc_inverter_control_mode",
"sensor.givenergy_evc_max_battery_discharge_power",
"sensor.givenergy_evc_max_import_capacity",
"sensor.givenergy_evc_mode",
"sensor.givenergy_evc_session_energy_limit",
"sensor.givenergy_evc_solar_export_split",
"sensor.kitchen_echo_dot_next_timer",
"sensor.uptime_78"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "DJBenson",
"prompt_tokens": 210067,
"completion_tokens": 35848,
"total_tokens": 245915
}

View File

@ -0,0 +1,83 @@
[
{
"name": "jukebox queue",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.jukebox_queue",
"device_id": null
}
},
{
"name": "jukebox queue length",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.jukebox_queue_length",
"device_id": null
}
},
{
"name": "media player",
"room": null,
"type": "media_player",
"id": {
"entity_id": "media_player.<YOUR MEDIA PLAYER HERE>",
"device_id": null
}
},
{
"name": "song request access",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.songrequestaccess",
"device_id": null
}
},
{
"name": "tablet stue media player",
"room": "living_room",
"type": "media_player",
"id": {
"entity_id": "media_player.tablet_stue",
"device_id": null
}
},
{
"name": "jukebox allow access switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.music_assistant_jukebox_jukebox_allow_access",
"device_id": null
}
},
{
"name": "jukebox queue length number",
"room": null,
"type": "number",
"id": {
"entity_id": "number.music_assistant_jukebox_jukebox_queue_length",
"device_id": null
}
},
{
"name": "jukebox queue switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.music_assistant_jukebox_jukebox_queue",
"device_id": null
}
},
{
"name": "song request access input boolean",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.song_request_access",
"device_id": null
}
}
]

View File

@ -0,0 +1,240 @@
- alias: Jukebox - Notify of Queued Song
description: Tells home assistant that someone has requested a song and to switch
the queueing mode for guests for further requests
triggers:
- trigger: webhook
allowed_methods:
- POST
- GET
local_only: false
webhook_id: < YOUR WEBHOOK ID HERE >
conditions: []
actions:
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.jukebox_queue
- alias: Jukebox - Set Default Playlist when Jukebox Queue is zero
description: Once the guests queued songs are all played, play the default party
playlist so the music doesnt stop
triggers:
- trigger: state
entity_id:
- input_number.jukebox_queue_length
to: '1.0'
conditions: []
actions:
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.jukebox_queue
- action: media_player.shuffle_set
metadata: {}
data:
shuffle: true
target:
entity_id: media_player.<YOUR MEDIA PLAYER HERE>
- action: music_assistant.play_media
metadata: {}
data:
enqueue: play
media_id: <YOUR DEFAULT PARTY PLAYLIST NAME HERE>
media_type: playlist
target:
entity_id: media_player.<YOUR MEDIA PLAYER HERE>
mode: single
- alias: Jukebox - Switch Jukebox Access on/off
description: Controls access to the jukebox by enableing the app and provisioning
an access token or disabling the app and revoking any active token
triggers:
- trigger: state
entity_id:
- input_boolean.songrequestaccess
from: 'off'
to: 'on'
- trigger: state
entity_id:
- input_boolean.songrequestaccess
from: 'on'
to: 'off'
conditions: []
actions:
- if:
- condition: state
entity_id: input_boolean.songrequestaccess
state: 'on'
then:
- action: shell_command.create_jukebox_token
metadata: {}
data: {}
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.jukebox_queue
else:
- action: shell_command.delete_jukebox_token
metadata: {}
data: {}
mode: single
- alias: Jukebox - Track Queue Size
description: Keeps track of the media player queue length and updates the Jukebox
Queue Length helper
triggers:
- trigger: state
entity_id:
- media_player.<YOUR MEDIA PLAYER HERE>
attribute: media_position_updated_at
conditions: []
actions:
- action: music_assistant.get_queue
metadata: {}
data: {}
target:
entity_id: media_player.<YOUR MEDIA PLAYER HERE>
response_variable: jukeboxqueuedetail
- variables:
speaker_data: '{{ jukeboxqueuedetail[''media_player.<YOUR MEDIA PLAYER HERE>'']
}}'
- variables:
items_count: '{% set matches = speaker_data | regex_findall("''items'': (\d+)")
%} {{ matches[0] if matches else 0 }}'
current_index: '{% set matches = speaker_data | regex_findall("''current_index'':
(\d+)") %} {{ matches[0] if matches else 0 }}'
remaining: '{{ (items_count | int) - (current_index | int) }}'
- action: input_number.set_value
target:
entity_id: input_number.jukebox_queue_length
data:
value: '{{ remaining | float }}'
mode: queued
max: 10
- alias: JukeBox Controller
description: "Keeps control of the jukebox\n\nInstructions:\nBefore use remember\
\ to change the media_player in the first trigger \nand put the defined variable\
\ media_player to the same player\nYou should also update the default playlist\
\ variable to the playlist you want to use\n\nWhat the automation does\n\n- Keeps\
\ the queue counter updated\n- Stops the playback when Access is disabled\n- Does\
\ something to the queue switch, but not sure what it is \n used for"
triggers:
- trigger: state
entity_id:
- media_player.tablet_stue
attribute: media_position_updated_at
id: Position Updated
- trigger: state
entity_id:
- switch.music_assistant_jukebox_jukebox_allow_access
from: 'off'
to: 'on'
id: Access enabled
- trigger: webhook
allowed_methods:
- POST
- PUT
local_only: true
webhook_id: -notify_queue_of_song
id: Webhook
- trigger: state
entity_id:
- number.music_assistant_jukebox_jukebox_queue_length
to: '0'
id: Playlist finished
- trigger: state
entity_id:
- switch.music_assistant_jukebox_jukebox_allow_access
from: 'on'
to: 'off'
id: Access disabled
conditions: []
actions:
- variables:
media_player: media_player.tablet_stue
default_playlist: Jukebox
- choose:
- conditions:
- condition: trigger
id:
- Position Updated
sequence:
- action: music_assistant.get_queue
metadata: {}
data: {}
target:
entity_id: media_player.tablet_stue
response_variable: jukeboxqueuedetail
- variables:
speaker_data: '{{ jukeboxqueuedetail[''media_player.tablet_stue''] }}'
- variables:
items_count: '{% set matches = speaker_data | regex_findall("''items'':
(\d+)") %} {{ matches[0] if matches else 0 }}'
current_index: '{% set matches = speaker_data | regex_findall("''current_index'':
(\d+)") %} {{ matches[0] if matches else 0 }}'
remaining: '{{ (items_count | int) - (current_index | int) }}'
- action: input_number.set_value
data:
value: '{{ remaining }}'
target:
entity_id: number.music_assistant_jukebox_jukebox_queue_length
- conditions:
- condition: trigger
id:
- Access enabled
sequence:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.music_assistant_jukebox_jukebox_queue
- conditions:
- condition: trigger
id:
- Webhook
sequence:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.music_assistant_jukebox_jukebox_queue
- conditions:
- condition: trigger
id:
- Playlist finished
- condition: state
entity_id: input_boolean.song_request_access
state: 'on'
sequence:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.music_assistant_jukebox_jukebox_queue
- action: music_assistant.play_media
metadata: {}
data:
enqueue: replace
media_id: '{{ default_playlist }}'
media_type: playlist
target:
entity_id: '{{ media_player }}'
- conditions:
- condition: trigger
id:
- Access disabled
sequence:
- action: media_player.media_stop
metadata: {}
data: {}
target:
entity_id: '{{ media_player }}'
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id:
- switch.music_assistant_jukebox_jukebox_allow_access
- switch.music_assistant_jukebox_jukebox_queue
mode: queued
max: 10

View File

@ -0,0 +1,67 @@
[
{
"id": "Jukebox - Notify of Queued Song",
"result": {
"structured": "TRIGGER: When a webhook with the specified ID is received via POST or GET, not restricted to local network. CONDITIONS: None. ACTIONS: Turn on jukebox queue [input_boolean.jukebox_queue].",
"natural_language": {
"trigger": "When a webhook request (using either POST or GET methods, and allowed from outside the local network) with a specific identifier is received.",
"conditions": "There are no conditions that must be met.",
"action": "Activates the jukebox queue by turning on the input boolean jukebox queue [input_boolean.jukebox_queue]."
},
"human_like": "Turns on the jukebox queue mode when a song request is received via a webhook.",
"complexity": "low"
}
},
{
"id": "Jukebox - Set Default Playlist when Jukebox Queue is zero",
"result": {
"structured": "TRIGGER: When jukebox queue length [input_number.jukebox_queue_length] changes to 1.0. CONDITIONS: None. ACTIONS: Turn off jukebox queue [input_boolean.jukebox_queue] AND set shuffle to true on media player [media_player.<YOUR MEDIA PLAYER HERE>] AND play the default party playlist on media player [media_player.<YOUR MEDIA PLAYER HERE>] with enqueue mode 'play'.",
"natural_language": {
"trigger": "When the jukebox queue length [input_number.jukebox_queue_length] reaches exactly 1.0.",
"conditions": "There are no conditions.",
"action": "Turns off the jukebox queue [input_boolean.jukebox_queue], enables shuffle on the media player [media_player.<YOUR MEDIA PLAYER HERE>], and starts playing the default party playlist on the same media player."
},
"human_like": "When the song queue is nearly empty, this automation switches to a default party playlist to keep the music playing.",
"complexity": "low"
}
},
{
"id": "Jukebox - Switch Jukebox Access on/off",
"result": {
"structured": "TRIGGER: When song request access [input_boolean.songrequestaccess] changes from off to on OR when song request access [input_boolean.songrequestaccess] changes from on to off. CONDITIONS: None. ACTIONS: IF song request access [input_boolean.songrequestaccess] is on THEN execute shell_command.create_jukebox_token AND turn off jukebox queue [input_boolean.jukebox_queue]. ELSE execute shell_command.delete_jukebox_token.",
"natural_language": {
"trigger": "Whenever the song request access [input_boolean.songrequestaccess] is turned on or turned off.",
"conditions": "There are no conditions for this automation.",
"action": "If the song request access [input_boolean.songrequestaccess] is turned on, the automation creates a new jukebox token via a shell command and also turns off the jukebox queue [input_boolean.jukebox_queue]. If the song request access is turned off, the automation revokes the active token by executing a different shell command to delete it."
},
"human_like": "Manages jukebox access by creating or deleting an access token when the song request feature is enabled or disabled.",
"complexity": "medium"
}
},
{
"id": "Jukebox - Track Queue Size",
"result": {
"structured": "TRIGGER: When media player [media_player.<YOUR MEDIA PLAYER HERE>] changes its media_position_updated_at attribute. CONDITIONS: None. ACTIONS: Call service music_assistant.get_queue for media player [media_player.<YOUR MEDIA PLAYER HERE>] and store the response in variable 'jukeboxqueuedetail'. Set variable 'speaker_data' to the value of key 'media_player.<YOUR MEDIA PLAYER HERE>' from the 'jukeboxqueuedetail' dictionary. Set variable 'items_count' by extracting the first integer after the pattern \"'items': \" from 'speaker_data' (default to 0 if not found). Set variable 'current_index' by extracting the first integer after the pattern \"'current_index': \" from 'speaker_data' (default to 0 if not found). Set variable 'remaining' to the integer difference between 'items_count' and 'current_index'. Set the value of jukebox queue length [input_number.jukebox_queue_length] to the value of 'remaining'.",
"natural_language": {
"trigger": "Whenever the media player [media_player.<YOUR MEDIA PLAYER HERE>] updates its playback position timestamp.",
"conditions": "There are no conditions; the automation runs every time the trigger occurs.",
"action": "The automation fetches the current queue details from the Music Assistant for the media player [media_player.<YOUR MEDIA PLAYER HERE>]. It then parses the response to find the total number of items in the queue and the current playing index. It calculates the number of remaining tracks by subtracting the current index from the total items. Finally, it updates the jukebox queue length [input_number.jukebox_queue_length] helper with this calculated remaining count."
},
"human_like": "Updates a counter showing how many songs are left in the media player's queue whenever the playing track changes.",
"complexity": "medium"
}
},
{
"id": "JukeBox Controller",
"result": {
"structured": "TRIGGER: When tablet stue media player [media_player.tablet_stue] media_position_updated_at attribute changes OR When jukebox allow access switch [switch.music_assistant_jukebox_jukebox_allow_access] turns on (from off) OR When a webhook with ID '-notify_queue_of_song' is received via POST or PUT locally OR When jukebox queue length number [number.music_assistant_jukebox_jukebox_queue_length] becomes 0 OR When jukebox allow access switch [switch.music_assistant_jukebox_jukebox_allow_access] turns off (from on). CONDITIONS: None. ACTIONS: Set variables media_player to media_player.tablet_stue and default_playlist to 'Jukebox'. Then, based on which trigger fired: IF trigger is Position Updated THEN get queue details for tablet stue media player [media_player.tablet_stue], extract items count and current index, calculate remaining items, and set jukebox queue length number [number.music_assistant_jukebox_jukebox_queue_length] to the remaining count. IF trigger is Access enabled THEN turn off jukebox queue switch [switch.music_assistant_jukebox_jukebox_queue]. IF trigger is Webhook THEN turn on jukebox queue switch [switch.music_assistant_jukebox_jukebox_queue]. IF trigger is Playlist finished AND song request access input boolean [input_boolean.song_request_access] is on THEN turn off jukebox queue switch [switch.music_assistant_jukebox_jukebox_queue] AND play the default playlist 'Jukebox' on tablet stue media player [media_player.tablet_stue], replacing the current queue. IF trigger is Access disabled THEN stop playback on tablet stue media player [media_player.tablet_stue] AND turn off both jukebox allow access switch [switch.music_assistant_jukebox_jukebox_allow_access] and jukebox queue switch [switch.music_assistant_jukebox_jukebox_queue].",
"natural_language": {
"trigger": "The automation can be triggered in several ways: when the playback position updates on the tablet stue media player [media_player.tablet_stue]; when the jukebox allow access switch [switch.music_assistant_jukebox_jukebox_allow_access] is turned on; when a specific local webhook named '-notify_queue_of_song' is called; when the jukebox queue length number [number.music_assistant_jukebox_jukebox_queue_length] reaches zero; or when the jukebox allow access switch [switch.music_assistant_jukebox_jukebox_allow_access] is turned off.",
"conditions": "There are no global conditions for this automation. However, for the specific action when the playlist finishes, an additional check is performed: the song request access input boolean [input_boolean.song_request_access] must be on.",
"action": "First, the automation sets up internal variables for the media player and a default playlist. Depending on which trigger occurred, it performs different actions. If the playback position updated, it fetches the current queue details, calculates how many songs are left, and updates the queue length display. If jukebox access is enabled, it turns off the jukebox queue switch [switch.music_assistant_jukebox_jukebox_queue]. If the webhook is received, it turns that same queue switch on. If the queue length reaches zero and song requests are allowed, it turns off the queue switch and starts playing the default playlist. Finally, if jukebox access is disabled, it stops the music player and turns off both the access and queue switches."
},
"human_like": "This automation manages a jukebox system by updating the queue counter, controlling playback based on access permissions, and handling song requests via a webhook.",
"complexity": "high"
}
}
]

View File

@ -0,0 +1,149 @@
[
{
"id": "Jukebox - Notify of Queued Song",
"automation": "- alias: Jukebox - Notify of Queued Song\n description: Tells home assistant that someone has requested a song and to switch\n the queueing mode for guests for further requests\n triggers:\n - trigger: webhook\n allowed_methods:\n - POST\n - GET\n local_only: false\n webhook_id: < YOUR WEBHOOK ID HERE >\n conditions: []\n actions:\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.jukebox_queue",
"config": [
{
"name": "jukebox queue",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.jukebox_queue",
"device_id": null
}
}
]
},
{
"id": "Jukebox - Set Default Playlist when Jukebox Queue is zero",
"automation": "- alias: Jukebox - Set Default Playlist when Jukebox Queue is zero\n description: Once the guests queued songs are all played, play the default party\n playlist so the music doesnt stop\n triggers:\n - trigger: state\n entity_id:\n - input_number.jukebox_queue_length\n to: '1.0'\n conditions: []\n actions:\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.jukebox_queue\n - action: media_player.shuffle_set\n metadata: {}\n data:\n shuffle: true\n target:\n entity_id: media_player.<YOUR MEDIA PLAYER HERE>\n - action: music_assistant.play_media\n metadata: {}\n data:\n enqueue: play\n media_id: <YOUR DEFAULT PARTY PLAYLIST NAME HERE>\n media_type: playlist\n target:\n entity_id: media_player.<YOUR MEDIA PLAYER HERE>\n mode: single",
"config": [
{
"name": "jukebox queue",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.jukebox_queue",
"device_id": null
}
},
{
"name": "jukebox queue length",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.jukebox_queue_length",
"device_id": null
}
},
{
"name": "media player",
"room": null,
"type": "media_player",
"id": {
"entity_id": "media_player.<YOUR MEDIA PLAYER HERE>",
"device_id": null
}
}
]
},
{
"id": "Jukebox - Switch Jukebox Access on/off",
"automation": "- alias: Jukebox - Switch Jukebox Access on/off\n description: Controls access to the jukebox by enableing the app and provisioning\n an access token or disabling the app and revoking any active token\n triggers:\n - trigger: state\n entity_id:\n - input_boolean.songrequestaccess\n from: 'off'\n to: 'on'\n - trigger: state\n entity_id:\n - input_boolean.songrequestaccess\n from: 'on'\n to: 'off'\n conditions: []\n actions:\n - if:\n - condition: state\n entity_id: input_boolean.songrequestaccess\n state: 'on'\n then:\n - action: shell_command.create_jukebox_token\n metadata: {}\n data: {}\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.jukebox_queue\n else:\n - action: shell_command.delete_jukebox_token\n metadata: {}\n data: {}\n mode: single",
"config": [
{
"name": "jukebox queue",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.jukebox_queue",
"device_id": null
}
},
{
"name": "song request access",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.songrequestaccess",
"device_id": null
}
}
]
},
{
"id": "Jukebox - Track Queue Size",
"automation": "- alias: Jukebox - Track Queue Size\n description: Keeps track of the media player queue length and updates the Jukebox\n Queue Length helper\n triggers:\n - trigger: state\n entity_id:\n - media_player.<YOUR MEDIA PLAYER HERE>\n attribute: media_position_updated_at\n conditions: []\n actions:\n - action: music_assistant.get_queue\n metadata: {}\n data: {}\n target:\n entity_id: media_player.<YOUR MEDIA PLAYER HERE>\n response_variable: jukeboxqueuedetail\n - variables:\n speaker_data: '{{ jukeboxqueuedetail[''media_player.<YOUR MEDIA PLAYER HERE>'']\n }}'\n - variables:\n items_count: '{% set matches = speaker_data | regex_findall(\"''items'': (\\d+)\")\n %} {{ matches[0] if matches else 0 }}'\n current_index: '{% set matches = speaker_data | regex_findall(\"''current_index'':\n (\\d+)\") %} {{ matches[0] if matches else 0 }}'\n remaining: '{{ (items_count | int) - (current_index | int) }}'\n - action: input_number.set_value\n target:\n entity_id: input_number.jukebox_queue_length\n data:\n value: '{{ remaining | float }}'\n mode: queued\n max: 10",
"config": [
{
"name": "jukebox queue length",
"room": null,
"type": "input_number",
"id": {
"entity_id": "input_number.jukebox_queue_length",
"device_id": null
}
},
{
"name": "media player",
"room": null,
"type": "media_player",
"id": {
"entity_id": "media_player.<YOUR MEDIA PLAYER HERE>",
"device_id": null
}
}
]
},
{
"id": "JukeBox Controller",
"automation": "- alias: JukeBox Controller\n description: \"Keeps control of the jukebox\\n\\nInstructions:\\nBefore use remember\\\n \\ to change the media_player in the first trigger \\nand put the defined variable\\\n \\ media_player to the same player\\nYou should also update the default playlist\\\n \\ variable to the playlist you want to use\\n\\nWhat the automation does\\n\\n- Keeps\\\n \\ the queue counter updated\\n- Stops the playback when Access is disabled\\n- Does\\\n \\ something to the queue switch, but not sure what it is \\n used for\"\n triggers:\n - trigger: state\n entity_id:\n - media_player.tablet_stue\n attribute: media_position_updated_at\n id: Position Updated\n - trigger: state\n entity_id:\n - switch.music_assistant_jukebox_jukebox_allow_access\n from: 'off'\n to: 'on'\n id: Access enabled\n - trigger: webhook\n allowed_methods:\n - POST\n - PUT\n local_only: true\n webhook_id: -notify_queue_of_song\n id: Webhook\n - trigger: state\n entity_id:\n - number.music_assistant_jukebox_jukebox_queue_length\n to: '0'\n id: Playlist finished\n - trigger: state\n entity_id:\n - switch.music_assistant_jukebox_jukebox_allow_access\n from: 'on'\n to: 'off'\n id: Access disabled\n conditions: []\n actions:\n - variables:\n media_player: media_player.tablet_stue\n default_playlist: Jukebox\n - choose:\n - conditions:\n - condition: trigger\n id:\n - Position Updated\n sequence:\n - action: music_assistant.get_queue\n metadata: {}\n data: {}\n target:\n entity_id: media_player.tablet_stue\n response_variable: jukeboxqueuedetail\n - variables:\n speaker_data: '{{ jukeboxqueuedetail[''media_player.tablet_stue''] }}'\n - variables:\n items_count: '{% set matches = speaker_data | regex_findall(\"''items'':\n (\\d+)\") %} {{ matches[0] if matches else 0 }}'\n current_index: '{% set matches = speaker_data | regex_findall(\"''current_index'':\n (\\d+)\") %} {{ matches[0] if matches else 0 }}'\n remaining: '{{ (items_count | int) - (current_index | int) }}'\n - action: input_number.set_value\n data:\n value: '{{ remaining }}'\n target:\n entity_id: number.music_assistant_jukebox_jukebox_queue_length\n - conditions:\n - condition: trigger\n id:\n - Access enabled\n sequence:\n - action: switch.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: switch.music_assistant_jukebox_jukebox_queue\n - conditions:\n - condition: trigger\n id:\n - Webhook\n sequence:\n - action: switch.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: switch.music_assistant_jukebox_jukebox_queue\n - conditions:\n - condition: trigger\n id:\n - Playlist finished\n - condition: state\n entity_id: input_boolean.song_request_access\n state: 'on'\n sequence:\n - action: switch.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: switch.music_assistant_jukebox_jukebox_queue\n - action: music_assistant.play_media\n metadata: {}\n data:\n enqueue: replace\n media_id: '{{ default_playlist }}'\n media_type: playlist\n target:\n entity_id: '{{ media_player }}'\n - conditions:\n - condition: trigger\n id:\n - Access disabled\n sequence:\n - action: media_player.media_stop\n metadata: {}\n data: {}\n target:\n entity_id: '{{ media_player }}'\n - action: switch.turn_off\n metadata: {}\n data: {}\n target:\n entity_id:\n - switch.music_assistant_jukebox_jukebox_allow_access\n - switch.music_assistant_jukebox_jukebox_queue\n mode: queued\n max: 10",
"config": [
{
"name": "tablet stue media player",
"room": "living_room",
"type": "media_player",
"id": {
"entity_id": "media_player.tablet_stue",
"device_id": null
}
},
{
"name": "jukebox allow access switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.music_assistant_jukebox_jukebox_allow_access",
"device_id": null
}
},
{
"name": "jukebox queue length number",
"room": null,
"type": "number",
"id": {
"entity_id": "number.music_assistant_jukebox_jukebox_queue_length",
"device_id": null
}
},
{
"name": "jukebox queue switch",
"room": null,
"type": "switch",
"id": {
"entity_id": "switch.music_assistant_jukebox_jukebox_queue",
"device_id": null
}
},
{
"name": "song request access input boolean",
"room": null,
"type": "input_boolean",
"id": {
"entity_id": "input_boolean.song_request_access",
"device_id": null
}
}
]
}
]

View File

@ -0,0 +1,16 @@
{
"missing": [],
"added": [],
"used_entities": [
"input_boolean.jukebox_queue",
"input_boolean.song_request_access",
"input_boolean.songrequestaccess",
"input_number.jukebox_queue_length",
"media_player.tablet_stue",
"number.music_assistant_jukebox_jukebox_queue_length",
"switch.music_assistant_jukebox_jukebox_allow_access",
"switch.music_assistant_jukebox_jukebox_queue"
],
"used_devices": [],
"template_entities": []
}

6
DJS91/token-summary.json Normal file
View File

@ -0,0 +1,6 @@
{
"user": "DJS91",
"prompt_tokens": 11182,
"completion_tokens": 2022,
"total_tokens": 13204
}

View File

@ -0,0 +1,623 @@
[
{
"name": "Trine Haase Pedersen",
"room": "home",
"type": "person",
"id": {
"entity_id": "person.trine_haase_pedersen",
"device_id": null
}
},
{
"name": "Frederik Kristian Pedersen",
"room": "home",
"type": "person",
"id": {
"entity_id": "person.frederik_kristian_pedersen",
"device_id": null
}
},
{
"name": "Sophie Haase Pedersen",
"room": "home",
"type": "person",
"id": {
"entity_id": "person.sophie_haase_pedersen",
"device_id": null
}
},
{
"name": "Victoria Haase Pedersen",
"room": "home",
"type": "person",
"id": {
"entity_id": "person.victoria_haase_pedersen",
"device_id": null
}
},
{
"name": "Tristan",
"room": "home",
"type": "person",
"id": {
"entity_id": "person.tristan",
"device_id": null
}
},
{
"name": "Frederik iPhone 15 Pro",
"room": "home",
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_frederik_iphone_15_pro",
"device_id": null
}
},
{
"name": "Sophie iPhone",
"room": "home",
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_sophie_iphone",
"device_id": null
}
},
{
"name": "Victoria Telefon",
"room": "home",
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_victoria_telefon",
"device_id": null
}
},
{
"name": "Tristan iPhone 13",
"room": "home",
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_tristan_iphone_13_ny",
"device_id": null
}
},
{
"name": "Trine iPhone 14 Pro",
"room": "home",
"type": "notify",
"id": {
"entity_id": "notify.mobile_app_trine_iphone_14_pro",
"device_id": null
}
},
{
"name": "Sophie iPhone Tracker",
"room": "home",
"type": "device_tracker",
"id": {
"entity_id": "device_tracker.sophie_iphone",
"device_id": null
}
},
{
"name": "Aben Lukke Media Player",
"room": "living_room",
"type": "media_player",
"id": {
"entity_id": "media_player.aben_lukke",
"device_id": null
}
},
{
"name": "Bryggers Door Sensor",
"room": "utility_room",
"type": "binary_sensor",
"id": {
"entity_id": "3f44441253de2330a9ee51f89655ff06",
"device_id": "bd8ab77921a34425041ae4cef5632ec4"
}
},
{
"name": "Rema 1000 Zone",
"room": "outside",
"type": "zone",
"id": {
"entity_id": "zone.rema1000",
"device_id": null
}
},
{
"name": "Fotex Zone",
"room": "outside",
"type": "zone",
"id": {
"entity_id": "zone.fotex",
"device_id": null
}
},
{
"name": "Coop 365 Hasseris Zone",
"room": "outside",
"type": "zone",
"id": {
"entity_id": "zone.coop_365_hasseris",
"device_id": null
}
},
{
"name": "Netto Hasseris Zone",
"room": "outside",
"type": "zone",
"id": {
"entity_id": "zone.handel_netto_hasseris",
"device_id": null
}
},
{
"name": "Indkøbsliste Todo",
"room": "home",
"type": "todo",
"id": {
"entity_id": "todo.indkobsliste",
"device_id": null
}
},
{
"name": "Legestue TV Switch",
"room": "playroom",
"type": "switch",
"id": {
"entity_id": null,
"device_id": "c9e17d5fef2b455565f01cf5cb1c3a72"
}
},
{
"name": "Kontor Window Sensor",
"room": "office",
"type": "binary_sensor",
"id": {
"entity_id": "723e8118874603457d5746b52aa633f1",
"device_id": "6685d2781c1b97e3227e8ddb4f0a9387"
}
},
{
"name": "Kontor Radiator",
"room": "office",
"type": "climate",
"id": {
"entity_id": null,
"device_id": "70031b73bebd812285d08297d6d4cd38"
}
},
{
"name": "Kontor Remote",
"room": "office",
"type": "sensor",
"id": {
"entity_id": null,
"device_id": "9d40a6d3b1d108acd0092f707f339bf0"
}
},
{
"name": "Kontor Light 1",
"room": "office",
"type": "light",
"id": {
"entity_id": "2cc18da8fb81e31ca785b2a140f2ea36",
"device_id": "6e65da499107f5e51b96b478fad69e86"
}
},
{
"name": "Kontor Light 2",
"room": "office",
"type": "light",
"id": {
"entity_id": "9a6783159b65f0db65209a0b725a8280",
"device_id": "56b3b560b189448e5adb7876b5ba6988"
}
},
{
"name": "Baghave Switch",
"room": "backyard",
"type": "switch",
"id": {
"entity_id": "ed48ca70f647f9eac01ebbefb009c1cd",
"device_id": "b15e53728be37e4ae307509b4bbed905"
}
},
{
"name": "Legestue Occupancy Sensor",
"room": "playroom",
"type": "binary_sensor",
"id": {
"entity_id": "322a2c0112b2f673c85db15150579961",
"device_id": "ba17a19135747d5845be2b562754905b"
}
},
{
"name": "Legestue Light 1",
"room": "playroom",
"type": "light",
"id": {
"entity_id": "light.legestue_light_legestue1",
"device_id": null
}
},
{
"name": "Legestue Light 2",
"room": "playroom",
"type": "light",
"id": {
"entity_id": "light.legestue_light_legestue2",
"device_id": null
}
},
{
"name": "Legestue Light 3",
"room": "playroom",
"type": "light",
"id": {
"entity_id": "light.legestue_light_legestue3",
"device_id": null
}
},
{
"name": "Sophie Remote 2 Action",
"room": "sophie_room",
"type": "sensor",
"id": {
"entity_id": "sensor.sophie_remote_sophie2_action",
"device_id": null
}
},
{
"name": "Sophie Light",
"room": "sophie_room",
"type": "light",
"id": {
"entity_id": null,
"device_id": "cac765242ce4b1a532fbc438cfa79097"
}
},
{
"name": "Sophie Remote 1 Action",
"room": "sophie_room",
"type": "sensor",
"id": {
"entity_id": "sensor.sophie_remote_sophie1_action",
"device_id": null
}
},
{
"name": "Sophie Light 2",
"room": "sophie_room",
"type": "light",
"id": {
"entity_id": null,
"device_id": "ba38ff9b156656877c62124304072f59"
}
},
{
"name": "Kontor Pressent Occupancy",
"room": "office",
"type": "binary_sensor",
"id": {
"entity_id": "2716cd871347a641e9e3816c0a9e7867",
"device_id": "d7d3bc79c625ac6be784158965c5efd7"
}
},
{
"name": "Kontor Group Light",
"room": "office",
"type": "light",
"id": {
"entity_id": "light.kontor_group",
"device_id": null
}
},
{
"name": "Stue Sofa Light",
"room": "living_room",
"type": "light",
"id": {
"entity_id": "7861d4d4869e92f5bc28e46e9f2a5ef1",
"device_id": "30f2b71db2fe6de49f43c9b48e67b429"
}
},
{
"name": "Stue Lille Lampe Switch",
"room": "living_room",
"type": "switch",
"id": {
"entity_id": "62a0859166b131d5a113460522ec7cf4",
"device_id": "97fa7024552e0b30df6473be1129dadd"
}
},
{
"name": "Køkken Spisebord Remote",
"room": "kitchen",
"type": "sensor",
"id": {
"entity_id": null,
"device_id": "cca2de2ff5712542389ae97e7981890f"
}
},
{
"name": "Køkken Spisebord Light",
"room": "kitchen",
"type": "light",
"id": {
"entity_id": "234477e1b5a8be1a9723a99896d7dbb9",
"device_id": "243903f9e038dfd0ab9f4ec61e625371"
}
},
{
"name": "Stue Terrassedør Sensor",
"room": "living_room",
"type": "binary_sensor",
"id": {
"entity_id": "6094e2542e284055babcfca715c253b4",
"device_id": "ff9ef66b6ff1a955792a0ba960b28004"
}
},
{
"name": "Soveværelse Window Sensor",
"room": "bedroom",
"type": "binary_sensor",
"id": {
"entity_id": "e47308fd3f35b9d3291a8bd8a0bfd504",
"device_id": "68272f2d2bd9c290a6ea9d41e706d4c9"
}
},
{
"name": "Soveværelse Radiator",
"room": "bedroom",
"type": "climate",
"id": {
"entity_id": null,
"device_id": "547da8a34695f82651d4b68935710d1d"
}
},
{
"name": "Victoria Window Sensor",
"room": "victoria_room",
"type": "binary_sensor",
"id": {
"entity_id": "922b17a39254b79f7e7773e61c86e3f1",
"device_id": "dc284837aff71d8b81a288d17962d9a5"
}
},
{
"name": "Victoria Radiator",
"room": "victoria_room",
"type": "climate",
"id": {
"entity_id": null,
"device_id": "f3fbaf154948921904985aa4c21f2a6b"
}
},
{
"name": "Kontor Pressent Switch",
"room": "office",
"type": "switch",
"id": {
"entity_id": "9a7ccb3f347f15e3d7b956a8daeaae77",
"device_id": "f847031db1854dfff2c4dec16259a6ad"
}
},
{
"name": "Garage Light 1",
"room": "garage",
"type": "light",
"id": {
"entity_id": "light.garage_light_garage1",
"device_id": null
}
},
{
"name": "Garage Light 2",
"room": "garage",
"type": "light",
"id": {
"entity_id": "light.garage_light_garage2",
"device_id": null
}
},
{
"name": "Garage Nat Scene",
"room": "garage",
"type": "scene",
"id": {
"entity_id": "scene.GarageNat",
"device_id": null
}
},
{
"name": "Bryggers Door Contact",
"room": "utility_room",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.bryggers_sensor_bryggersdor_contact",
"device_id": null
}
},
{
"name": "Garage Door Close Scene",
"room": "garage",
"type": "scene",
"id": {
"entity_id": "scene.garage_when_door_closes",
"device_id": null
}
},
{
"name": "Garage Opening Door Scene",
"room": "garage",
"type": "scene",
"id": {
"entity_id": "scene.garage_opening_the_door",
"device_id": null
}
},
{
"name": "Sun",
"room": "outside",
"type": "sun",
"id": {
"entity_id": "sun.sun",
"device_id": null
}
},
{
"name": "Home Zone",
"room": "home",
"type": "zone",
"id": {
"entity_id": "zone.home",
"device_id": null
}
},
{
"name": "Sophie Window 1 Contact",
"room": "sophie_room",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.sophie_sensor_sophievindue1_contact",
"device_id": null
}
},
{
"name": "Sophie Window 2 Contact",
"room": "sophie_room",
"type": "binary_sensor",
"id": {
"entity_id": "binary_sensor.sophie_sensor_sophievindue2_contact",
"device_id": null
}
},
{
"name": "Sophies Værelse Climate",
"room": "sophie_room",
"type": "climate",
"id": {
"entity_id": "climate.sophies_vaerelse",
"device_id": null
}
},
{
"name": "Soveværelse Light",
"room": "bedroom",
"type": "light",
"id": {
"entity_id": "light.sovevaerelse",
"device_id": null
}
},
{
"name": "Soveværelse Dag Scene",
"room": "bedroom",
"type": "scene",
"id": {
"entity_id": "scene.SovevaerelseDag",
"device_id": null
}
},
{
"name": "Soveværelse Nat Scene",
"room": "bedroom",
"type": "scene",
"id": {
"entity_id": "scene.SovevaerelseNat",
"device_id": null
}
},
{
"name": "Terrasse Baghave Nat Scene",
"room": "backyard",
"type": "scene",
"id": {
"entity_id": "scene.terrasseBaghaveNat",
"device_id": null
}
},
{
"name": "Terrasse Forhave Nat Scene",
"room": "front_yard",
"type": "scene",
"id": {
"entity_id": "scene.terrasseForhaveNat",
"device_id": null
}
},
{
"name": "Terrasse Forhave Light",
"room": "front_yard",
"type": "light",
"id": {
"entity_id": "light.terrasse_light_terrasseforhave",
"device_id": null
}
},
{
"name": "Terrasse Baghave Light",
"room": "backyard",
"type": "light",
"id": {
"entity_id": "light.terrasse_light_terrassebaghave",
"device_id": null
}
},
{
"name": "Køkken Under Bordet Light",
"room": "kitchen",
"type": "light",
"id": {
"entity_id": "light.controller_rgb_ir_b788e5",
"device_id": null
}
},
{
"name": "Sluk Alt Lys Scene",
"room": "home",
"type": "scene",
"id": {
"entity_id": "scene.SlukAltLysUntagetUdelysOgUnderKoekkenbordet",
"device_id": null
}
},
{
"name": "Tænd Lys Når Alarm Fra kobles Scene",
"room": "home",
"type": "scene",
"id": {
"entity_id": "scene.TaendLysNaaAlarmFrakolbles",
"device_id": null
}
},
{
"name": "AI Suggestions New Entity Detection Automation",
"room": null,
"type": "automation",
"id": {
"entity_id": "automation.ai_suggestions_new_entity_detection",
"device_id": null
}
},
{
"name": "Google Home Resume Script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.google_home_resume",
"device_id": null
}
},
{
"name": "Turn On Script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.turn_on",
"device_id": null
}
}
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,899 @@
[
{
"id": "'1697148849415'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Trine er kommet hjem'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] arrives home, changing her state from 'not_home' to 'home'.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a push notification to Frederik's iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Trine er kommet hjem' (Trine has come home)."
},
"human_like": "Sends a notification to Frederik's phone when Trine arrives home.",
"complexity": "low"
}
},
{
"id": "'1697148849515'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Sophie iPhone [notify.mobile_app_sophie_iphone] with the message 'Mor er kommet hjem'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no conditions for this automation.",
"action": "Sends a push notification to Sophie's iPhone [notify.mobile_app_sophie_iphone] with the message 'Mor er kommet hjem' (Mother has come home)."
},
"human_like": "Sends a notification to Sophie when her mother, Trine, arrives home.",
"complexity": "low"
}
},
{
"id": "'1697148849615'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] with the message 'Mor er kommet hjem'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] containing the message 'Mor er kommet hjem' (Mom has come home)."
},
"human_like": "Sends a notification to Victoria's phone when Trine arrives home.",
"complexity": "low"
}
},
{
"id": "'1697148849715'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Tristan iPhone 13 [notify.mobile_app_tristan_iphone_13_ny] with the message 'Mor er kommet hjem'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] arrives home.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to Tristan's iPhone with the message 'Mor er kommet hjem' (Mom has come home)."
},
"human_like": "Notifies Tristan when Trine arrives home.",
"complexity": "low"
}
},
{
"id": "'2697148849715'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Jeg er kommet hjem'.",
"natural_language": {
"trigger": "When the person Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, changing their state from away to home.",
"conditions": "There are no conditions that need to be met.",
"action": "Sends a notification to Frederik's phone, Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro], with the message 'Jeg er kommet hjem' (I have come home)."
},
"human_like": "Sends a notification to Frederik's phone when he arrives home.",
"complexity": "low"
}
},
{
"id": "'2697148849615'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] with the message 'Far er kommet hjem'.",
"natural_language": {
"trigger": "When the person Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, changing their state from 'not_home' to 'home'.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] containing the message 'Far er kommet hjem' (Dad is home)."
},
"human_like": "Sends a notification to Victoria's phone when Frederik arrives home.",
"complexity": "low"
}
},
{
"id": "'2697148849515'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Tristan iPhone 13 [notify.mobile_app_tristan_iphone_13_ny] with the message 'Far er kommet hjem'.",
"natural_language": {
"trigger": "When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, changing his state from 'not_home' to 'home'.",
"conditions": "There are no conditions that must be met for this automation to run.",
"action": "Sends a push notification to Tristan's iPhone [notify.mobile_app_tristan_iphone_13_ny] with the message 'Far er kommet hjem' (Dad has come home)."
},
"human_like": "Sends a notification to Tristan's phone when Frederik arrives home.",
"complexity": "low"
}
},
{
"id": "'2697148849415'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with the message 'Frederik er kommet hjem'.",
"natural_language": {
"trigger": "When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, changing his state from away to home.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to Trine's iPhone [notify.mobile_app_trine_iphone_14_pro] with the message 'Frederik er kommet hjem' (Frederik has come home)."
},
"human_like": "Notifies Trine when Frederik arrives home.",
"complexity": "low"
}
},
{
"id": "'26971488489515'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Sophie iPhone [notify.mobile_app_sophie_iphone] with the message 'Far er kommet hjem'.",
"natural_language": {
"trigger": "When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, changing their state from 'not_home' to 'home'.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a push notification to Sophie's iPhone [notify.mobile_app_sophie_iphone] with the message 'Far er kommet hjem' (Dad is home)."
},
"human_like": "Notifies Sophie when Frederik arrives home.",
"complexity": "low"
}
},
{
"id": "'3697148849415'",
"result": {
"structured": "TRIGGER: When Sophie Haase Pedersen [person.sophie_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification via Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Sophie er kommet hjem'.",
"natural_language": {
"trigger": "When Sophie Haase Pedersen [person.sophie_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a push notification to Frederik's iPhone with the message 'Sophie er kommet hjem' (Sophie has come home)."
},
"human_like": "Notifies Frederik when Sophie arrives home.",
"complexity": "low"
}
},
{
"id": "'3697148849515'",
"result": {
"structured": "TRIGGER: When Sophie Haase Pedersen [person.sophie_haase_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with the message 'Sophie er kommet hjem'.",
"natural_language": {
"trigger": "When Sophie Haase Pedersen [person.sophie_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Trine's iPhone [notify.mobile_app_trine_iphone_14_pro] with the message 'Sophie er kommet hjem' (Sophie has come home)."
},
"human_like": "Sends a notification to Trine when Sophie arrives home.",
"complexity": "low"
}
},
{
"id": "'3697148849615'",
"result": {
"structured": "TRIGGER: When Sophie Haase Pedersen [person.sophie_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] with the message 'Sophe er kommet hjem'.",
"natural_language": {
"trigger": "When Sophie Haase Pedersen [person.sophie_haase_pedersen] arrives home, changing her state from 'not_home' to 'home'.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] with the message 'Sophe er kommet hjem'."
},
"human_like": "Sends a notification to Victoria's phone when Sophie arrives home.",
"complexity": "low"
}
},
{
"id": "'3697148849715'",
"result": {
"structured": "TRIGGER: When Sophie Haase Pedersen [person.sophie_haase_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Tristan iPhone 13 [notify.mobile_app_tristan_iphone_13_ny] with the message 'Sophie er kommet hjem'.",
"natural_language": {
"trigger": "When Sophie Haase Pedersen [person.sophie_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a push notification to Tristan's iPhone [notify.mobile_app_tristan_iphone_13_ny] with the message 'Sophie er kommet hjem' (Sophie has come home)."
},
"human_like": "Notifies Tristan when Sophie arrives home.",
"complexity": "low"
}
},
{
"id": "'4697148849415'",
"result": {
"structured": "TRIGGER: When Victoria Haase Pedersen [person.victoria_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Victoria er kommet hjem'.",
"natural_language": {
"trigger": "When Victoria Haase Pedersen [person.victoria_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a push notification to Frederik's iPhone [notify.mobile_app_frederik_iphone_15_pro] stating 'Victoria er kommet hjem' (Victoria has come home)."
},
"human_like": "Notifies Frederik when Victoria arrives home.",
"complexity": "low"
}
},
{
"id": "'4697148849515'",
"result": {
"structured": "TRIGGER: When Victoria Haase Pedersen [person.victoria_haase_pedersen] changes state from 'not_home' to 'home'. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with the message 'Victoria er kommet hjem'.",
"natural_language": {
"trigger": "When Victoria Haase Pedersen [person.victoria_haase_pedersen] arrives home, changing her state from away to home.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Sends a push notification to Trine's iPhone [notify.mobile_app_trine_iphone_14_pro] with the message 'Victoria er kommet hjem' (Victoria has come home)."
},
"human_like": "Sends a notification to Trine when Victoria arrives home.",
"complexity": "low"
}
},
{
"id": "'4697148849615'",
"result": {
"structured": "TRIGGER: When Victoria Haase Pedersen [person.victoria_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Sophie iPhone [notify.mobile_app_sophie_iphone] with the message 'Victoria er kommet hjem'.",
"natural_language": {
"trigger": "When Victoria Haase Pedersen [person.victoria_haase_pedersen] arrives home, changing her state from 'not_home' to 'home'.",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to Sophie iPhone [notify.mobile_app_sophie_iphone] containing the message 'Victoria er kommet hjem'."
},
"human_like": "Sends a notification to Sophie's iPhone when Victoria arrives home.",
"complexity": "low"
}
},
{
"id": "'4697148849715'",
"result": {
"structured": "TRIGGER: When Victoria Haase Pedersen [person.victoria_haase_pedersen] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Tristan iPhone 13 [notify.mobile_app_tristan_iphone_13_ny] with the message 'Victoria er kommet hjem'.",
"natural_language": {
"trigger": "When Victoria Haase Pedersen [person.victoria_haase_pedersen] arrives home, changing her state from 'not_home' to 'home'.",
"conditions": "There are no conditions that need to be met.",
"action": "Sends a notification to Tristan's iPhone [notify.mobile_app_tristan_iphone_13_ny] with the message 'Victoria er kommet hjem' (Victoria has come home)."
},
"human_like": "Sends a notification to Tristan when Victoria arrives home.",
"complexity": "low"
}
},
{
"id": "'5697148849415'",
"result": {
"structured": "TRIGGER: When Tristan [person.tristan] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Frederik iPhone 15 Pro [notify.mobile_app_frederik_iphone_15_pro] with the message 'Tristan er kommet hjem'.",
"natural_language": {
"trigger": "When Tristan [person.tristan] arrives home, changing his state from away to home.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a push notification to Frederik's iPhone [notify.mobile_app_frederik_iphone_15_pro] with the message 'Tristan er kommet hjem' (Tristan has come home)."
},
"human_like": "Sends a notification to Frederik when Tristan arrives home.",
"complexity": "low"
}
},
{
"id": "'5697148849515'",
"result": {
"structured": "TRIGGER: When Tristan [person.tristan] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with the message 'Tristan er kommet hjem'.",
"natural_language": {
"trigger": "When Tristan [person.tristan] arrives home, changing his state from 'not_home' to 'home'.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Trine's iPhone [notify.mobile_app_trine_iphone_14_pro] stating 'Tristan er kommet hjem' (Tristan has come home)."
},
"human_like": "Sends a notification to Trine when Tristan arrives home.",
"complexity": "low"
}
},
{
"id": "'5697148849615'",
"result": {
"structured": "TRIGGER: When Tristan [person.tristan] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Sophie iPhone [notify.mobile_app_sophie_iphone] with the message 'Tristan er kommet hjem'.",
"natural_language": {
"trigger": "When Tristan [person.tristan] arrives home, changing his state from away to home.",
"conditions": "There are no additional conditions required for this automation.",
"action": "Sends a push notification to Sophie's iPhone [notify.mobile_app_sophie_iphone] with the message 'Tristan er kommet hjem' (Tristan has come home)."
},
"human_like": "Notifies Sophie when Tristan arrives home.",
"complexity": "low"
}
},
{
"id": "'5697148849715'",
"result": {
"structured": "TRIGGER: When Tristan [person.tristan] changes state from not_home to home. CONDITIONS: None. ACTIONS: Send a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] with the message 'Tristan er kommet hjem'.",
"natural_language": {
"trigger": "When Tristan [person.tristan] arrives home, changing his state from away to home.",
"conditions": "There are no additional conditions that must be met.",
"action": "Sends a notification to Victoria Telefon [notify.mobile_app_victoria_telefon] stating 'Tristan er kommet hjem' (Tristan has come home)."
},
"human_like": "Sends a notification to Victoria's phone when Tristan arrives home.",
"complexity": "low"
}
},
{
"id": "'1721776282506'",
"result": {
"structured": "TRIGGER: When Sophie iPhone Tracker [device_tracker.sophie_iphone] enters the Home Zone [zone.home]. CONDITIONS: None. ACTIONS: Use the TTS service to make Aben Lukke Media Player [media_player.aben_lukke] say 'Sophie er kommet hjem' in Danish.",
"natural_language": {
"trigger": "When Sophie's iPhone tracker [device_tracker.sophie_iphone] enters the home zone [zone.home].",
"conditions": "There are no conditions that need to be met.",
"action": "The automation uses the text-to-speech service to have the Aben Lukke Media Player [media_player.aben_lukke] announce 'Sophie er kommet hjem' (Sophie has come home) in Danish."
},
"human_like": "Announces when Sophie arrives home by having a media player speak a welcome message.",
"complexity": "low"
}
},
{
"id": "'1721777352759'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] enters the Home Zone [zone.home]. CONDITIONS: None. ACTIONS: Use the TTS service to say 'Mor er kommet hjem' in Danish (da-DK) on Aben Lukke Media Player [media_player.aben_lukke].",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] enters the home zone.",
"conditions": "There are no conditions for this automation.",
"action": "The system will use text-to-speech to announce 'Mor er kommet hjem' (Mother is home) in Danish on the Aben Lukke Media Player [media_player.aben_lukke]."
},
"human_like": "Announces when Trine arrives home by playing a Danish voice message on the living room speaker.",
"complexity": "low"
}
},
{
"id": "'1721778388939'",
"result": {
"structured": "TRIGGER: When Victoria Haase Pedersen [person.victoria_haase_pedersen] enters the Home Zone [zone.home]. CONDITIONS: None. ACTIONS: Use the TTS service to make Aben Lukke Media Player [media_player.aben_lukke] say 'Victoria er kommet hjem' in Danish (da-DK).",
"natural_language": {
"trigger": "When Victoria Haase Pedersen [person.victoria_haase_pedersen] enters the home area defined by the Home Zone [zone.home].",
"conditions": "There are no conditions that need to be met.",
"action": "The automation uses the text-to-speech service to have the Aben Lukke Media Player [media_player.aben_lukke] announce 'Victoria er kommet hjem' (Victoria has come home) in Danish."
},
"human_like": "Announces that Victoria has arrived home using a voice message on the Aben Lukke media player.",
"complexity": "low"
}
},
{
"id": "'1721778520182'",
"result": {
"structured": "TRIGGER: When Tristan [person.tristan] enters the Home Zone [zone.home]. CONDITIONS: None. ACTIONS: Use the TTS service to say 'Tristan er kommet hjem' in Danish on the Aben Lukke Media Player [media_player.aben_lukke].",
"natural_language": {
"trigger": "When Tristan [person.tristan] enters the home zone.",
"conditions": "There are no conditions for this automation.",
"action": "Announces 'Tristan er kommet hjem' (Tristan has come home) in Danish using text-to-speech on the Aben Lukke Media Player [media_player.aben_lukke]."
},
"human_like": "Announces when Tristan arrives home by playing a Danish voice message on the living room speaker.",
"complexity": "low"
}
},
{
"id": "'1721778585916'",
"result": {
"structured": "TRIGGER: When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] enters the Home Zone [zone.home]. CONDITIONS: None. ACTIONS: Use the TTS service to say 'Far er kommet hjem' in Danish on the Aben Lukke Media Player [media_player.aben_lukke].",
"natural_language": {
"trigger": "When Frederik Kristian Pedersen [person.frederik_kristian_pedersen] arrives home, entering the defined home area.",
"conditions": "There are no conditions that must be met.",
"action": "Announces 'Far er kommet hjem' (Dad is home) in Danish through the Aben Lukke Media Player [media_player.aben_lukke]."
},
"human_like": "Announces that Dad is home when he arrives, using a text-to-speech message on the living room media player.",
"complexity": "low"
}
},
{
"id": "'1721779415086'",
"result": {
"structured": "TRIGGER: When Bryggers Door Sensor [3f44441253de2330a9ee51f89655ff06] is opened. CONDITIONS: None. ACTIONS: Use cloud TTS to say 'Bryggersdøren er blevet åbnet' in Danish (da-DK) on Aben Lukke Media Player [media_player.aben_lukke].",
"natural_language": {
"trigger": "When the Bryggers Door Sensor [3f44441253de2330a9ee51f89655ff06] detects that the door has been opened.",
"conditions": "There are no conditions that must be met.",
"action": "The automation uses cloud-based text-to-speech to announce in Danish, 'Bryggersdøren er blevet åbnet' (The utility room door has been opened), through the Aben Lukke Media Player [media_player.aben_lukke]."
},
"human_like": "Announces in Danish when the utility room door is opened.",
"complexity": "low"
}
},
{
"id": "'1722303277292'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] enters the zone Rema 1000 Zone [zone.rema1000]. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with title 'Tryk her' and message 'Husk og købe disse vare'. The notification includes a click action to open the URL '/todo?entity_id=todo.indkobsliste'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] enters the Rema 1000 Zone [zone.rema1000].",
"conditions": "There are no conditions.",
"action": "Sends a notification to Trine's iPhone [notify.mobile_app_trine_iphone_14_pro] with the title 'Tryk her' and the message 'Husk og købe disse vare'. Tapping the notification opens the shopping list [todo.indkobsliste]."
},
"human_like": "Sends a reminder to Trine's phone to check the shopping list when she arrives at Rema 1000.",
"complexity": "low"
}
},
{
"id": "'1722349301296'",
"result": {
"structured": "TRIGGER: When Trine Haase Pedersen [person.trine_haase_pedersen] enters Rema 1000 Zone [zone.rema1000] OR when Trine Haase Pedersen [person.trine_haase_pedersen] enters Fotex Zone [zone.fotex] OR when Trine Haase Pedersen [person.trine_haase_pedersen] enters Coop 365 Hasseris Zone [zone.coop_365_hasseris] OR when Trine Haase Pedersen [person.trine_haase_pedersen] enters Netto Hasseris Zone [zone.handel_netto_hasseris]. CONDITIONS: None. ACTIONS: Send a notification to Trine iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with title 'Tryk her', message 'Husk og købe disse vare', and a data payload containing a click action '/Huskelister' and a URL '/todo?entity_id=todo.indkobsliste'.",
"natural_language": {
"trigger": "When Trine Haase Pedersen [person.trine_haase_pedersen] enters any of the specified grocery store zones: Rema 1000 Zone [zone.rema1000], Fotex Zone [zone.fotex], Coop 365 Hasseris Zone [zone.coop_365_hasseris], or Netto Hasseris Zone [zone.handel_netto_hasseris].",
"conditions": "There are no conditions that must be met.",
"action": "Sends a notification to Trine's iPhone 14 Pro [notify.mobile_app_trine_iphone_14_pro] with the title 'Tryk her' and the message 'Husk og købe disse vare'. The notification includes a deep link to the shopping list, opening the app to the 'Huskelister' section or directly to the todo list entity Indkøbsliste Todo [todo.indkobsliste]."
},
"human_like": "Reminds Trine to check her shopping list when she arrives at a grocery store.",
"complexity": "low"
}
},
{
"id": "'1727648335717'",
"result": {
"structured": "TRIGGER: When the time reaches 22:00:00. CONDITIONS: None. ACTIONS: Turn off Legestue TV Switch [device_id: c9e17d5fef2b455565f01cf5cb1c3a72].",
"natural_language": {
"trigger": "Every day at 10:00 PM.",
"conditions": "There are no conditions for this automation.",
"action": "Turns off the Legestue TV Switch [device_id: c9e17d5fef2b455565f01cf5cb1c3a72]."
},
"human_like": "Turns off the TV in the playroom every night at 10 PM.",
"complexity": "low"
}
},
{
"id": "'1727648397425'",
"result": {
"structured": "TRIGGER: At 06:00:00. CONDITIONS: None. ACTIONS: Turn on Legestue TV Switch [device_id: c9e17d5fef2b455565f01cf5cb1c3a72].",
"natural_language": {
"trigger": "Every day at 6:00 AM.",
"conditions": "There are no conditions for this automation.",
"action": "Turns on the Legestue TV Switch [device_id: c9e17d5fef2b455565f01cf5cb1c3a72]."
},
"human_like": "Turns on the TV in the playroom every morning at 6 AM.",
"complexity": "low"
}
},
{
"id": "'1734593887463'",
"result": {
"structured": "TRIGGER: When Kontor Window Sensor [723e8118874603457d5746b52aa633f1] is opened. CONDITIONS: None. ACTIONS: Set Kontor Radiator [device_id: 70031b73bebd812285d08297d6d4cd38] HVAC mode to off.",
"natural_language": {
"trigger": "When the Kontor Window Sensor [723e8118874603457d5746b52aa633f1] detects that the window is opened.",
"conditions": "There are no conditions that need to be met.",
"action": "Turns off the heating for the Kontor Radiator [device_id: 70031b73bebd812285d08297d6d4cd38] by setting its HVAC mode to off."
},
"human_like": "Turns off the office radiator when the window is opened to save energy.",
"complexity": "low"
}
},
{
"id": "'1734593961335'",
"result": {
"structured": "TRIGGER: When Kontor Window Sensor [723e8118874603457d5746b52aa633f1] is not opened (device trigger). CONDITIONS: None. ACTIONS: Set Kontor Radiator [device_id: 70031b73bebd812285d08297d6d4cd38] HVAC mode to auto.",
"natural_language": {
"trigger": "When the Kontor Window Sensor [723e8118874603457d5746b52aa633f1] reports that the window is not opened.",
"conditions": "There are no conditions for this automation.",
"action": "Sets the Kontor Radiator [device_id: 70031b73bebd812285d08297d6d4cd38] to auto mode."
},
"human_like": "Automatically sets the office radiator to auto mode when the window is closed.",
"complexity": "low"
}
},
{
"id": "'1734680525144'",
"result": {
"structured": "TRIGGER: When Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] receives an MQTT action of type arrow_right_click. CONDITIONS: None. ACTIONS: Turn off Kontor Light 1 [light.2cc18da8fb81e31ca785b2a140f2ea36] AND Turn off Kontor Light 2 [light.9a6783159b65f0db65209a0b725a8280].",
"natural_language": {
"trigger": "When the Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] sends a specific signal indicating the right arrow button has been clicked.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off both Kontor Light 1 [light.2cc18da8fb81e31ca785b2a140f2ea36] and Kontor Light 2 [light.9a6783159b65f0db65209a0b725a8280] in the office."
},
"human_like": "Turns off the office lights when the right arrow button on the Kontor remote is clicked.",
"complexity": "low"
}
},
{
"id": "'1734680554585'",
"result": {
"structured": "TRIGGER: When Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] sends an MQTT action of type arrow_left_click. CONDITIONS: None. ACTIONS: Turn on Kontor Light 1 [2cc18da8fb81e31ca785b2a140f2ea36] to 60% brightness AND Turn on Kontor Light 2 [9a6783159b65f0db65209a0b725a8280] to 60% brightness.",
"natural_language": {
"trigger": "When the left arrow button on the Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] is clicked.",
"conditions": "There are no conditions for this automation.",
"action": "Turn on Kontor Light 1 [2cc18da8fb81e31ca785b2a140f2ea36] and Kontor Light 2 [9a6783159b65f0db65209a0b725a8280], both set to 60% brightness."
},
"human_like": "Turns on the office lights to 60% brightness when the left arrow button on the office remote is pressed.",
"complexity": "low"
}
},
{
"id": "'1734680599895'",
"result": {
"structured": "TRIGGER: When Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] sends an MQTT brightness_up_click action. CONDITIONS: None. ACTIONS: Toggle Baghave Switch [ed48ca70f647f9eac01ebbefb009c1cd].",
"natural_language": {
"trigger": "When the Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] is clicked for brightness up.",
"conditions": "There are no conditions.",
"action": "Toggles the Baghave Switch [ed48ca70f647f9eac01ebbefb009c1cd] on or off."
},
"human_like": "Toggles the backyard switch when the office remote's brightness up button is clicked.",
"complexity": "low"
}
},
{
"id": "'1734690378274'",
"result": {
"structured": "TRIGGER: When Legestue Occupancy Sensor [322a2c0112b2f673c85db15150579961] becomes occupied. CONDITIONS: None. ACTIONS: Turn on Legestue Light 1 [light.legestue_light_legestue1], Legestue Light 2 [light.legestue_light_legestue2], and Legestue Light 3 [light.legestue_light_legestue3] to 60% brightness with a warm orange color (RGB 240, 178, 112).",
"natural_language": {
"trigger": "When the Legestue Occupancy Sensor [322a2c0112b2f673c85db15150579961] detects that the room is occupied.",
"conditions": "There are no conditions that need to be met.",
"action": "Turns on all three lights in the playroom (Legestue Light 1 [light.legestue_light_legestue1], Legestue Light 2 [light.legestue_light_legestue2], and Legestue Light 3 [light.legestue_light_legestue3]) to 60% brightness with a warm orange color."
},
"human_like": "Automatically turns on the playroom lights when the occupancy sensor detects someone in the room.",
"complexity": "low"
}
},
{
"id": "'1734690419544'",
"result": {
"structured": "TRIGGER: When Legestue Occupancy Sensor [322a2c0112b2f673c85db15150579961] reports the room is not occupied. CONDITIONS: None. ACTIONS: Turn off Legestue Light 1 [light.legestue_light_legestue1], Legestue Light 2 [light.legestue_light_legestue2], and Legestue Light 3 [light.legestue_light_legestue3].",
"natural_language": {
"trigger": "When the Legestue Occupancy Sensor [322a2c0112b2f673c85db15150579961] detects that the room is no longer occupied.",
"conditions": "There are no additional conditions that need to be met.",
"action": "Turns off all the lights in the playroom: Legestue Light 1 [light.legestue_light_legestue1], Legestue Light 2 [light.legestue_light_legestue2], and Legestue Light 3 [light.legestue_light_legestue3]."
},
"human_like": "Automatically turns off the lights in the playroom when the occupancy sensor indicates the room is empty.",
"complexity": "low"
}
},
{
"id": "'1734786548210'",
"result": {
"structured": "TRIGGER: When Sophie Remote 2 Action [sensor.sophie_remote_sophie2_action] changes state. CONDITIONS: None. ACTIONS: Control Sophie Light [device_id: cac765242ce4b1a532fbc438cfa79097] based on the action reported by the remote (e.g., turn on, turn off, brighten, dim).",
"natural_language": {
"trigger": "The automation is triggered whenever the state of the Sophie Remote 2 Action [sensor.sophie_remote_sophie2_action] changes, which happens when a button on the remote is pressed.",
"conditions": "There are no conditions that must be met for the action to run.",
"action": "The automation controls the Sophie Light [device_id: cac765242ce4b1a532fbc438cfa79097] by turning it on, off, or adjusting its brightness, depending on the specific action received from the remote."
},
"human_like": "This automation links a remote control to a light, allowing you to turn the light on or off and adjust its brightness using the remote's buttons.",
"complexity": "low"
}
},
{
"id": "'1734786980649'",
"result": {
"structured": "TRIGGER: When Sophie Remote 1 Action [sensor.sophie_remote_sophie1_action] changes state. CONDITIONS: None. ACTIONS: Control the light device [device_id: ba38ff9b156656877c62124304072f59] based on the action received from the remote. The specific actions are: turn on, turn off, brightness up, brightness down, and toggle.",
"natural_language": {
"trigger": "Whenever the state of the remote control sensor Sophie Remote 1 Action [sensor.sophie_remote_sophie1_action] changes.",
"conditions": "There are no conditions that must be met.",
"action": "Controls the light device associated with the device ID 'ba38ff9b156656877c62124304072f59' (Sophie Light 2). The specific action performed (e.g., turning the light on, off, adjusting brightness up or down, or toggling its state) depends on the specific command received from the remote."
},
"human_like": "Uses the Sophie remote control to turn on, off, or adjust the brightness of a specific light in Sophie's room.",
"complexity": "low"
}
},
{
"id": "'1734877370629'",
"result": {
"structured": "TRIGGER: When Kontor Pressent Occupancy [2716cd871347a641e9e3816c0a9e7867] becomes occupied. CONDITIONS: None. ACTIONS: Choose based on condition: IF Kontor Pressent Occupancy [2716cd871347a641e9e3816c0a9e7867] is occupied THEN turn on Kontor Group Light [light.kontor_group] with brightness 178 and color temperature 3300K. IF Kontor Pressent Occupancy [2716cd871347a641e9e3816c0a9e7867] is not occupied THEN turn off Kontor Group Light [light.kontor_group].",
"natural_language": {
"trigger": "When the Kontor Pressent Occupancy sensor [2716cd871347a641e9e3816c0a9e7867] detects that the room becomes occupied.",
"conditions": "There are no additional conditions.",
"action": "The automation checks the occupancy state. If the Kontor Pressent Occupancy [2716cd871347a641e9e3816c0a9e7867] is occupied, it turns on the Kontor Group Light [light.kontor_group] to a specific brightness and color temperature. If the sensor reports the room is not occupied, it turns off the Kontor Group Light [light.kontor_group]."
},
"human_like": "Turns the office lights on when someone is present and off when the room is empty.",
"complexity": "medium"
}
},
{
"id": "'1734879019552'",
"result": {
"structured": "TRIGGER: When Stue Sofa Light [7861d4d4869e92f5bc28e46e9f2a5ef1] is turned on. CONDITIONS: None. ACTIONS: Turn on Stue Lille Lampe Switch [62a0859166b131d5a113460522ec7cf4].",
"natural_language": {
"trigger": "When the Stue Sofa Light [7861d4d4869e92f5bc28e46e9f2a5ef1] is turned on.",
"conditions": "There are no conditions.",
"action": "Turn on the Stue Lille Lampe Switch [62a0859166b131d5a113460522ec7cf4]."
},
"human_like": "Turns on a small lamp in the living room whenever the sofa light is switched on.",
"complexity": "low"
}
},
{
"id": "'1734879050796'",
"result": {
"structured": "TRIGGER: When Stue Sofa Light [7861d4d4869e92f5bc28e46e9f2a5ef1] is turned off. CONDITIONS: None. ACTIONS: Turn off Stue Lille Lampe Switch [62a0859166b131d5a113460522ec7cf4].",
"natural_language": {
"trigger": "When the Stue Sofa Light [7861d4d4869e92f5bc28e46e9f2a5ef1] is turned off.",
"conditions": "There are no conditions.",
"action": "Turn off the Stue Lille Lampe Switch [62a0859166b131d5a113460522ec7cf4]."
},
"human_like": "Turns off the small lamp in the living room when the sofa light is switched off.",
"complexity": "low"
}
},
{
"id": "'1735041774519'",
"result": {
"structured": "TRIGGER: When Køkken Spisebord Remote [device_id: cca2de2ff5712542389ae97e7981890f] sends an MQTT action of type toggle. CONDITIONS: None. ACTIONS: Toggle Køkken Spisebord Light [light.234477e1b5a8be1a9723a99896d7dbb9].",
"natural_language": {
"trigger": "When the Køkken Spisebord Remote [device_id: cca2de2ff5712542389ae97e7981890f] sends a toggle command via MQTT.",
"conditions": "There are no conditions that must be met.",
"action": "Toggle the state of the Køkken Spisebord Light [light.234477e1b5a8be1a9723a99896d7dbb9], turning it on if it's off, or off if it's on."
},
"human_like": "Toggles the kitchen dining table light on or off when the corresponding remote button is pressed.",
"complexity": "low"
}
},
{
"id": "'1735175315574'",
"result": {
"structured": "TRIGGER: When Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] sends an MQTT action of type arrow_left_hold. CONDITIONS: None. ACTIONS: Increase brightness of Kontor Light 1 [light.2cc18da8fb81e31ca785b2a140f2ea36] AND increase brightness of Kontor Light 2 [light.9a6783159b65f0db65209a0b725a8280].",
"natural_language": {
"trigger": "When the Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] is used to hold down the left arrow button.",
"conditions": "There are no conditions; the action runs immediately after the trigger.",
"action": "Increases the brightness of Kontor Light 1 [light.2cc18da8fb81e31ca785b2a140f2ea36] and Kontor Light 2 [light.9a6783159b65f0db65209a0b725a8280]."
},
"human_like": "Holding the left arrow button on the office remote increases the brightness of both office lights.",
"complexity": "low"
}
},
{
"id": "'1735175377719'",
"result": {
"structured": "TRIGGER: When Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] sends an MQTT action of type arrow_right_hold. CONDITIONS: None. ACTIONS: Decrease brightness of Kontor Light 1 [2cc18da8fb81e31ca785b2a140f2ea36] AND decrease brightness of Kontor Light 2 [9a6783159b65f0db65209a0b725a8280].",
"natural_language": {
"trigger": "When the Kontor Remote [device_id: 9d40a6d3b1d108acd0092f707f339bf0] is used to hold the right arrow button.",
"conditions": "There are no conditions for this automation.",
"action": "Decreases the brightness of Kontor Light 1 [2cc18da8fb81e31ca785b2a140f2ea36] and Kontor Light 2 [9a6783159b65f0db65209a0b725a8280]."
},
"human_like": "Holding the right arrow button on the office remote dims both office lights.",
"complexity": "low"
}
},
{
"id": "'1735176310831'",
"result": {
"structured": "TRIGGER: When Stue Terrassedør Sensor [6094e2542e284055babcfca715c253b4] changes to open. CONDITIONS: None. ACTIONS: Use TTS to say 'Terrassedøren i stuen er blevet åbnet' in Danish on Aben Lukke Media Player [media_player.aben_lukke].",
"natural_language": {
"trigger": "When the Stue Terrassedør Sensor [6094e2542e284055babcfca715c253b4] is opened.",
"conditions": "There are no conditions.",
"action": "Announces 'Terrassedøren i stuen er blevet åbnet' (The patio door in the living room has been opened) in Danish using the Aben Lukke Media Player [media_player.aben_lukke]."
},
"human_like": "Announces when the living room patio door is opened.",
"complexity": "low"
}
},
{
"id": "'1735876650796'",
"result": {
"structured": "TRIGGER: When Soveværelse Window Sensor [e47308fd3f35b9d3291a8bd8a0bfd504] is not opened (device trigger 'not_opened'). CONDITIONS: None. ACTIONS: Set HVAC mode to auto for the device Soveværelse Radiator [device_id: 547da8a34695f82651d4b68935710d1d].",
"natural_language": {
"trigger": "When the Soveværelse Window Sensor [e47308fd3f35b9d3291a8bd8a0bfd504] reports that the window is not opened.",
"conditions": "There are no conditions for this automation.",
"action": "Sets the Soveværelse Radiator [device_id: 547da8a34695f82651d4b68935710d1d] to auto mode."
},
"human_like": "Automatically sets the bedroom radiator to auto mode when the window is not opened.",
"complexity": "low"
}
},
{
"id": "'1735876690141'",
"result": {
"structured": "TRIGGER: When Soveværelse Window Sensor [e47308fd3f35b9d3291a8bd8a0bfd504] is opened. CONDITIONS: None. ACTIONS: Turn off Soveværelse Radiator [device_id: 547da8a34695f82651d4b68935710d1d].",
"natural_language": {
"trigger": "When the Soveværelse Window Sensor [e47308fd3f35b9d3291a8bd8a0bfd504] detects the window is opened.",
"conditions": "There are no conditions.",
"action": "Turns off the Soveværelse Radiator [device_id: 547da8a34695f82651d4b68935710d1d] by setting its HVAC mode to 'off'."
},
"human_like": "Turns off the bedroom radiator when the window is opened to save energy.",
"complexity": "low"
}
},
{
"id": "'1740491821573'",
"result": {
"structured": "TRIGGER: When Victoria Window Sensor [922b17a39254b79f7e7773e61c86e3f1] is opened. CONDITIONS: None. ACTIONS: Turn off Victoria Radiator [device_id: f3fbaf154948921904985aa4c21f2a6b].",
"natural_language": {
"trigger": "When the Victoria Window Sensor [922b17a39254b79f7e7773e61c86e3f1] detects that the window has been opened.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off the heating by sending a turn off command to the Victoria Radiator [device_id: f3fbaf154948921904985aa4c21f2a6b]."
},
"human_like": "Turns off the heating in Victoria's room when the window is opened to save energy.",
"complexity": "low"
}
},
{
"id": "'1740491914825'",
"result": {
"structured": "TRIGGER: When Victoria Window Sensor [922b17a39254b79f7e7773e61c86e3f1] changes from open to closed (not_opened). CONDITIONS: None. ACTIONS: Set Victoria Radiator [device_id: f3fbaf154948921904985aa4c21f2a6b] HVAC mode to auto.",
"natural_language": {
"trigger": "When the Victoria Window Sensor [922b17a39254b79f7e7773e61c86e3f1] reports that the window is no longer open (i.e., it has closed).",
"conditions": "There are no conditions that must be met.",
"action": "Turn on the heating by setting the Victoria Radiator [device_id: f3fbaf154948921904985aa4c21f2a6b] to auto mode."
},
"human_like": "Turns the heating back on in Victoria's room when the window is closed.",
"complexity": "low"
}
},
{
"id": "'1742283043468'",
"result": {
"structured": "TRIGGER: When Kontor Pressent Occupancy [2716cd871347a641e9e3816c0a9e7867] is not occupied for 5 seconds. CONDITIONS: None. ACTIONS: Turn off Kontor Pressent Switch [9a7ccb3f347f15e3d7b956a8daeaae77].",
"natural_language": {
"trigger": "When the Kontor Pressent Occupancy sensor [2716cd871347a641e9e3816c0a9e7867] detects the area is not occupied for a continuous period of 5 seconds.",
"conditions": "There are no additional conditions.",
"action": "Turn off the Kontor Pressent Switch [9a7ccb3f347f15e3d7b956a8daeaae77]."
},
"human_like": "Turns off the office light when the occupancy sensor detects the room has been empty for 5 seconds.",
"complexity": "low"
}
},
{
"id": "garage_sluk",
"result": {
"structured": "TRIGGER: When the sun rises with an offset of +30 minutes. CONDITIONS: None. ACTIONS: Turn off Garage Light 1 [light.garage_light_garage1] AND turn off Garage Light 2 [light.garage_light_garage2].",
"natural_language": {
"trigger": "When the sun rises, but with a 30-minute delay.",
"conditions": "There are no conditions that need to be met.",
"action": "Turns off both garage lights: Garage Light 1 [light.garage_light_garage1] and Garage Light 2 [light.garage_light_garage2]."
},
"human_like": "Turns off the garage lights 30 minutes after sunrise.",
"complexity": "low"
}
},
{
"id": "garage_tænd",
"result": {
"structured": "TRIGGER: When sunset occurs with an offset of -30 minutes (i.e., 30 minutes before sunset). CONDITIONS: None. ACTIONS: Activate Garage Nat Scene [scene.GarageNat].",
"natural_language": {
"trigger": "The automation is triggered 30 minutes before sunset.",
"conditions": "There are no additional conditions that must be met.",
"action": "It turns on the Garage Nat Scene [scene.GarageNat]."
},
"human_like": "Turns on the garage lights 30 minutes before sunset.",
"complexity": "low"
}
},
{
"id": "Garage_when_closing_door",
"result": {
"structured": "TRIGGER: When Bryggers Door Contact [binary_sensor.bryggers_sensor_bryggersdor_contact] remains closed (off) for 3 minutes. CONDITIONS: Sun [sun.sun] is below the horizon. ACTIONS: Activate Garage Door Close Scene [scene.garage_when_door_closes].",
"natural_language": {
"trigger": "When the Bryggers Door Contact [binary_sensor.bryggers_sensor_bryggersdor_contact] has been closed for a continuous period of three minutes.",
"conditions": "The sun must be below the horizon, indicating it is nighttime.",
"action": "Turns on the Garage Door Close Scene [scene.garage_when_door_closes]."
},
"human_like": "Activates a garage lighting scene when the utility room door has been closed for three minutes at night.",
"complexity": "low"
}
},
{
"id": "Garage_when_opening_door",
"result": {
"structured": "TRIGGER: When Bryggers Door Contact [binary_sensor.bryggers_sensor_bryggersdor_contact] changes to open (on). CONDITIONS: Sun [sun.sun] is below the horizon. ACTIONS: Activate Garage Opening Door Scene [scene.garage_opening_the_door].",
"natural_language": {
"trigger": "When the Bryggers Door Contact [binary_sensor.bryggers_sensor_bryggersdor_contact] opens.",
"conditions": "The sun [sun.sun] must be below the horizon, meaning it is night time.",
"action": "Turns on the Garage Opening Door Scene [scene.garage_opening_the_door]."
},
"human_like": "Turns on the garage lights when the utility room door is opened at night.",
"complexity": "low"
}
},
{
"id": "417395bc-bd64-40a3-b20a-9062d426a01f",
"result": {
"structured": "TRIGGER: When a media_player.play_media service call occurs OR When a cast.show_lovelace_view service call occurs. CONDITIONS: (Automation is enabled in script settings) AND (Trigger is cast.show_lovelace_view OR the service call data includes announce set to true) AND (Trigger is media_player.play_media OR dashboard resume is enabled). ACTIONS: Set internal variables. If no resume scripts are running, remove all groups containing 'ghresume'. Check if target entities are not already being resumed. If Spotify entities exist, update them. Set data_source and target_list. Gather detailed player_data for all cast entities. If target_list contains YouTube Music players, interrupt them. If triggered by play_media and announce_volume is defined and non-zero, wait for first entity to become idle, then set its volume. Wait 0.5 seconds. Re-check if target entities are not already being resumed. Start the Google Home Resume script with variables.",
"natural_language": {
"trigger": "The automation is triggered when a service call is made to play media on a media player or to show a Lovelace view on a cast device.",
"conditions": "The automation will only proceed if it is enabled in the script settings. Additionally, if the trigger was a cast.show_lovelace_view call, it proceeds; if it was a media_player.play_media call, it proceeds only if the call included an 'announce' flag set to true. Furthermore, if the trigger was a media_player.play_media call, it proceeds; if it was a cast.show_lovelace_view call, it proceeds only if dashboard casting is enabled in the settings.",
"action": "The automation first sets up many internal variables for tracking. As a safety measure, if the main resume script isn't running, it cleans up any leftover groups. It then checks to ensure the target speakers aren't already part of an active resume process. If any Spotify players exist, it updates their state. It identifies which cast devices are the targets and gathers extensive data about all cast players, including their state, volume, group memberships, and what media is playing. If any of the target devices are playing via YouTube Music, it sends an interrupt command. If the trigger was a media play with an announcement volume set, it waits for the first target speaker to become idle and then sets its volume to the announcement level. After a brief half-second delay, it re-verifies that the targets are still not being resumed. Finally, it activates the main 'Google Home Resume' script, passing all the collected data to it to handle the actual resume logic."
},
"human_like": "This automation manages the resumption of media playback on Google Home devices, coordinating between different media sources and speaker groups when a new play or cast command is issued.",
"complexity": "high"
}
},
{
"id": "'16355416316486'",
"result": {
"structured": "TRIGGER: When the number of people in Home Zone [zone.home] drops below 1. CONDITIONS: None. ACTIONS: Activate Sluk Alt Lys Scene [scene.SlukAltLysUntagetUdelysOgUnderKoekkenbordet].",
"natural_language": {
"trigger": "When the Home Zone [zone.home] reports that the number of people present falls below one.",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the Sluk Alt Lys Scene [scene.SlukAltLysUntagetUdelysOgUnderKoekkenbordet]."
},
"human_like": "Turns off all lights when everyone has left the home.",
"complexity": "low"
}
},
{
"id": "AI Suggestions - New Entity Detection",
"result": {
"structured": "TRIGGER: When an entity is created in the entity registry (event entity_registry_updated with action: create) OR When an entity is updated in the entity registry (event entity_registry_updated with action: update). CONDITIONS: The automation AI Suggestions New Entity Detection Automation [automation.ai_suggestions_new_entity_detection] was last triggered more than 1 hour ago OR it has never been triggered. ACTIONS: Call the service ai_automation_suggester.generate_suggestions.",
"natural_language": {
"trigger": "When a new entity is registered (created) in Home Assistant, or when an existing entity's registration is updated.",
"conditions": "This automation will only run if it has been at least one hour since it last triggered, or if it has never triggered before.",
"action": "Generates automation suggestions by calling the AI suggestion service."
},
"human_like": "Automatically generates AI-powered automation suggestions whenever new devices or entities are added to the system, but not more than once per hour.",
"complexity": "medium"
}
},
{
"id": "'16355416358686'",
"result": {
"structured": "TRIGGER: When Home Zone [zone.home] numeric state is above 0. CONDITIONS: (Sun is before sunrise) OR (Sun is after sunset). ACTIONS: Turn on Tænd Lys Når Alarm Fra kobles Scene [scene.TaendLysNaaAlarmFrakolbles].",
"natural_language": {
"trigger": "When the Home Zone [zone.home] reports a numeric state greater than zero, indicating that someone is home.",
"conditions": "If the current time is either before sunrise or after sunset.",
"action": "Activates the scene 'Tænd Lys Når Alarm Fra kobles Scene' [scene.TaendLysNaaAlarmFrakolbles] to turn on lights."
},
"human_like": "Turns on a specific lighting scene when someone is home and it is either before sunrise or after sunset.",
"complexity": "low"
}
},
{
"id": "climate_control_for_two_windows_in_Sophies_room",
"result": {
"structured": "TRIGGER: When Sophie Window 1 Contact [binary_sensor.sophie_sensor_sophievindue1_contact] changes state OR When Sophie Window 2 Contact [binary_sensor.sophie_sensor_sophievindue2_contact] changes state. CONDITIONS: None. ACTIONS: Choose based on window states. IF (Sophie Window 1 Contact [binary_sensor.sophie_sensor_sophievindue1_contact] is open (on) OR Sophie Window 2 Contact [binary_sensor.sophie_sensor_sophievindue2_contact] is open (on)) THEN Turn off Sophies Værelse Climate [climate.sophies_vaerelse]. ELSE IF (Sophie Window 1 Contact [binary_sensor.sophie_sensor_sophievindue1_contact] is closed (off) AND Sophie Window 2 Contact [binary_sensor.sophie_sensor_sophievindue2_contact] is closed (off)) THEN Set Sophies Værelse Climate [climate.sophies_vaerelse] to auto mode.",
"natural_language": {
"trigger": "Whenever the state of either Sophie Window 1 Contact [binary_sensor.sophie_sensor_sophievindue1_contact] or Sophie Window 2 Contact [binary_sensor.sophie_sensor_sophievindue2_contact] changes.",
"conditions": "There are no additional conditions that must be met.",
"action": "The automation checks the state of the windows. If either Sophie Window 1 Contact or Sophie Window 2 Contact is open, it turns off the heating by turning off the climate control for Sophies Værelse Climate [climate.sophies_vaerelse]. If both Sophie Window 1 Contact and Sophie Window 2 Contact are closed, it turns the heating back on by setting the climate control for Sophies Værelse Climate [climate.sophies_vaerelse] to auto mode."
},
"human_like": "Automatically turns off the heating in Sophie's room if either window is open, and turns it back on when both windows are closed.",
"complexity": "medium"
}
},
{
"id": "sovevaerelseDag",
"result": {
"structured": "TRIGGER: When Soveværelse Light [light.sovevaerelse] turns on from off. CONDITIONS: The current time is between 06:00:01 and 18:59:59. ACTIONS: Activate Soveværelse Dag Scene [scene.SovevaerelseDag].",
"natural_language": {
"trigger": "When the Soveværelse Light [light.sovevaerelse] is turned on from an off state.",
"conditions": "The automation only runs if the current time is between 6:00:01 AM and 6:59:59 PM.",
"action": "Activates the 'Soveværelse Dag' scene [scene.SovevaerelseDag]."
},
"human_like": "Activates the daytime scene for the bedroom when the light is turned on during the day.",
"complexity": "low"
}
},
{
"id": "sovevaerelseNat",
"result": {
"structured": "TRIGGER: When Soveværelse Light [light.sovevaerelse] turns on from off. CONDITIONS: The current time is between 19:00:00 and 06:00:00. ACTIONS: Activate Soveværelse Nat Scene [scene.SovevaerelseNat].",
"natural_language": {
"trigger": "When the Soveværelse Light [light.sovevaerelse] is turned on from an off state.",
"conditions": "The automation only runs if the current time is between 7:00 PM and 6:00 AM.",
"action": "Activates the Soveværelse Nat Scene [scene.SovevaerelseNat]."
},
"human_like": "Automatically sets the bedroom to a night-time lighting scene when the light is turned on during the evening or night.",
"complexity": "low"
}
},
{
"id": "terrasseBaghave_tænd",
"result": {
"structured": "TRIGGER: When sunset occurs with an offset of -30 minutes. CONDITIONS: None. ACTIONS: Turn on Terrasse Baghave Nat Scene [scene.terrasseBaghaveNat].",
"natural_language": {
"trigger": "When the sun sets, 30 minutes before the actual sunset event.",
"conditions": "There are no conditions that must be met.",
"action": "Activates the Terrasse Baghave Nat Scene [scene.terrasseBaghaveNat]."
},
"human_like": "Turns on the backyard terrace night scene 30 minutes before sunset.",
"complexity": "low"
}
},
{
"id": "terrasseForhave_tænd",
"result": {
"structured": "TRIGGER: When sunset occurs with an offset of -30 minutes. CONDITIONS: None. ACTIONS: Activate Terrasse Forhave Nat Scene [scene.terrasseForhaveNat].",
"natural_language": {
"trigger": "When sunset is 30 minutes away.",
"conditions": "There are no conditions that must be met.",
"action": "Turns on the Terrasse Forhave Nat Scene [scene.terrasseForhaveNat]."
},
"human_like": "Turns on the front yard lights 30 minutes before sunset.",
"complexity": "low"
}
},
{
"id": "terrasse_sluk",
"result": {
"structured": "TRIGGER: When sunrise occurs with a 30-minute offset. CONDITIONS: None. ACTIONS: Turn off Terrasse Forhave Light [light.terrasse_light_terrasseforhave] AND Turn off Terrasse Baghave Light [light.terrasse_light_terrassebaghave].",
"natural_language": {
"trigger": "When the sun rises, 30 minutes after the actual sunrise event.",
"conditions": "There are no conditions that must be met.",
"action": "Turns off both the Terrasse Forhave Light [light.terrasse_light_terrasseforhave] and the Terrasse Baghave Light [light.terrasse_light_terrassebaghave]."
},
"human_like": "Turns off the terrace lights 30 minutes after sunrise.",
"complexity": "low"
}
},
{
"id": "under_koekkenbordet_Off",
"result": {
"structured": "TRIGGER: When sunrise occurs with a 30-minute offset. CONDITIONS: None. ACTIONS: Turn off Køkken Under Bordet Light [light.controller_rgb_ir_b788e5].",
"natural_language": {
"trigger": "When the sun rises, with a delay of 30 minutes.",
"conditions": "There are no conditions for this automation.",
"action": "Turns off the Køkken Under Bordet Light [light.controller_rgb_ir_b788e5]."
},
"human_like": "Turns off the kitchen under-cabinet light 30 minutes after sunrise.",
"complexity": "low"
}
},
{
"id": "under_koekkenbordet-On",
"result": {
"structured": "TRIGGER: When the sun sets, with an offset of 30 minutes before sunset. CONDITIONS: None. ACTIONS: Turn on Køkken Under Bordet Light [light.controller_rgb_ir_b788e5].",
"natural_language": {
"trigger": "The automation triggers 30 minutes before the sun sets.",
"conditions": "There are no conditions that need to be met for this automation to run.",
"action": "Turns on the Køkken Under Bordet Light [light.controller_rgb_ir_b788e5]."
},
"human_like": "Turns on the kitchen under-cabinet light 30 minutes before sunset.",
"complexity": "low"
}
},
{
"id": "AI Suggestions - Weekly Review",
"result": {
"structured": "TRIGGER: When the time is 03:00:00. CONDITIONS: The day of the week is Sunday. ACTIONS: Call the service ai_automation_suggester.generate_suggestions with data {all_entities: true} AND call the service persistent_notification.create with data {title: 'Weekly Automation Review', message: 'The AI Automation Suggester has completed its weekly review. Check the suggestions sensor for new automation ideas!', notification_id: 'weekly_automation_review'}.",
"natural_language": {
"trigger": "The automation triggers every day at 3:00 AM.",
"conditions": "The automation only proceeds if the current day is Sunday.",
"action": "It runs the AI Automation Suggester service to scan all entities for new automation opportunities and then creates a persistent notification to inform the user that the review is complete."
},
"human_like": "Runs a weekly AI-powered scan on Sunday mornings to find new automation ideas and notifies the user when it's done.",
"complexity": "low"
}
}
]

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,87 @@
{
"missing": [],
"added": [
"notify.mobile_app_frederik_iphone_15_pro",
"notify.mobile_app_sophie_iphone",
"notify.mobile_app_trine_iphone_14_pro",
"notify.mobile_app_tristan_iphone_13_ny",
"notify.mobile_app_victoria_telefon",
"sensor.sophie_remote_sophie1_action",
"sensor.sophie_remote_sophie2_action",
"todo.indkobsliste",
"zone.coop_365_hasseris",
"zone.fotex",
"zone.handel_netto_hasseris",
"zone.rema1000"
],
"used_entities": [
"234477e1b5a8be1a9723a99896d7dbb9",
"243903f9e038dfd0ab9f4ec61e625371",
"2716cd871347a641e9e3816c0a9e7867",
"2cc18da8fb81e31ca785b2a140f2ea36",
"30f2b71db2fe6de49f43c9b48e67b429",
"322a2c0112b2f673c85db15150579961",
"3f44441253de2330a9ee51f89655ff06",
"547da8a34695f82651d4b68935710d1d",
"56b3b560b189448e5adb7876b5ba6988",
"6094e2542e284055babcfca715c253b4",
"62a0859166b131d5a113460522ec7cf4",
"6685d2781c1b97e3227e8ddb4f0a9387",
"68272f2d2bd9c290a6ea9d41e706d4c9",
"6e65da499107f5e51b96b478fad69e86",
"70031b73bebd812285d08297d6d4cd38",
"723e8118874603457d5746b52aa633f1",
"7861d4d4869e92f5bc28e46e9f2a5ef1",
"922b17a39254b79f7e7773e61c86e3f1",
"97fa7024552e0b30df6473be1129dadd",
"9a6783159b65f0db65209a0b725a8280",
"9a7ccb3f347f15e3d7b956a8daeaae77",
"9d40a6d3b1d108acd0092f707f339bf0",
"automation.ai_suggestions_new_entity_detection",
"b15e53728be37e4ae307509b4bbed905",
"ba17a19135747d5845be2b562754905b",
"ba38ff9b156656877c62124304072f59",
"bd8ab77921a34425041ae4cef5632ec4",
"binary_sensor.bryggers_sensor_bryggersdor_contact",
"binary_sensor.sophie_sensor_sophievindue1_contact",
"binary_sensor.sophie_sensor_sophievindue2_contact",
"c9e17d5fef2b455565f01cf5cb1c3a72",
"cac765242ce4b1a532fbc438cfa79097",
"cca2de2ff5712542389ae97e7981890f",
"climate.sophies_vaerelse",
"d7d3bc79c625ac6be784158965c5efd7",
"dc284837aff71d8b81a288d17962d9a5",
"device_tracker.sophie_iphone",
"e47308fd3f35b9d3291a8bd8a0bfd504",
"ed48ca70f647f9eac01ebbefb009c1cd",
"f3fbaf154948921904985aa4c21f2a6b",
"f847031db1854dfff2c4dec16259a6ad",
"ff9ef66b6ff1a955792a0ba960b28004",
"light.controller_rgb_ir_b788e5",
"light.garage_light_garage1",
"light.garage_light_garage2",
"light.kontor_group",
"light.legestue_light_legestue1",
"light.legestue_light_legestue2",
"light.legestue_light_legestue3",
"light.sovevaerelse",
"light.terrasse_light_terrassebaghave",
"light.terrasse_light_terrasseforhave",
"media_player.aben_lukke",
"person.frederik_kristian_pedersen",
"person.sophie_haase_pedersen",
"person.trine_haase_pedersen",
"person.tristan",
"person.victoria_haase_pedersen",
"scene.garage_opening_the_door",
"scene.garage_when_door_closes",
"script.google_home_resume",
"script.turn_on",
"sun.sun",
"zone.home"
],
"used_devices": [],
"template_entities": [
"automation.ai_suggestions_new_entity_detection"
]
}

View File

@ -0,0 +1,6 @@
{
"user": "DKFrederik",
"prompt_tokens": 141099,
"completion_tokens": 16158,
"total_tokens": 157257
}

View File

@ -0,0 +1,83 @@
[
{
"name": "BLE Fan Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "c84f4c81c0b19d14ddccde33f13cb2b0"
}
},
{
"name": "lights",
"room": null,
"type": "light",
"id": {
"entity_id": "light.lights",
"device_id": null
}
},
{
"name": "Light Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "d1772ca1e054971a71367fae94befd30"
}
},
{
"name": "MIIR IR02 Mode",
"room": null,
"type": "select",
"id": {
"entity_id": "select.miir_ir02_8912_mode_for_ir",
"device_id": null
}
},
{
"name": "MIIR IR02 Device",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "71918d651a5809512c660d4eddd2a1f8"
}
},
{
"name": "fan power on script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_power_on",
"device_id": null
}
},
{
"name": "fan speed script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_speed",
"device_id": null
}
},
{
"name": "fan wave script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_wave",
"device_id": null
}
},
{
"name": "fan wave 2 script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_wave_2",
"device_id": null
}
}
]

View File

@ -0,0 +1,146 @@
- id: '1735833013766'
alias: 'BLE FAN '
description: ''
triggers:
- device_id: c84f4c81c0b19d14ddccde33f13cb2b0
domain: xiaomi_ble
type: button
subtype: long_press
trigger: device
conditions: []
actions:
- action: script.fan_power_on
metadata: {}
data: {}
mode: single
- id: '1735859556520'
alias: fan speed+'
description: ''
triggers:
- device_id: c84f4c81c0b19d14ddccde33f13cb2b0
domain: xiaomi_ble
type: button
subtype: press
trigger: device
conditions: []
actions:
- action: script.fan_speed
metadata: {}
data: {}
mode: single
- id: '1735859690163'
alias: Horizoontal
description: ''
triggers:
- device_id: c84f4c81c0b19d14ddccde33f13cb2b0
domain: xiaomi_ble
type: button
subtype: double_press
trigger: device
conditions: []
actions:
- action: script.fan_wave
metadata: {}
data: {}
mode: single
- id: '1735861398357'
alias: Horizontal
description: ''
triggers:
- device_id: c84f4c81c0b19d14ddccde33f13cb2b0
domain: xiaomi_ble
type: button
subtype: double_press
trigger: device
conditions: []
actions:
- action: script.fan_wave_2
metadata: {}
data: {}
mode: queued
max: 10
- id: '1735958819715'
alias: lights
description: ''
triggers:
- device_id: d1772ca1e054971a71367fae94befd30
domain: xiaomi_ble
type: button
subtype: long_press
trigger: device
conditions: []
actions:
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.lights
mode: single
- id: '1735958909323'
alias: liht up
description: ''
triggers:
- device_id: d1772ca1e054971a71367fae94befd30
domain: xiaomi_ble
type: button
subtype: double_press
trigger: device
conditions: []
actions:
- action: light.turn_on
metadata: {}
data:
color_temp: 153
brightness: 255
hs_color: {}
target:
entity_id: light.lights
mode: single
- id: '1735958997266'
alias: 單擊開關燈
description: ''
triggers:
- device_id: d1772ca1e054971a71367fae94befd30
domain: xiaomi_ble
type: button
subtype: press
trigger: device
conditions: []
actions:
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: light.lights
mode: single
- id: '1740935916428'
alias: 自動關機
description: ''
triggers:
- trigger: time
at: 03:15:00
conditions: []
actions:
- action: select.select_option
metadata: {}
data:
option: turn off
target:
entity_id: select.miir_ir02_8912_mode_for_ir
mode: single
- id: '1740936063354'
alias: 建立新的自動化
description: ''
triggers:
- trigger: time
at: 03:15:00
conditions: []
actions:
- action: select.select_option
metadata: {}
data:
option: 电源
target:
device_id: 71918d651a5809512c660d4eddd2a1f8
entity_id: select.miir_ir02_8912_mode_for_ir
mode: single

View File

@ -0,0 +1,119 @@
[
{
"id": "'1735833013766'",
"result": {
"structured": "TRIGGER: When BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] sends a long_press button event. CONDITIONS: None. ACTIONS: Execute fan power on script [script.fan_power_on].",
"natural_language": {
"trigger": "When the BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] button is long-pressed.",
"conditions": "There are no conditions.",
"action": "Runs the fan power on script [script.fan_power_on]."
},
"human_like": "Turns on the fan when the BLE controller button is held down.",
"complexity": "low"
}
},
{
"id": "'1735859556520'",
"result": {
"structured": "TRIGGER: When a button press is detected on the BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0]. CONDITIONS: None. ACTIONS: Execute the fan speed script [script.fan_speed].",
"natural_language": {
"trigger": "When a button on the BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] is pressed.",
"conditions": "There are no conditions.",
"action": "Runs the fan speed script [script.fan_speed]."
},
"human_like": "Pressing a button on the BLE fan controller runs a script to adjust the fan speed.",
"complexity": "low"
}
},
{
"id": "'1735859690163'",
"result": {
"structured": "TRIGGER: When BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] double press button event occurs. CONDITIONS: None. ACTIONS: Execute fan wave script [script.fan_wave].",
"natural_language": {
"trigger": "When the BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] button is double-pressed.",
"conditions": "There are no conditions; the automation runs immediately after the trigger.",
"action": "Runs the fan wave script [script.fan_wave]."
},
"human_like": "Turns on the fan wave effect when the BLE controller button is double-pressed.",
"complexity": "low"
}
},
{
"id": "'1735861398357'",
"result": {
"structured": "TRIGGER: When BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] button is double-pressed. CONDITIONS: None. ACTIONS: Execute fan wave 2 script [script.fan_wave_2].",
"natural_language": {
"trigger": "When the button on the BLE Fan Controller [device_id: c84f4c81c0b19d14ddccde33f13cb2b0] is double-pressed.",
"conditions": "There are no conditions that must be met.",
"action": "Runs the fan wave 2 script [script.fan_wave_2]."
},
"human_like": "Double-pressing the fan controller button runs a specific fan wave pattern.",
"complexity": "low"
}
},
{
"id": "'1735958819715'",
"result": {
"structured": "TRIGGER: When Light Controller [device_id: d1772ca1e054971a71367fae94befd30] sends a long_press button event. CONDITIONS: None. ACTIONS: Turn off lights [light.lights].",
"natural_language": {
"trigger": "When the Light Controller [device_id: d1772ca1e054971a71367fae94befd30] is long-pressed.",
"conditions": "There are no conditions.",
"action": "Turns off the lights [light.lights]."
},
"human_like": "Turns off the lights when the light controller button is long-pressed.",
"complexity": "low"
}
},
{
"id": "'1735958909323'",
"result": {
"structured": "TRIGGER: When Light Controller [device_id: d1772ca1e054971a71367fae94befd30] button is double-pressed. CONDITIONS: None. ACTIONS: Turn on lights [light.lights] with color temperature 153 and brightness 255.",
"natural_language": {
"trigger": "When the Light Controller [device_id: d1772ca1e054971a71367fae94befd30] button is double-pressed.",
"conditions": "There are no conditions.",
"action": "Turns on the lights [light.lights] to full brightness (255) with a color temperature of 153."
},
"human_like": "Turns the lights on to full brightness with a specific color temperature when a button is double-pressed.",
"complexity": "low"
}
},
{
"id": "'1735958997266'",
"result": {
"structured": "TRIGGER: When Light Controller [device_id: d1772ca1e054971a71367fae94befd30] button is pressed. CONDITIONS: None. ACTIONS: Toggle lights [light.lights].",
"natural_language": {
"trigger": "When the button on the Light Controller [device_id: d1772ca1e054971a71367fae94befd30] is pressed.",
"conditions": "There are no conditions.",
"action": "Toggle the state of the lights [light.lights]."
},
"human_like": "Toggles the lights on or off with a single button press.",
"complexity": "low"
}
},
{
"id": "'1740935916428'",
"result": {
"structured": "TRIGGER: When the time reaches 03:15:00. CONDITIONS: None. ACTIONS: Set MIIR IR02 Mode [select.miir_ir02_8912_mode_for_ir] to the option 'turn off'.",
"natural_language": {
"trigger": "Every day at 3:15 AM.",
"conditions": "There are no conditions that must be met.",
"action": "Changes the mode of the MIIR IR02 device [select.miir_ir02_8912_mode_for_ir] to 'turn off'."
},
"human_like": "Automatically turns off the MIIR IR02 device every night at 3:15 AM.",
"complexity": "low"
}
},
{
"id": "'1740936063354'",
"result": {
"structured": "TRIGGER: When the time is 03:15:00. CONDITIONS: None. ACTIONS: Set MIIR IR02 Mode [select.miir_ir02_8912_mode_for_ir] to option '电源'.",
"natural_language": {
"trigger": "Every day at 3:15 AM.",
"conditions": "There are no conditions.",
"action": "Changes the mode of the MIIR IR02 device [select.miir_ir02_8912_mode_for_ir] to '电源'."
},
"human_like": "Sets the MIIR IR02 device to a specific mode every morning at 3:15 AM.",
"complexity": "low"
}
}
]

View File

@ -0,0 +1,218 @@
[
{
"id": "'1735833013766'",
"automation": "- id: '1735833013766'\n alias: 'BLE FAN '\n description: ''\n triggers:\n - device_id: c84f4c81c0b19d14ddccde33f13cb2b0\n domain: xiaomi_ble\n type: button\n subtype: long_press\n trigger: device\n conditions: []\n actions:\n - action: script.fan_power_on\n metadata: {}\n data: {}\n mode: single",
"config": [
{
"name": "BLE Fan Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "c84f4c81c0b19d14ddccde33f13cb2b0"
}
},
{
"name": "fan power on script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_power_on",
"device_id": null
}
}
]
},
{
"id": "'1735859556520'",
"automation": "- id: '1735859556520'\n alias: fan speed+'\n description: ''\n triggers:\n - device_id: c84f4c81c0b19d14ddccde33f13cb2b0\n domain: xiaomi_ble\n type: button\n subtype: press\n trigger: device\n conditions: []\n actions:\n - action: script.fan_speed\n metadata: {}\n data: {}\n mode: single",
"config": [
{
"name": "BLE Fan Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "c84f4c81c0b19d14ddccde33f13cb2b0"
}
},
{
"name": "fan speed script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_speed",
"device_id": null
}
}
]
},
{
"id": "'1735859690163'",
"automation": "- id: '1735859690163'\n alias: Horizoontal\n description: ''\n triggers:\n - device_id: c84f4c81c0b19d14ddccde33f13cb2b0\n domain: xiaomi_ble\n type: button\n subtype: double_press\n trigger: device\n conditions: []\n actions:\n - action: script.fan_wave\n metadata: {}\n data: {}\n mode: single",
"config": [
{
"name": "BLE Fan Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "c84f4c81c0b19d14ddccde33f13cb2b0"
}
},
{
"name": "fan wave script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_wave",
"device_id": null
}
}
]
},
{
"id": "'1735861398357'",
"automation": "- id: '1735861398357'\n alias: Horizontal\n description: ''\n triggers:\n - device_id: c84f4c81c0b19d14ddccde33f13cb2b0\n domain: xiaomi_ble\n type: button\n subtype: double_press\n trigger: device\n conditions: []\n actions:\n - action: script.fan_wave_2\n metadata: {}\n data: {}\n mode: queued\n max: 10",
"config": [
{
"name": "BLE Fan Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "c84f4c81c0b19d14ddccde33f13cb2b0"
}
},
{
"name": "fan wave script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_wave",
"device_id": null
}
},
{
"name": "fan wave 2 script",
"room": null,
"type": "script",
"id": {
"entity_id": "script.fan_wave_2",
"device_id": null
}
}
]
},
{
"id": "'1735958819715'",
"automation": "- id: '1735958819715'\n alias: lights\n description: ''\n triggers:\n - device_id: d1772ca1e054971a71367fae94befd30\n domain: xiaomi_ble\n type: button\n subtype: long_press\n trigger: device\n conditions: []\n actions:\n - action: light.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: light.lights\n mode: single",
"config": [
{
"name": "lights",
"room": null,
"type": "light",
"id": {
"entity_id": "light.lights",
"device_id": null
}
},
{
"name": "Light Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "d1772ca1e054971a71367fae94befd30"
}
}
]
},
{
"id": "'1735958909323'",
"automation": "- id: '1735958909323'\n alias: liht up\n description: ''\n triggers:\n - device_id: d1772ca1e054971a71367fae94befd30\n domain: xiaomi_ble\n type: button\n subtype: double_press\n trigger: device\n conditions: []\n actions:\n - action: light.turn_on\n metadata: {}\n data:\n color_temp: 153\n brightness: 255\n hs_color: {}\n target:\n entity_id: light.lights\n mode: single",
"config": [
{
"name": "lights",
"room": null,
"type": "light",
"id": {
"entity_id": "light.lights",
"device_id": null
}
},
{
"name": "Light Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "d1772ca1e054971a71367fae94befd30"
}
}
]
},
{
"id": "'1735958997266'",
"automation": "- id: '1735958997266'\n alias: 單擊開關燈\n description: ''\n triggers:\n - device_id: d1772ca1e054971a71367fae94befd30\n domain: xiaomi_ble\n type: button\n subtype: press\n trigger: device\n conditions: []\n actions:\n - action: light.toggle\n metadata: {}\n data: {}\n target:\n entity_id: light.lights\n mode: single",
"config": [
{
"name": "lights",
"room": null,
"type": "light",
"id": {
"entity_id": "light.lights",
"device_id": null
}
},
{
"name": "Light Controller",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "d1772ca1e054971a71367fae94befd30"
}
}
]
},
{
"id": "'1740935916428'",
"automation": "- id: '1740935916428'\n alias: 自動關機\n description: ''\n triggers:\n - trigger: time\n at: 03:15:00\n conditions: []\n actions:\n - action: select.select_option\n metadata: {}\n data:\n option: turn off\n target:\n entity_id: select.miir_ir02_8912_mode_for_ir\n mode: single",
"config": [
{
"name": "MIIR IR02 Mode",
"room": null,
"type": "select",
"id": {
"entity_id": "select.miir_ir02_8912_mode_for_ir",
"device_id": null
}
}
]
},
{
"id": "'1740936063354'",
"automation": "- id: '1740936063354'\n alias: 建立新的自動化\n description: ''\n triggers:\n - trigger: time\n at: 03:15:00\n conditions: []\n actions:\n - action: select.select_option\n metadata: {}\n data:\n option: 电源\n target:\n device_id: 71918d651a5809512c660d4eddd2a1f8\n entity_id: select.miir_ir02_8912_mode_for_ir\n mode: single",
"config": [
{
"name": "MIIR IR02 Mode",
"room": null,
"type": "select",
"id": {
"entity_id": "select.miir_ir02_8912_mode_for_ir",
"device_id": null
}
},
{
"name": "MIIR IR02 Device",
"room": null,
"type": "device",
"id": {
"entity_id": null,
"device_id": "71918d651a5809512c660d4eddd2a1f8"
}
}
]
}
]

Some files were not shown because too many files have changed in this diff Show More