Each blueprint now has its own folder containing: - blueprint.yaml: The automation code with a short header - README.md: Detailed documentation extracted from headers Updated CLAUDE.md with repository structure guidelines. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
121 lines
3.5 KiB
YAML
121 lines
3.5 KiB
YAML
# Refrigerator Express Mode Control Blueprint
|
|
# Enables express cooling when temperature drifts too far from target.
|
|
# See README.md for detailed documentation.
|
|
|
|
blueprint:
|
|
name: "Custom: Refrigerator Express Mode Control"
|
|
description: >
|
|
Turns on express mode if the refrigerator temperature is too far from target.
|
|
Sends a notification when the difference exceeds the allowed threshold.
|
|
domain: automation
|
|
input:
|
|
door_sensor:
|
|
name: Door Sensor
|
|
description: Binary sensor for refrigerator door
|
|
selector:
|
|
entity:
|
|
domain: binary_sensor
|
|
|
|
temp_sensor:
|
|
name: Temperature Sensor
|
|
description: Sensor reporting current refrigerator temperature
|
|
selector:
|
|
entity:
|
|
domain: sensor
|
|
|
|
climate_entity:
|
|
name: Refrigerator Climate Entity
|
|
description: Climate entity that provides target temperature
|
|
selector:
|
|
entity:
|
|
domain: climate
|
|
|
|
device_name:
|
|
name: Device Name
|
|
description: Name of the device
|
|
default: 'Refrigerator'
|
|
selector:
|
|
text:
|
|
|
|
express_switch:
|
|
name: Express Mode Switch
|
|
description: Switch entity to enable express mode
|
|
selector:
|
|
entity:
|
|
domain: switch
|
|
|
|
max_diff:
|
|
name: Max Allowed Temperature Difference
|
|
description: Maximum difference between target and actual temperature before express mode is enabled
|
|
default: 3
|
|
selector:
|
|
number:
|
|
min: 1
|
|
max: 10
|
|
step: 0.5
|
|
unit_of_measurement: "°C"
|
|
|
|
notify_target:
|
|
name: Notification Target
|
|
description: Device or service to send notifications
|
|
default: []
|
|
selector:
|
|
entity:
|
|
domain: notify
|
|
multiple: true
|
|
|
|
mode: restart
|
|
|
|
trigger:
|
|
- platform: state
|
|
entity_id: !input temp_sensor
|
|
|
|
- platform: state
|
|
entity_id: !input door_sensor
|
|
|
|
- platform: state
|
|
entity_id: !input climate_entity
|
|
attribute: temperature
|
|
|
|
variables:
|
|
temp_sensor: !input temp_sensor
|
|
climate_entity: !input climate_entity
|
|
door_sensor: !input door_sensor
|
|
notify_target: !input notify_target
|
|
device_name: !input device_name
|
|
max_diff: !input max_diff
|
|
express_switch: !input express_switch
|
|
|
|
curr_temp: "{{ states(temp_sensor) | float(0) }}"
|
|
target_temp: "{{ state_attr(climate_entity, 'temperature') | float(0) }}"
|
|
diff: "{{ (curr_temp - target_temp) | abs }}"
|
|
temp_is_not_ok: "{{ diff > max_diff and is_state(door_sensor, 'off') }}"
|
|
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ temp_is_not_ok and is_state(express_switch, 'off') }}"
|
|
sequence:
|
|
- service: switch.turn_on
|
|
target:
|
|
entity_id: !input express_switch
|
|
|
|
- service: notify.send_message
|
|
target:
|
|
entity_id: !input notify_target
|
|
data:
|
|
message: >
|
|
{{ device_name }}: обнаружена проблема температурного режима.
|
|
Текущая {{ curr_temp }}°C, Целевая {{ target_temp }}°C,
|
|
Разница {{ diff }}°C. Включение экпресс режима.
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ not temp_is_not_ok }}"
|
|
sequence:
|
|
- service: switch.turn_off
|
|
target:
|
|
entity_id: !input express_switch
|
|
|