Deze pagina's zijn speciaal gemaakt voor de Nederlandstalige Omnik gebruikers en zijn helaas niet beschikbaar in het Engels. Als je voorkeur Engels is, bezoek dan de github LEES MIJ and WIKI pagina's.
Inhoud
- Starten met Omnik Data Logger (testomgeving opzetten en de eerste data binnenhalen)
- Installatie van Omnik Datalogger
- Slimme meter integratie (optioneel)
- MQTT en Home Assistant Energie integratie
- PV-uitgang
- InstroomDB (inclusief het opzetten van InfluxDB met Docker)
Starten met Omnik Data Logger
Steeds vaker krijg ik vragen van gebruikers die moeite hebben met het Engels en de behoorlijk technische beschrijvingen. De vele opties in de configuratiebestanden kunnen vertroebelend werken. Een minimale configuratie is vaak een stuk overzichtelijker. Ook zijn er meerdere manieren om Omnik Data Logger te gebruiken die ik hier verder wil uitwerken. Deze pagina gaat over het configureren van het clientgedeelte, de client-plug-in die de gegevens van je omvormer uitleest. Als we dit kunnen werken kunnen we verder met het configureren van de output/uitvoering.
Een testomgeving maken op een Windows PC/laptop
Omdat de configuratie van Omnik Datalogger behoorlijk complex kan zijn is het verstandig eerst de configuratie van het client deel goed voor te bereiden en te testen.
Op Windows kun je eenvoudig Python 3 downloaden via https://www.python.org/downloads/windows/ en daarna installeren.
Omnik Data Logger installeren op Windows is daarna simpel: Open een opdracht prompt (CMD) en ga naar de map waar je wilt testen:
- klik de start Windows knop
- typ 'cmd' en voer in.
- installeer 'omnik datalogger' met pip via het commando 'pip install omnikdatalogger'
Omnik Data Logger start met het commando 'omniklogger.py'. Het enige probleem met Windows is dat het pad van de kaart waar dit script (van de Python 3) staat, niet standaard is opgenomen in de PATH variabele van Windows. Om het script te vinden kun je het commando 'dir /s omniklogger.py' geven.
Het script bevindt zich in een kaart met een naam als 'C:\Users\gebruikersnaam\AppData\Local\Packages\PythonSoftwareFoundation.Python.pythonversie_unieke_code\LocalCache\local-packages\Pythonversie\Scripts'.
ook python.exe
niet in je zoekpad kun je deze voor het pad met omniklogger.py
plaatsen.
ps: C:\Gebruikers\
kan ook C:\Gebruikers\
zijn als je de Nederlandse versie van Windows gebruikt.
Dit is voor het uitvoeren niet erg handig. Een tip is om een batchbestand te maken met kladblok in de root van je werkmap bv (c:\Users\jbouwh) omdat je hier ook in start als je de command promt opent, bv met kladblok via 'notepad omniklogger.cmd'.
@ECHO OFF
"{pad_naar_python.exe}\python.exe" "C:\Users\{gebruikersnaam}\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts\omniklogger.py %*
Nu kun je omnikdatalogger.cmd uitvoeren met het commando omniklogger.cmd
{parameters}
Nu dit werkt gaan we verder met de configuratie van de software.
omniklogger.py
zoekt standaard naar een configuratie bestand in de map C:\Users\{gebruikersnaam}\.omnik\
Maak een bestand aan in deze map met de naam config.yaml
.
een config.yaml
configuratie bestand maken
In config.yaml
wordt de taal yaml
gebruikt voor de indeling, dat is misschien even wennen. Het gebruik van een yaml
configuratie heeft de voorkeur boven een ini
bestand, wat op termijn wordt uitgefaseerd. Belangrijk is dat het inspringen met spaties overal gelijk is gebeurd. Ik gebruik meestal 2 spaties, maar 4 kan ook. een yaml
editor wilt gebruiken is overigen geen overbodige luxe. Je kunt een ontwikkelomgeving als Visual Studio Code installeren van Notepad++, maar via bv https://onlineyamltools.com/edit-yaml kun je ook je syntax checken. Zelf gebruik ik gebruik Visual Studio Code.
Algemene configuratie
De algemene configuratie kan er als volgt uitzien
omnikdatalogger: module: omniklogger class: HA_OmnikDataLogger tijdzone: Europa/Amsterdam stad: Amsterdam interval: 360 persistant_cache_file: C:/users/ {gebruikersnaam} /.omnik/persistant_cache.json data_config: C:/Users/ {gebruikersnaam} /AppData/Local /Packages/{Python specifiek pad}/LocalCache/local-packages/share/omnikdatalogger/data_fields.json
De tijdzone en wordt gebruikt voor het berekenen van de plaats zonsondergang. De interval is de tijd tussen 2 polls (voor bv tcpclient van solarmanpv).
De parameter …
persistent_cache_file:
… is het bestand waar de laatste vergadering in wordt opgeslagen. Dit is nodig wanneer de zon onder is en je slanke meter nog wel data geeft. In dat geval is het nodig om de laatste waarde te weten, zeker als de software opnieuw wordt opgestart.
Verder kan het zijn dat data_fields.json
niet automatisch kan worden gevonden (alleen Windows). Vi de data_config
: key kun je het pad naar dit configuratie instellen.
module
en klas
zijn alleen nodig als je met Home Assistant en/of HACS aan de slag, maar het kan geen kwaad deze vaste waarden vast in de configuratie vast te leggen.
De client configuratie toevoegen
Van belang is dat we data van de omvormer kunnen verwerken voordat we verder stappen zetten. Eerdere moeten wat gegevens worden verzameld van de omvormer, nl:
- Het serienummer van de omvormer (
inverter_sn
) - Het serienummer van de WiFi module van de omvormer (
logger_sn
) - Het IP adres van de omvormer in je lokale netwerk (
inverter_adres
) - Het
plant_id
binnen de Solarman omgeving. Je kunt ook zelf eenplant_id
kiezen.
De nieuwe solarmanpv klant heeft deze instellingen niet nodig (zie verderop)
De eerste drie zijn direct van het scherm van de omvormer af te lezen. Het serienummer van de omvormer zit in de pakketjes die van de omvormer komen en dit hebben we nodig om te ontdekken van welke omvormer de pakketjes en om andere pakketjes te kunnen komen. Het serienummer van de WiFi-module is nodig voor het direct kunnen uitlezen van de omvormer met de tcpclient
. Het IP-adres van de omvormer is alleen nodig als je deze direct uitleest met de tcpclient
. Het beste is om in dat geval een vast IP-adres in te stellen (maar niet strikt noodzakelijk).
Het bepalen van het plant_id
kan alleen als er toegang is tot het portaal. Het plant_id
is een integer waarde. Lukt het opvragen niet en maak je geen gebruik van het portaal, dan kun je ook zelf een nummer toewijzen, dit is zelfs aan te bevelen als je meerdere omvormers hebt die onder dezelfde site zijn geregistreerd.
Gegevens van de omvormer ophalen uit het portaal
Al je een account hebt van Omnik portal, dan werkt dat mogelijk nog bij Solarman. ga naar https://home.solarmanpv.com/portal en log in. Heb je geen account en is je datalogger niet eerder geregisteerd, dan kun je dat proces hier ook in gang zetten. Hiervoor het serienummer van de WiFi datalogger nodig. Neem zonodig contact op met klantenservice om je gegevens te laten overzetten. Mocht je account zijn overgezet, dan kun je ook je wachtwoord resetten om weer toegang te krijgen.
Al je bent aangemeld ga dan vanuit het menu naar Device. Hier vind je alle details.
Onder het menu Instellingen
en daarna onder Apparaat
vind je een tabel met het Datalogger serie nummer en Inverter Serie nummer.
Het plant_id
is in deze omgeving anders dan in de oude omnik omgeving, de logging als je dit nogdig hebt om te kunnen koppelen je slanke meter. Dit id is niet direct te zien in dit portaal.
Voor het voorbeeld houden we even de volgende gegevens aan (plant_id kun je zelf kiezen):
plant_id = 123 inverter_address = 192.168.1.100 logger_sn = 501234567 inverter_sn = NLDN302123456789
We kunnen nu de gegevens opnemen in onze configuratie (dit deel gelden voor alle ondersteunde plug-ins).
omnikdatalogger: module: omniklogger class: HA_OmnikDataLogger tijdzone: Europe/Amsterdam city: Amsterdam interval: 360 persistant_cache_file: C:/users/ {gebruikersnaam} /.omnik/persistant_cache.json plant.123: inverter_address: 192.168.1.100 logger_sn: 501234567 inverter_sn: NLDN302123456789
Klant kiezen
Van belang is om nu een client plugin te kiezen die we gaan gebruiken. We zullen eens stuk voor stuk behandelen.
tcpclient
leerde kennen tcpclient
proberen we de omvormer rechtstreeks uit te lezen. Dat kan alleen overdag, omdat zonder zon het apparaat niet actief is en dus ook niet op het netwerk.
Breidt de configuratie als volgt uit om tcpclient
te activeren en debuggen in te schakelen:
omnikdatalogger: module: omniklogger klasse: HA_OmnikDataLogger tijdzone: Europa/Amsterdam stad: Amsterdam interval: 360 persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/aanhoudende_cache.json
logniveau: DEBUG
plug-ins: client: tcpclient client.tcpclient: plant_id_list: - '123'
plant.123: inverter_adres: 192.168.1.100 logger_sn: 501234567 inverter_sn: NLDN302123456789
Test nu omniklogger.py
(of via omniklogger.cmd) en de afbeelding van de Omnik Data Log de configuratie is juist en de inverter uitt.
Wanneer dit niet werkt kan het zijn dat je omvormer deze methode niet ondersteund. Volgens Wouter van der Zwan werken in de meeste gevallen Wifi loggers met serienummer begonnen met 602xxxxxx tot 606xxxxxx. Heb je een oudere module dan wordt die mogelijk niet ondersteund om direct te kunnen uitlezen met tcpclient
.
solarmanpv
met de solarmanpv
opdrachtgever kan de data ook worden opgehaald van de loggers bij Solarman. Hiervoor heb je een account nodig op https://home.solarmanpv.com. Let er op dat je minimale versie 1.8.x of hoger hebt geinstalleerd van omnikdatalogger.
Om de solarmanpv
client toe te voegen in de config voeg je volgende toe:
omnikdatalogger: module: omniklogger klasse: HA_OmnikDataLogger tijdzone: Europa/Amsterdam stad: Amsterdam interval: 360 persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/aanhoudende_cache.json
logniveau: DEBUG
plug-ins: klant: solarmanpv klant.solarmanpv:
gebruikersnaam: e-mail@voorbeeld.com
wachtwoord: jouwgeheimewachtwoord
Test nu omniklogger.py
(of via omniklogger.cmd) en de afbeelding van de Omnik Data Log de configuratie is juist en de inverter uitt.
De nieuwe API van Solarman werkt mogelijk nog niet helemaal zoals het hoort. Data komt dan vertraagd door of niet beschikbaar. Dit is geen probleem met omnikdatalogger.
localproxy (geavanceerd)
wanneer tcpclient
niet werkt voor jouw omvormer, dan kun je een pogin wagen om het netwerk verkeer van de datalogger te onderscheppen en de localproxy
cliënt te activeren.
Om te beginnen is het van belang om te snappen wat dit onderscheppen inhoudt. De vermogens elke ca. 310 seconden een update pakketje te sturen naar IP-adres ‘176.58.117.69’. Deze pakketjes wil Omnik datalogger uitlezen, maar dat gaat niet zomaar. We moeten ons lokale netwerk/de router voor de gek houden door het te vertellen dat IP-adres ‘176.58.117.69’ niet op het internet 'woont' maar zich binnen ons lokale netwerk. Zelf gebruik ik een Fritzbox als router en een oude Rapberry PI 3 met Raspbian er op (zonder grafische schil) met Docker kunnen (maar zonder Docker kan dit ook werken), die zal ik in dit voorbeeld gebruiken. Laten we zeggen dat dit IP-adres 192.168.1.10
heeft en de omvormer heeft in dit voorbeeld adres 192.168.1.100
. Vervolgens zijn de volgende 2 stappen noodzakelijk:
- In de router moet een statische route worden geconfigureerd voor
176.58.117.69
en subnet maskeerder 255.255.255.255 of /32 naar het IP-adres van de Raspberry PI mogelijk, dus in mijn voorbeeld naar192.168.1.10
. Nu zal het loggen naar Solarman niet meer werken omdat het verkeer daar nooit zal aankomen. - Op de Raspberry PI moet worden 'geluisterd' naar IP-adres
176.58.117.69
zodat Omnik Data Logger dit pakketjes binnenkrijgt.
Hoe je dit kunt configureren op bv een Fritzbox lees je ook hier. Met een andere router werkt dit op een manier.
Het onderscheppen wordt ondersteund met omnikdatalogger en met omnikdataloggerproxy. Met omnikdataloggerproxy kun je de logging weer doorsturen naar omnikdatalogger of uiteindelijk zelfs naar de Solarman servers. Het is niet verplicht om de proxy te gebruiken voor het uitvoeren van regels voor het uitvoeren van de methode omnikdatalogger te draaien (bv op een Synology of op een Supervised Home Assistant-systeem via AppDemon). Op deze wijze kun je zelf bepalen waar je het verkeer onderschept en doorstuurt. Verder maakt dit ook het testen en uitwerken van de configuratie om te kunnen doorzetten naar je PC van straks de hoost uit je omnikdatalogger gaat gebruiken.
Vanaf dit punt zou het dus mogelijk moeten zijn om omnikdatalogger te gaan gebruiken met de localproxy
cliënt. de localproxy
opdrachtgever van omnikdatalogger heeft 3 plugins waar je uit kunt kiezen (ze kunnen theoretisch ook naast elkaar draaien).
- de
localproxy
.tcp_proxy
inpluggen. Deze kan net als omnikdatalogger proxy het ge-NAT-verkeer rechtsteeks inlezen van de omvormer, maar vereist dus een NAT configuratie op host, zoals besproken. - de
localproxy.mqtt_proxy
inpluggen. Deze kan abonneren op de naar updates van omnikdataloggerproxy vanuit een MQTT-server. Dit werkt zonder Home Assistant. - de
localproxy.hassapi
inpluggen. Deze is bedoeld om te werken met AppDaemon en dus niet geschikt voor onze testopstelling.
Voor onze test maken we gebruik van optie 1: localproxy.tcp_proxy
. In de configuratie ziet dat er als volgt uit (let op het extra gedeelte onder plugins en de juiste wijze van inspringen!):
omnikdatalogger: module: omniklogger klasse: HA_OmnikDataLogger tijdzone: Europa/Amsterdam stad: Amsterdam interval: 360 persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/aanhoudende_cache.json
logniveau: DEBUG
plug-ins: klant: localproxy
localproxy: - tcp_proxy client.localproxy:
plant_id_list: - '123' client.localproxy.tcp_proxy: listen_address: '0.0.0.0' listen_port: '10004'
plant.123: inverter_adres: 192.168.1.100 logger_sn: 501234567 inverter_sn: NLDN302123456789
Het spreekt voor zicht dat het geconfigureerd van localproxy.mqtt_proxy
plug-in van localproxy.hassapi
plugin je op de zelfde manier te werk gaat. Met het luisteren naar adres 0.0.0.0
luistert omnikdatalogger naar alle actieve IP-adressen (IPv4) op je host.
Omdat onze test Windows PC niet gemakkelijk NAT ondersteunt maken we gebruik van het omnikdataloggerproxy script die het verkeer naar onze test PC moet doorzetten zoals eerder uitgelegd.
Test nu omniklogger.py
(of via omniklogger.cmd) en de binnenste van de Omnik Data Logger de configuratie is juist en de data van je omvormerkrijgt.
Ga verder naar: Installatie van Omnik Datalogger