Home Assistant seriál s Jakubem: Díl 19: Shelly Blu TRV, Sonoff senzor teploty a vlhkosti a ovládání kotle
Úvod
V dnešním díle si nastavíme termostatickou hlavici Shelly BLU TRV, senzor teploty a vlhkosti od Sonoff a ukážeme si, jak spínat kotel podle požadavků na vytápění přímo z hlavice.
Hned na začátek je dobré si říct jednu důležitou věc – měření teploty přímo na termostatické hlavici je v praxi často nepřesné, protože je ovlivněné samotným radiátorem. Pokud už ale v místnosti máme samostatný senzor teploty (typicky někde uprostřed místnosti), je škoda ho nevyužít.
Použitím senzoru teploty přímo od Shelly se dá celý proces výrazně zjednodušit. Shelly BLU TRV ale oficiálně (v aplikaci) neumožňuje vybrat jiný externí senzor teploty než právě od Shelly. Naštěstí to není technické omezení samotné hlavice, ale jen softwarové rozhodnutí výrobce.
Tuto vlastnost lze obejít pomocí přímého RPC volání z Home Assistanta, kterým do hlavice pošleme aktuální teplotu z jiného senzoru – například ze Sonoffu. Nejde o žádný hack nebo úpravu firmware, ale o běžnou funkci, kterou Shelly BLU TRV podporuje. Vše si podrobně vysvětlíme dále v článku.
Co budeme potřebovat
- termostatickou hlavici Shelly Blu TRV
- senzor teploty a vlhkosti Sonoff (SZNB-02P)
- chytrý switch Shelly 1 Gen4 (pro spínání kotle)
- nainstalovaný Home Assistant a Zigbee2MQTT z předchozích dílů seriálu
Přidání senzoru Sonoff
Nejprve si přidáme senzor teploty a vlhkosti v místnosti. Postup bude stejný jako u všech Zigbee zařízení, která jsme integrovali v předchozích dílech seriálu.
V levém menu klikneme na položku Zigbee2MQTT. Pokud ji v menu nevidíme, otevřeme ji přes Settings -> Addons -> Zigbee2MQTT -> Open Web UI).
Následně si vybalíme náš senzor z krabičky a vytáhneme plastovou pásku na jeho straně – tím se senzor automaticky přepne do režimu párování.
V rozhraní Zigbee2MQTT klikneme na „Povolit vše“ a během několika sekund by se měl senzor úspěšně přidat a inicializovat.
Po dokončení integrace doporučuji senzor rovnou přejmenovat, aby bylo v Home Assistantu jasné, ke které místnosti patří. Já jsem zvolil název „Sonoff – Living Room Temperature & Humidity“, jak můžete vidět na screenu níže.


Přidání Shelly Blu TRV a BLE dongle
Externí senzor teploty a vlhkosti máme integrovaný, nyní přidáme samotnou termostatickou hlavici Shelly BLU TRV a Bluetooth dongle.
Přidání bluetooth dongle
Nejprve si hlavici vybalíme z krabičky a najdeme Bluetooth dongle, který je součástí balení. Ten je potřeba zapojit do USB portu v dané místnosti. Využít můžete například prodlužovací kabel s USB portem, nabíječku s USB výstupem nebo přímo USB port v serveru, na kterém běží Home Assistant.
Důležité je, aby byl dongle trvale napájený, protože bez něj hlavice s Home Assistantem nekomunikuje.
Shelly BLU TRV funguje následovně:
- hlavice komunikuje s Bluetooth donglem přes Bluetooth Low Energy
- dongle následně odesílá přijatá data přes Wi-Fi do Home Assistant serveru
Důležitá je také vzdálenost mezi donglem a termostatickou hlavicí. Doporučuji umístit dongle dostatečně blízko hlavice, ideálně tak, aby se obě zařízení nacházela ve stejné místnosti.
Pozor si dejte také na kovové překážky, jako jsou radiátory, vodovodní trubky nebo rozvodné skříně, které mohou Bluetooth signál výrazně tlumit.
V neposlední řadě se ujistěte, že má dongle v dané místnosti dostatečně silný Wi-Fi signál, protože veškerá komunikace směrem do Home Assistanta probíhá právě přes Wi-Fi.
Já jsem využil prodlužovací kabel s USB portem, který se nachází kousek od routeru i samotné hlavice – v mém případě tedy ideální scénář :). Díky tomu jsem nemusel řešit ani dosah Bluetooth, ani kvalitu Wi-Fi signálu.
Dongle zapojíme do USB portu a připojíme se na jeho Wi-Fi síť (hotspot), kterou po zapnutí automaticky vysílá.
Poté v internetovém prohlížeči otevřeme adresu 192.168.33.1, kde se nám zobrazí konfigurační rozhraní Bluetooth donglu.

