Nederlandse WIKI omnik data logger

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 README en WIKI pagina's.

Inhoud

  1. Starten met Omnik Data Logger (testomgeving opzetten en de eerste data binnenhalen)
  2. Installatie van Omnik Data Logger
  3. Slimme meter integratie (optioneel)
  4. MQTT en Home Assistant integratie
  5. PVoutput
  6. InfluxDB (inclusief het opzetten van InfluxDB met Docker)

Starten met Omnik Data Logger

Steeds vaker krijg ik vragen van gebruikers die wat 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 client gedeelte, de client plugin die de gegevens van je omvormer uitleest. Als we dit werkend hebben kunnen we verder met het configureren van de output/uitvoer.

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 wil testen:

  • klik de start Windows knop
  • type ‘cmd’ en enter.
  • installeer ‘omnik data logger’ 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 map waar dit script (van de Python 3) staat, niet standaard is opgenomen in de PATH variabele van Windows. Om het script te kunnen vinden kun je het commando ‘dir /s omniklogger.py’ geven.
Het script bevindt zicht in een map met een naam als ‘C:\Users\gebruikersnaam\AppData\Local\Packages\PythonSoftwareFoundation.Python.pythonversie_unieke_code\LocalCache\local-packages\Pythonversie\Scripts’.

Als python.exe niet in je zoekpad kun je deze voor het pad met omniklogger.py plaatsen.

p.s.: C:\Users\ kan ook C:\Gebruikers\ zijn als je de Nederlandse versie van Windows gebruikt.

Met een gebruikersnaam jbouwh zou dit er als volgt uit kunnen zien.

Dit is voor het uitvoeren niet erg handig. Een tip is om een batch file te maken met kladblok in de root van je werkmap b.v. (c:\Users\jbouwh) omdat je hier ook in start als je de command promt opent, b.v. 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 eenvoudig uitvoeren met het command 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 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 of Notepad++, maar via b.v. https://onlineyamltools.com/edit-yaml kun je ook je syntax checken. Zelf gebruik ik overigens Visual Studio Code.

Algemene configuratie

De algemene configuratie kan er als volgt uitzien

omnikdatalogger:
  module: omniklogger
  class: HA_OmnikDataLogger
  timezone: Europe/Amsterdam
  city: 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 timezone en plaats wordt gebruikt voor het berekenen van de zonsondergang. De interval is de tijd tussen 2 polls (voor b.v. tcpclient of solarmanpv).

De parameter …

persistant_cache_file:

… is het bestand waar de laatste meting in wordt opgeslagen. Dit is nodig wanneer de zon onder is en je slimme meter nog wel data geeft. In dat geval is het nodig om de laatste waarde te weten, zeker als de software opnieuw opstart.

Verder kan het zijn dat data_fields.json niet automatisch kan worden gevonden (Windows only). Vi de data_config: key kun je het pad naar dit meegeleverde configuratie bestand instellen.

module en class zijn alleen nodig als je met Home Assistant en/of HACS aan de slag gaat, 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. Hiervoor 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_address)
  • Het plant_id binnen de Solarman omgeving.

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 komen en om andere pakketjes te kunnen negeren. 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 strict noodzakelijk).

Het bepalen van het plant_id kan alleen als er toegang is tot het portaal. Het plant_id is een integer waarde (geheel getal). 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 nog bij Solarman. Ga naar https://www.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 data logger nodig.

Al je bent ingelogd let dan goed op de URL in je browser. Die ziet ongeveer zo uit:

https://www.solarmanpv.com/portal/Terminal/TerminalMain.aspx?pid=123

Het nummer aan het einde is je plant_id.

Onder het menu Settings en daarna onder Device vind je een tabel met daarin het Datalogger serie nummer en Inverter Serie nummer.

Voor het voorbeeld houden we even de volgende gegevens aan:

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 geldt voor alle ondersteunde plugins).

omnikdatalogger:
  module: omniklogger
  class: HA_OmnikDataLogger
  timezone: 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
Client kiezen

Van belang is om nu een client plugin te kiezen die we gaan gebruiken. We zullen ze maar eens stuk voor stuk behandelen.

tcpclient

Met tcpclient proberen we om de inverter 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 debugging in te schakelen:

