P1-poort

De slimme meters van tegenwoordig hebben een z.g. P1-poort waarmee de meterstand en het actuele verbruik van electriciteit en gas gebruik opgevraagd kan worden. De poort is een seriele poort (RS232) waarin een 6-polig telefoon stekkertje (RJ12) past, echter de signaal nivo's zijn geinverteerd. Elke 10 seconden wordt een z.g. telegram verstuurd met daarin de gegevens.

Op internet zijn verschillende manieren te vinden voor het uitlezen o.a. met een laptop, Raspberry Pi of een Arduino. Ook voor het omkeren van het signaal nivo zijn verschillende oplossingen zoals een standaard Serieel-naar-USB kabeltje dat omgeprogrammeerd kan worden, het gebruik van een inverter of een software matige seriele poort. Ook zijn er kant en klare kastjes te koop, vaak gekoppeld aan een abonnement voor opslag in de cloud en een app voor het bekijken van de data.

Uitgangspunten

Een kant-en-klaar kastje kopen gaan we natuurlijk niet doen. Zelf iets maken is veel leuker en goedkoper. Een laptop of RasPi verbruiken te veel stroom om 24/7 aan te staan, een Arduino heeft geen WiFi. Dan maar een IoT (InternetOfThings) device in elkaar knutselen gebaseerd op een ESP8266 chip. Dus :

Een WeMos D1 Mini module is de basis. Het heeft een ESP8266 chip met WiFi en is makkelijk te programmeren vanuit de Arduino programmeer omgeving. Voor de voeding kan een USB smartphone lader gebruikt worden.
Voor de verbinding met de P1-poort kan het 4 aderig telefoon kabeltje gebruikt worden dat is overgebleven uit een ADSL modem aansluitset, waar ook een telefoonstekker in zat met een female RJ12 connectortje.
Voor het omzetten van de signaal nivo's uit de P1-poort wordt een kleine schakeling gemaakt uit twee 1K weerstandjes en een BC 547 transistor. Dat zorgt voor het inverteren van het signaal en tevens wordt het omgezet naar een 3.3 volt signaal.
Om alles netjes te monteren is het handig om een WeMos dual base met een WeMos proto shield te gebruiken.

De kosten zijn : WeMos D1 Mini $2,75, WeMos dual base $0,76 en WeMos shield $0,50. Totaal ongeveer $4. De rest van de onderdelen komt uit de rommelbak.

Technische data

Op de site van Netbeheer Nederland zijn diverse documenten betreffende de slimme meters te vinden. Hiervan zijn de Dutch Smart Meter Requirements (DSMR) de belangrijkste, hierin wordt de P1-poort beschreven met de daarbij behorende protocollen. Op de DomoticX is de belangrijkste informatie nog eens samengevat.

Gebruikt aansluitschema :

Zoals de naam al aangeeft heeft een "4 aderig telefoon kabeltje" maar 4 aders ! Meer is ook niet nodig, de pinnen 1 (+5V) en 6 (Power GND) kunnen toch niet gebruikt worden, de ESP8266 chip van de WeMOS gebruikt in de wifi burst te veel stroom en dat kan de slimmer meter niet leveren ! De benodigde 5V en 3V3 komen dus van de WeMos. Om te voorkomen dat de signaalnivo's van de datapinnen (pinnen 2 en 5) gaan "zweven" moet pin 3 (Data GND) met de ground (GND) van de WeMos verbonden worden !

Telegram data

Voorbeeld van een telegram dat elke 10 seconden wordt verzonden.


/KFM5KAIFA-METER

1-3:0.2.8(42)
0-0:1.0.0(180605091333S)
0-0:96.1.1(4530303236303030303133343837363135)
1-0:1.8.1(001790.476*kWh)
1-0:1.8.2(002320.188*kWh)
1-0:2.8.1(000000.000*kWh)
1-0:2.8.2(000000.000*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.258*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(00010)
0-0:96.7.9(00004)
1-0:99.97.0(1)(0-0:96.7.19)(000101000011W)(2147483647*s)
1-0:32.32.0(00000)
1-0:52.32.0(00000)
1-0:72.32.0(00000)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.1()
0-0:96.13.0()
1-0:31.7.0(000*A)
1-0:51.7.0(000*A)
1-0:71.7.0(000*A)
1-0:21.7.0(00.125*kW)
1-0:22.7.0(00.000*kW)
1-0:41.7.0(00.124*kW)
1-0:42.7.0(00.000*kW)
1-0:61.7.0(00.009*kW)
1-0:62.7.0(00.000*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730303235303033333436333738353136)
0-1:24.2.1(180605090000S)(05225.708*m3)
!F7F2

Voor het programmeren van de WeMos kan het project P1-Meter-ESP8266 als uitgangspunt genomen worden. Met enkele aanpassingen wordt na het decoderen van het telegram de data op een eigen website opgeslagen.

Na het ontvangen van een telegram door de WeMos worden alleen de gewenste data-items eruit gevist en bewerkt :

42Version information for P1 output
180605091333Date-time stamp of the P1 message
1790476Meter Reading electricity delivered to client (Tariff 1)
2320188Meter Reading electricity delivered to client (Tariff 2)
0Meter Reading electricity delivered by client (Tariff 1)
0Meter Reading electricity delivered by client (Tariff 2)
258Actual electricity power delivered
0Actual electricity power received
5225708Last hourly value, gas delivered to client

Data upload

Via de WiFi van de WeMos wordt de data naar een website verstuurt door het aanroepen van een PHP script op die site.

http://mijn.domein.nl/add_data.php?data=42:180608053325:1792728:2329485:0:0:134:0:5227418
De data kan vervolgens opgeslagen worden in een database of gewoon in een log bestand. Voorbeeld add_data.php script :

<?php
$date = date('Y-m-d');
$output = "";
$myFile = "meter_".$date.".log";

if (!file_exists($myFile)) {
  echo 'File not found';
}
$fh = fopen($myFile, 'a') or die("couldn't open");

foreach($_GET as $key=>$val)
{
   if($key == "data")
   {
      $output .= $val;
   }
}
$output .= "\n";
fwrite($fh, $output );
fclose($fh);
echo "ok";
?>

Grafiek

Vanuit de opgeslagen data kunnen vervolgens diverse grafieken en analyses gemaakt worden.

De pieken zijn de waterkoker ! De "blokken" is de koelkast. De 17 Watt 's nachts komt door de waterpomp van de verwarming, internet modem, netwerk router, de wekkerradio en niet te vergeten de trafo van de deurbel !.
Die 17 W continue is op jaarbasis 17*24* 365 / 1000 = 148,92 kWh !