Browsed by
Tag: homeassistant

Notifikace výpadku elektřiny pomocí Solax + Home Assistant + Pushover

Notifikace výpadku elektřiny pomocí Solax + Home Assistant + Pushover

Tak, dneska si dáme návod na Home Assistant. V něm stále dost plavu, tak si tu budu postovat i tyhle jednodušší věci, ať se k tomu můžu vracet. Jelikož nám dnes opět 2x vypadla elektřina a já chci vědět, kdy se to děje, chci si posílat notifikaci z Home Assistantu, který je připojený k Solaxu, pomocí Pushoveru na mobil. Tentokrát to dáme bez NodeRedu a dalších systémů :).

1) Pushover účet a instalace na mobilu

Takže, jako první budete potřebovat Pushover. O něm jsem psal už dříve zde: https://www.vodnici.net/wiki/univerzalni-notifikace-diky-pushover/. Budete potřebovat Application API (já si na to vytvořil novou) a user ID (to je to hlavní na hlavní obrazovce). Jak na to je sepsáno právě v předešlém článku o Pushoveru, tak to tu už nebudu opakovat.

2) Instalace Pushover rozšíření do Home Assistant

Toto je velmi snadné, Pushover je podporován přímo čistým Home Assistantem, tak není potřeba dělat žádné skopičiny. Setting – Devices & Services – Add Integration – Pushover. Po instalaci je potřeba zadat Application ID a User ID, které jste získali při minulém kroku.

Pokud si nyní chcete otestovat, že Vám Pushover funguje, běžte do Developer tools – Actions, vyberte “Send a notification with pushover”, a do message dejte třeba “Test”. Pak “Perform action” a zpráva by na Vás už měla koukat z mobilu.

3) Povolení “Grid Status” hodnoty pro HA

Tento krok je trochu zvláštní, ale musíte v nastavení Solaxu pro HA povolit hodnotu “Grid Status”, která tam defaultně je vypnutá. To uděláte v Settings – Devices & services – Solax Inverter Modbus – Solax Inverter (jen kliknout na řádek) – zascrolovat dolu na seznam, kde bude “+ 57 disabled entities”. Tam najít “Grid status” a pomocí oka povolit jeho zobrazení.

4) Vytvoření automatizace – jednoduchá varianta

Nyní běžte do Settings – Automations & scenes, tam “Create Automation”. Tam vyrobíme jednu automatizaci, která Vám pošle notifikaci vždy, když se změní stav “Grid Status”.  To uděláme následně:

When

Do when vyberte nejprve Entity – State, a tam vybrat “Grid Status”. Vše ostatní nechat prázdné, dát Save

Then do

Druhé je “Then do”. Tam dejte “Add action” a “Pushover”.  Do Message pak zadáme zprávu ve tvaru “Změna stavu elektriky z X na Y v Z hodin”. To uděláme tak, že do “Message” dáme:

Změna stavu přívodu elektriky do domu z
"{{ trigger.from_state.state }}"
na
"{{ trigger.to_state.state }}"
v {{ now().strftime('%H:%M:%S') }}.

Pak zase save, a hotovo. Teď si buď můžete jít shodit jističe, nebo to místo “Grid Status” dejte na “House Load” a ona Vám notifikace přijde pokaždé, když se změní odběr domu. Na vyzkoušení dobré, pak to zas přehoďte zpět.

4b) Vylepšená notifikace dle toho, jestli elektřina vypadla nebo se zpět nahodila, včetně různých zvuků

Uděláme dvě různé notifikace. Jednu pro shození, jednu pro nahození. Ať máme různé zvuky (šlo by i přímo jednou notifikací pomocí choose, ale toto je snazší).

Do “Then To” pak přidáme zas rovnou “Send a notification with pushover”. Abychom to ještě trochu vylepšili, nastavíme custom zvuk pro výpadek

