V době, kdy jsem měl fixní cenu výkupu a nákupu elektřiny bylo sledování spotřeby v čase trošku nuda a vlastně se stačilo jen jednou za měsíc podívat na fakturu, kde byla položka za prodej relativně malá a za spotřebu skoro vždy stejná. S přechodem na spot, kde jsem byl ještě před tím, než ho Nano Green zavedlo, začalo monitorování spotřeby a počítání nákladů dávat obrovský smysl. Při kulminaci cen na burze v červnu a srpnu 2022 jsem na výnosy s vyrobené elektřiny koukal každých 15 minut, podobně jako kdysi na cenu bitcoinu
Sám mám doma Victron/Fronius měniče, které spotřebu velmi přesně monitorují (od údajů z elektroměru a následně distributora se hodnoty liší ve zlomcích procent) a dají se připojit do Home Assistenta a následně přidat do skvělého Energy Dashboardu, který se v HA objevil v releasu 2021.8. Přidání není úplně triviální jako např. u GoodWe a tak se pojďme podívat, jak na to…
Co je potřeba mít v HA
MQTT
- nataveného MQTT brokera
- dá se přidat jako add-on, takže základní nastavení je jednoduché
- MQTT používá spousty sensorů a tak je velké pravděpodobnost, že už ho máte (dle HA statistik 40%)
Samba
- slouží pro vzdálený přístup k file systemu HA
- opět je možné jednoduše nainstalovat jako add-on a jednoduše nastavit
File editor
- k úpravě configuration.yaml
- dá se použít cokoliv jiného (VScode přes SSH, Samba a lokální editor, …)
- instalace File Editoru je opět pře add-on a je nejrychlejší cestou, jak upravit configuraci
- najdete ho v Setting/Add-ons/ => tlačítko Add-on store => Search
Jak dostat Victron do HA
V době, kdy jsem se připojoval Victron měniče neexistovala žádná přímá integrace HA-Victron a podle rychlého hledání neexistuje ani dnes (pokud ano, dejte vědět, rád vyzkouším). Šel jsem na to tady přes MQTT. Druhou možností, jak získat obdobná data je integrovat Victron přes Modbus - tu si ukážeme později pro možnost ovládání Victronu.
MQTT v HA
Pokud máte MQTT v HA už nastavený, tak můžete tuto část přeskočit - jen se ujistěte, že v sekci customize v configuraci MQTT máte parametr active: true
Pokud MQTT ještě nemáte, tak více informací najdete zde a rychlý návod níže.
Po úspěšné instalaci je potřeba nastavit heslo a uživatelské jméno dle vašich preferencí (nanogreen je jen příklad) a v sekci Customize je potřeba mít active nastavený na true.
- username: nanogreen
password: nanogreen
customize:
active: true
folder: mosquitto
MQTT ve VRM
Aby bylo možné se připojit na Victron měniče přes MQTT, tak je potřeba povolit MQTT v Remote Consoli v sekci Settings/Services a tam zapnout MQTT.
HA <=> VRM
MQTT je nastavené na obou stranách, ale ještě si spolu nepovídají. Je potřeba vytvořit bridge, aby mezi nimi začala proudit data. Pro více detailů koukněte na původní návod.
K tomuto kroku budeme potřebovat Sambu. Jakmile se vzdáleně připojíte ke svému HA, tak jděte do složky share/mosquitto (pokud neexistuje, tak jí vytvořte) ve které vytvořte soubor bridge-venus.conf Do něho pak vložte kus kódu ve kterém upravte IP adresu:
connection venus-home
address 192.168.1.XXX. #IP adresa victronu - da se zjistit v remote consoli v Settings/Ethernet
topic
Soubor uložte a restartujte MQTT brokera. Pokud vše proběhlo správně tak v logu uvidíte něco jako
Connecting bridge venus-home (192.168.1.XXX:1883)
Zda data mezi HA a Victronem proudí lze ověřit tím, že se připojíme na brokera, kterého jsme vytvořili v HA. To je možné vyzkoušet přes skvělý nástroj MQTT Explorer, který Vám umožní vidět nejen komunikaci Victronu, ale i všech ostatních MQTT zařízení komunikující přes vašeho brokera. Pro vytvoření připojení k vašemu brokeru, který běží na IP adrese HA, stačí vyplnit pár údajů.
Jakmile se připojíte, uvidíte vše, co si povídá přes vašeho brokera a můžete vyhledávat, zkoumat a případně i posílat MQTT zprávy.
Aby se data pravidelně updatovala, je nutné čas od času “šťouchnout” do Victronu a požádat ho o update. Frekvence updatu bude ovlivňovat velikost databáze, takže je potřeba použít nějakou rozumnou hodnotu. Šťouchnutí se dá jednoduše nastavit v pravidlech HA podobně jednoduchým YAMLem:
alias: Refresh MQTT Victron
description: Request the data on the MQTT server
trigger:
- platform: time_pattern
seconds: "15"
action:
- service: mqtt.publish
data:
topic: venus-home/R/123xxx/system/0/Serial. #123xxx je potřeba upravit na ID vašeho victronu
mode: single
Teď jsme se dostali na proměnné, které jsou vidět ve Victron portálu na přehledovém schématu - stačí tedy porovnat hodnoty, jestli sedí s tím, co chodí v MQTT zprávách. Pokud ano, máme vyhráno a můžeme jít dále.
Home Assistant
Máme tedy všechny proměnné ve formě MQTT zpráv, které potřebujeme pro Energy Dashboard a teď je potřeba je dostat do HA. K tomu bude potřeba udělat pár úprav… Senzory reportují aktuální výkon, jedná se tedy o aktuální hodnot ve W. Nejde o energii ve Wh, kterou vyžaduje Energy Dashboard. A protože Energy dashboard požaduje dodat informaci pro příkon do sítě a i ze sítě zvlášť a Victron mezi proměnnými rozlišuje jen znaménkem, tak je potřeba udělat pár úprav. Takto vypadá upravný configuration.yaml (upravit se dá ve File Editoru, viz výše).
mqtt:
# PV panels
- name: "solar production - energy"
state_topic: "venus-home/N/028xxxxxxxxx/pvinverter/20/Ac/Energy/Forward"
unit_of_measurement: kWh
value_template: "{{ value_json.value }}"
#AC loads
- name: "AC load - L1"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Consumption/L1/Power"
unit_of_measurement: "W"
value_template: "{{ value_json.value | round(2) }}"
- name: "AC load - L2"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Consumption/L2/Power"
value_template: "{{ value_json.value | round(2) }}"
unit_of_measurement: W
- name: "AC load- - L3"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Consumption/L3/Power"
value_template: "{{ value_json.value | round(2) }}"
unit_of_measurement: "W"
######################### ENERGY #########################
######################### TO GRID #########################
- name: "To Grid - L1"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L1/Power"
unit_of_measurement: W
value_template: >
{% if value_json.value | float <= 0 %}
{{ -value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
- name: "To Grid - L2"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L2/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float <= 0 %}
{{ -value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
- name: "To Grid - L3"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L3/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float <= 0 %}
{{ -value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: total_increasing
######################### FROM GRID #########################
- name: "From Grid - L1"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L1/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float >= 0 %}
{{ value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
- name: "From Grid - L2"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L2/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float >= 0 %}
{{ value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
- name: "From Grid - L3"
state_topic: "venus-home/N/028xxxxxxxxx/system/0/Ac/Grid/L3/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float >= 0 %}
{{ value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: total_increasing
######################### SOLAR #########################
- name: "Solar - L1"
state_topic: "venus-home/N/028xxxxxxxxx/pvinverter/20/Ac/L1/Energy/Forward"
unit_of_measurement: "W"
value_template: "{{ value_json.value }}"
device_class: power
state_class: measurement
- name: "Solar - L2"
state_topic: "venus-home/N/028xxxxxxxxx/pvinverter/20/Ac/L2/Energy/Forward"
unit_of_measurement: "W"
value_template: "{{ value_json.value }}"
device_class: power
state_class: measurement
- name: "Solar - L3"
state_topic: "venus-home/N/028xxxxxxxxx/pvinverter/20/Ac/L3/Energy/Forward"
unit_of_measurement: "W"
value_template: "{{ value_json.value }}"
device_class: power
state_class: measurement
######################### TO BATTERY #########################
- name: "To Battery"
state_topic: "venus-home/N/028xxxxxxxxx/battery/512/Dc/0/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float > 0 %}
{{ value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
######################### FROM BATTERY #########################
- name: "From Battery"
state_topic: "venus-home/N/028xxxxxxxxx/battery/512/Dc/0/Power"
unit_of_measurement: "W"
value_template: >
{% if value_json.value | float < 0 %}
{{ -value_json.value }}
{% else %}
0
{% endif %}
device_class: power
state_class: measurement
######################### BATTERY #########################
- name: "Solar Battery"
state_topic: "venus-home/N/028xxxxxxxxx/battery/512/Soc"
unit_of_measurement: "%"
value_template: >
{{ value_json.value }}
device_class: power
state_class: measurement
Dashboard neumí pracovat s jednotlivými fázemi a tak je potřeba je sečíst dohromady pomocí templaty:
template:
- sensor:
- name: from grid total
device_class: power
state_class: measurement
unit_of_measurement: W
state: >
{% set l1 = states('sensor.from_grid_l1') | float %}
{% set l2 = states('sensor.from_grid_l2') | float %}
{% set l3 = states('sensor.from_grid_l3') | float %}
{{ (l1 + l2 + l3 ) | float }}
- name: to grid total
device_class: power
state_class: measurement
unit_of_measurement: W
state: >
{% set l1 = states('sensor.to_grid_l1') | float %}
{% set l2 = states('sensor.to_grid_l2') | float %}
{% set l3 = states('sensor.to_grid_l3') | float %}
{{ (l1 + l2 + l3 ) | float }}
- name: solar total
device_class: power
state_class: measurement
unit_of_measurement: W
state: >
{% set l1 = states('sensor.solar_l1') | float %}
{% set l2 = states('sensor.solar_l2') | float %}
{% set l3 = states('sensor.solar_l3') | float %}
{{ (l1 + l2 + l3 ) | float }}
Po úpravách je potřeba HA restartovat, aby proměnné načetl. Proměnné okamžitého výkonu by teď měly být vidět v HA a měly by odpovídat hodnotám, které jsou vidět ve Victronu - zkontrolujte přes Developer Tools/States. Pokud vše sedí, tak z nich můžeme vytvořit spotřebovanou energii. Ta je integrálem okamžitých hodnot. To není nic složitého a HA má připravené funkce pro tyto matematické operace:
######################### INTEGRATION #########################
######################### TO GRID #########################
- platform: integration
source: sensor.to_grid_total
name: to_grid_total_energy
round: 2
######################### FROM GRID #########################
- platform: integration
source: sensor.from_grid_total
name: from_grid_total_energy
round: 2
######################### SOLAR #########################
- platform: integration
source: sensor.solar_total
name: solar_total_energy
round: 2
######################### FROM BATTERY #########################
- platform: integration
source: sensor.from_battery
name: from_battery_total_energy
round: 2
######################### TO BATTERY #########################
- platform: integration
source: sensor.to_battery
name: to_battery_total_energy
round: 2
Energy Dashboard
Proměnné máme vytvořené a teď už je stačí přidat do dashboardu. V Settings/Dashboards/Energy se objeví nastavení celého energy Dashboardu. Sekce Electricity grid, Solar Panels a Home Battery Storage je to, co nás zajímá. Pro jednotlivé položky stačí vybrat správnou proměnnou a pokud máte už integrované denní ceny od Nano Energies (jak na to), tak stačí přidat entitu s aktuální cenou a ta bude násobit spotřebovaný hodinový objem. V dashboardu pak bude vidět celková cena za den/týden/měsíc pro spotřebu i výrobu.
Data se v Dashboardu začnou zobrazovat se zpožděním až dvou hodin (po doběhnutí aktuální hodiny), takže než přijde panika, že to nefunguje (jako v mém případě), je lepší si dát třeba pivo a chvilku si počkat
V souhrnné tabulce na konci dashboardu jsou pak krásně vidět výdaje za spotřebovanou elektřinu a zisky za prodanou elektřinu, dají se porovnávat období atd.
Pro úplné “dotažení” dashboardu doporučují přidat predikce o FVE. Přidání je velice jednoduché a intuitivní - jestli jste se dostali až sem, tak určitě zvládnete přidat i predikce FVE Ty se pak dají využít pro nastavení podmínek pro lepší využití spotu i energie ze slunce.