====== Growatt napěťový měnič - solární elektrárna ======
Mám solární elektrárnu s napěťovým měničem Growatt SPH 10000 TL3 BHUP. Měl jsem na začátku představu, že budu moct elektrárnu softwarově ovládat. Že půjde softwarově vypnout, dát pokyn k nabíjení baterií nebo nastavit, kdy posílat energii do sítě či kdy nabíjet baterii ze sítě. Toto všechno bych potřeboval proto, abych mohl jít na spotový trh s energií a precizněji podle spotových cen řídit, kdy energii prodávat.
Bohužel zatím mohu uvažovat o přístupu pouze pro čtení - nikoli řízení a zápis. Výrobce mi zápis umožní, ale pouze za předpokladu, že se vzdám záruky. A to není rozumný krok. Zdá se, že probíhá jednání třetí strany, která vyvíjí přímo software na toto řízeni a přes třetí stranu bych mohl elektrárnu ovládat bez ztráty záruky. Nicméně tady jsem teprve na začátku a nemám bližší informace.
Proto se zaměřím na to, jak z Growatt napěťového měniče mohu dostat data alespoň pro čtení.
Na internetu jsem našel 2 dokumentace k API. První má název [[https://growatt.pl/wp-content/uploads/2020/01/Growatt-Server-API-Guide.pdf|Growatt-Server-API-Guide]] je kratší a je v ní napsáno "Need token authentication please contact Growatt New Energy Co. to obtain the only token". O token mám sice zažádáno, ale i když jsem si s dodavatelem FVE domluvil, že token dostanu, tak si nejsem tak jistý. Token by měl mít práva pouze pro čtení z elektrárny, abych nepřišel o záruku.
Tady je další dokumentace, kterou jsem našel[[https://growatt.pl/wp-content/uploads/2020/01/Growatt-Server-Open-API-protocol-standards.pdf|Growatt Server Open API protocol standards]]. Dokumentace vypadá rozsáhlejší a jsou v ní i data ohledně nastavení solární elektrárny. Protože mi přijde opravdu užitečná, tak ji uložím i {{ :it:iot:growatt-server-open-api-protocol-standards.pdf |zde}}.
Když jsem dále prohledával internet, tak jsem přišel na to, že API token nebudu asi ani potřebovat. Že mi stačí přístupové údaje, které jsem dostal od dodavatele elektrárny. Přístup je na server [[https://server.growatt.com|https://server.growatt.com]].
====== Načítání dat z elektrárny bez API tokenu ======
Prošel jsem několik projektů, které mi mají umožnit načítat data z elektrárny. Ke všem jsem potřeboval jenom přihlašovací údaje, které jsem dostal od instalační firmy. Když jsme se díval do kódu, tak jsou projekty
===== growattServer - modul pro Python =====
[[https://pypi.org/project/growattServer/|Tento modul]] není oficiální podpora od Growatt. Vzniknul reverzním inženýrstvím a analýzou komunikace oficiální aplikace [[https://play.google.com/store/apps/details?id=com.growatt.shinephones|ShinePhone]] pro Android. Aby bylo možné komunikaci odchytit, tak bylo nutné ještě na telefonu rozběhnout aplikaci [[https://play.google.com/store/apps/details?id=com.minhui.networkcapture&hl=en_US|NetCapture]], která vytvoří na telefonu prostředníka mezi serverem Growatt a aplikaci ShinePhone a může pohodlně odposlouchávat komunikaci.
Knihovnu lze nainstalovat přes pip:
pip install growattServer
Pak jsem podle dokumentace napsal jednoduchý kód, který mi zobrazí základní data o uživateli a detailu elektrárny.
import growattServer
import json
api = growattServer.GrowattApi()
# bez tohoto řádku vypisovalo připojení chybu. Musel jsem nastavit server, na který se
# má aplikace připojovat. Existuje více serverů (patrně kvůli klientům po celém světě).
# Defaultně má aplikace nastaven server https://api-server.growatt.com/ , ale na tom serveru
# nemám aktivní klientský účet, takže se nebylo možné připojit. Definicí serveru, přes který se
# připojuji jsem problém odstranil a připojení mi začalo fungovat.
api.server_url='https://server.growatt.com/'
login_response = api.login("mojeFVE", "heslo")
print(json.dumps(login_response, indent=4))
#Get a list of growatt plants.
print(json.dumps(api.plant_list(login_response['user']['id']), indent=4))
Nesnažím se implementovat všechny funkce. K tomu je už [[https://pypi.org/project/growattServer/|dokumentace]]. Jen jsem chtěl jednoduchý výpis, že mám první data z elektrárny.
==== Growatt API client ====
Z [[https://github.com/Sjord/growatt_api_client|Growatt API client]] vychází právě modul pro python. Je třeba říct, že se jedná o odposlechnutou komunikaci mezi mobilní aplikaci a Growatt serverem. Nikoli oficiální implementaci Growatt API.
===== Smartwater a knihovna knihovna growatt.py =====
V diskusi o Growatt API client jsem narazil na projekt [[https://github.com/Sjord/growatt_api_client|Smartwater]]. Asi nejzajímavější část je [[https://github.com/olliebu/smartwater/blob/master/growatt.py|growatt.py]]. Tam jsou vidět jednotlivé funkce a volání Growatt neoficiálního API s tím, že není potřeba žádná další knihovna. Stačí Python a jeho standardní knihovny.
To mě inspirovala k napsání jednoduchého testovacího kódu:
from growatt import GrowattApi, Timespan
from datetime import date
import json
# Vytvoření instance API
api = GrowattApi()
# Přihlášení
username = "FVE" # Nahraďte svým uživatelským jménem
password = "password" # Nahraďte svým heslem
api.login(username, GrowattApi.hash_password(password))
# Získání seznamu elektráren
plants = api.plant_list()
print(json.dumps(plants, indent=4))
# Získání ID elektrárny
first_plant_id = plants['data'][0]['plantId']
# Získání detailů elektrárny
plant_detail = api.plant_detail(first_plant_id, Timespan.day, date.today())
# Zobrazení detailů elektrárny
print(json.dumps(plant_detail, indent=4))
get_user_center_energy_data = api.get_user_center_energy_data()
print(json.dumps(get_user_center_energy_data, indent=4))
===== Growatt API pro .NET =====
Projekt [[https://github.com/ealse/GrowattApi|Growatt API]] jsem dále nezkoumal, protože je psaný pro .NET. Uvádím ho ale pro úplnost a především proto, že může být užitečné vyčíst informace z kódu.
===== Growatt API for Inverter for Node.js =====
Podle mě se jedná pořád o stejné odposlechnuté API, akorát je implementace pro Node.js. Zdá se, že [[https://github.com/PLCHome/growatt|Growatt API for Inverter]] je dobře udržován a hezky funkční.
Pro instalaci stačí spustit:
npm install growatt
A pak jsem napsal kód v JavaScriptu:
"use strict"
const api = require('growatt')
const user="FVE"
const passwort="heslo"
const options={}
async function test() {
const growatt = new api({})
let login = await growatt.login(user,passwort).catch(e => {console.log(e)})
console.log('login:',login)
let getAllPlantData = await growatt.getAllPlantData(options).catch(e => {console.log(e)})
console.log('getAllPlatData:',JSON.stringify(getAllPlantData,null,' '));
let logout = await growatt.logout().catch(e => {console.log(e)})
console.log('logout:',logout)
let logout = await growatt.logout().catch(e => {console.log(e)})
console.log('logout:',logout)
}
test()
A zdá se, že funkce vypsala všechna data, které mohu z growatt serveru získat.
===== HomeAssistant =====
HomeAssistant implementuje načítání dat pomocí Python knihovny. Už jsem nezkoumal, pomocí které přesně. V prosinci 2022 vznikla diskuse o problému, kdy Growatt limituje limit dotazů na server Growattu. Hlouběji jsem nezkoumal v jakém stavu je problém a řešení. Přikládám [[https://community.home-assistant.io/t/growatt-integration-roadmap/510221|diskusní fórum Home Assistantu]].
Disku mě dovedla z zajímavým zjištěním. Nejprve začnu stránkou od správce pluginu: [[https://github.com/muppet3000/homeassistant-growatt_server_api|Growatt Server API Home Assistant Custom Component (growatt_server_api)]], kde zmiňuje aktuální stav problému s blokací a ukazuje cesty řešení.
Pro mě byla zajímavá informace, že data logger, který posílá data na servery growatt je posílá v intervalu 5 min. Datalogger má mít http přístup s přístupem admin:admin. Mělo by stačit načíst IP adresu data loggeru. V mém případě bohužel nevidím, že by data logger naslouchal na nějakém portu, takže zatím nemohu interval změnil. Nicméně [[https://github.com/muppet3000/homeassistant-growatt_server_api/blob/dev/FAQ.md#how-do-i-configure-my-shinelinkwifi-dongle-to-update-more-often|tady je návod na změnu]].
==== Grott ====
[[https://github.com/johanmeijer/grott|Grott]] je velmi zajímavý projekt ke kterému mě navedla diskuse u Home Assistantu. [[https://github.com/muppet3000/homeassistant-growatt_server_api/issues/15#issuecomment-1427052222|V diskusi]] jsou zmíněny problémy s blokováním přístupů ke Growatt serveru a diskutér uvádí, že plugin nyní nebude dál rozvíjet, protože problémy s blokováním buď přetrvávají nebo se mohou opakovat. Proto chce otestovat řešení se serverem Grott. Grott je vlastně server, který nainstaluju na lokálním počítači a budu posílat data z data loggeru do Grottu a až Grott je pošle Growattu. V podstatě je to takový man in the middle.
Výhodou řešení je, že se jedná o lokální řešení a data budu tahat z Grottu, protože už nepotřebuji přístupovat na Growatt server.
O možnostech a konfiguraci serveru Grott napovídá [[https://github.com/johanmeijer/grott/wiki|wiki]]. Pokud nebudu mít přístup k dataloggeru, tak je ve hře [[https://github.com/johanmeijer/grott/wiki/Rerouting-Growatt-Wifi-TCPIP-data-via-your-Grott-Server|přesměrování komunikace na úrovni firewallu]] - tedy sniffer mode.
Tady je vidět funkce Grottu a tok dat.
{{:it:iot:pasted:20230607-164444.png}}
Zde pak vznikla [[https://github.com/muppet3000/homeassistant-grott|komponenta pro Home Asisstant]] a [[https://github.com/muppet3000/homeassistant-grott/issues/1|diskuse ke konfiguraci]].
Shrnutí o možnostech vyčítání dat pomocí Grottu: https://www.splitbrain.org/blog/2023-11/03-growatt_and_home_assistant
==== Stahování dat skrze Modbus RTU Protocol - RS485 ====
Mám měnič SPH 10000TL3 BH-UP a lze s ním komunikovat skrze RS485. Konkrétně má port RS485-3. Viz obrázek z projektu [[https://wiki.solarpilot.eu/cs/knowledge-base/zapojeni-zarizeni/#SPH-10000TL3-BH-UP|Solarpilot]]:
{{:it:iot:pasted:20240120-230913.png}}
=== Growatt 2 MQTT ===
Kromě projektu [[https://solarpilot.eu|Solarpilot]] jsem viděl implementaci protokolu v rámci projektu [[https://github.com/nygma2004/growatt2mqtt|Growatt2mqtt]].
Autor použil čip esp8266 a [[https://www.aliexpress.com/item/1005001621798947.html|RS485 to TTL Converter]]. Autor vychází z dokumentace [[https://github.com/nygma2004/growatt2mqtt/blob/main/Growatt%20PV%20Inverter%20Modbus%20RS485%20RTU%20Protocol%20v120.pdf|Modbus RS485 RTU protokolu]].
Tady dokonce vytvořil i video:
{{youtube>Mz1dJGthIJk?}}
=== Growatt Solar via ESPHome ===
Skrze projekt [[https://esphome.io/components/sensor/growatt_solar.html|Growatt Solar]] by mělo by jít nakonfigurovat čip ESP8266 prakticky bez programování a opět se budou data vytahovat skrz RS485.
=== Waveshare Modbus Interface ===
Tento projekt vypadá také velice nadějně.
{{youtube>wEasws0fIVg?}}
Autor použil tuto komponentu pro komunikaci s RS485: Waveshare - https://thepihut.com/products/industrial-serial-server-rs485-to-rj45-ethernet?variant=41374103666883
Dále se odkazuje na tento repozitář: https://github.com/wills106/homeassistant-solax-modbus
Dle dalšího čtení by mělo jít použít [[https://github.com/wills106/homeassistant-solax-modbus/wiki/Compatible-RS485-Adaptors|tyto RS485 adaptéry]] - doporučuji projít, protože jsou tam vypsané i některé problematické.
{{youtube>2qnR1PWx0A4?}}
=== Modbus-RTU to MQTT Gateway for Solar Inverter ===
Tento projekt vypadá podobně jako předchozí: [[https://github.com/tobiasfaust/SolaxModbusGateway|Modbus-RTU to MQTT Gateway for Solar Inverter]]. Zdá se, že je tam implementován také Growatt.
===== Věci, které mě znepokojují a nemám jak je řešit =====
Až jakmile jsem si začal žádat přístupy a měl jsem k dispozici elektrárnu, začal jsem rozumět, jak to funguje a rizikům. První problém je, že jsem zaplatil za systém, který nemohu ovládat. Nemám k němu prostě přístup. Instalatérská firma může ovládat víc než já, ale má také jenom základní možnosti. Na základní nastavení dobrý, ale teď, když je elektrárna v provozu, tak vlastně může instalatérská firma kdykoli bez mého vědomí elektrárnu nastavovat či s ní na dálku pracovat.
Nicméně je ještě firma Growatt, která má úplně nejvyšší práva a ta nedává ani instalatérské firmě. A ti mohou prakticky všechno - klidně mi elektrárnu i odstavit. Takže čistě teoreticky v případě mezinárodního konfliktu mi zaplacenou elektrárnu prostě vypnou nebo rozbijí..
Zatím všechno funguje. Otázkou ovšem je, jak dlouho tomu tak bude a co se stane třeba poté, co mi skončí záruka. Nebo co se stane, když firma ukončí činnost - ať už z jakéhokoli důvodu. I když budu mi hardware, který by mohl fungovat, tak mohu být v krajním případě softwarově odstaven.
Bohužel na řešení takovýchto problémů jsem malý pán. Jen jsou to děsivé představy, co se může stát a mělo by se to řešit na jiné (státní) úrovni. Jako majitel bych měl mít právo na svůj výrobek i jeho ovládání a přístup dávat explicitně na vyžádání. Vědomě a dobrovolně. Teď je role obrácená a chápu, že než nastane opravdu velký problém, tak si to spousta lidí ani neuvědomuje a tak je to netrápí.
Našel jsem například [[https://www.youtube.com/watch?v=NFsrmqmLC48|video]], kde bude přístup k jiné administraci elektrárny asi pro instalační firmu na adrese https://oss.growatt.com.
===== Zklamání z instalace - backup =====
Ze samotné instalace elektrárny jsem zklamaný. Jedním z mých požadavků je záloha. Moje očekávání bylo, že při výpadku sítě přejdu automaticky na napájení z baterie či solární elektrárny. Nenapadlo mě, že bych tohle očekávání měl přesně vyspecifikovat.
Instalační firma si to vyložila tak, že backup znamená - při výpadku sítě půjdu do rozvodné skříně a přepnu na elektrárnu. To je úplně tragické zapojení naprosto nevyhovující mému očekávání a požadavkům.
Chvíli jsem nabyl dojmu, že to není možné jinak udělat, ale dozvídám se informace, že to možné je: https://ilios.cz/zalohovani-pomoci-fotovoltaicke-elektrarny-a-jeji-rizika/
To je jedno z dalších zklamání od instalační firmy. Musím zjistit, jestli je možné problém nějak vyřešit.
{{youtube>7kQzvrN1aeo?}}
Tak zdá se, že backup jde vyřešit lépe skrze Growatt. Ve videu se zmiňují o zařízení Growatt SYN. Ale je možné, že zařízení nebude kompatibilní s mým měničem. To je potřeba ještě vyřešit.
{{youtube>Oe8DRYCKxa8?}}
===== Spotový trh =====
Vývoj spotových cen je vidět na této stránce: https://www.ote-cr.cz/ Funguje to tak, že spotové ceny jsou dány na den dopředu a jsou zveřejňovány cca kolem 14 hodiny.
Pokud budu chtít jít na spotový trh, musím najít způsob, jak mohu elektrárnu ovládat. Zatím vypadá nadějně projekt [[https://solarpilot.eu|Solarpilot.eu]]. S měničem by mělo jít komunikovat přes RS485.
Nějaké informace jsem našel i v [[https://forum.mypower.cz/viewtopic.php?t=10374|tomto fóru]].
===== Předpověď výroby solárních elektráren =====
Velice zajímavý projekt na předpověď výroby solární elektrárny je [[https://solar.meteosource.com/cs/?date=2023-07-04&lat=49.1321422&lon=16.5490544&modulePower=8.8&orientation=225&tilt=30&geolocate=0#generate-chart|https://solar.meteosource.com/cs/]]. Stačí zadat vstupní parametry vlastní elektrárny a vybrat zítřejší den a vidím, kolik mohu očekávat, že elektrárna vyrobí.
Jsou tam i data zpětně, takže jsem to použil na kontrolu výkonu elektrárny. Podíval jsem se na výstupy čísel z aplikace pro elektrárnu a kolik měla elektrárna dané dny vyrobit a až překvapivě to sedělo.
Co se týče mojí elektrárny, tak mám:
* sklon 30˚
* výkon 8,8 kW
* orientace na jihozápad
Projekt má i připravené API, takže by mělo jít s předpovědí krásně pracovat a automatizovat.
Další informace lze čerpat například z [[https://www.zive.cz/clanky/cesky-meteosource-predpovi-kolik-elektriny-dnes-vyrobi-vase-domaci-solarni-elektrarna/sc-3-a-222057/|tohoto článku]].
===== Implementace řízení přebytků z elektrárny na dobíjení elektromobilu Tesla =====
Přednáška od Petra Stehlíka, jak si implementoval vlastní chytré řízení nabíjení elektromobilu.
{{youtube>F76nD9Uzy78?}}
Z přednášky chci vypíchnout tyto zajímavé věci:
* existuje plugin do Homeassistenta pro Teslu. Ale protože má HASS v dockeru (stejně jako já), tak musel stáhnout plugin z Githubu
* odkazuje na opensource projekt pro vlastní výrobu wallboxu
* pokud nemá člověk přístup k API u elektrárny, tak by mohl posloužit Shelly 3EM, který se připíchne k měřáku a bude předávat informaci, kolik energie teče z FVE, kolik ze sítě atp. To je řešení, pokud člověk nedostane data z FVE.
* popisuje algoritmus výpočtu proudu, který posílá do Tesly
===== Další odkazy =====
* [[https://re.jrc.ec.europa.eu/pvg_tools/en/tools.html|Fotovoltaický geografický informační systém]]
* [[https://www.electricitymaps.com/|Electricitymaps]]