Klikneme na Configure Wi-Fi settings.
V části Wi-Fi 1 settings aktivujeme položku Enable Wi-Fi a následně klikneme do pole Network. Dongle vyhledá všechny dostupné Wi-Fi sítě v okolí. Vybereme naši domácí síť, do pole Password zadáme heslo a konfiguraci uložíme tlačítkem Save settings.
Volitelně můžeme zaškrtnout položku Static IP a nastavit donglu statickou IP adresu. Tím zajistíme, že jeho IP adresa zůstane stejná a zařízení bude vždy dostupné pod jednou konkrétní adresou.
Po uložení nastavení se dongle restartuje a připojí se do zvolené Wi-Fi sítě.



Nyní si otevřeme novou IP adresu donglu, kterou zjistíme například v DHCP nastavení routeru a přejdeme k párování termostatické hlavice.
Přidání Shelly Blu TRV
Nyní vybalíme z krabičky termostatickou hlavici a stejně jako u Sonoff senzoru teploty a vlhkosti vyjmeme ochranný plastový proužek mezi bateriemi. Po jeho vytažení se hlavice aktivuje a na displeji se zobrazí symboly.
Na BLE donglu stiskneme tlačítko Pair a následně na zadní straně hlavice zmáčkneme bílé tlačítko (7).

Po pár vteřinách by na displeji hlavice mělo zobrazit bílé YES, což znamená úspěšné spárování. Pokud se objeví NO, je potřeba postup zopakovat, případně znovu stisknout tlačítko pair na BLE donglu.
Párovací režim je aktivní přibližně 30 sekund, poté je nutné jej znovu spustit.
Nastavení Shelly Blu TRV
V internetovém prohlížeči si otevřeme IP adresu BLE donglu a v menu přejdeme do Settings -> Access Point. Zde aktivujeme položku Disable Access Point, čímž vypneme konfigurační hotspot donglu. Tím zajistíme, že se k zařízení nebude moci připojit nikdo neoprávněný.
Pokud chceme hotspot z nějakého důvodu ponechat aktivní (například pro budoucí servisní zásah), doporučuji jej alespoň zabezpečit silným heslem. To provedeme zaškrtnutím volby Password protected network, zadáním hesla a uložením nastavení pomocí tlačítka Save settings.

V menu přejdeme do sekce Home, kde bychom již měli vidět termostatickou hlavici připárovanou .

Klikneme na její název a provedeme následující nastavení:
Name
Doporučuji nastavit název podle místnosti (například Living Room TRV), aby bylo v přehledu zařízení jasné, kam hlavice patří.
Calibrate TRV
Klikneme na tlačítko Calibrate.
Po několika sekundách by měl zmizet červený nápis Not Calibrated. Pokud nezmizí, akci zopakujeme.
TRV Behavior
Doporučuji zaškrtnout všechna políčka kromě Balanced heating.
Nejdůležitější je první volba Underfloor heating, která umožní využívat externí senzor teploty.
TRV Interface
Zde lze upravit uživatelské nastavení hlavice – například změnit jednotky z °C na °F, uzamknout změnu teploty otočením hlavice nebo upravit orientaci a jas displeje.
Enable TRV
Zkontrolujeme, že je zaškrtnutá volba Enable.
Temperature offset
Zde lze nastavit korekci teploty.
Pro můj radiátor se jako nejvhodnější ukázala hodnota 1,5 °C, ale je potřeba s hodnotou experimentovat podle konkrétní instalace.
Ostatní položky můžeme ponechat v výchozím nastavení.
Nakonec klikneme na položku TRV update. Pokud se zobrazí hlášení Your TRV has new firmware update!, doporučuji provést aktualizaci kliknutím na Update.

