Restructure repository: organize blueprints into folders
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>
This commit is contained in:
120
Common/Refrigerator/blueprint.yaml
Normal file
120
Common/Refrigerator/blueprint.yaml
Normal file
@@ -0,0 +1,120 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user