Tzn, do message nějakou zprávu, která zároveň vypíše i nový stav: Výpadek elektriky, aktuální stav měniče {{trigger.to_state.state}}. A do data pak { sound: "alien" } a nebo zkráceně sound : alien. (seznam zvuků najdete tady, můžete si dokonce nahrát zvuky svoje).

Druhý je pak už vcelku jednoduchý. Můžete dát “Duplicate” původního pravidla, a jen změnit ve “When” z “From” na “To”. Tzn, From vymazat, a do To dát “OnGrid”. Dále pak vyeditovat Push over notifikaci, změnit text, zvuk. A hotovo.

Poznámky pod čarou

Proč používám Grid status a ne Run Mode? Protože run mode ma mraky stavu, zatímco Grid status jen 4?

Jak simulovat stavy lépe? Pomocí fake helpers. V Settings – Helpers – Create helper. Tam si vyrobte dropdown, dejte hodnoty které potřebujete simulovat, a pak v senzoru napojte na tento fake dropdown.

Změna fake stavu se pak dělá v Developer tools – States – Set State. Aktuální stav entity pak vidíte dole v seznamu Entity, kde můžete i filtrovat dle názvu.

 

A na závěr, pokud chcete fakt cool zvuk, když Vám vypadne elektrika, tak tady máte Sad Trombone :). Ten si nahrajte do PushOveru pod sad_trombone a pak ho pomoci sound : sad_trombone aktivujte 🙂

Integrace HomeAssistant a NodeRed

Integrace HomeAssistant a NodeRed

Tak dneska jsem si pro změnu hrál s propojením Home Assistant a NodeRed. Stále prozkoumávám, jak nejlépe to všechno spojit dohromady, a skoro mi začíná vycházet, že se bez NodeRedu neobejdu. Nevýhoda je, že to jsou zas 3 různé systémy, výhoda ale je, že je to s NodeRedem celé o dost snazší (a navíc rychlejší, protože to běží přes websocket).

Takže, aktuální vize je, že stejně jako mám v NodeRedu logiku na zigbee a iKamand, tak tam bude i hlavní logika na FVE. NodeRed si bude sosat data jak z HomeAssistantu, tak z Loxone, případně Loxone bude ty data do NodeRedu předávat on, to ještě doladím. Ale reálně v Loxone zůstane jen nějaká zobrazovací logika + přepínače/tlačítka, která ale budou spouštět věci v NodeRedu.

Je to trochu překombinované, ale pro mě jako vlastníka miniserveru v1 je to celé o dost rychlejší na práci i rozšiřování. Každá změna v LoxConfigu mi trvá v řádu minut, navíc nejde v LoxConfigu pořádně programovat, zatímco v NodeRedu si vyrobím logiku jakou potřebuju a změna trvá sekundu maximálně. Ale, nepředbíhejme, možná to ještě několikrát změním :).

NodeRed a HomeAssistant

Teď už k integraci. Do NodeRedu je potřeba doinstalovat node-red-contrib-home-assistant-websocket. Já jedu NodeRed přes docker, takže do DockerFile jsem si přidal RUN npm install node-red-contrib-home-assistant-websocket a hotovo. Jinde to bude potřeba řešit nějak přes addony v NodeRed UI zřejmě.

Po nainstalování a restartu NodeRedu uvidíte tyto prvky v levé liště. Je jich dost, sám v nich zatím lehce tápu, ale ty základní sem už pochopil :).

Prvotní propojení s HA je taky vcelku snadné, buď přes access token (long-lived access tokens), který vygenerujete v profilu uživatele:

a nebo pokud máte NodeRed přímo v Home Assistantu, tak je tam volba ”

Čtení hodnot z Home Assistantu

Čtení jde udělat dvěma způsoby. Jedno, kdy node red sám dotazuje HA v určitém intervalu a notifikuje hodnoty. Druhé, kdy se hodnota čte až když přijde vstupní signál.

Automatické čtení je realizováno pomocí “Events.: state” nodu:

zatímco čtení na základě eventy pomoci “current state”:

