Datalogging van slimme meters

Uit Pv en zonneboiler wiki
Ga naar: navigatie, zoeken

Vooraf[bewerken]

Vanwege een verbouwing van de keuken in mijn huis kon de elektra-aansluiting van ons huis wel een opwaardering gebruiken. We gingen van 1x25A naar 3x25A (3x400V+N). De oude 1-fase Ferraris meter uit 1972 werd vervangen door een moderne "slimme" meter die op afstand uitgelezen kan worden. Omdat ze bij het energiebedrijf nogal efficient uitgevallen zijn, werd ook meteen de gasmeter vervangen, kan die ook op afstand uitgelezen worden, en hoeven ze dus geen meteropnemer meer langs te sturen. Los van alle privacy-discussie rond de slimme meters in NL heeft het tumult rond de invoering van deze meters er o.a. toe geleid dat de netbeheerder verplicht is om ook de energieafnemer vrije toegang tot de data uit de meter te geven. Da's mooi, want als je zonnepanelen hebt, kun je dus simpelweg door je energiemeter te loggen een goed beeld krijgen van de dagelijkse opbrengst van je PV-installatie. Vooropgesteld dat je meter goed functioneert, dus niet kapot is, krijg je een betrouwbare meting van je opbrengsten, tenminste, datgene wat je teruglevert aan het net. Deze wiki pagina gaat over het zelf uitlezen van slimme meters, via een ethernetgekoppelde interface. In dit kader ga ik het hebben over benodigde hardware en instellingen daarvan, en basale datalogging software.

Hoe kun je zelf uitlezen?[bewerken]

Ingevolge de wetgeving in NL is elke slimme meter uitgerust met een zgn. P1 poort. Dit is een half-duplex seriële poort, met signalen op TTL niveau. Details volgen later. Het protocol is beschreven in een standaard, de P1 standaard, vrij beschikbaar op het internet. Klein nadeeltje: er bestaan verschillende versies van, en het P1 protocol verschilt per versie. Het protocol dat nu geïmplementeerd wordt is beschreven in Dutch Smart Meter Requirements P1 Companion Standard V2.2 Final. Afgezien van de pinbezetting, signaalniveaus en de data rate word je er niet veel wijzer van. Diverse leveranciers (meest netbeheerders en energieleveranciers) leveren apparatuur waarmee je deze poort kunt uitlezen en dus je energieverbruik kunt bekijken.

Bestaande meetapparatuur[bewerken]

Op het moment van schrijven maakt Eneco erg veel reclame met hun Toon-systeem. Dit is een touchscreen dat de meters (gas en stroom) uitleest en tevens als thermostaat voor de CV gebruikt kan worden. De prijs is rond de €200,-- en je betaalt er ook nog eens een bedrag huur per maand voor. Liander levert een wireless uitleesmogelijkheid, die via USB aan de PC gekoppeld kan worden (TES: The Energy Stick). Op dit moment wordt daarmee op kleine schaal getest. De prijs is mij niet bekend.

Andere projecten op het internet[bewerken]

Alvorens over mijn eigen geknutsel te beginnen wil ik eerst even de aandacht vestigen op het project van Joost van der Linde. Hij heeft een (makkelijk verkrijgbare) USB-serieel-converter gebruikt om "slimme meters" uit te lezen en stelt op zijn website een behoorlijk uitgebreid pakket software beschikbaar om e.e.a. aan de praat te krijgen. In zijn programmatuur zijn details te vinden over de P1-poort die niet in de officiële rapporten staan. Nadeel van zijn methode is (vind ik) het feit dat er dag en nacht een PC aan moet staan om data te loggen. Dat is overigens bij mijn methode niet anders, het verschil is dat ik voor mijn toepassing thuis een bestaande datalogger kan gebruiken, die toch al continu in bedrijf is en bovendien bar weinig energie verbruikt.

Een tweede (commercieel) project is te vinden op www.slimmemeteruitlezen.nl Via deze website kun je je slimme meter laten uitlezen ten koste van €20,-- per jaar. Grafiekjes etc. zijn dan te bekijken via het internet. Voordeel: je hoeft niks te doen; nadeel: iemand anders bewerkt je data, en je weet niet wat er verder mee gedaan wordt.

