Migrace template sensorů na moderní syntaxi
Stará syntaxe platform: template přestane fungovat ve verzi Home Assistant 2026.6 (červen 2026). Home Assistant vás již nyní varuje a je potřeba provést migraci na moderní syntaxi.
Jak poznat, že je potřeba migrovat
Home Assistant vás na problém upozorní dvěma způsoby:
1. Upozornění v sekci Opravy
Nejviditelnější je upozornění v sekci Nastavení → Systém → Opravy, kde uvidíte seznam všech zastaralých template sensorů:

Každý zastaralý sensor je zde veden samostatně s textem "Zastaralá šablona sensor" nebo "Zastaralá šablona binary_sensor".
2. Varování v logu
Druhá možnost je najít varování přímo v logu Home Assistantu (Nastavení → Systém → Protokoly), kde uvidíte konkrétní detaily o problému.
Pokud vidíte některé z těchto varování, jste na správném místě. V tomto článku si ukážeme, jak jednoduše migrovat starou syntaxi na moderní.
Co se mění a proč
Home Assistant postupně modernizuje způsob, jakým se definují template entity. Stará syntaxe byla zavedena před mnoha lety a měla svoje limity. Moderní syntaxe přináší:
- ✅ Čitelnější kód - lépe strukturovaný a srozumitelný
- ✅ Více možností - trigger-based sensory, lepší kontrola nad aktualizacemi
- ✅ Unique ID - možnost editace přes UI
- ✅ Konzistence - stejná syntaxe pro všechny typy template entit
- ✅ Lepší výkon - efektivnější zpracování
Kdy je potřeba migrovat
Pokud ve svých konfiguračních souborech (typicky configuration.yaml nebo v packages/) máte tuto syntaxi, je potřeba provést migraci:
sensor:
- platform: template
sensors:
# ... vaše definice sensorů
nebo
binary_sensor:
- platform: template
sensors:
# ... vaše definice binary sensorů
Základní pravidla migrace
| Starší syntaxe | Moderní syntaxe |
|---|---|
friendly_name: | name: |
value_template: | state: |
icon_template: | icon: |
sensors: (seznam) | Přímo definice bez vnořené úrovně |
V sekci sensor: | V sekci template: |
Příklad 1: Jednoduchý sensor - Převod teploty
Nejjednodušší příklad - sensor, který převádí teplotu z °F na °C.
Starší syntaxe (ZASTARALÁ)
sensor:
- platform: template
sensors:
teplota_venku_celsius:
friendly_name: "Teplota venku (°C)"
unit_of_measurement: "°C"
value_template: "{{ (states('sensor.outside_temperature') | float - 32) * 5/9 | round(1) }}"
Moderní syntaxe (DOPORUČENÁ)
template:
- sensor:
- name: "Teplota venku (°C)"
unique_id: teplota_venku_celsius
unit_of_measurement: "°C"
state: "{{ (states('sensor.outside_temperature') | float - 32) * 5/9 | round(1) }}"
platform: template→ přesunuto do sekcetemplate:sensors:→ odstraněno (entity přímo v seznamu)friendly_name:→name:value_template:→state:- Přidán
unique_id(volitelné, ale doporučené)
Příklad 2: Binary sensor - Je okno otevřené?
Binary sensor, který detekuje, zda je okno otevřené na základě kontaktního senzoru.
Starší syntaxe (ZASTARALÁ)
binary_sensor:
- platform: template
sensors:
okno_obyvak:
friendly_name: "Okno v obýváku"
device_class: window
value_template: "{{ is_state('sensor.contact_living_room', 'open') }}"
Moderní syntaxe (DOPORUČENÁ)
template:
- binary_sensor:
- name: "Okno v obýváku"
unique_id: okno_obyvak
device_class: window
state: "{{ is_state('sensor.contact_living_room', 'open') }}"
binary_sensorsplatform: template→ sekcetemplate:sbinary_sensor:value_template:→state:- Syntaxe je téměř identická jako u běžného senzoru
Příklad 3: Sensor s atributy - Počasí
Sensor, který zobrazuje informace o počasí s dalšími atributy.
Starší syntaxe (ZASTARALÁ)
sensor:
- platform: template
sensors:
pocasi_souhrn:
friendly_name: "Počasí - souhrn"
value_template: "{{ states('weather.home') }}"
attribute_templates:
teplota: "{{ state_attr('weather.home', 'temperature') }}"
vlhkost: "{{ state_attr('weather.home', 'humidity') }}"
tlak: "{{ state_attr('weather.home', 'pressure') }}"
Moderní syntaxe (DOPORUČENÁ)
template:
- sensor:
- name: "Počasí - souhrn"
unique_id: pocasi_souhrn
state: "{{ states('weather.home') }}"
attributes:
teplota: "{{ state_attr('weather.home', 'temperature') }}"
vlhkost: "{{ state_attr('weather.home', 'humidity') }}"
tlak: "{{ state_attr('weather.home', 'pressure') }}"
attribute_templates:→attributes:- Atributy se definují stejně, jen změna názvu klíče
Příklad 4: Sensor s dynamickou ikonou - Baterie
Sensor, který mění ikonu podle stavu baterie.
Starší syntaxe (ZASTARALÁ)
sensor:
- platform: template
sensors:
baterie_senzor:
friendly_name: "Baterie senzor"
unit_of_measurement: "%"
device_class: battery
value_template: "{{ states('sensor.xiaomi_sensor_battery') }}"
icon_template: >
{% set battery_level = states('sensor.xiaomi_sensor_battery') | float(0) %}
{% if battery_level > 90 %}
mdi:battery
{% elif battery_level > 70 %}
mdi:battery-70
{% elif battery_level > 50 %}
mdi:battery-50
{% elif battery_level > 30 %}
mdi:battery-30
{% elif battery_level > 10 %}
mdi:battery-10
{% else %}
mdi:battery-alert
{% endif %}
Moderní syntaxe (DOPORUČENÁ)
template:
- sensor:
- name: "Baterie senzor"
unique_id: baterie_senzor
unit_of_measurement: "%"
device_class: battery
state: "{{ states('sensor.xiaomi_sensor_battery') }}"
icon: >
{% set battery_level = states('sensor.xiaomi_sensor_battery') | float(0) %}
{% if battery_level > 90 %}
mdi:battery
{% elif battery_level > 70 %}
mdi:battery-70
{% elif battery_level > 50 %}
mdi:battery-50
{% elif battery_level > 30 %}
mdi:battery-30
{% elif battery_level > 10 %}
mdi:battery-10
{% else %}
mdi:battery-alert
{% endif %}
icon_template:→icon:- Template kód zůstává stejný, jen se změní název klíče
Příklad 5: Trigger-based sensor - Počítadlo
Moderní syntaxe umožňuje vytvářet trigger-based sensory, které se aktualizují pouze na základě triggerů (ne každou změnu stavu).
Nová funkčnost (TRIGGER-BASED)
template:
- trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
from: "off"
to: "on"
sensor:
- name: "Počet pohybů dnes"
unique_id: pocet_pohybu_dnes
state: "{{ states('input_number.motion_counter') | int + 1 }}"
action:
- service: input_number.set_value
target:
entity_id: input_number.motion_counter
data:
value: "{{ states('input_number.motion_counter') | int + 1 }}"
Trigger-based sensory umožňují:
- Přesnější kontrolu nad aktualizacemi
- Spouštění akcí při aktualizaci
- Přístup k datům z triggeru (
trigger.to_state,trigger.from_state) - Lepší výkon (méně zbytečných aktualizací)
Jak migrovat krok za krokem
1. Zálohujte konfiguraci
Než začnete, vždy si zálohujte svou konfiguraci:
- Settings → System → Backups (vytvořte zálohu)
- Nebo nakopírujte soubor
configuration.yamlručně
2. Najděte všechny template sensory
Hledejte v souborech (typicky configuration.yaml nebo packages/):
grep -r "platform: template" /config/
3. Proveďte migraci
Pro každý sensor:
- Odstraňte starší definici z
sensor:nebobinary_sensor:sekce - Přidejte novou definici do sekce
template: - Změňte syntaxi podle tabulky výše
- Přidejte
unique_id(volitelné, ale doporučené)
Statistics sensory (platform: statistics) NEMIGRUJTE - ty používají vlastní platformu a zůstávají v sekci sensor:.
4. Zkontrolujte konfiguraci
V Home Assistant:
- Developer Tools → YAML → Check Configuration
- Zkontrolujte, zda nejsou žádné chyby
5. Restartujte nebo reloadujte
Můžete použít:
- Plný restart (Settings → System → Restart)
- Nebo Template Entities Reload (Developer Tools → YAML → Template Entities)
6. Ověřte funkčnost
Po restartu zkontrolujte:
- Entity stále existují se stejným entity ID
- Hodnoty se aktualizují správně
- Varování v logu zmizelo
Časté problémy a řešení
❌ Entita má unknown stav
Problém: Po migraci má entita stav unknown.
Řešení: Zkontrolujte, zda template vrací platnou hodnotu. Použijte funkci states() místo states.sensor.xxx.state:
# ❌ ŠPATNĚ
state: "{{ states.sensor.temperature.state }}"
# ✅ SPRÁVNĚ
state: "{{ states('sensor.temperature') }}"
❌ Entita se neaktualizuje
Problém: Entita se přestala aktualizovat po migraci.
Řešení: Zkontrolujte, zda template obsahuje všechny potřebné entity. State-based sensory se aktualizují automaticky, když se změní referenced entity.
❌ Duplicitní template: sekce
Problém: Máte v configuration.yaml více sekcí template:.
Řešení: V souboru může být jen JEDNA sekce template:. Slučte všechny definice pod jednu:
# ❌ ŠPATNĚ
template:
- sensor:
- name: Sensor 1
template: # ← duplicitní!
- sensor:
- name: Sensor 2
# ✅ SPRÁVNĚ
template:
- sensor:
- name: Sensor 1
- sensor:
- name: Sensor 2
Komplexní příklad migrace
Ukážeme si migraci celého package souboru s více sensory.
Před migrací (configuration.yaml)
sensor:
# SNMP sensor - PONECHAT BEZ ZMĚNY
- platform: snmp
host: 192.168.1.32
baseoid: 1.3.6.1.4.1.2021.10.1.3.1
# Template sensory - MIGROVAT
- platform: template
sensors:
pocet_svetel_zapnutych:
friendly_name: "Počet zapnutých světel"
unit_of_measurement: "světel"
value_template: "{{ states.light | selectattr('state', 'eq', 'on') | list | count }}"
prumerna_teplota:
friendly_name: "Průměrná teplota"
unit_of_measurement: "°C"
device_class: temperature
value_template: >
{% set bedroom = states('sensor.bedroom_temp') | float %}
{% set kitchen = states('sensor.kitchen_temp') | float %}
{{ ((bedroom + kitchen) / 2) | round(1) }}
binary_sensor:
- platform: template
sensors:
nekdo_doma:
friendly_name: "Někdo doma"
device_class: occupancy
value_template: >
{{ is_state('person.jiri', 'home') or is_state('person.anna', 'home') }}
Po migraci (configuration.yaml)
sensor:
# SNMP sensor - BEZ ZMĚNY
- platform: snmp
host: 192.168.1.32
baseoid: 1.3.6.1.4.1.2021.10.1.3.1
# Moderní template syntaxe
template:
- sensor:
# Počet zapnutých světel
- name: "Počet zapnutých světel"
unique_id: pocet_svetel_zapnutych
unit_of_measurement: "světel"
state: "{{ states.light | selectattr('state', 'eq', 'on') | list | count }}"
# Průměrná teplota
- name: "Průměrná teplota"
unique_id: prumerna_teplota
unit_of_measurement: "°C"
device_class: temperature
state: >
{% set bedroom = states('sensor.bedroom_temp') | float %}
{% set kitchen = states('sensor.kitchen_temp') | float %}
{{ ((bedroom + kitchen) / 2) | round(1) }}
- binary_sensor:
# Někdo doma
- name: "Někdo doma"
unique_id: nekdo_doma
device_class: occupancy
state: >
{{ is_state('person.jiri', 'home') or is_state('person.anna', 'home') }}
- SNMP sensor zůstal v sekci
sensor:- není template - Template sensory byly přesunuty do nové sekce
template: - Entity ID zůstávají STEJNÉ (např.
sensor.pocet_svetel_zapnutych) - Automace a scripty budou fungovat BEZ ÚPRAV
Užitečné odkazy
Závěr
Migrace na moderní template syntaxi může vypadat na první pohled komplikovaně, ale ve skutečnosti je to jednoduchá změna názvů klíčů a přesunutí do nové sekce. Moderní syntaxe je čitelnější, výkonnější a umožňuje využít nové funkce jako trigger-based sensory.
Důležité termíny:
- ⏰ Deadline: Verze 2026.6 (červen 2026)
- 🔄 Zpětná kompatibilita: Entity ID zůstávají stejné
- ✅ Dopad: Minimální - žádné úpravy automatizací potřeba
Pokud máte problémy s migrací, neváhejte se zeptat v komentářích pod tímto článkem. Většina problémů je snadno řešitelných a komunita ráda pomůže!
Komentáře