Nastavení obou je pak hodně podobné. Je potřeba node nějak pojmenovat (je fuk jak), vybrat připojený server, zadat entity ID (kterou zjístíme při kliknutí na entitu v HA a kliknutím na ozubené kolečko, viz minulý článek sekce “Bonusový krok, jak zjistit název ID stavu”).

Jako další pak jde zadat, zda má stav mít nějakou hodnotu, jak dlouho jí má mít, a v jakém formátu mají hodnoty z nodu vylézt. Výsledek pak je, že po načtení hodnoty vyleze z nodu něco jako:

{"_msgid":"8de529266cdb5849","payload":"1455","topic":"","data":{"entity_id":"sensor.solax_inverter_pv_power_total","state":"1455","attributes":{"state_class":"measurement","unit_of_measurement":"W","device_class":"power","icon":"mdi:solar-power-variant","friendly_name":"SolaX Inverter PV Power Total"},"context":{"id":"01KABAWW0DS8B1P1X0ACQY69H1","parent_id":null,"user_id":null},"last_changed":"2025-11-18T11:16:45.709Z","last_updated":"2025-11-18T11:16:45.709Z","timeSinceChangedMs":10125}}


kdy hlavní hodnota vyleze v “payload”, ale je tam připojeno i “data”, který obsahuje všechny ostatní informace, který HA vrátil.

Zápis hodnot do Home Assistantu

Zápis samotný mi dal zabrat trochu více, ale ve finále je to taky jednoduché. Jen člověk nesmí číst starší návody, kde se to jmenuje jinak :).

Zápis samotný se dělá pomocí univerzálního nodu “action” (takže až Vám budou návody říkat něco jiného, ignorujte je :)) :

V akci je potřeba opět zvolit název, server, a akci. Akce je, co se má v HA udělat. Může to být klik, může to byt togle, atd. je tam toho mraky. Abyste věděli, jakou akci volat, chce to se podívat zpět do HA a asi i trochu zkoušet. Já například chtěl nastavit % nabíjení baterie. Takže jsem šel opět do HA, do přehledu hodnot, klikl na danou hodnotu a otevřel nastavení:

tam, kde se dá zkopírovat ID entity je zároveň i prefix “number”. Opět, HA v tomto super, že má developer sekci, kde si to rovnou můžete nasimulovat. Otvírám tím pádem “Developer tools” a “Actions”. A stejně, jako když jsme testovali v minulém článku rest command, tentokrát otestujeme number.set_value.

V seznamu akcí vybírám number.set_value a do parametrů zadávám entity_id a value. V případě set_value jde navíc využít i UI režim, takže nemusíte skoro nic psát, jen si to tam naklikáte a pak se podíváte, jak YAML vypadá:

