Zonnepanelen uitlezen in Domoticz

Gepubliceerd door Robot One op

Dak huis met zonnepanelen

Eindelijk echte data over de elektriciteit die je opwekt

Heb je zonnepanelen? Dan is de kans groot dat je ook al een slimme meter in je meterkast hebt. Eén groot nadeel heeft die wel: hij laat niet zien hoeveel je zonnepanelen precies opwekken.

Het is vreemd dat slimme meters wel laten zien hoeveel stroom er in totaal is gebruikt en geleverd, maar niet de actuele stand van zaken tonen. Als je op een bepaald moment meer zonnestroom levert dan gebruikt, staat de waarde van Gebruik op 0 en de waarde van Levering op een positief getal. Als je meer energie gebruikt dan levert, staat de waarde van Levering op 0 en is de waarde van Gebruik een positief getal. Met andere woorden: de meter laat alleen het verschil tussen gebruik en levering zien en splitst dat uit in twee waardes die allebei niet negatief kunnen worden.

Onduidelijk is waarom ooit voor deze merkwaardige opzet is gekozen, want op deze manier kun je nooit realtime zien hoeveel je zonnepanelen daadwerkelijk leveren, of hoeveel energie je nou werkelijk gebruikt in huis, los van waar de stroom vandaan komt.

Om dat te kunnen meten in Domoticz, moeten we de gegevens van de inverter rechtstreeks in Domoticz inlezen. Gelukkig bieden de meeste fabrikanten van inverters deze mogelijkheid aan via een API (web-interface). En die is in Domoticz met een scriptje goed in te lezen. Voor vier van de meest populaire invertermerken heeft programmeur Sándor Incze het werk al voor ons gedaan: Goodwe, SMA (SunnyPortal), Growatt en Omnik. Passende scripts zijn allemaal te downloaden op Github (een website voor open source code).

Proef op de som: Growatt uitlezen

Zelf heb ik een Growatt inverter, type 4200 en daarmee heb ik het script getest. Wat je hiervoor allereerst nodig hebt, is een inlogcode voor de Shinephone app of website van Growatt. Sommige leveranciers of verhuurders van zonnepanelen bieden je een eigen app aan als laag over de Growatt server heen, waarbij je dus andere inloggegevens krijgt. In dat geval moet je echt even vragen naar de juiste gegevens; het gaat om jouw data en die mag niet geheim worden gehouden.

Vervolgens download je het script growatt-inverter.php. Open dit bestand in een een tekstverwerker of code editor. Je zult zien dat in het commentaar al instructies staan om dit te installeren. Zo moet er in Domoticz zelf iets worden aangepast, maar ook rechtstreeks op de Raspberry Pi. Bovendien moet een aantal gegevens in het script zelf worden ingevuld. Omdat er wel wat valkuilen zijn (weet ik uit ervaring), lopen we de instructies een voor een door.

Stap 1: aanpassingen in Domoticz

Als eerste moeten we een ‘meter’ aanmaken in Domoticz: een zogeheten virtueel apparaat waarop je kunt zien hoeveel stroom er wordt geleverd. Virtueel betekent in dit geval dat het apparaat zijn data via software krijgt en niet rechtstreeks is gekoppeld aan hardware die aan je Domoticz-server hangt. Om zo’n apparaat te kunnen toewijzen, moeten we in Domoticz eerst de hardware daarvoor ‘faken’:

Virtuele hardware schermafdruk
  • Ga in Domoticz naar Instellingen > Hardware. Je ziet het bovenstaande veld. Vul onderaan bij Naam: een willekeurige maar duidelijke naam in. Ik noem de mijne VIRTUAL. Kies bij Type: voor Dummy (Does nothing, use for virtual switches only). Klik op toevoegen. Je hebt nu de mogelijkheid om vanuit de hardware-lijst een virtuele sensor aan te maken.
Create virtual sensor schermafdruk
  • We maken nu het virtuele apparaat aan. Klik in de hardware-lijst op Maak virtuele sensoren. Vul in de popup de naam in, bijvoorbeeld Zonnepanelen. Kies als type Elektra (Actueel + Teller) en klik op OK.
Virtueel apparaat schermafdruk
  • Ga naar Instellingen > Apparaten en bekijk welk identificatienummer (Idx) je apparaat heeft gekregen. In dit voorbeeld is het 290. Noteer dit.
  • Ga nu naar Instellingen > Instellingen en scroll naar halverwege de pagina tot het vakje Lokale netwerken (geen gebruikersnaam/wachtwoord). Hier moet je het eerste gedeelte van je lokale netwerk-adres opgeven. Zit Domoticz bijvoorbeeld op 192.16.0.99, dan vul je in het veld Netwerken: 192.168.0.* in. Dit betekent dat verbindingen op je lokale netwerk met Domoticz kunnen communiceren zonder een login en wachtwoord op te geven.

