Konfigurační soubor
Home Assistant
YouTube pořad Opravdu chytrá domácnost
# Každá deklarace může být v konfiguračním souboru pouze jednou, uvnitř pak odsazením lze přidávat další stejného typu.
# Sonoff LAN integrace HACS
# video jak přidat HACS
sonoff: # deklarace sonoff
username: !secret_email
password: !secret_heslo
sensors: [power] # typ senzorů, co chci najít a přidat
force_update: [power] # typ senzorů, co chci donutit častěji aktualizovat
scan_interval: '00:00:05' # aktualizovat stavy každých 5 vteřin
reload: always # aktualizovat zařízení z eWeLink každý restart
mode: local # LAN mód, ale nemusí v něm fungovat všechna zařízení
# přetypování entit na jiný typ (device_class)
devices:
10008c8efa: # označení senzoru ze .sonoff.json souboru v adresáři HA
device_class: [light, fan] # dvojspínač - první bude světlo a druhý větrák
name: Koupelna # nové jméno spínače
10007558d4:
device_class: light
name: Kuchyně
# Sonoff Bridge
fbridge:
Chodba: # jméno senzoru v eWeLink aplikaci
device_class: motion # typ sensoru: door, window nebo motion
timeout: 120 # doba ve vteřinách, po které se sám přepne stav na OFF
# Tasmota integrace
# přetypování entit na světlo
light: # deklarace světla
- platform: switch # původní typ
name: "Koupelna" # nový název entity bude "light.koupelna"
entity_id: switch.koupelna_svetlo # původní entita
# přetypování entit na větrák
fan: # deklarace větráku
- platform: template # lze jen za pomoci šablony
fans: # přidáme více větráků dle šablony
koupelna: # nový název entity bude "fan.koupelna"
friendly_name: "Záchod" # uživatelsky přívětivější název jen pro zobrazování
value_template: "{{ states('switch.zachod_vetrak') }}" # stav entity přes šablonu hodnoty
turn_on: # co představuje stav zapnutý
service: switch.turn_on # služba zapni spínač
entity_id: switch.koupelna_vetrak # entita větrák
turn_off: # co představuje stav vypnutý
service: switch.turn_off # služba vypni spínač
entity_id: switch.koupelna_vetrak # entita větrák
# Tasmota Bridge (Sonoff původně)
binary_sensor: # deklarace binárního senzoru
- platform: mqtt # typ komunikace
device_class: motion # typ sensoru: motion, door, window
name: 'pohyb_chodba' # pojmenujte entitu
payload_on: "EC2D2E" # kód sensoru pro zapnutí
payload_off: "EC2D2Eoff" # kód sensoru pro vypnutí (nepovinný)
off_delay: 20 # doba do autovypnutí ve vteřinách; 0 zůstane zapnuto
state_topic: "tele/bridge/RESULT" # konstanta
value_template: '{{ value_json.RfReceived.Data }}' # konstanta
# Variable proměnné integrace HACS
var: # deklarace proměnné
window_left: # jméno proměnné
value: false # výchozí hodnota
window_right:
value: false
volume_last:
value: 4
volume_mute
value: false
video_id:
value: ''
video_position:
value: 0
mirror_program:
value: 1
mirror_youtube:
value: 1
input_number:
# Posuvník hlasitosti
volume_now:
name: Hlasitost
initial: 4
min: 1
max: 7
step: 1
icon: mdi:volume-high
# Telegram komunikace
# video jak vytvořit bota
telegram_bot: # deklarace robota telegramu
- platform: polling
api_key: !secret_key # vygenerovaný api klíč
allowed_chat_ids: 123456789 # přidělené komunikační ID
notify: # deklarace komunikačního klienta
- name: telegram # jméno klienta
platform: telegram # služba klienta
chat_id: 123456789 # id pro klienta
climate: # deklarace termostatu
# Termostat
- platform: generic_thermostat # softwarový termostat
name: Obývák # jméno místnost termostatu
heater: switch.topeni # spínač hlavice topného tělesa
target_sensor: sensor.air98_temperature # senzor teploty stejné místnosti
min_temp: 20 # minimální teplota na termostatu
max_temp: 24 # maximální teplota na termostatu
# target_temp: 23 # požadovaná teplota nastavená po restartu HA
cold_tolerance: 0.5 # topit jakmile teplota klesne o 0,5°C pod požadovanou
hot_tolerance: 0 # při dosáhnutí požadované teploty přestat topit
min_cycle_duration: # pokud bylo topení např. zapnuto, tak nemůže být
seconds: 30 # dalších 30 sekund vypnuto - přepnuto
initial_hvac_mode: "off" # co má termostat dělat po restartu - topit "heat"
away_temp: 15 # mód Pryč(Away) požadovaná teplota, když nejste doma
precision: 0.1 # zohlednit nepřesnost měření teploty
ac_mode: false # zařízení je klimatizace, netopí, ale chladí
sensor: # deklarace senzoru
# Youtube kanál integrace HACS
- platform: youtube # senzor youtube kanálu
channel_id: UC-DzNfMTLCmUTXfKdNb5mzQ # adresu kanálu zkopírujte z konce webové adresy youtube kanálu
- platform: template # za základě šablony
sensors: # přidáme více senzorů dle šablony
# Denní doba template sensor
period_of_day: # jméno senzoru
friendly_name: "Denní doba" # uživatelsky přívětivější název
value_template: >- # stav entity přes šablonu hodnoty
{% if (as_timestamp(states.sun.sun.attributes.next_dusk)) - (as_timestamp(states.sun.sun.attributes.next_setting)) < 0 %}
dusk
{% elif (as_timestamp(states.sun.sun.attributes.next_rising)) - (as_timestamp(states.sun.sun.attributes.next_dawn)) < 0 %}
dawn
{% elif (states.sun.sun.attributes.elevation) < -4 %}
night
{% else %}
day
{% endif %}
icon_template: >- # určení ikony na základě stavu entity přes šablonu hodnoty
{% if (as_timestamp(states.sun.sun.attributes.next_dusk)) - (as_timestamp(states.sun.sun.attributes.next_setting)) < 0 %}
mdi:weather-sunset-down
{% elif (as_timestamp(states.sun.sun.attributes.next_rising)) - (as_timestamp(states.sun.sun.attributes.next_dawn)) < 0 %}
mdi:weather-sunset-up
{% elif (states.sun.sun.attributes.elevation) < -4 %}
mdi:weather-night
{% else %}
mdi:weather-sunny
{% endif %}
# Semafor ovzduší venku
air_color:
friendly_name: "Semafor ovzduší"
value_template: >-
{% if states('sensor.castice_1')|float > 55 or states('sensor.castice_25')|float > 70 or states('sensor.castice_10')|float > 100 %}
red
{% elif states('sensor.castice_1')|float > 25 or states('sensor.castice_25')|float > 35 or states('sensor.castice_10')|float > 45 %}
yellow
{% elif states('sensor.castice_1')|float > 0 and states('sensor.castice_25')|float > 0 and states('sensor.castice_10')|float > 0 %}
green
{% else %}
{% endif %}
icon_template: mdi:traffic-light
# Tlak přepočtený na hladinu moře
tlak_venku:
device_class: pressure
#unit_of_measurement: 'hPa' # jednotka míry zmenšuje písmo a čitelnost hodnoty, často je lepší ji neuvádět
friendly_name: "Tlak přepočtený na hladinu moře"
value_template: "{{ ( states('sensor.tlak')|float / (1-0.0065*360/ (states('sensor.teplota_venku')|float + 273.15) ) ** (5.255) )|round(0) }}"
# uRADMonitor senzory SMOGGIE-PM
- platform: rest # typ komunikace
device_class: temperature # typ senzoru
resource: http://192.168.0.177/j # IP adresa senzoru
name: Teplota uRadMonitor # jméno senzoru
unit_of_measurement: "°C" # jednotka míry
value_template: '{{ (value_json.data.temperature - 3.7)|round(1) }}'
# od hodnoty senzoru odečtena kalibrační hodnota 3,7 a to celé round(1): zaokrouhleno na jedno desetinné místo
- platform: rest
device_class: humidity
resource: http://192.168.0.177/j
name: Vlhkost
unit_of_measurement: "%"
value_template: '{{ value_json.data.humidity|float|round(2) + 9.45 }}'
# float: hodnota přetypována na číslo s desetinnou čárkou
- platform: rest
device_class: pressure
resource: http://192.168.0.177/j
name: Tlak
unit_of_measurement: "Pa"
value_template: '{{ ((value_json.data.pressure|float - 360) / 100) }}'
- platform: rest
resource: http://192.168.0.177/j
name: Částice 1
unit_of_measurement: "µg/m³"
value_template: '{{ value_json.data.pm1 }}'
- platform: rest
resource: http://192.168.0.177/j
name: Částice 25
unit_of_measurement: "µg/m³"
value_template: '{{ value_json.data.pm25 }}'
- platform: rest
resource: http://192.168.0.177/j
name: Částice 10
unit_of_measurement: "µg/m³"
value_template: '{{ value_json.data.pm10 }}'
rest_command:
# Vektiva Smarwi
window_open: # otevření ventilace
url: 'http://192.168.0.199/cmd/open'
window_close: # zavření ventilace
url: 'http://192.168.0.199/cmd/close'
window_stop: # zastavení pohybu
url: 'http://192.168.0.199/cmd/stop'
window_fix: # odblokování okna pro manuální otevření; zablokujete zavřením
url: 'http://192.168.0.199/cmd/fix'
switch: # deklarace spínače
- platform: template # na základě šablony
switches: # přidáme více spínačů šablony
# okno Vektiva
smarwi: # jméno vlastního spínače
friendly_name: "Okno otevřít"
value_template: "{{ is_state('var.window_right', 'True') }}" # stav pro turn_on
turn_on: # co se stane při sepnutí
- condition: state # vždy zabraňte opakovanému spuštění, nemusíte to pak dělat v automatizacích
entity_id: var.window_right
state: 'False'
- service: var.set
data:
entity_id: var.window_right
value: True
- service: rest_command.window_open # otevření okna
- service: climate.set_preset_mode # přerušení topení - využijte preset_mode
entity_id: climate.obyvak # spínání si pak nechte pro časovou logiku
data:
preset_mode: "away"
turn_off: # co se stane při vypnutí
- condition: state
entity_id: var.window_right
state: 'True'
- service: var.set
data:
entity_id: var.window_right
value: False
- service: rest_command.window_close
- service: climate.set_preset_mode
entity_id: climate.obyvak
data:
preset_mode: "none"
icon_template: >-
{% if is_state('var.window_right', 'True') %}
mdi:window-open-variant
{% else %}
mdi:window-closed-variant
{% endif %}
# zvuk Windows
volume_mute:
friendly_name: "Zvuk vypnut"
value_template: "{{ is_state('var.volume_mute', 'True') }}"
turn_on:
- condition: state
entity_id: var.volume_mute
state: 'False'
- service: var.set
data:
entity_id: var.volume_mute
value: True
- service: mqtt.publish
data:
topic: pc/mute
turn_off:
- condition: state
entity_id: var.volume_mute
state: 'True'
- service: var.set
data:
entity_id: var.volume_mute
value: False
- service: mqtt.publish
data:
topic: pc/mute
icon_template: >-
{% if is_state('var.volume_mute', 'True') %}
mdi:volume-mute
{% else %}
mdi:volume-low
{% endif %}
# PC vypínač
computer:
friendly_name: "Počítač"
value_template: "{{ states('sensor.zasuvka_pc_energy_power')|int > 10 }}"
turn_on:
- condition: state
entity_id: switch.computer
state: 'off'
- service: switch.turn_on
entity_id: switch.pc
turn_off:
- condition: state
entity_id: switch.computer
state: 'on'
- service: switch.turn_on
entity_id: switch.pc
icon_template: >-
{% if states('sensor.zasuvka_pc_energy_power')|int > 10 %}
mdi:monitor-dashboard
{% else %}
mdi:monitor-off
{% endif %}
# Deklarujte pouze pokud je třeba auto-login. Pokud nevíte, co děláte, nedělejte to.
homeassistant:
auth_providers:
- type: trusted_networks
# Schválené IP adresy
trusted_networks:
- 192.168.0.111 # IP adresa Chromecastu
trusted_users:
192.168.0.111: bb4013f64d8s4e90bcg25316h4sxc257 # ID vašeho uživatele, ne jméno uživatel
allow_bypass_login: true # Přístup bez potřeby loginu (auto-login)
- type: homeassistant # Nutnost nakonci schválit přístup pro HA (jinak user error)