upload
This commit is contained in:
23
README.md
Normal file
23
README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# HA - Bluerpints
|
||||
|
||||
Home Assistant Blueprints repository for automating smart home tasks.
|
||||
|
||||
## Project Info
|
||||
- **Repo:** https://gitlab.domowyasystent.com/peakcontroll/ha-bluerpints
|
||||
- **Created:** January 3, 2026
|
||||
- **Auto DevOps:** Enabled
|
||||
|
||||
## Usage
|
||||
1. Browse the available blueprints in this repository.
|
||||
2. Import the desired blueprint into your Home Assistant instance.
|
||||
3. Customize triggers and actions as needed for your devices.
|
||||
|
||||
[](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgitlab.domowyasystent.com%2Fpeakcontroll%2Fha-bluerpints%2F-%2Fraw%2Fmain%2FTRVZB+and+External+sensor.yaml?)
|
||||
|
||||
## Contributing
|
||||
- Fork the repo and create a branch for your changes.
|
||||
- Submit a merge request with clear description of the new blueprint or improvement.
|
||||
|
||||
## License
|
||||
Specify your license here (e.g., MIT, Apache 2.0).
|
||||
|
||||
89
TRVZB and External sensor.yaml
Normal file
89
TRVZB and External sensor.yaml
Normal file
@@ -0,0 +1,89 @@
|
||||
blueprint:
|
||||
name: Sonoff TRVZB & Zewnętrzny czujnik temperatury
|
||||
description: >
|
||||
|
||||
<summary><b>PeakControl Sonoff Głowica - TRVZB & Zewnętrzny czujnik temperatury</b> 👈</summary>
|
||||
|
||||
|
||||
<details>
|
||||
<summary><b>The Automation Process:</b> 👈</summary>
|
||||
|
||||
**Automatyzacja synchronizuje temperaturę z wybranego czujnika:**
|
||||
**z urządzeniem wykorzystującym tryb „external”.**
|
||||
|
||||
|
||||
**Działanie:**
|
||||
|
||||
- uruchamia się co 2 minuty ORAZ przy każdej zmianie temperatury czujnika
|
||||
- sprawdza, czy czujnik zwraca poprawną wartość (nie unknown / unavailable)
|
||||
- ustawia select.* na opcję „external”
|
||||
- po 5 sekundach wpisuje aktualną temperaturę z czujnika do number.*
|
||||
|
||||
**Typowe użycie:**
|
||||
|
||||
- głowice / termostaty z trybem external temperature
|
||||
- przekazywanie temperatury z zewnętrznego sensora do urządzenia
|
||||
|
||||
</details>
|
||||
domain: automation
|
||||
input:
|
||||
temperature_sensor:
|
||||
name: Czujnik temperatury
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
domain: sensor
|
||||
device_class: temperature
|
||||
|
||||
target_number:
|
||||
name: Number (Głowica - nastawienie temperatury)
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
domain: number
|
||||
device_class: temperature
|
||||
|
||||
|
||||
target_select:
|
||||
name: Select (Głowica)
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
domain:
|
||||
- select
|
||||
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
minutes: "/2"
|
||||
|
||||
- platform: state
|
||||
entity_id: !input temperature_sensor
|
||||
|
||||
variables:
|
||||
set_temperature_sensor: !input temperature_sensor
|
||||
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ states(set_temperature_sensor) not in ['unknown', 'unavailable'] }}
|
||||
|
||||
action:
|
||||
- service: select.select_option
|
||||
target:
|
||||
entity_id: !input target_select
|
||||
data:
|
||||
option: external
|
||||
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 5
|
||||
milliseconds: 0
|
||||
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: !input target_number
|
||||
data:
|
||||
value: "{{ states(set_temperature_sensor) | float }}"
|
||||
|
||||
mode: single
|
||||
128
dynamic_valve.yaml
Normal file
128
dynamic_valve.yaml
Normal file
@@ -0,0 +1,128 @@
|
||||
blueprint:
|
||||
name: Dynamic Radiator Valve
|
||||
description: Automatically sets radiator valve closing/opening degree based on temperature difference and window status
|
||||
domain: automation
|
||||
|
||||
input:
|
||||
radiator_climate:
|
||||
name: Radiator (climate)
|
||||
selector:
|
||||
entity:
|
||||
domain: climate
|
||||
|
||||
temperature_sensor:
|
||||
name: Temperature Sensor
|
||||
selector:
|
||||
entity:
|
||||
domain: sensor
|
||||
|
||||
valve_closing_number:
|
||||
name: Valve Closing Number
|
||||
selector:
|
||||
entity:
|
||||
domain: number
|
||||
|
||||
valve_opening_number:
|
||||
name: Valve Opening Number (optional)
|
||||
default: null
|
||||
selector:
|
||||
entity:
|
||||
domain: number
|
||||
|
||||
window_sensor:
|
||||
name: Window Sensor / Input Boolean
|
||||
selector:
|
||||
entity:
|
||||
domain:
|
||||
- binary_sensor
|
||||
- input_boolean
|
||||
|
||||
difference_text:
|
||||
name: Temperature Difference (optional)
|
||||
default: null
|
||||
selector:
|
||||
entity:
|
||||
domain: input_text
|
||||
|
||||
triggers:
|
||||
|
||||
- platform: state
|
||||
entity_id: !input radiator_climate
|
||||
|
||||
- platform: state
|
||||
entity_id: !input temperature_sensor
|
||||
|
||||
- platform: state
|
||||
entity_id: !input window_sensor
|
||||
|
||||
- platform: time_pattern
|
||||
minutes: "/1"
|
||||
|
||||
#conditions:
|
||||
# - condition: template
|
||||
# value_template: >
|
||||
# {{ states(climate_entity) not in ['unavailable', 'unknown'] }}
|
||||
|
||||
actions:
|
||||
- variables:
|
||||
climate_entity: !input radiator_climate
|
||||
temp_entity: !input temperature_sensor
|
||||
window_entity: !input window_sensor
|
||||
closing_entity: !input valve_closing_number
|
||||
opening_entity: !input valve_opening_number
|
||||
diff_text_entity: !input difference_text
|
||||
|
||||
- variables:
|
||||
window_closed: "{{ states(window_entity) in ['off', 'false', 'closed'] }}"
|
||||
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ window_closed }}"
|
||||
sequence:
|
||||
- variables:
|
||||
target: "{{ state_attr(climate_entity, 'temperature') | float(0) }}"
|
||||
current: "{{ states(temp_entity) | float(0) }}"
|
||||
diff: "{{ current - target }}"
|
||||
closing_degree: >
|
||||
{% if diff >= 1.0 %} 100
|
||||
{% elif diff >= 0.5 %} 80
|
||||
{% elif diff >= 0.0 %} 60
|
||||
{% elif diff >= -1.0 %} 50
|
||||
{% else %} 30
|
||||
{% endif %}
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ not window_closed }}"
|
||||
sequence:
|
||||
- variables:
|
||||
closing_degree: 0
|
||||
|
||||
- variables:
|
||||
valve_entities: >
|
||||
{% if opening_entity %}
|
||||
{{ [closing_entity, opening_entity] }}
|
||||
{% else %}
|
||||
{{ [closing_entity] }}
|
||||
{% endif %}
|
||||
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: "{{ valve_entities }}"
|
||||
data:
|
||||
value: "{{ closing_degree }}"
|
||||
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ diff_text_entity != None }}"
|
||||
sequence:
|
||||
- service: input_text.set_value
|
||||
target:
|
||||
entity_id: "{{ diff_text_entity }}"
|
||||
data:
|
||||
value: "{{ closing_degree }}"
|
||||
|
||||
mode: queued
|
||||
max: 5
|
||||
199
dynamic_valve_test.yaml
Normal file
199
dynamic_valve_test.yaml
Normal file
@@ -0,0 +1,199 @@
|
||||
blueprint:
|
||||
name: Dynamic Radiator Valve – Pro Configurator
|
||||
description: >
|
||||
Automatyczne sterowanie zaworem grzejnika na podstawie temperatury,
|
||||
różnicy temperatur oraz statusu okna.
|
||||
domain: automation
|
||||
|
||||
input:
|
||||
radiator_climate:
|
||||
name: Radiator (Climate)
|
||||
description: Wybierz urządzenie klimatyczne (np. termostat grzejnika)
|
||||
selector:
|
||||
entity:
|
||||
domain: climate
|
||||
|
||||
temperature_sensor:
|
||||
name: Temperature Sensor
|
||||
description: Sensor aktualnej temperatury w pomieszczeniu
|
||||
selector:
|
||||
entity:
|
||||
domain: sensor
|
||||
|
||||
window_sensor:
|
||||
name: Window Sensor / Input Boolean
|
||||
description: Określ czujnik stanu okna lub pomocniczy input boolean
|
||||
selector:
|
||||
entity:
|
||||
domain: - binary_sensor
|
||||
- input_boolean
|
||||
|
||||
valve_closing_number:
|
||||
name: Valve Closing Number
|
||||
description: Number entity służąca do ustawiania poziomu zamknięcia zaworu
|
||||
selector:
|
||||
entity:
|
||||
domain: number
|
||||
|
||||
valve_opening_number:
|
||||
name: Valve Opening Number (optional)
|
||||
description: (opcjonalnie) number entity do otwierania zaworu
|
||||
default: null
|
||||
selector:
|
||||
entity:
|
||||
domain: number
|
||||
|
||||
difference_text:
|
||||
name: Temperature Difference (optional)
|
||||
description: (opcjonalnie) input_text do zapisywania aktualnej różnicy
|
||||
default: null
|
||||
selector:
|
||||
entity:
|
||||
domain: input_text
|
||||
|
||||
# Advanced Options
|
||||
min_diff_threshold:
|
||||
name: Min Difference Threshold
|
||||
description: Minimalna różnica względem target do otwarcia zaworu
|
||||
default: 0.0
|
||||
selector:
|
||||
number:
|
||||
unit_of_measurement: '°C'
|
||||
min: -5
|
||||
max: 5
|
||||
step: 0.1
|
||||
|
||||
max_diff_threshold:
|
||||
name: Max Difference Threshold
|
||||
description: Maksymalna różnica do pełnego zamknięcia zaworu
|
||||
default: 2.0
|
||||
selector:
|
||||
number:
|
||||
unit_of_measurement: '°C'
|
||||
min: 0
|
||||
max: 10
|
||||
step: 0.1
|
||||
|
||||
window_override:
|
||||
name: Window Open Override
|
||||
description: Gdy okno otwarte, czy zawory powinny zostać zamknięte?
|
||||
default: true
|
||||
selector:
|
||||
boolean: {}
|
||||
|
||||
weekdays:
|
||||
name: Operate on Weekdays
|
||||
description: Wybierz dni, w których automatyka ma działać
|
||||
default: ['mon','tue','wed','thu','fri','sat','sun']
|
||||
selector:
|
||||
select:
|
||||
multiple: true
|
||||
options:
|
||||
- label: Monday
|
||||
value: mon
|
||||
- label: Tuesday
|
||||
value: tue
|
||||
- label: Wednesday
|
||||
value: wed
|
||||
- label: Thursday
|
||||
value: thu
|
||||
- label: Friday
|
||||
value: fri
|
||||
- label: Saturday
|
||||
value: sat
|
||||
- label: Sunday
|
||||
value: sun
|
||||
|
||||
active_time:
|
||||
name: Active Time Range
|
||||
description: Określ ramy czasowe działania automatyki (opcjonalne)
|
||||
selector:
|
||||
time:
|
||||
start: true
|
||||
end: true
|
||||
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: !input radiator_climate
|
||||
- platform: state
|
||||
entity_id: !input temperature_sensor
|
||||
- platform: state
|
||||
entity_id: !input window_sensor
|
||||
- platform: time_pattern
|
||||
minutes: "/1"
|
||||
|
||||
condition:
|
||||
- condition: time
|
||||
weekday: !input weekdays
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ states(!input radiator_climate) not in ['unavailable','unknown'] }}
|
||||
|
||||
action:
|
||||
- variables:
|
||||
climate_entity: !input radiator_climate
|
||||
temp_entity: !input temperature_sensor
|
||||
window_entity: !input window_sensor
|
||||
closing_entity: !input valve_closing_number
|
||||
opening_entity: !input valve_opening_number
|
||||
diff_text_entity: !input difference_text
|
||||
min_diff: !input min_diff_threshold
|
||||
max_diff: !input max_diff_threshold
|
||||
override_open: !input window_override
|
||||
|
||||
- variables:
|
||||
target_temp: "{{ state_attr(climate_entity,'temperature')|float(0) }}"
|
||||
current_temp: "{{ states(temp_entity)|float(0) }}"
|
||||
diff: "{{ current_temp - target_temp }}"
|
||||
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ override_open and (states(window_entity) in ['on','true','open']) }}
|
||||
sequence:
|
||||
- variables:
|
||||
closing_degree: 0
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ diff >= max_diff }}
|
||||
sequence:
|
||||
- variables:
|
||||
closing_degree: 100
|
||||
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ diff <= min_diff }}
|
||||
sequence:
|
||||
- variables:
|
||||
closing_degree: 30
|
||||
|
||||
default:
|
||||
- variables:
|
||||
closing_degree: >
|
||||
{{ ((diff - min_diff) / (max_diff - min_diff) * 100) | round(0) }}
|
||||
|
||||
- service: number.set_value
|
||||
data:
|
||||
value: "{{ closing_degree }}"
|
||||
target:
|
||||
entity_id: >
|
||||
{% if opening_entity %}
|
||||
[{{ closing_entity }}, {{ opening_entity }}]
|
||||
{% else %}
|
||||
{{ closing_entity }}
|
||||
{% endif %}
|
||||
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ diff_text_entity != None }}"
|
||||
sequence:
|
||||
- service: input_text.set_value
|
||||
data:
|
||||
value: "{{ diff }}"
|
||||
target:
|
||||
entity_id: "{{ diff_text_entity }}"
|
||||
3680
dynamic_valve_test_na_kurwie.yaml
Normal file
3680
dynamic_valve_test_na_kurwie.yaml
Normal file
File diff suppressed because it is too large
Load Diff
1
helloworld.yaml
Normal file
1
helloworld.yaml
Normal file
@@ -0,0 +1 @@
|
||||
temperature_sensorddddddssssdsadsa
|
||||
62
motion_light.yaml
Normal file
62
motion_light.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
blueprint:
|
||||
name: Motion-activated Light
|
||||
description: Turn on a light when motion is detected.
|
||||
domain: automation
|
||||
source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
|
||||
author: Home Assistant
|
||||
input:
|
||||
motion_entity:
|
||||
name: Motion Sensor
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
- device_class:
|
||||
- occupancy
|
||||
domain:
|
||||
- binary_sensor
|
||||
- device_class:
|
||||
- motion
|
||||
domain:
|
||||
- binary_sensor
|
||||
multiple: false
|
||||
reorder: false
|
||||
light_target:
|
||||
name: Light
|
||||
selector:
|
||||
target:
|
||||
entity:
|
||||
- domain:
|
||||
- light
|
||||
no_motion_wait:
|
||||
name: Wait time
|
||||
description: Time to leave the light on after last motion is detected.
|
||||
default: 120
|
||||
selector:
|
||||
number:
|
||||
min: 0.0
|
||||
max: 3600.0
|
||||
unit_of_measurement: seconds
|
||||
step: 1.0
|
||||
mode: slider
|
||||
mode: restart
|
||||
max_exceeded: silent
|
||||
triggers:
|
||||
trigger: state
|
||||
entity_id: !input motion_entity
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
actions:
|
||||
- alias: Turn on the light
|
||||
action: light.turn_on
|
||||
target: !input light_target
|
||||
- alias: Wait until there is no motion from device
|
||||
wait_for_trigger:
|
||||
trigger: state
|
||||
entity_id: !input motion_entity
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
- alias: Wait the number of seconds that has been set
|
||||
delay: !input no_motion_wait
|
||||
- alias: Turn off the light
|
||||
action: light.turn_off
|
||||
target: !input light_target
|
||||
7969
smart-light.yaml
Normal file
7969
smart-light.yaml
Normal file
File diff suppressed because it is too large
Load Diff
75
test.yaml
Normal file
75
test.yaml
Normal file
@@ -0,0 +1,75 @@
|
||||
blueprint:
|
||||
name: Sonoff TRVZB + External Temp AUTO
|
||||
description: Auto sync external temperature for all Sonoff TRVZB devices
|
||||
domain: automation
|
||||
|
||||
trigger:
|
||||
|
||||
- platform: time_pattern
|
||||
minutes: "/2"
|
||||
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
|
||||
|
||||
variables:
|
||||
|
||||
sensors: >
|
||||
{{ states.sensor
|
||||
| map(attribute='entity_id')
|
||||
| select('match','sensor\\..*_temperature.*')
|
||||
| list }}
|
||||
|
||||
|
||||
action:
|
||||
|
||||
- repeat:
|
||||
|
||||
for_each: "{{ sensors }}"
|
||||
|
||||
sequence:
|
||||
|
||||
- variables:
|
||||
|
||||
sensor_entity: "{{ repeat.item }}"
|
||||
|
||||
prefix: >
|
||||
{{ sensor_entity.split('.')[1]
|
||||
| regex_replace('_temperature.*','') }}
|
||||
|
||||
number_entity: "number.{{ prefix }}_temperature_input"
|
||||
|
||||
select_entity: "select.{{ prefix }}_temperature_sensor_select"
|
||||
|
||||
|
||||
# sprawdź czy encje istnieją
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ number_entity in states
|
||||
and select_entity in states
|
||||
and states(sensor_entity) not in ['unknown','unavailable'] }}
|
||||
|
||||
|
||||
# ustaw external tylko gdy potrzeba
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ states(select_entity) != 'external' }}"
|
||||
then:
|
||||
- service: select.select_option
|
||||
target:
|
||||
entity_id: "{{ select_entity }}"
|
||||
data:
|
||||
option: external
|
||||
|
||||
|
||||
- delay: "00:00:05"
|
||||
|
||||
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: "{{ number_entity }}"
|
||||
data:
|
||||
value: "{{ states(sensor_entity) | float }}"
|
||||
|
||||
|
||||
mode: single
|
||||
Reference in New Issue
Block a user