De P1-poort[bewerken]

De communicatie met de eindgebruiker van de slimme meter loopt via de P1-poort. De meters die ik in huis heb zijn een Kamstrup 382J-NTA voor de stroom en een Landis & Gyr G350 voor het gas. Beide meters zijn aan elkaar gekoppeld via een kabel, onderlinge communicatie verloopt volgens het M-bus protocol. De bekabeling is verzegeld, kom je dus niet legaal bij. De kWh-meter heeft een webRTU module van het fabrikaat EnergyICT. Deze module verzorgt de communicatie met de buitenwereld. Met het energiebedrijf gaat dat via GPRS, de energieleverancier belt de meter letterlijk om de zoveel tijd op om de meterstand op te nemen. Zonder verdere toestemming mag dat in Nederland maximaal 6x per jaar. Bovendien heeft de webRTU module de P1-poort aan boord.

Fysieke uitvoering[bewerken]

De P1-poort is bij mijn meter fysiek uitgevoerd als een RJ11 socket (bekend van de telefoonaansluitingen). De P1 poort is een half duplex seriële poort, met signalen op TTL-niveau (0-5V). Van de vier contacten zijn er 3 aangesloten. Zie tabel.
RJ11 plug voor P1 poort
pin nr signaal
2 request (RTS)
3 ground (GND)
4 N.C.
5 data (RxD)

Op het moment dat de "request" pin spanning krijgt, wordt een pakketje data verstuurd via de data pin. Zolang de request op spanning blijft, gebeurt dat elke 10 seconden. Om de data te lezen, moeten wel de poortinstellingen goed staan. De poort parameters zijn:

parameter waarde
Baud rate 9600
Data bits 7
Parity Even
Stop bits 1

Voor de communicatie zijn van een TTL-seriële poort de volgende signaallijnen nodig: RxD (data), RTS (request to send) en GND (ground). Normaliter zijn bij seriële poorten op TTL niveau de signalen geïnverteerd, bij de P1-poort is dat niet het geval, dat vergt dus extra werk, want het is niet standaard. RxD en RTS dienen geïnverteerd te worden. In een FTDI USB-serieel converter kan dat via software, in de meeste andere gevallen moet het met hardware. Hier dus ook. Meer informatie volgt verderop.
Eén van de forumleden (rzw) heeft de P1 poort van zijn meter succesvol met een gewone seriële poort uitgelezen. Zijn kabel zag er zo uit: (9-pins sub-D connector voor de seriële poort, poortparameters uiteraard hetzelfde)

pin nr signaal sub-D pin nr.
2 request (RTS) 4
3 ground (GND) 5
4 N.C. N.C.
5 data (RxD) 2

Data output[bewerken]

Bij een correct aangesloten P1 poort komt elke 10 seconden een pakketje data naar buiten. Onderstaande voorbeeld is slechts dat: een voorbeeld. Er zijn talloze andere vormen mogelijk, maar in essentie komt het wel allemaal op hetzelfde neer.

/KMP5 ABCD000123456789

0-0:96.1.1(2041424344303030313233343536373839)
1-0:1.8.1(00080.000*kWh)
1-0:1.8.2(00039.000*kWh)
1-0:2.8.1(00000.000*kWh)
1-0:2.8.2(00000.000*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.22*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(999*A)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3031323334353637383930313233343536)
0-1:24.3.0(120403080000)(000008)(60)(1)(0-1:24.2.1)(m3)
(00053.271)
0-1:24.4.0(1)
!

Koppeling van de P1-poort aan lokaal netwerk[bewerken]

Hardware[bewerken]

Om de P1-poort aan het netwerk te koppelen is een ethernet-seriële converter nodig. Dit is een stukje elektronica dat de data uit de poort in netwerk datapakketjes (TCP-packets) verpakt en over je netwerk verspreidt. Voor deze toepassing heb ik gekozen voor de EZL-70(A) van Sollae systems (Korea), verkrijgbaar bij antratek.nl of antratek.be. Deze converter kan geconfigureerd worden om een RS232, RS485 of TTL-niveau seriële poort te zijn, gekoppeld aan 10Mbit ethernet (10base T). Voor gebruik met de P1-poort wordt (via jumpers) de converter geconfigureerd voor TTL.