Stap 2: aanpassingen in het PHP-script

Open het script growatt-inverter.php met een tekst-editor (kladblok, Notepad++, nano, Sublime, het maakt niet uit als het maar geen Word is, want we willen geen opmaakcodes in de tekst).

In regel 43 vul je het lokale adres + poortnummer van Domoticz in, bijvoorbeeld:

define('domoticz','http://192.168.0.99:8080/');

In regel 49 vul je je inlognaam van Growatt in. Bijvoorbeeld M. Naam:

define('USERNAME', 'M. Naam'); 

Let op het gebruik van hoofletters en spaties! Als je inlognaam M. Naam is (met spatie ertussen), werkt het niet als je hier M.Naam (zonder spatie) invult, heb ik door schade en schande ondervonden.

In regel 50 vul je je Growatt password in:

define('PASSWORD', 'mijnPassword2020');

In regel 65 vul je het devicenummer (Idx) van Domoticz in die je in Stap 1 hebt genoteerd

define('DOMOTICZDEVICE', '290');

Sla het bestand op en sluit de editor.

Stap 3: aanpassingen op je Raspberry Pi

Log in op de terminal van je Raspberry Pi: rechtstreeks als je er een monitor aan hebt hangen, of op afstand, met een Telnet-client zoals PuTTY.

Update voor de zekerheid de software naar de laatste versie:

sudo apt-get update && sudo apt-get upgrade

Installeer de nieuwste versie van PHP 7 voor het geval die er nog niet op staat:

sudo apt-get install php7.0 php7.0-curl php7.0-gd php7.0-imap php7.0-json php7.0-mcrypt php7.0- php7.0-cli

Ga naar de map scripts en maak daar een nieuwe map aan:

cd /home/pi/domoticz/scripts
mkdir pass2php
cd pass2php

Kopieer het in Stap 2 aangepaste bestand naar deze map. Dat kan simpel met FTP.

Test nu of het bestand geen fouten bevat:

php /home/pi/domoticz/scripts/pass2php/growatt-inverter.php

In Domoticz kun je in de log kijken naar wat er is uitgevoerd. Als alles goed is gegaan, zie je zoiets als onderstaande regels:

2020-01-13 11:25:02.670 Status: --->> Cookie File: /home/pi/domoticz/scripts/pass2php/growatt.cookie exists!
2020-01-13 11:25:02.672 Status: --->> Cookie File: /home/pi/domoticz/scripts/pass2php/growatt.cookie is writable!
2020-01-13 11:25:02.784 Status: --->> Growatt Inverter: 1682.6 for domoticz: 1682.6;1400

Nu gaan we ervoor zorgen dat dit script periodiek wordt herhaald. Dat kan met de Linux-app ‘cron’. Deze gebruikt een tabel met instructies die op bepaalde tijdstippen of om de zoveel tijd moeten worden uitgevoerd. We maken zo’n lijst aan (of kunnen hem aanpassen) met het commando:

sudo crontab -e

De eerste keer vraagt crontab welke editor je bij voorkeur wilt gebruiken. Default is 2 (nano).

Voeg in het geopende bestand de hele volgende regel toe:

*/5 * * * *   root    php /home/pi/domoticz/scripts/pass2php/growatt-inverter.php

Wat hier staat is dat het genoemde script van gebruiker ‘root’ iedere 5 minuten moet worden uitgevoerd. Vijf minuten is een goed compromis. Vaker meten kan, maar zorgt voor een hogere serverbelasting. Schrijf het bestand weg en sluit de editor.

Vanaf nu moet je in Domoticz om de vijf minuten updates kunnen zien van je nieuwe apparaat Zonnepanelen.

Wellicht ten overvloede deze laatste tip: test dit script overdag, want ‘s nachts ‘slaapt’ je inverter!

Meer weten over het meten van gas, water en elektriciteit? In volgende artikelen zal ik diepe ingaan op het draadloos uitlezen van de slimme meter en de watermeter.

€ 100 bonus bij Zelfstroom

Ga zelf stroom opwekken! Goed voor het milieu én voor je portemonnee. Laat Zelfstroom kosteloos een vrijblijvende berekening maken voor jouw huis en krijg een bonus € 100 als je je via onderstaande knop aanmeldt. Daarmee stimuleer je bovendien de verdere ontwikkeling van deze website!

Bekijk op Zelfstroom
error

1 reactie

John · 14 januari 2020 op 09:36

Top artikel!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *