This commit is contained in:
2026-02-23 23:38:01 +01:00
commit 4e382bbb87
9 changed files with 12226 additions and 0 deletions

23
README.md Normal file
View 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.
[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](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).

View 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
View 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
View 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 }}"

File diff suppressed because it is too large Load Diff

1
helloworld.yaml Normal file
View File

@@ -0,0 +1 @@
temperature_sensorddddddssssdsadsa

62
motion_light.yaml Normal file
View 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

File diff suppressed because it is too large Load Diff

75
test.yaml Normal file
View 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