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.
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.
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 !
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 :
42 | Version information for P1 output |
180605091333 | Date-time stamp of the P1 message |
1790476 | Meter Reading electricity delivered to client (Tariff 1) |
2320188 | Meter Reading electricity delivered to client (Tariff 2) |
0 | Meter Reading electricity delivered by client (Tariff 1) |
0 | Meter Reading electricity delivered by client (Tariff 2) |
258 | Actual electricity power delivered |
0 | Actual electricity power received |
5225708 | Last hourly value, gas delivered to client |
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";
?>
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 !