Integrace hlavice a dongle do HA
Integrace obou zařízení do HA je velmi jednoduchá.
V nabídce Settings -> Devices & services by se měla obě zařízení objevit v horní části obrazovky v sekci Discovered.
V mém případě už byla hlavice dříve přidaná kvůli testování, proto na screenshotu vidíte pouze BLE dongle. Pokud hlavici ještě integrovanou nemáte, zobrazí se vám zde stejným způsobem a přidáte ji kliknutím na Add.

Obě zařízení následně naleznete v Devices & Services pod integrací Shelly.
V seznamu by se vám měla zobrazit dvě zařízení – BLE dongle a Shelly BLU TRV.
Obě zařízení doporučuji přejmenovat, aby bylo v přehledu jasné, k jaké místnosti patří.
Přejmenování provedete otevřením integrace Shelly v seznamu zařízení a kliknutím na ikonu tužky vedle konkrétního zařízení.

Nastavení posílání externí teploty do hlavice
Shelly BLU TRV oficiálně umožňuje použít jako externí zdroj teploty pouze zařízení od Shelly. V aplikaci ani v rozhraní gateway tedy nelze vybrat jiný senzor (například Sonoff), i když je dostupný v Home Assistantu.
Nejde o technické omezení samotné hlavice – ta externí teplotu přijmout umí. Omezení je pouze softwarové, na úrovni konfigurace výrobce. Proto je nutné hodnotu z jiného senzoru do hlavice posílat ručně. Hodnota externí teploty se nastavuje přes entitu external_temperature. Interně ji Shelly integrace předává hlavici pomocí RPC metody Trv.SetExternalTemperature.
Automatizace
Automatizace běží každou minutu a zároveň při každé změně teploty, aby hlavice reagovala co nejrychleji a aby se případné výpadky BLE komunikace samy opravily.
Pokud vám tento interval nevyhovuje, stačí v automatizaci upravit parametr minutes: /1 na jinou hodnotu.
alias: Shelly TRV – external temp from Sonoff
description: ""
triggers:
- trigger: state
entity_id:
- sensor.living_room_temperature_and_humidity_sensor_ble_temperature
- trigger: time_pattern
minutes: /1
actions:
- target:
entity_id: number.shellyblutrv_f844771e302f_external_temperature
data:
value: >
{{
states('sensor.living_room_temperature_and_humidity_sensor_ble_temperature')
| float(0) | round(1) }}
action: number.set_value
mode: restart
V automatizaci je nutné upravit následující hodnoty:
- sensor.living_room_temperature_and_humidity_sensor_ble_temperature
→ nahraďte entitou vašeho teplotního senzoru - number.shellyblutrv_f844771e302f_external_temperature
→ nahraďte entitou vaší Shelly BLU TRV hlavice
Názvy entit naleznete v Settings → Devices & Services → Entities.
Funkčnost automatizace si můžeme jednoduše ověřit přímo v bráně (BLE donglu).
V jejím webovém rozhraní přejdeme do sekce Diagnostics a aktivujeme položku Enable WebSocket debug logs. Po zapnutí se začne zobrazovat detailní log komunikace mezi hlavicí a Home Assistantem.
Pokud je automatizace nastavena správně, uvidíte v logu pravidelně volání metody:
Call Trv.SetExternalTemperature params {"id":0,"t_C":22.6}
Call Trv.SetExternalTemperature result null
Hodnota t_C odpovídá teplotě z vašeho externího senzoru.
Záznam result null je v tomto případě v pořádku – zařízení většinou pouze potvrdí provedení akce bez návratové hodnoty.
Pokud se tato hlášení v logu nezobrazují, automatizace se pravděpodobně nespouští nebo nemá správně nastavené entity.
Řízení teploty podle přítomnosti a denní doby
Protože doma nemám centrální kotel, řeším komfort pomocí změny cílové teploty přímo na hlavici. Nastavení se automaticky přizpůsobuje přítomnosti, denní době a stavu okna.
Než samotnou automatizaci vytvoříme, je potřeba si připravit několik helperů, které budeme používat jak v automatizaci, tak následně na dashboardu pro pohodlné ovládání.
Vytvoření helperů
V Settings → Devices & Services → Helpers vytvoříme následující pomocné entity:
Input Number (4×):
- living_room_heating_day_temp – denní teplota
- living_room_heating_night_temp – noční teplota
- living_room_heating_away_temp – útlumová teplota při nepřítomnosti
- living_room_heating_override_temp – ručně nastavená teplota (override)
Typ: Number
Jednotka: °C
Rozumný rozsah například 5–25 °C
Input Datetime (2×):
- living_room_heating_morning_start – začátek denního režimu
- living_room_heating_night_start – začátek nočního režimu
Typ: Time (bez data)
Input Boolean (1×):
- living_room_heating_override – zapnutí/vypnutí ručního override režimu
Typ: Toggle
Tyto helpery nám umožní:
- měnit teploty bez zásahu do YAML
- upravovat časové režimy přímo z dashboardu
- aktivovat dočasný override jedním kliknutím
Zároveň je později využijeme při tvorbě dashboardu, kde si vytvoříme jednoduché ovládací prvky pro komfortní změnu hodnot.
Princip automatizace
Automatizace funguje v následujícím pořadí priorit:
- Override režim – pokud je aktivní, nastaví se pevná teplota a další podmínky se nevyhodnocují.
- Otevřené okno – nastaví se 5 °C, aby hlavice netopila při větrání.
- Nepřítomnost – nastaví se útlumová teplota.
- Denní režim – pokud je někdo doma a je mezi ranním a nočním časem.
- Noční režim – pokud je doma, ale mimo denní časový úsek.
Automatizace se spouští:
- při změně přítomnosti,
- při otevření nebo zavření okna,
- při změně některého z helperů,
- a každých 5 minut jako bezpečnostní kontrola.
Co je potřeba upravit podle vlastní instalace
V automatizaci je nutné upravit následující entity podle vašeho systému:
- climate.shellyblutrv_f844771e302f
→ nahraďte entitou vaší Shelly BLU TRV hlavice - person.majda
→ nahraďte entitou osoby, podle které chcete řídit přítomnost - binary_sensor.living_room_window_sensor_contact
→ nahraďte senzorem otevření okna ve vaší místnosti - všechny entity input_number.*, input_datetime.* a input_boolean.*
→ je nutné vytvořit vlastní helpery se stejnými názvy nebo upravit automatizaci podle vašich názvů
Názvy entit naleznete v Settings → Devices & Services → Entities.
alias: Living room Heating Control
description: Full smart control for Shelly BLU TRV in living room.
triggers:
- entity_id: person.majda
id: presence
trigger: state
- entity_id: binary_sensor.living_room_window_sensor_contact
from: "off"
to: "on"
id: window_open
trigger: state
- entity_id: binary_sensor.living_room_window_sensor_contact
from: "on"
to: "off"
id: window_closed
trigger: state
- entity_id:
- input_number.living_room_heating_day_temp
- input_number.living_room_heating_night_temp
- input_number.living_room_heating_away_temp
- input_number.living_room_heating_override_temp
- input_datetime.living_room_heating_morning_start
- input_datetime.living_room_heating_night_start
- input_boolean.living_room_heating_override
id: helpers
trigger: state
- minutes: /5
id: periodic
trigger: time_pattern
conditions: []
actions:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.living_room_heating_override
state: "on"
sequence:
- target:
entity_id: climate.shellyblutrv_f844771e302f
data:
temperature: >
{{ states('input_number.living_room_heating_override_temp') |
float }}
action: climate.set_temperature
- stop: Override active - automation paused
- conditions:
- condition: state
entity_id: binary_sensor.living_room_window_sensor_contact
state: "on"
sequence:
- target:
entity_id: climate.shellyblutrv_f844771e302f
data:
temperature: 5
action: climate.set_temperature
- stop: Window open - heating paused
- conditions:
- condition: template
value_template: "{{ trigger.id == 'window_closed' }}"
sequence:
- delay: "00:05:00"
- choose:
- conditions:
- condition: state
entity_id: person.majda
state: not_home
sequence:
- target:
entity_id: climate.shellyblutrv_f844771e302f
data:
temperature: >
{{ states('input_number.living_room_heating_away_temp') |
float(18) }}
action: climate.set_temperature
- conditions:
- condition: template
value_template: >
{% set t_now = now().strftime('%H:%M') %} {% set t_morning =
states('input_datetime.living_room_heating_morning_start')[0:5] %}
{% set t_night =
states('input_datetime.living_room_heating_night_start')[0:5] %}
{{ is_state('person.majda','home') and t_now >= t_morning and
t_now < t_night }}
sequence:
- target:
entity_id:
- climate.shellyblutrv_f844771e302f
data:
temperature: >
{{ states('input_number.living_room_heating_day_temp') |
float(21.5) }}
action: climate.set_temperature
- conditions:
- condition: template
value_template: >
{% set t_now = now().strftime('%H:%M') %} {% set t_morning =
states('input_datetime.living_room_heating_morning_start')[0:5] %}
{% set t_night =
states('input_datetime.living_room_heating_night_start')[0:5] %}
{{ is_state('person.majda','home') and (t_now < t_morning or t_now
>= t_night) }}
sequence:
- target:
entity_id: climate.shellyblutrv_f844771e302f
data:
temperature: >
{{ states('input_number.living_room_heating_night_temp') |
float(18) }}
action: climate.set_temperature
mode: restart
Dashboard pro ovládání režimů
Abych nemusel kvůli každé změně otevírat automatizace nebo upravovat YAML, vytvořil jsem jednoduchý dashboard postavený na kartách Mushroom. Ten mi umožní měnit denní/noční/útlumovou teplotu, nastavovat časy režimů, zapnout ruční override a v případě potřeby okamžitě „přepočítat“ režim bez čekání na další trigger automatizace.
Horní karta zároveň přehledně zobrazuje aktuální režim (Day / Night / Away / Window open / Override) a ukazuje cílovou a aktuální teplotu hlavice.
Co je potřeba mít
- nainstalované Mushroom cards (HACS)
- helpery z předchozí kapitoly (výše) (input_number / input_datetime / input_boolean)
- automatizaci Living Room Heating Control (kvůli tlačítku „Apply schedule now“)
Co je potřeba upravit podle vlastní instalace
V dashboardu je nutné změnit tyto entity:
- climate.shellyblutrv_f844771e302f
→ entita vaší Shelly BLU TRV hlavice (kvůli Target/Current teplotě) - person.majda
→ entita osoby, podle které řídíte přítomnost - binary_sensor.living_room_window_sensor_contact
→ senzor otevření okna - všechny input_number.*, input_datetime.*, input_boolean.*
→ odpovídají helperům, které jste si vytvořili (nebo je přizpůsobte vlastním názvům) - automation.living_room_heating_control
→ entita vaší automatizace (tlačítko „Apply schedule now“)
Ruční override režim
Override slouží pro situace, kdy chcete dočasně ignorovat automatické řízení podle přítomnosti a denní doby.
Po jeho zapnutí se nastaví pevná teplota z helperu override_temp a automatizace přestane vyhodnocovat ostatní podmínky (přítomnost, čas i režim dne/noci). Hlavice tak drží nastavenou hodnotu bez ohledu na běžný plán.
Override lze kdykoliv vypnout jedním kliknutím na dashboardu, čímž se systém vrátí zpět do automatického režimu. Tento režim se hodí například v situacích, kdy chcete rychle zatopit.
type: vertical-stack
cards:
- type: custom:mushroom-template-card
primary: >
{% if is_state('input_boolean.living_room_heating_override','on') %}
Living room heating – OVERRIDE
{% elif is_state('binary_sensor.living_room_window_sensor_contact','on')
%}
Living room heating paused – window open
{% elif is_state('person.majda','not_home') %}
Living room – Away mode
{% else %}
{% set t_now = now().strftime('%H:%M') %}
{% set t_morning = states('input_datetime.living_room_heating_morning_start')[0:5] %}
{% set t_night = states('input_datetime.living_room_heating_night_start')[0:5] %}
{% if t_now >= t_morning and t_now < t_night %}
Living room – Day mode
{% else %}
Living room – Night mode
{% endif %}
{% endif %}
secondary: >
Target: {{ state_attr('climate.shellyblutrv_f844771e302f','temperature')
}} °C · Current: {{
state_attr('climate.shellyblutrv_f844771e302f','current_temperature') }}
°C
icon: mdi:radiator
tap_action:
action: none
color: >
{% if is_state('input_boolean.living_room_heating_override','on') %} cyan
{% elif is_state('binary_sensor.living_room_window_sensor_contact','on')
%} red {% elif is_state('person.majda','not_home') %} green {% else %}
blue {% endif %}
features_position: bottom
- type: horizontal-stack
cards:
- type: custom:mushroom-number-card
entity: input_number.living_room_heating_day_temp
name: Day
display_mode: buttons
- type: custom:mushroom-number-card
entity: input_number.living_room_heating_night_temp
name: Night
display_mode: buttons
- type: custom:mushroom-number-card
entity: input_number.living_room_heating_away_temp
name: Away
display_mode: buttons
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_datetime.living_room_heating_morning_start
name: Morning start
- type: custom:mushroom-entity-card
entity: input_datetime.living_room_heating_night_start
name: Night start
- type: custom:mushroom-entity-card
entity: input_boolean.living_room_heating_override
name: Manual override
icon: mdi:tune-vertical
tap_action:
action: toggle
- type: conditional
conditions:
- entity: input_boolean.living_room_heating_override
state: "on"
card:
type: custom:mushroom-number-card
entity: input_number.living_room_heating_override_temp
name: Override temp
display_mode: buttons
- type: custom:mushroom-template-card
primary: Apply schedule now
icon: mdi:play
icon_color: amber
tap_action:
action: call-service
service: automation.trigger
data:
entity_id: automation.living_room_heating_control
Spínání kotle přes Shelly 1 Gen4
Co budeme potřebovat
- Shelly 1 Gen4 (já jsem používal variantu 16 A)
- přístup k rozhraní kotle / termostatnímu vstupu (typicky „room thermostat“, „TA“, „RT“, „T1/T2“… podle výrobce)
- základní nářadí + krabička / lišta (a ideálně elektrikář, pokud si nejste jistí)
Bezpečnost: Kotel je zařízení s 230 V a často i s požadavky výrobce na zapojení termostatu. Pokud si nejsi jistý, svěř to elektrikáři. Špatné zapojení umí odpálit elektroniku kotle.
Integrace Shelly 1 Gen4 do Home Assistanta
Shelly 1 Gen4 přidáme do Home Assistanta podobně jako ostatní Shelly zařízení, ale postup připojení k Wi-Fi je klasický „Shelly style“.
- Připojíme se k síti typu:
Shelly1G4-XXX - V prohlížeči otevřeme IP adresu
http://192.168.33.1