Po vyplnění stačí dát spustit akci a hned vidíte, zda se hodnota změnila či nikoli (pokud ne, zřejmě voláte jinou akci, kdy je tam například input_text.set_value, input_number.set_value` atd). Pokud se Vám hodnota úspěšně změnila, vracíme se do NodeRedu.

V prvku action tím pádem pokračujete vyplněním “action” jako number.set_value (nebo jakékoli jiné akce, kterou jste si vyzkoušeli, že Vám funguje). Jako další pak přidáte targets, kde si z dropdown prvku vyberete odpovídající propertu. v měm případě `number.solax_inverter_backup_nightcharge_upper_soc`.

A jako poslední zbývá zadat hodnotu, která se má poslat. Tady jsem se lehce zasekl, než jsem si všiml dole tlačítka “Load example data”.

Hodnota do “Data” se totiž nesmí zadat jako “30”, ale jako JSON objekt s propertou value a hodnotou “30”. Toto je lehce matoucí, ale když si člověk přečte spodní část obrazovky, kde je navíc tlačítko “Load example data”, které Vám to předvyplní, je to hotové raz dva.

Pak už jen stačí spustit akci a otestovat, že se Vám v Home Assistantu hodnota změnila.

Závěrem

Tak, tím pro dnes zas hotovo. Další způsob komunikace otestovaný. Zítra zkusím ve volné chvíli mrknout znovu na propojení Loxone a NodeRed. Kdysi jsem používal ten fajn addon na přímé propojení Loxonu a NodeRedu, ale blblo tam znovu-navázání spojení po výpadku. Tak mrknu, zda to tam náhodou už není doděláno, protože by to na toto bylo fajn.

Pak by byl Loxone opět jen v roli vizualizátora, NodeRed v roli logiky, a Home assistant jako gateway k zařízení. I když jsou to 3 různé systémy, ve finále to asi zas tak zlé nebude.

 

Instalace a propojení HomeAssistant a Loxone

Instalace a propojení HomeAssistant a Loxone

S nově nainstalovanou FVE u nás na domě vyvstal klasicky nový problém, jak dané zařízení co nejlépe připojit k Loxone :). A protože jsem líný mapovat celý Solax Modbas do Loxone ručně, nakonec jsem na to šel přes HomeAssistant, který už mapování má hotové. Samotné propojení se pak dá udělat pravděpodobně spousty způsoby, jak se například řeší i u nás na fóru (a protože ani pro NodeRed jsem to nenašel).

Bohužel pro mé účely PyLoxone zřejmě nejde použít, jelikož údajně potřebuje Miniserver V2. Stejně tak sem nakonec narazil na UDP propojení jako slepou větev, jelikož HA přímo UDP nepodporuje a volat linux příkaz pro každý cmd mi přišlo mimo. Nakonec jsem po několika různých pokusech-omylech došel k tomu, že nejsnazší to bude přes virtuální vstupy a HTTP requesty. HomeAssistant to bude volat přes RestAPI v okamžiku, kdy se daná hodnota změní.

Celý postup níže pro ty, kdo by to chtěli řešit touto cestou, stejně tak pro mé budoucí já, až se v tom jednou zas bude hrabat :). Celý návod je testovaný na starém Miniserveru V1 s LoxConfigem 8.3.3.21. Věřím, že přes PyLoxone to bude asi pohodlnější, ale na těch pár hodnot mi to teď stačí a do budoucna se pak uvidí.

Krok 1, virtuální vstupy

Na co jsem během testování přišel, že než používat klasické virtuální vstupy, které jsou po jednom v hlavní složce Virtual Inputs, jdou klidně použít například UDP vstupy, které se pěkně groupují do pod-složky a fungují přes HTTP Rest Api úplně stejně. Takže prvotní příprava vypadala takto:

Krok 2, instalace HomeAssistant

Tady musí každý podlé svého, zřejmě se to bude i místama trochu lišit, ale já jedu nakone HA v dockeru. Config mám pak vyndaný do permanentního storage v docker-compose.yml.

Dockerfile

Dockerfile pro container mám takto, přidávám si tam wget, a při startu loaduju docker-entrypoint.sh, který instaluje HACS

FROM ghcr.io/home-assistant/home-assistant:2025.11
COPY ./backup.sh /
# HACS install script uses bash + wget, make sure they exist
RUN apk add –no-cache bash wget
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# Use our entrypoint wrapper, then hand off to the original /init
ENTRYPOINT [“/docker-entrypoint.sh”]
CMD []

docker-entrypoint.sh

V docker-entrypoint pak vytvářím custom_components a instaluju HACS, pokud není dostupný. Nechtěl sem to nechávat na ruční instalaci, protože čim více to udělá samo, tím méně problému při budoucím updatu 🙂

#!/usr/bin/env bash
set -e

# Ensure config dir exists (it will be your mounted volume)
mkdir -p /config/custom_components

if [ ! -d /config/custom_components/hacs ]; then
echo “HACS not found in /config/custom_components, installing…”
cd /config
wget -O – https://get.hacs.xyz | bash –
else
echo “HACS already present, skipping HACS download.”
fi

# Hand over to Home Assistant’s original entrypoint
exec /init

 

Home Assist instalace doplňků

Po rozjetí HA jsem pak už instaloval jen “Solax Inverter Modbus”, kterému jsem nastavil IP. Tím je defakto HomeAssist hotov. Osobně ho neplánuji více používat jako UI, jen takto jako podružný systém na vyčítání dat. Časem na něj možná zkusím přehodit i zigbee například.

Krok 3, rest_command nastavení v Home Assistant

Jako první krok je potřeba vyrobit rest_command, který pak využívají další kroky. Rest command může mít několik parametru, což je super, jelikož se tak dá vytvořit univerzální příkaz na nastavování hodnot virtuálních vstupů v Loxone. Do configuration.yaml v adresáři /config v HA přidejte sekci rest_command:

rest_command:
loxone_vi:
url: “http://admin:[email protected]/dev/sps/io/{{ vi_name }}/{{ vi_value }}”
method: GET

po přidání je potřeba provést restart HA, aby si tento command načetl.

Krok 3b, otestování rest commandu

Toto se mi na Ha líbilo, v sekci DeveloperTools->Actionssi můžete otestovat svůj nově vytvořený rest_command. Jako akci vyberete název commandu, v mém případě loxone_vi. Bohužel data nejdou zadat přes UI, ale v YAML je to snadné vyplnit. Takže přepnout do YAML módu a zadat například takto:

action je název akce, tzn rest_command.loxone_vi a do data pak vyplnit za co se má substituovat vi_name a vi_value. Pak už jen tlačítko provést akci a hodnota v Loxone by měla být změněna.

Krok 4, vytvoření automatizačního pravidla

V Settings->Automation&scenes->Automationsdáme vytvořit nové pravidlo. Vybrat Create new automation, tam pak nastavit pravidlo následovně:

Pro zadání triggeru vybrat “Entity” a pak “State”.

do entity pak název hodnoty, v mém případe solax_inverter_pv_power_total

Jako druhé je pak v automatizaci potřeba vyplnit Then do sekce, kde nastavíme, co se má stat. Dáme přidat akci, a v seznamu vyberemé námi vyrobeny loxone_vi rest command. Po jeho vybrání musíme opět pomocí tří teček zvolit YAML editaci

a do Action data vyplníme data podobně, jako jsme to udělali v testeru. Rozdíl je v tom, že nechceme posílat fixní hodnotu, ale dynamickou na základě vstupního stavu. Proto je zápis lehce komplikovanejší:

vi_name: solax_inverter_house_load
vi_value: “{{ states(‘sensor.solax_inverter_house_load’) }}”

Tímto zajístíme, že do virtuálního vstupu pojmenovaného solax_inverter_house_load posíláme aktuální hodnotu z tohoto senzoru. Jakmile akci uložíme, začne HA při každé změně stavu volat REST command, který tuto hodnotu přenese do Loxone.

Solax rozšíření vyčítá data co každých 5 sekund, němelo by dojít ani k nějakému spamování loxone. Pokud by to i tak bylo moc rychlé, mělo byt o jít nastavit pomoci for v trigger nastavení (lze asi nastavit zase jen přes YAML):

trigger:
– platform: state
entity_id: sensor.solax_inverter_house_load
for: “00:00:05” # hodnota musí být stejná 5s, než se automat spustí

 

Bonusový krok, jak zjistit název ID stavu

Zjištění názvu této proměnné jde udělat tak, že v Overview na hlavní obrazovce kliknete na danou hodnotu, kterou byste chtěli přenášet, dáte nastavení vpravo nahoře, a pak vykopírujete entity ID:

Závěrem

To je pro dnes vše. Zatím mám propojené jen tyto dvě hodnoty. Pokračovat pak budu se směrem Loxone->HA, kde budu jednou za 3 týdny řešit plné nabití baterií. A další pak bude,  až doinstalujeme elektropatronu do boileru a já začnu programovat spínání patrony, případně pak až začnu řešit i další spotřebiče v případě přebytku. Ale to bude reálně až na jaře / v létě, až začne svítit :).