Zoals enkele andere Belgen werd, jammer genoeg, ook mijn analoge elektriciteitsmeter vervangen door een digitaal exemplaar. Initieel was ik daar best wel blij mee gezien het hiermee gemakkelijker is om het verbruik en opbrengst van de zonnepanelen bij te houden. Dat laatste is net he probleem, gezien de overheid heeft beslist dat de teller niet langer kan “terugdraaien”. Los daarvan, ik heb de meter nu dus kan ik er zowel gebruik van maken. Dit artikel beschrijft hoe je de meter kunt verbinden met je computer en hoe je de data van de P1 poort kunt gebruiken voor een Belgische digital elektriciteitsmeter.
YouTube Video
Van de info hieronder heb ik ook een YouTube video gemaakt. Uiteraard, als u liever leest, dan kunt u hieronder gewoon verdergaan. De video heeft ondertiteling in het Nederlands.
Introductie
Digitale elektriciteitsmeters worden gebruikt in veel landen. Terwijl ik hier onderzoek naar deed, of beter probeerde uit te vogelen hoe alles in elkaar zat, viel het me op dat ieder land/regio en zelfs verschillende modellen in één land op een andere manier en standaard werken (zie verder). Deze post is dus vooral interessant voor inwoners van België. Vandaar dat ik, voor de eerste keer, een Nederlandstalige versie heb gemaakt van deze post. Mocht je toch interesse hebben in de Engelstalige versie, dan kunt u die hier vinden: https://jensd.be/1183/linux/read-data-from-the-belgian-digital-meter-through-the-p1-port
De digitale elektriciteitsmeter communiceert zijn waardes, extra data en ook de waardes van de aardgasmeter terug naar de distributeur op regelmatige tijden. Er wordt hiervan gebruik gemaakt van het GSM-netwerk. Dit laat je toe om die data ook te bekijken op de website van de energiedistributeur:
Mocht het doel dus gewoon zijn om je data netjes in een overzichtelijke grafiek te krijgen dan is het eigenlijk niet nodig om de P1 poort te gebruiken. Echter, als u de data wil gebruiken om automatisatie te triggeren of om de mogelijkheid te hebben om bijna real-time information mbt. het verbruik en opbrengst te zijn, dan bent u op de juiste plaats.
De digitale meter
In België is distributeur Fluvius gestart met de uitrol en installatie van de digitale meters in Vlaanderen. Momenteel gebruikt met slechts drie verschillende types van deze digitale meters. Een model voor eenfasige installaties, een ander model met ondersteuning foor drie fasen en als derde een aardgasmeter. Deze aardgasmeter maakt gebruik van de digitale elektriciteitsmeter om zijn data door te sturen.
- Sagecom S211: Eenfasig
- Sagecom T211-D : Driefasig
- Flonidan – G4SRTV: Aardgas
De P1 en S1 poorten
De elektriciteitsmeters die ik hierboven heb vermeld, hebben twee seriële poorten aan de voorkant van het toestel, achter de gelede cover aan de linkerkant. Beide poorten kunnen gebruikt worden om data van te lezen. De S1 poort zend ruwe data, rond de 2600-4000 keer/seconde. De P1 poort daarentegen is een beetje rustiger en geeft ongeveer één keer per seconde geformatteerde data door.
De P1 poort, die ik verder voor de rest van het artikel zal gebruiken, is het meest interessant voor de meeste gebruikers of integratie met automatisatie.
Fysieke poort
Zowel de P1 als S1 poort volgen de seriële RS422 standaard en maken gebruik van een RJ12-connector (RJ11 werkt ook door pin 1 en 6 niet te gebruiken). Belangrijk om te weten is dat deze poorten standaard uitgeschakeld staan. Gelukkig kan dat makkelijk opgelost worden door gebruikt te maken van de Fluvius webinterface: https://mijn.fluvius.be/poortbeheer/
Om met de poort te verbinden kunt u zelf een kabel maken met de volgende pinout:
Pin | signaal | beschrijving |
---|---|---|
1 | +5V | Spanning voor leesapparatuur (optioneel) |
2 | RTS | Input |
3 | GND | Data ground |
4 | – | – |
6 | RX | Output |
6 | Power GND | Spanning voor leesapparatuur (optioneel) |
Een andere optie, als u niet in staat bent om een kabel te maken of gewoon een beetje lui zoals mezelf, is om een kant en klaar kabel te kopen. Deze zijn breed beschikbaar en komen meestal met een geïntegreerde serial to USB convertor. Zoals deze hieronder:
Dataformaat
Het dataformaat van de P1 poort, zoals ook het fysieke formaat zoals hierboven uitgelegd, maakt gebruik van de de DSMR 5.0.2 P1 standaard. DSMR staat voor Dutch Smart Meter Requirements. Zoals de naam of afkorting laat raden, dit wat ontwikkeld door onze noorderburen. Jammer genoeg, zoals ook kort gemeld in het begin van dit artikel, viel het me op dat iedere soort meter de standaard in een licht andere manier gebruikt of implementeert. Het meeste hieronder is dus ook van toepassing op meters in andere landen, zolang ze gebruik malen van de DSMR standaard maar het kan nodig zijn dat hier en daar wat aanpassingen nodig zijn.
Alle details mbt. de standaard kunt u hier terugvinden, ter referentie: https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf
Om niet te diep in de materie te gaan maar om nog steeds alles begrijpbaar te houden, zal ik proberen om de zaken die nodig zijn om de data te gebruiken, te vermelden.
Het gehele bericht dat van de P1 poort op de meter komt (ook telegram of COSEM object genoemd) ziet er als volgt uit in de DSMR standaard:
De data zelf, in het telegram, ziet er als volgt uit:
Uit bovenstaande kunnen we volgende conclusie halen:
- Elk blok met info (telegram) begint met een /
- Na het startkarakter is er een vaste, modelspecifieke identificatie, gevolgd door een vaste toestelunieke identificatie.
- De lijnen in het data gedeelte starten met een OBIS-code, inclusief identificatie van welke meter (elektriciteit of aardgas) de data heeft verzonden. Het type data volgt in deze code.
- De waardes zijn te vinden binnen haakjes () en als er een eenheid aanwezig is, wordt dit gescheiden door een *
- Elk blok met info (telegram) eindigt met een !
- Het CRC veld bevat een CRC16 berekende waarde van de rest van het blok
In de praktijk: data lezen en interpreteren
Tot nu toe heb ik de dingen alleen van een theoretische kant bekeken. Dus laten we nu eens kijken hoe we data kunnen lezen en interpreteren zodat we er iets nuttig mee kunnen doen.
Hiervoor zal ik starten met een minimale installatie van Debian maar elke andere Linuxdistributie zoals Ubuntu, CentOS maar ook Windows of OS X zouden hiervoor geschikt moeten zijn en op een vergelijkbare manier moeten werken.
Eerst installeer ik pyserial en crcmod met de package manager gezien ik gebruik zal maken van Python om de data die van de P1 poort komt te parsen.
jensd@deb10:~$ sudo apt install python3-serial python3-crcmod python3-tabulate Reading package lists… Done Building dependency tree ... Setting up python3-serial (3.4-4) ...
Vervolgens, om te beginnen, kunnen we proberen om de seriële poort uit te lezen. In mijn geval, zoals vermeld hierboven, maak ik gebruik van een P1 kabel met geïntegreerde serial to USB convertor. Dit zorgt er voor dat mijn seriële poort /dev/ttyUSB0 is. De instellingen voor de P1 poort zijn: 115200 baud, 8N1, Xon/Xoff.
Om gebruik te maken van de seriele poort als niet root-user, moeten eerst de correcte rechten ingesteld worden:
jensd@deb10:~$ sudo chmod o+rw /dev/ttyUSB0
En dan kunnen we, eindelijk, de data uitlezen:
jensd@deb10:~$ python3 -m serial.tools.miniterm /dev/ttyUSB0 115200 --xonxoff --- Miniterm on /dev/ttyUSB0 115200,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- 925*m3) !CE4E /FLU5\253xxxxxx_A 0-0:96.1.4(xxxxx) 0-0:96.1.1(xxxxxxxxxxxxxxxxxxxxxxxxxxxx) 0-0:1.0.0(210204163628W) 1-0:1.8.1(000439.094kWh) 1-0:1.8.2(000435.292kWh) 1-0:2.8.1(000035.805kWh) 1-0:2.8.2(000012.156kWh) 0-0:96.14.0(0001) 1-0:1.7.0(00.233kW) 1-0:2.7.0(00.000kW) 1-0:21.7.0(00.233kW) 1-0:22.7.0(00.000kW) 1-0:32.7.0(236.2V) 1-0:31.7.0(002.04A) 0-0:96.3.10(1) 0-0:17.0.0(999.9kW) 1-0:31.4.0(999A) 0-0:96.13.0() 0-1:24.1.0(003) 0-1:96.1.1(xxxxxxxxxxxxxxxxxxxxxxxxxxxx) 0-1:24.4.0(1) 0-1:24.2.3(210204163500W)(00343.925*m3) !1374 /FLU5\253xxxxxx_A 0-0:96.1.4(xxxxx) 0-0:96.1.1(xxxxxxxxxxxxxxxxxxxxxxxxxxxx) 0-0:1.0.0(210204163629W) 1-0:1.8.1(000439.094kWh) 1-0:1.8.2(000435.292kWh) 1-0:2.8.1(000035.805kWh) 1-0:2.8.2(000012.156kWh) 0-0:96.14.0(0001) 1-0:1.7.0(00.228kW) 1-0:2.7.0(00.000kW) 1-0:21.7.0(00.228kW) 1-0:22.7.0(00.000kW) 1-0:32.7.0(236.3V) 1-0:31.7.0(002.01A) 0-0:96.3.10(1) 0-0:17.0.0(999.9kW) 1-0:31.4.0(999A) 0-0:96.13.0() 0-1:24.1.0(003) 0-1:96.1.1(xxxxxxxxxxxxxxxxxxxxxxxxxxxx) 0-1:24.4.0(1) 0-1:24.2.3(210204163500W)(00343.925*m3) !4BE6 --- exit ---
Zoals u kunt zien, komt dit overeen met het dataformaat voor DSMR die ik hierboven heb proberen beknopt te omschrijven. In de documentatie kunnen we de betekenis van de OBIS codes terugvinden. Helaas is dit niet altijd even gemakkelijk gezien de codes niet altijd exact overeenkomen en ook een meternummer of kanaal kunnen bevatten. Voor het voorbeeld hierboven, is het volgende van toepassing. Ik heb hierbij ook nog enkele andere nuttige codes bijgevoegd om compleet te zijn. Meer info, specifiek voor de Belgische meters kunt u hier ook vinden: https://www.fluvius.be/sites/fluvius/files/2020-02/technische-info-displays-digitale-elektriciteitsmeter.pdf
OBIS code | betekenis |
---|---|
0-0:96.1.4 | ID |
0-0:96.1.1 | Serienummer van de elektriciteitsmeter (in ASCII hex) |
0-0:1.0.0 | Timestamp van de telegram |
1-0:1.8.1 | Tarief 1 (dag) – totaal verbruik |
1-0:1.8.2 | Tarief 2 (nacht) – totaal verbruik |
1-0:2.8.1 | Tarief 1 (dag) – totale injectie |
1-0:2.8.2 | Tarief 2 (nacht) – totale injectie |
0-0:96.14.0 | Huidig tarief (1=dag,2=nacht) |
1-0:1.7.0 | Huidig verbuik op alle fases |
1-0:2.7.0 | Huidige injectie op alle fases |
1-0:21.7.0 | L1 huidig verbruik |
1-0:41.7.0 | L2 huidig verbruik |
1-0:61.7.0 | L3 huidig verbruik |
1-0:22.7.0 | L1 huidige injectie |
1-0:42.7.0 | L2 huidige injectie |
1-0:62.7.0 | L3 huidige injectie |
1-0:32.7.0 | L1 spanning |
1-0:52.7.0 | L2spanning |
1-0:72.7.0 | L3spanning |
1-0:31.7.0 | L1 stroom |
1-0:51.7.0 | L2 stroom |
1-0:71.7.0 | L3 stroom |
0-0:96.3.10 | Positie schakelaar elektriciteit |
0-0:17.0.0 | Max. toegelaten vermogen/fase |
1-0:31.4.0 | Max. toegelaten stroom/fase |
0-0:96.13.0 | Bericht |
0-1:24.1.0 | Andere toestellen op bus |
0-1:96.1.1 | Serienummer van de aardgasmeter (in ASCII hex) |
0-1:24.4.0 | Positie schakelaar aardgas |
0-1:24.2.3 | Data van de aardgasmeter (timestamp) (waarde) |
Python script
Door dit door een sceipt in Python te halen, om de data te parsen, krijg je volgend resultaat:
jensd@deb10:~$ python3 test.py Description Value Unit ---------------------------------- -------------- ------ Meter serial electricity XXXXXXXXXXXXXX Timestamp 210204172711.0 Rate 1 (day) - total consumption 439.33 kWh Rate 2 (night) - total consumption 435.292 kWh Rate 1 (day) - total production 35.805 kWh Rate 2 (night) - total production 12.156 kWh Current rate (1=day,2=night) 1.0 All phases consumption 0.329 kW All phases production 0.0 kW L1 consumption 0.329 kW L1 production 0.0 kW L1 voltage 238.3 V L1 current 2.18 A Switch electricity 1.0 Meter serial gas XXXXXXXXXXXXXX Switch gas 1.0 Gas consumption 343.925 m3 ...
Mocht u interesse hebben in dit script, dan kunt u dit vinden op GitHub: https://github.com/jensdepuydt/belgian_digitalmeter_p1
het script heeft waarschijnlijk nog wat aandacht nodig maar ik denk wel dat het kan helpen als bron voor iemand die een projectje maakt en gebruik wil maken van de data die van de P1 poort komt.
Opmerkingen of vragen zijn zeker welkom hieronder!
Pingback: Read data from the Belgian digital meter through the P1 port | Jensd's I/O buffer
Net wat ik zocht. Heel erg bedankt voor deze zeer duidelijke info!
Hartelijk dank, nu nog een service schrijven die deze data aanbiedt en stockeert in een database.
Waw! very clear. Just what i needed!
I want to connect the RJ11 to a router. Is that possible?
Hi Fred, that’s not possible as it’s a serial port. Only the connector looks similar, the data signal over it is completely different. Even if you would have a router with a serial port, which consumer models do not have, it most likely would only support RS232 or RS485.
OK, i just bought a raspberry pi, already can access the data through your command and python script, now looking how i can actually use the data and break the data from the meter.
Hi Jens,
Fantastische tekst en uitleg! Perfect wat ik nodig had! Ik probeer de meter uit te lezen via een ComfortClick oplossing (misschien ken je dit?); maar ik stoop op een aantal problemen; m.n. de “End of line”. Als ik je script even nalees, denk ik dat een “!” de gevraagde “End of line” is (klopt?); maar ik zie ook een hoop staan over de checksum.
Is er een manier om dit te berekenen zodat ik dit eventueel kan meegeven met de parser?
Grtn,
Michiel
Dag Michiel,
Ik ken ComfortClick verder niet maar ! is inderdaad de end of line. De bytes daarna, zijn de CRC16 checksum van het gehele bericht ervoor, inclusief de !. CRC16 is een standaard methode om dit te doen dus misschien heeft de parser die optie ingebouwd?
Het is ook geen verplichting om dit te doen maar dan moet je wel zorgen dat bij ongeldige data, dit wordt opgevangen in de rest van het parsen/code.
Hi Jens,
Ter info, ondertussen is het me gelukt! De ! + CRC16 was inderdaad de sleutel, bedankt!
Had jij per toeval ook de S1 poort al eens bekeken? Deze bevat nog véél leukere informatie om iets rond te doen denk ik :-)
Hey Michiel,
Specificaties S1-poort zijn terug te vinden op https://www.fluvius.be/sites/fluvius/files/2019-12/e-mucs_h_ed_1_3.pdf
Hopelijk heeft er ondertussen iemand met deze poort geëxperimenteerd en is er eveneens een python script beschikbaar (voor zover python de hoge frequentie van data aankan). Jens?
Beste Jens,
Geweldig duidelijk uitgelegd.
Ik zoek iemand die een projectje wil opstarten met mij om verschillende apps op de markt te brengen die deze informatie gebruikt.
Als je iemand weet ? Graag !
Jacques
Dag Jacques, dit lijkt me een goed idee en ik denk dat er zeker een markt voor is, zolang het eenvoudig en vooral betaalbaar blijft. Zelf heb ik wat tijd tekort hiervoor naast mijn normale job. Maar wie weet kun je iemand vinden vinden via deze weg.
interesse!
Werkt het lezen van de meter nog altijd voor iedereen op dit moment?
Ik heb net op aliexpress deze ‘Domoticz on Raspberry DSMR Dutch P1 Poort Cable for Smart Slimme Meter Kaifa Landis Iskra Sagemcom Kamstrup’ kabel gekocht.
Als ik dit aan poort P1 of S1 hang met baurdrate 115200 8N1 dan krijg ik ogenschijnlijk een binaire datastroom binnen.
Ik vermoed dat mijn kabel niet deugt, kan iemand mij zeggen welke kabel er zeker werkt in belgie voor een 3 fase siconia T211 en waar deze gekocht kan worden.
Dag Frederic, de kabel die ik heb gebruikt komt van bol.com. Normaal zou je onmiddellijk leesbare data moeten zien met die settings en een juiste kabel.
Bedankt voor de feedback, met deze kabel krijg ik wel direct correcte data.
Zou u instructies kunnen toevoegen hoe dit via Windows 10 kan in plaats van Linux? Bedankt
In principe kun je gewoon hetzelfde script gebruiken, zolang dezelfde Python modules geïnstalleerd zijn. Enige aanpassing zal zijn om /dev/ttyUSBX te vervangen door de correcte COM-poort onder Windows.
Jens,
Zeer interessant, pet af … dit bespaart me veel tijd!
In mijn geval zou ik er vooral mijn Daikin warmtepomp mee willen sturen om energie op te slaan in sanitair water en vloer. Maar voor ik eraan begin zou ik graag weten of het loont.
Aan de kostenzijde: daikin BRP069A61 aan 200 eur + raspbery pi of dergelijke + kabeltje + …?
Aan de batenzijde: stijging eigenverbruik en daling netverbruik met ???
Iemand ervaring wat een realistische aanname is voor de baten?
Iemand ervaring met de BRP069A61?
Alvast bedankt!
Hallo Jens,
Ken je het openenergymonitor project? https://openenergymonitor.org. Een Raspberry PI is de basis voor hun toepassingen. Ze gebruiken CTs in hun standaard toepassing. Maar koppelen aan een P1 poort met jou benadering zou knap zijn!
Gezien poorten 1 en 6 “Spanning voor leesapparatuur” voorzien, dacht ik een raspberry pi te gebruiken en zowel de stroom als de data via daar te voorzien. Misschien zelfs de stroom uit de S1 poort om de kabel niet te moeten splitsen. Ik vraag me wel af of zo’n kabel de hoeveelheid stroom dat een pi nodig heeft kan voorzien gezien die aders vrij dun gaan zijn. Enig idee?
Heb jij gewoon een alleenstaande PC of zo gebruikt? Ik zie het niet in je post (tenzij ik ernaast lees).
Bij mij was dit inderdaad met een gewone PC. Ik denk niet dat de poort voldoende stroom kan leveren voor een rPi maar zou dit moeten opzoeken om 100% zeker te zijn.
Met de laatste standaard anno 2022 is 500mA dat de poorten aankunnen , een Raspberry Pi4 heeft tot 3A nodig (2.5A zal wss wel voldoende zijn). Het is meer geschikt voor een ESP32 of Arduino (Nano) te voeden.
Erg interessante guide, had enkel nog een vraagje.
Om als een te testen zou ik zelf een kabel maken van RJ11 naar serieel. Is de chip in de kabel dan nog steeds nodig of is dit enkel wanneer je serieel naar USB wil converteren?
Alvast bedankt
Vr gr,
Dominique
De poort op de meter is gewoon serieel. Er moet dus inderdaad niets van extra elektronica tussen de poort en een seriële poort op een PC.
Als ik het goed versta zou ik daar direct van serieel kunnen met moxsa omvormer omzetten naar modbus en zo invoeren naar mijn PLC om verder mijn woning te sturen ?
hey
bedankt voor deze informatie kan het zeker gebruiken bij mijn GIP maar heb nog een vraagje
kun je de p1 poort rechtstreeks op een RPI 3 model B aansluiten?
alvast bedankt mvg:)
Voor zover ik weet, heeft de rPi een seriële poort op de GPIO header. pin 8: TXD (GPIO 14) en pin 10: RXD (GPIO 15).
Timestamp is expressed in Watt? Watt tf?
botkop,
Het formaat is YYMMDDHHMMSS[WS].
W=Winter en S=Summer
Ah merci.
Alleszins bedankt voor de code.
Ik heb een kleine variant gemaakt, die half geparste MQTT messages doorstuurt naar een mosquitto op mijn raspberry pi.
Zie https://github.com/botkop/fluvius-p1-python/blob/main/serial_to_mqtt.py
Er zit ook een simpel dashboard bij.
Beste Jens,
Je timestamp is verkeerd geparsed. Het formaat is YYMMDDHHMMSS[WS].
Waar W=Winter en S=Summer
Het is geen epoch zoals je waarschijnlijk dacht.
Ook loopt mijn timestamp 8 minuten achter op de actuele tijd. Bug van Fluvius?
Grtz,
De delay is komende van de threading op de raspberry pi. In schrijf mijn datapunten weg in een DB, welke de vertraging veroorzaakt.
Geen bug van Fluvius dus ;-)
Mooi werk! niet echt moeilijk dus.
Interessante info waar heel wat valt mee te doen !
Hopelijk blijft deze site lange tijd online en komen er nog vele projectvariaties !
Hey Jens,
Bedankt voor de info. Je basis heeft me zeer geholpen voor m’n setup.
Ik gebruik het volgende op een Raspberry PI:
– IOBroker
– Instance van Smart Meter
– InfluxDB om de metingen in op te slaan
– Grafana om de metingen van InfluxDB te visualiseren.
De info hier heeft me vooral geholpen om de P1 poort goed uit te lezen met een PI en dan vervolgens de Smart Meter instance goed te configueren.
Ik heb namelijk volgende config ingesteld in de SmartMeter instance:
– Data Request Interval: 300
– Data Transfer: Serial device reading data only
– Data Protocol: D0
– Serial device name: /dev/ttyUSB0 (in mijn geval zoals ook in jou uitleg)
– Serial device baudrate: 115200
– D0: Numer of WakeUp-Characters: 0
– D0: Fallback OBIS-Medium: 1: Electricity
Hallo, van harte dank voor deze duidelijke info. Ik werk aan een python script om de meterstanden 1x per uur uit te lezen. Is dit mogelijk via de gegevens uit de P1 poort, en hoe? Alvast bedankt Met vriendelijke groeten
Dit is zeker mogelijk. Je kan het script van op Github gebruiken als basis en aanpassen om slechts 1x/uur uit te lezen.
Zelf lees ik constant uit en sla ik dit op in InfluxDB om in Grafana te visualiseren.
Dag Jens, super veel dank voor het script. Ik heb ondertussen ook een frontend gemaakt met dashboards om de gegevens te kunnen nakijken (in Angular en Python/Django). Met vriendelijke groeten
Ik heb 2 T211-D meters (een gewone dag/nacht en een excl/nacht). Als ik de verbruikers na de excl/nacht meter slim kan afschakelen dan kan ik de piekwaarde voor het capaciteitstarief met ongeveer een factor 3 verminderen. Hiervoor zou ik in elk kwartier de verbruiken van de 2 tellers willen monitoren (uit de P of S poorten halen en optellen) en bij een limietwaarde een schakelaar na de excl/nacht willen aansturen om af te schakelen. Volgende kwartier de schakelaar weer aan (indien af) en weer opnieuw. De limietwaarde is bij voorkeur het totale verbruik van de excl/nacht gedeeld door 96 met een extra veiligheidsmarge (bv 25%). Iemand een idee hoe dit op te zetten ?
met veel aandacht gelezen… wil dit graag rondsturen op mijn netwerk, zo kan ik overal de waarden uitlezen in huis. Weet iemand hoe hier aan te beginnen? denk aan een esp8266-01 te gebruiken.
Zo de data uit te lezen en de data die ik wil gebruiken er uit halen.
mvg
Johan
Het gemakkelijkste is denk ik om de data uit te lezen en in een database (zoals Influx) op te slaan. Dan kan je relatief gemakkelijk alles uitlezen en visualiseren met Grafana bijvoorbeeld.
Zelf combineer ik de gegevens van de P1-meter met wat ik uit de omvormer van de zonnepanelen haal (SMA) en maak ik dit beschikbaar in een mooi dashboard met Grafana. Het ontbreekt me momenteel jammer genoeg wat aan tijd om dit deftig te documenteren maar ik ben van plan hier wel werk van te maken.
Johan, dit projectje van mij op ESP32 (die wellicht ook kan omgezet worden naar esp8266) is mogelijks bruikbaar.
https://github.com/ockernuts/digital-power-meter-monitor
Betreft nieuw appartment.op de 4e verdieping de meter gaat in de kelder geplaatst worden hoe sluit ik
de P1 poort aan
Inderdaad goeie vraag die zich stelt voor veel appartementen. Weet iemand of Fluvius on-line toegang (gaat) aanbied(en) aan de raw data, dus niet enkel via de app?
Nee, bij Fluvius zie je enkel je verbruik de dag erna. Dus vandaag ga je tot vorige nacht 12u zien. Je kan online je huidig verbruik niet monitoren.
Ik ben bezig aan een oplossing voor appartementen. Ik zit met hetzelfde probleem maar het is op te lossen. keywords:
CC1101 RF 433Mhz (sub Ghz) voor communicatie
Arduino nano / of ESP32
RS422 shield
Dit alles is low power, 433Mhz gaat los door dikke muren , maar is beperkt in bandbreedte, voor een waarde elke seconde is dit prima. Het is low power ook, verbruikt bijna niets en met deftige antenne gaat het heel ver.
De bedoeling is dan om gewoon relay te spelen via de CC1101 RF communicatie en de heavy lifting over te laten aan de ontvanger. Deze kan ook een raspberry PI zijn, maar het lijkt me interessanter om MQTT broker te gebruiken.
Beste Jens, Ik heb je artikel met interesse gelezen maar heb nog wel een vraagje rond de connectie.
Je beschrijft de poorten als Standaard RS422 poorten.
In je aansluitschema toon je eigenlijk de connecties van een RS232 poort.
Een RS422 poort gebruikt gebalanceerde signalen (niet t.o.v. GRD). Daarom heb je voor een RS422 4 aansluitingen nodig: TXD+, TXD-, RXD+ en RXD-.
RS485 is ook gebalanceerd maar werkt op 2 draden XON / XOFF met de volgende aansluitingen TXD/RXD+ en TXD/RXD-.
Een RJ11 connector heeft 6 contacten. Een RJ12 connector heeft 4 contacten.
Het beste lijkt me dat je even gaat meten met een Ohm meter op jou kabeltje en documenteren welk USB-contact (2 en 3) verbonden is met je RJ11 connector (3 en 4).
Alvast bedankt voor de info die gaat delen.
Dirk
De interface van de meter is geen RS232 en geen RS422. Beide gebruiken bipolaire spanningen (+12V/-12V) volgens V.28. De uitgang en ingang van de meter volgt gewoon TTL standaard (+5 =1, 0=0). Daarom brengt een seriële omzetter zoals een MAX232 geen uitkomst, alleen onstabiliteit omdat die signaal niveaus’s verwacht volgens de V.28 elektrische standaard. Met een Arduino zou je die signalen direct moeten kunnen koppelen, mits een pull-up weerstand op de open collector data uitgang van de meter. De data transfer gebeurt serieel met start en stop bits inderdaad. Dat is echter al weer een half level hoger in de protocol stack.
Krijg je gas verbruik uit je P1 poort? In mijn geval krijg ik wel alle elektriciteitsdata maar geen gasverbruik. De communicatie tss gas -en elektriciteitsmeter lijkt wel te werken want kan gasverbruik zien op My Fluvius. Zien jullie gasverbruik?
War betekend het knipperde 2de lampje KVARh-2
ik heb een homewizard P1 meter. De eerste dagen geen issues, maar nu kan hij niet meer verbinden met wifi. Als ik een speedtest doe zit ik aan 40mbps.
Ik wil dus met een verlengkabel werken om mijn p1 meter dichter bij mijn wifi te plaatsen.
Dus een koppelstuk ertussen en Rj11 zal niet werken?
Het moet RJ12 zijn anders zal het niet werken?
iedereen bedankt voor de tips. Uitlezen P1-poort lukt redelijk makkelijk!
iemand een script voor de S1-poort. Daar krijg ik wel data door, maar niet leesbaar
alvast bedankt
Weet iemand specifiek waarom 1-0:32.7.0*1-0:31.7.0 (volt*amp) niet hetzelfde is als 1-0:1.7.0 (eenfasig) of 1 -0: 21.7.0 ( drie fase). Het is groter met een factor die varieert van 1 tot 1,5?
Hetzelfde geldt voor de andere twee fasen.
Hey Georges,
Omdat bij wisselspanning VA en kW niet hetzelfde zijn. De ene is het schijnbare vermogen in VA en de andere het werkelijk vermogen in kW.
De arbeidsfactor van een verbruiker zorgt voor het verschil tussen beide. Hoe kleiner de arbeidsfactor, hoe groter het verschil tussen beide waarden. Die factor ligt trouwens altijd tussen 0 en 1. Je hebt dan ook liefst eentje van 1.
Zeer interessante informatie !
Sommige merken van lader gebruiken het RS485 protocol. Zou er een soort converter bestaan van RS422 naar RS485 ? (RS485 Modbus-RTU)
Ik wil de data uit de P2 poort kunnen inlezen in een Unitronics PLC om vervolgens bij pieken van stroomverbruik (capaciteit) toestellen uit te schakelen en om bij injectie op het net ander toestellen dan weer in te schakelen.
ChatGPT antwoorde op uw vraag:
Ja, er zijn converters beschikbaar die RS-422 naar RS-485 kunnen converteren, inclusief ondersteuning voor het Modbus-RTU-protocol. RS-422 en RS-485 zijn seriële communicatieprotocollen die vaak worden gebruikt voor het verzenden van gegevens over lange afstanden via gedraaide paar draden. Ze verschillen echter in de elektrische signalen die ze gebruiken, waarbij RS-422 gebalanceerde differentiële signalen gebruikt en RS-485 gebalanceerde differentiële of ongebalanceerde enkelvoudige signalen kan gebruiken.
Een RS-422 naar RS-485-converter is een apparaat dat de signalen en spanningen van RS-422 kan omzetten naar RS-485, zodat apparaten met RS-422-interface kunnen communiceren met apparaten met RS-485-interface, zoals Modbus-RTU-compatibele apparaten.
Deze converters zijn verkrijgbaar in verschillende vormen, zoals standalone apparaten met specifieke RS-422- en RS-485-poorten, of als modules die kunnen worden geïntegreerd in bestaande apparatuur of systemen. Ze kunnen worden aangesloten op de RS-422-poort van het ene apparaat en de RS-485-poort van het andere apparaat, waardoor de communicatie tussen de twee apparaten mogelijk wordt gemaakt.
Het is belangrijk om de specificaties en compatibiliteit van de converter zorgvuldig te controleren om ervoor te zorgen dat deze voldoet aan de eisen van jouw specifieke toepassing en dat deze compatibel is met het Modbus-RTU-protocol. Het is ook raadzaam om de installatie- en bedieningsinstructies van de fabrikant te volgen om een correcte werking te waarborgen.
Hey Jens
Ik ben je tutorial aan het volgenen wil dit gaan gebruiken in combinatie met een slimme stekker.
Ik heb een USB naar serial kabel gekocht zoals je voorstelde, maar kon deze op Bol.com niet meer vinden. Ben verder gaan zoeken en heb dan de volgende bestelt: https://www.reichelt.nl/nl/nl/adapterkabel-usb-naar-serieel-esd-bescherming-skywatcher-2-m-delock-66735-p310793.html?r=1 maar die blijkt niet te werken. (heb die zowel via Linux als Windows geprobeerd, als ik connectie probeer te maken, krijg ik gewoon een zwart scherm zonder iets in. (Baud-rate en andere instellingen heb ik nagekeken)
Kan jij even linken naar een kabel waarvan je weet dat die werkt?
Ik gebruik een combi boiler (gas/electrisch) en heb onlangs zonnepanelen geinstaleerd en ook een digitale teller. Op dit ogenblik kan ik manueel met een gewone lichtschakelaar de boiler omschakelen van gas naar electrisch en omgekeerd. De schakelaar doet hiervoor een relais switchen. Ik zou het relais willen laten switchen (naar electrisch dus) op het moment dat er input is van de zonnepanelen. En als er geen input is, dan terug switchen naar gas. Op die manier vermijd ik dat de boiler electrisch gaat werken als er geen zon is. Wat zou ik hiervoor nodig hebben?
Dag Georges,
Ik ben ook aan het denken om zo’n systeem te gebruiken.
Heb je intussen al iets gevonden die de geïnjecteerde energie uit het net kan gebruiken?
Beste Jens,
Ik ben bezig met raspberry PI en gebruik de node “smartmeter”. Ik heb de aanwijzingen gevolgd en de configuratie van de node ingesteld. Maar om een of andere reden krijg ik maar een (juist) telegram uit de node bij het starten van Node-RED. Volgende settings heb ik gedaan:
Baudrate: 115200 8N1
Data source: /dev/ttyUSB0
Protocol: D0Protocol
Transport: SerialResponseTransport
Request interval: 300
WakeUp Character D0: 0
Overige velden leeg gelaten
Wat heb ik hier fout gedaan?
Nog even ter aanvulling op bovenstaande.
Ik heb een seriele node genomen en deze kreeg ik wel aan de gang. Vervolgens aansluitend de dsmr parser toegepast en dit werkte ook.
Dag Jens,
Ik heb sinds kort ook een “slimme?” meter. Heb jouw python script op een raspberry gezet en kan de gegevens uitlezen. Ben zelf nog niet vertrouw met python (maar het wel aan het leren). Wat moet ik wijzigen in het script opdat dit maar 1x loopt en niet zoals nu constant.
Dank u
Herman
Je kan lijn 115 (while True:) verwijderen en dan alles vanaf lijn 115 tot aan 158 (# flush the buffer) 4 karakters naar links opschuiven (indentation).
Of gewoon, op die lijn die je aangeeft, de ‘while’ veranderen in ‘if’. Dan is de indenting-aanpassing niet nodig
Hi Jens,
ik heb zelf ook zo een P1 lezer in mekaar geknutseld op basis van een ESP32 met Arduino IDE in combinatie met Blynk IOT.
Regelmatig (een paar keer per week) zie ik checksum errors (mismatch tussen de CRC16 die ik binnenkrijg via P1 en diegene die ik zelf bereken) en meer frequent zie ik dat mijn toepassing al eens uit zichzelf herstart. Ik zie wel dat ze herstart maar ik kan daar geen diagnostische info van krijgen.
Daarom vraag ik me af of jij met je ervaring af en toe soms fouten of zelfs onderbrekingen ziet in de Fluvius P1 poort. (Ik kan helaas nergens info vinden over de stabiliteit of de kwaliteit van die P1 poort.)
Al vast bedankt,
Jan.
Zou je bereid zijn om jouw arduino code op github te plaasten?
Misschien interessant om er daarna via lambda’s een esphome projectje van te maken die meteen in home assistant te integeren valt. Zal iedereen een hoop integratiewerk besparen, en een esp32 kost ook significant minder dan een raspberry.
Hier heb je mijn ESP32 projectje: https://github.com/ockernuts/digital-power-meter-monitor
Lijkt me helemaal geen RS422 aansluiting. RS422 is (net zoals RS485 overigens) een differentieel signaal. Er zou dus een RX+ en RX- signaal moeten zijn. Dus als het geen RS232 is dan is het waarschijnlijk gewoon TTL-niveau…
Overigens een interssant artikel waar ik wel wat mee aan kan, zeker nu wanneer het tarief gaat aangepast worden aan het piekverbruik…
Merci Jens, Dit artikel spaart mij een hoop opzoek- en testwerk. Geweldig uitgelegd
Wat nu nog super zou zijn is dat we de actuele tarieven van de energieleverancier hier aan kunnen koppelen zodat je realtime je kost ziet.
Vroeger met vaste tarief was dat vrij eenvoudig, maar met variable tarieven en capaciteitstarief wordt dit onmogelijk om dit manueel te zetten dus zouden we ook geen gelijkaardige databron moeten vinden voor de leveranciers kant.
Top info trouwens!
Beste Jens,
Ik las je blogpost waarin je vermeldde dat zowel de P1- als de S1-poort van de digitale meter gebruikmaken van het RS422-communicatieprotocol. Ik wil graag opmerken dat dit niet correct is.
Hoewel de S1-poort inderdaad het RS422-communicatieprotocol kan gebruiken, geldt dit niet voor de P1-poort. De pinout van de P1-poort geeft aan dat er geen specifieke pinnen zijn toegewezen aan Data- en Data+, wat essentieel is voor het RS422-protocol.
mvg
Aaron
Beste Jens,
Ik ben er achter gekomen, dat het gebruik van tarieven 1 en 2 in NL en BE verwisseld is. Ook de naamgeving is ander dag/nacht en piek/dal. Weet jij mischien hoe ik zou kunnen bepalen of ik met een belgische of nederlandse digitale meter te maken heb?
m.v.g.
Henk
Dag Jens,
ik heb sinds kort een digitale meter en ook digital watermeter, ik krijg in home assistant mooi elektriciteit en gas te zien maar niet het water, enig idee hoe dat te doen?
Hallo Philippe,
Ik heb precies dezelfde situatie. Ik zie zowel het elektriciteits- als het gasverbruik in Home Assistant, maar niet het water. Ik heb ook een digitale watermeter.
Heb je een oplossing gevonden?
Dankjewel voor dit script.
Heb het minim kunnen aanpassen zodat het de data over udp, vanaf loxberry, tot loxone mini server stuurt.
Gilles,
Heb ook loxberry, hoe heb je dat juist gedaan om data naar loxone server te pushen?
Hallo allemaal, is er al iemand in geslaagd om het waterverbruik via de P1 poort te bekomen?
Dit zou ik graag nog visualiseren. Dank voor tips.
Met deze ObisId lukt het alvast niet: 0, 2, 24, 2, 1
Van zodra ik een digitale watermeter heb, zal ik hier een update plaatsen :)
Ik zie het waterverbruik.
ObisId 0-2:24.2.1
Heb er niks speciaal voor moeten doen.
Hallo,
Heel interessant.
Echter mis ik het piekvermogen (code 1.6.0 op de digitale meter).
Kan deze ook uitgelezen worden?
Ik zie deze gewoon, het is wel een opsomming (lijst) van de voorbije pieken.
De huidige piek staat er ook apart bij.
Bedankt voor al deze info. Erg handig!
voor diegenen die een meer uitgebreid python script wensen, met rich mooi gemaakt, zie
https://github.com/rudyvan/digital_meter.git
Heb vorig week nieuwe meters met versies “FLU5\253967035_D” en “0-0:96.1.4(50221)” gekregen.
Weet iemand wat de nieuwe velden betekenen
1-0:94.32.1(400)
0-0:96.1.2()
0-1:96.3.10(0)
0-2:96.3.10(0)
0-3:96.3.10(0)
0-4:96.3.10(0)