V levém menu otevřeme Settings → Wi-Fi a připojíme zařízení k naší domácí Wi-Fi síti (stejně jako u BLE donglu).

Vrátíme se zpět do Home Assistanta, otevřeme Settings -> Devices & Services.
Zařízení by se mělo automaticky zobrazit v horní části obrazovky v sekci Discovered.
Klikneme na Add, vyplníme název zařízení a jeho umístění a dokončíme integraci.

Popis svorek na Shelly 1 Gen4
Shelly 1 Gen4 má několik svorek, které je potřeba si před zapojením správně vysvětlit.
L – napájení (Live)
Svorka L slouží pro napájení samotného modulu.
Přivádí se sem fáze (u 230 V AC) nebo kladný pól (u DC napájení).
N – napájení (Neutral)
Svorka N je neutrální vodič (u AC) nebo záporný pól (u DC).
Tyto dvě svorky slouží výhradně k napájení Shelly.
Nemají žádnou souvislost s výstupem pro kotel.
12V – napájení
Svorka pro 12V DC napájení modulu.
Používá se tehdy, pokud Shelly napájíme přes 12V DC místo 230V.
V takovém případě:
- +12V → svorka 12V
- − → svorka N
Nepoužívá se současně s 230V napájením.
Shelly lze napájet:
- 110–240 V AC
- 12 V DC
- 24–48 V DC
I a O – relé (suchý kontakt)
Jedná se o bezpotenciálový (suchý) kontakt, což znamená:
- Shelly na těchto svorkách negeneruje žádné vlastní napětí
- pouze je mezi sebou spojí nebo rozpojí
- chová se jako obyčejný mechanický vypínač
Na pořadí I a O nezáleží – proud může téct oběma směry.
Pro kotel tedy připojíte dva vodiče z termostatního vstupu právě na tyto svorky.
Relé je dimenzováno přibližně na:
- až 16 A při 240 V AC
- až cca 10 A při 30 V DC
Pro spínání termostatního vstupu kotle je to výrazně předimenzované a tedy bezpečné (z pohledu proudu).
SW – vstup pro externí spínač
Svorka SW není výstup.
Jedná se o vstup pro externí tlačítko nebo vypínač, který může ručně ovládat relé.
Typické využití:
- připojení klasického nástěnného vypínače
- manuální sepnutí relé bez Home Assistanta
- kombinace automatizace + fyzického ovládání
Například:
- při sepnutí mezi L a SW se relé přepne
- v Home Assistantu zároveň uvidíte změnu stavu vstupu
Pro řízení kotle není SW nutný, ale může být užitečný například pro servisní manuální režim.
Praktický princip zapojení ke kotli
Pro běžný kotel s dvouvodičovým termostatním vstupem zapojíte:
kotel – svorka 1 → I
kotel – svorka 2 → O
Shelly pak pouze propojuje nebo rozpojuje tyto dva vodiče.
Do těchto svorek se nepřivádí 230 V (pokud to výrobce kotle výslovně nepožaduje).
Rozdíl mezi Shelly 1 Gen4 a Shelly 1PM
Pro spínání kotle je zásadní použít Shelly 1 Gen4 (dry contact verzi).
Shelly 1 Gen4 má bezpotenciálové relé (I/O), které pouze propojuje dva vodiče mezi sebou a negeneruje vlastní napětí.
Naopak například Shelly 1PM:
- nemá suchý kontakt
- na výstupu přepíná přímo fázi (L)
- není vhodná pro přímé připojení na termostatní vstup kotle
Pokud byste použili model bez suchého kontaktu, mohli byste do vstupu kotle přivést 230 V, což může poškodit elektroniku kotle.
Pro kotel tedy vždy používejte variantu s I/O relé (dry contact).
Bezpečnostní upozornění
Shelly 1 Gen4 může být napájena síťovým napětím 230 V a její relé může spínat silové obvody.
Manipulace s elektrickým napětím vyžaduje odpovídající znalosti a zkušenosti.
Pokud si nejste jisti zapojením, neznáte rozdíl mezi napájením a suchým kontaktem nebo si nejste jisti typem vstupu svého kotle, doporučuji zapojení konzultovat s kvalifikovaným elektrikářem nebo topenářem.
Nesprávné zapojení může vést k poškození zařízení, ztrátě záruky nebo v krajním případě k úrazu elektrickým proudem.
Automatizace
Ukážeme si dvě varianty automatizace.
První, jednodušší, bude podle atributu hvac_action. Pokud alespoň jedna hlavice hlásí hvac_action: heating (má požadavek na teplo), kotel se zapne. Pokud žádná hlavice netopí (hvac_action: idle), kotel se s krátkým zpožděním vypne.
Druhá, lehce složitější varianta, bude spínat kotel podle procenta otevření ventilu. Pokud je ventil otevřen nad nastavenou prahovou hodnotu (např. 20 %), kotel se zapne. Pokud všechny ventily klesnou pod tuto hodnotu, kotel se s krátkým zpožděním vypne.
Tato varianta může být v některých instalacích přesnější a rychlejší, protože vychází z fyzické polohy ventilu, nikoli z logického atributu integrace.
Součástí obou variant je také ochrana proti častému spínání (anti-cycling):
- krátké zpoždění vypnutí kotle
- minimální doba běhu kotle po sepnutí
Díky tomu nedochází k neustálému zapínání a vypínání, které kotlům obecně neprospívá.
Vyzkoušejte, která varianta vám bude více vyhovovat.
Co je potřeba upravit podle vlastní instalace:
switch.shelly_1_gen_4
→ entita vašeho relé, které spíná kotel
Varianta A (hvac_action)
→ upravte seznam trvs: (přidejte další climate.* hlavice)
Varianta B (ventil %)
→ upravte seznam valve_sensors: (přidejte další sensor.*_valve_position)
→ prahovou hodnotu valve_threshold si dolaďte (doporučení 15–25 %)
Varianta A (hvac_action)
alias: Boiler control (hvac_action) – Shelly 1 Gen4
triggers:
- entity_id:
- climate.shellyblutrv_f844771e302f
attribute: hvac_action
trigger: state
actions:
- choose:
- conditions:
- condition: template
value_template: "{{ any_heating }}"
sequence:
- target:
entity_id: "{{ boiler_switch }}"
action: switch.turn_on
- conditions:
- condition: template
value_template: "{{ not any_heating }}"
sequence:
- delay:
seconds: "{{ off_delay_seconds }}"
- condition: template
value_template: |
{{ (trvs
| map('state_attr','hvac_action')
| select('equalto','heating')
| list | count) == 0 }}
- choose:
- conditions:
- condition: template
value_template: |
{{ is_state(boiler_switch,'on')
and (as_timestamp(now()) - as_timestamp(states[boiler_switch].last_changed)) < min_on_seconds }}
sequence:
- delay:
seconds: >
{{ (min_on_seconds - (as_timestamp(now()) -
as_timestamp(states[boiler_switch].last_changed))) |
int(0) }}
- target:
entity_id: "{{ boiler_switch }}"
action: switch.turn_off
mode: restart
variables:
boiler_switch: switch.shelly_1_gen_4
trvs:
- climate.shellyblutrv_f844771e302f
off_delay_seconds: 120
min_on_seconds: 300
any_heating: |
{{ trvs
| map('state_attr', 'hvac_action')
| select('equalto', 'heating')
| list | count > 0 }}
Varianta B (% otevření ventilu)
alias: Boiler control (valve %) – Shelly 1 Gen4
description: >
Turns boiler ON when TRV valve opens above threshold, OFF with delay and minimum run time.
mode: single
trigger:
- platform: state
entity_id:
- sensor.shellyblutrv_f844771e302f_valve_position
variables:
boiler_switch: switch.shelly_1_gen_4
# seznam ventilových senzorů – při více hlavicích přidáš další
valve_sensors:
- sensor.shellyblutrv_f844771e302f_valve_position
valve_threshold: 20
min_on_minutes: 5
off_delay_minutes: 2
any_demand: >
{{ (valve_sensors
| map('states')
| map('float', 0)
| select('>', valve_threshold)
| list | count) > 0 }}
action:
- choose:
- conditions:
- condition: template
value_template: "{{ any_demand }}"
sequence:
- service: switch.turn_on
target:
entity_id: "{{ boiler_switch }}"
- conditions:
- condition: template
value_template: "{{ not any_demand }}"
sequence:
- delay: "00:02:00"
- condition: template
value_template: >
{{ (valve_sensors
| map('states')
| map('float', 0)
| select('>', valve_threshold)
| list | count) == 0 }}
- choose:
- conditions:
- condition: template
value_template: >
{{ is_state(boiler_switch,'on')
and (as_timestamp(now()) - as_timestamp(states[boiler_switch].last_changed)) < (min_on_minutes*60) }}
sequence:
- delay:
seconds: >
{{ (min_on_minutes*60) - (as_timestamp(now()) - as_timestamp(states[boiler_switch].last_changed)) | int(0) }}
- service: switch.turn_off
target:
entity_id: "{{ boiler_switch }}"
Závěr
Tento díl byl výrazně delší než předchozí – a měl k tomu dobrý důvod.
Neřešili jsme jen přidání jednoho zařízení, ale kompletní logiku vytápění:
- integraci Shelly BLU TRV
- odesílání externí teploty přes RPC
- vytvoření helperů
- automatizaci podle přítomnosti, času a otevřeného okna
- dashboard pro pohodlné ovládání
- integraci Shelly 1 Gen4
- vysvětlení suchého kontaktu a bezpečného zapojení
- dvě varianty spínání kotle včetně ochrany proti cyklování
To už je plnohodnotný topný systém postavený na Home Assistantu.
Chtěl jsem, aby článek nebyl jen „zkopírujte YAML a hotovo“, ale abyste rozuměli tomu, jak jednotlivé části spolupracují a proč je řešení navrženo právě takto.
Pokud vám něco nefunguje, něčemu nerozumíte nebo si nejste jisti zapojením, napište do komentářů pod článek. Rád poradím nebo vysvětlím konkrétní část podrobněji.
A pokud máte vlastní vylepšení – například více místností, složitější logiku nebo jiný způsob spínání kotle – budu rád, když se o ně podělíte.
Tak teplu zdar!