Software configuratie[bewerken]

Allereerst is het handig om het IP-adres van de converter (standaard statisch 10.0.1.1) om te zetten naar een dynamisch adres (toegekend via DHCP). Om dat voor elkaar te krijgen heb ik een oude router geconfigureerd voor het netwerk waarin de EZL-70(A) past: router netwerk adres 10.0.1.0, EZL-70(A) eraan gekoppeld, samen met een Windows-XP laptop met de goede configuratiesoftware.

Die configuratiesoftware is het (gratis te downloaden) ezConfig pakket. Met dit programma kan de converter geconfigureerd worden voor gebruik.
EZL-70(A) instellingen voor gebruik met P1-poort.
Na opstarten geeft ezConfig het volgende scherm. Klik op "search all" en als 't goed is vind je dan tenminste 1 converter. De converter wordt geconfigureerd als TCP server, met seriële poort parameters 9600baud, 7E1, RTS/CTS handshaking en DHCP IP-adres toekenning. Stel alle parameters in "Network", "TCP/IP" en "Serial Port" in zoals weergegeven in het plaatje, druk op "write" en je converter is geconfigureerd. N.B. Voor het poortnummer heb ik 81 gekozen, dit is een servicepoort die standaard niet gebruikt wordt. Alle overige poortnummers beneden 1024 zijn in principe niet te gebruiken.

Signalen inverteren[bewerken]

De P1-poort wijkt af van "gewone" TTL-seriële poorten in die zin dat de signalen RTS en RxD niet geïnverteerd zijn, waar dat normaal wel zo is. strikt genomen kan dat in software; de seriële signalen worden via een microcontroller gegenereerd en door de firmware van de controller te veranderen zou je de goede inversie moeten kunnen doen. De software van de EZL-70(A) laar dat echter niet toe, en om nu in de firmware te gaan zitten hacken gaat een beetje ver. Een andere (minder elegante) optie is signaalinversie via hardware. De TTL-signalen van de controller kunnen met een TTL-inverter geïnverteerd worden. De chip om dat mee te doen is bijvoorbeeld de 7404. Maar er zijn legio ander mogelijkheden. De 7404 is een 14-pins 6-voudige inverter voor TTL-signalen, en kost een paar dubbeltjes. Van de 6 inverters in de chip heb je er twee nodig.

Alternatief kan er voor een simpele transistor schakeling worden gekozen. Met behulp van een BS170 en een 10K weerstand kan het signaal worden geïnverteerd. De afbeelding laat een simpele schakeling zien hoe de slimme meter met een microcontroller voor datalogging kan worden verbonden.
Microcontroller schema met connector naar de slimme meter.

Voeding[bewerken]

De EZL-70(A) heeft een 5V voeding nodig. In mijn geval heb ik de kabel van een kapotte muis afgeknipt, de voedingslijnen aan een printconnector op de converter gemaakt zodat de converter zijn voeding krijgt uit de USB-poort van de router die naast de kWh meter in de meterkast staat. De voeding van de inverter wordt via de converter en de printconnector voor de TTL-poort doorgeleid naar de 7404-chip.

Verbindingen[bewerken]

In de volgende tabel staan de verbindingen, met namen en/of pin nummers, van de diverse componenten (de verbindingen worden per regel aangelegd):
EZL-70(A) met inverter, prototype.
EZL-70(A) JP2 EZL-70(A) TTL 7404 P1 poort
5V 5V 14
G GND 7 3
RxD 12
13 5
RTS 11
10 2

Testen[bewerken]

Sluit alle componenten aan, koppel je converter aan het netwerk en de meter en vind het IP-adres van je converter. Vervolgens kun je testen door op je computer een shell te openen (command prompt in Windows). Zorg ervoor dat je computer aan het net hangt en test dan je converter met het volgende commando (vervang aaa.bbb.ccc.ddd door het IP-adres van je converter):

telnet aaa.bbb.ccc.ddd 81

Als 't goed is verschijnt er een tekst met meterdata (zoals eerder gegeven) in je scherm, die elke 10 seconden geupdate wordt.

Wordt vervolgd ...[bewerken]