omnikdatalogger:
  module: omniklogger
  class: HA_OmnikDataLogger
  timezone: Europe/Amsterdam
  city: Amsterdam
  interval: 360
  persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/persistant_cache.json

  loglevel: DEBUG

  plugins:
    client: tcpclient

  client.tcpclient:
    plant_id_list:
      - '123'

  plant.123:
    inverter_address: 192.168.1.100
    logger_sn: 501234567
    inverter_sn: NLDN302123456789

Test nu omniklogger.py (of via omniklogger.cmd) en controleer of de Omnik Data Logger de configuratie juist is en de inverter uitvraagt.

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 beginnend 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 client kan de data ook opgehaald worden van uit de loggers bij Solarman. Hiervoor het je een Omnik account nodig.

Om de solarmanpv client toe te voegen in de config voeg je het volgende toe:

omnikdatalogger:
  module: omniklogger
  class: HA_OmnikDataLogger
  timezone: Europe/Amsterdam
  city: Amsterdam
  interval: 360
  persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/persistant_cache.json

  loglevel: DEBUG

  plugins:
    client: solarmanpv

  client.solarmanpv:
    username: email@example.com
    password: jouwgeheimewachtwoord
    plant_id_list:
      - '123'

  plant.123:
    inverter_address: 192.168.1.100
    logger_sn: 501234567
    inverter_sn: NLDN302123456789

Test nu omniklogger.py (of via omniklogger.cmd) en controleer of de Omnik Data Logger de configuratie juist is en de inverter uitvraagt.

localproxy (geavanceerd)

Wanneer tcpclient niet werkt voor jouw omvormer, dan kun je een pogin wagen om het netwerk verkeer van de data logger te onderscheppen en de localproxy client te activeren.

Om te beginnen is het van belang om te snappen wat dit onderscheppen inhoudt. De omvormer probeert elke ca. 310 seconden een update pakketje te sturen naar IP-adres ‘176.58.117.69’. Deze pakketjes wil Omnik data logger 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 daarop (maar zonder Docker kan dit overigens ook werken), die zal ik in dit voorbeeld gebruiken. Laten we zeggen dat deze 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:

  1. In de router moet een statische route worden geconfigureerd voor 176.58.117.69 en subnet masker 255.255.255.255 of /32 naar het IP-adres van de Raspberry PI verwijzen, dus in mijn voorbeeld naar 192.168.1.10. Nu zal het loggen naar Solarman niet meer werken omdat het verkeer daar nooit zal aankomen.
  2. Op de Raspberry PI moet worden ‘geluisterd’ naar IP-adres 176.58.117.69 zodat Omnik Data Logger deze pakketjes binnenkrijgt.

Hoe je dit kunt configureren op b.v. een Fritzbox lees je ook hier. Met een andere router werkt dit op een vergelijkbare 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 gebruik van omnikdatalogger proxy is niet verplicht, maar voorkomt dat je het toepassen van NAT regels moet uitvoeren op de host waarop je omnikdatalogger wilt draaien (b.v. 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 gemakkelijker omdat je het logger verkeer nu kunt doorzetten naar je PC of straks de hoost waarop je omnikdatalogger gaat gebruiken.

Vanaf dit punt zou het dus mogelijk moeten zijn om om omnikdatalogger te gaan gebruiken met de localproxy client. De localproxy client van omnikdatalogger heeft 3 plugins waar je uit kunt kiezen (ze kunnen theoretisch ook naast elkaar draaien).

  1. De localproxy.tcp_proxy plugin. Deze kan net als omnikdatalogger proxy het ge-NAT-te verkeer rechtsteeks inlezen van de omvormer, maar vereist dus een NAT configuratie op je host, zoals besproken.
  2. De localproxy.mqtt_proxy plugin. Deze kan abonneren op de naar updates van omnikdataloggerproxy vanuit een MQTT server. Dit werkt zonder Home Assistant.
  3. De localproxy.hassapi plugin. Deze is uitsluitend bedoeld om te werken met AppDaemon en dus niet geschikt voor onze test setup.

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
  class: HA_OmnikDataLogger
  timezone: Europe/Amsterdam
  city: Amsterdam
  interval: 360
  persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/persistant_cache.json

  loglevel: DEBUG

  plugins:
    client: 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_address: 192.168.1.100
    logger_sn: 501234567
    inverter_sn: NLDN302123456789

Het spreekt voor zicht dat het configureren van localproxy.mqtt_proxy plugin of 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 controleer of de Omnik Data Logger de configuratie juist is en het de data van je omvormer binnenkrijgt.

Ga verder naar: Installatie van Omnik Data Logger

Engelse WIKI pagina’s.