Slimme meter installatie
Vanuit de overheid is bepaald dat iedereen voor eind 2020 een slimme meter krijgt aangeboden. Slimme meters zijn digitale energiemeters die in de plaats komen van je huidige elektriciteitsmeter en gasmeter. Deze meter geeft automatisch tweemaandelijks je energieverbruik door aan de netbeheerder. Zo blijft je zelf handig op de hoogte van je energieverbruik. Je hoeft dus zelf geen meterstanden meer door te geven.
Dit kwartaal was onze regio aan de beurt en we kregen dan ook een berichtje van Enexis om een afspraak te maken. Het plaatsen zelf duurde ongeveer 1 uur en stelde niet zo heel veel voor. Er werd bij ons een Itron smartmeter voor gas geplaatst die zijn gegevens draadloos verstuurd naar de Landis+Gyr Elektriciteit smartmeter. De gegevens van de Landis+Gyr smartmeter kun je zelf uitlezen door deze via een zogenaamde P1 Converter kabel te verbinden met je Raspberry Pi.
P1 Converter Kabel
Ik heb bij Smartmeterdashboard.nl een P1 Converter Kabel V2 gekocht.
Om te kijken wat er over de lijn ging heb ik het volgende commando uitgevoerd:
sudo cat /dev/serial/by-id/usb-FTDI_P1_Converter_Cable_P11AS8BB-if00-port0
Dit leverde bij mij de volgende output op:
1-3:0.2.8(42) 0-0:1.0.0(170224182239W) 0-0:96.1.1(4530303330303033373236343938353136) 1-0:1.8.1(000014.005*kWh) 1-0:1.8.2(000036.177*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.886*kW) 1-0:2.7.0(00.000*kW) 0-0:96.7.21(00002) 0-0:96.7.9(00000) 1-0:99.97.0(0)(0-0:96.7.19) 1-0:32.32.0(00000) 1-0:52.32.0(00000) 1-0:72.32.0(00001) 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(002*A) 1-0:51.7.0(000*A) 1-0:71.7.0(003*A) 1-0:21.7.0(00.349*kW) 1-0:41.7.0(00.011*kW) 1-0:61.7.0(00.526*kW) 1-0:22.7.0(00.000*kW) 1-0:42.7.0(00.000*kW) 1-0:62.7.0(00.000*kW) 0-1:24.1.0(003) 0-1:96.1.0(4730303139333430333231303838373136) 0-1:24.2.1(170224180000W)(00026.135*m3) !B184 /XMX5LGBBFG1012751414
In bovenstaande output herken je meteen de volgende datagrammen waarin we geïnteresseerd zijn.
1-0:1.8.1(000014.005*kWh) 1-0:1.8.2(000036.177*kWh) 1-0:1.7.0(00.886*kW) 0-1:24.2.1(170224180000W)(00026.135*m3)
Dit is respectievelijk je verbruik tegen laag en hoog tarief (1.8.1 en 1.8.2), je actueel verbruik (1.7.0) en je totaal gasverbruik (24.2.1).
Smartmeter2 Plugin voor Pimatic
Nu bestond er voor Pimatic al een ‘smartmeter2’ plugin die je elektriciteit en gasmetingen zou uitlezen. Toen ik deze gebruikte merkte ik echter dat mijn elektriciteit wel werden uitgelezen, maar mijn gas niet. Ik ben toen even in de code gedoken en heb dit zelf maar opgelost.
In de file ‘\home\pi\pimatic-app\node_modules\pimatic-smartmeter2\p1meterdata.js’ moet je de volgende regel veranderen:
var gasTotalUsage = returnRegExResult(data, /^\(0+(\d+\.\d+)\)/m);
Ik moest nu even een goede regular expression maken om mijn gasmeting uit te lezen. Met behulp van deze site site kon ik handig checken hoe ik mijn regular expression moest maken. Ik heb bovenstaande regel nu veranderd in:
var gasTotalUsage = returnRegExResult(data, /^0-1:24\.2\.1\(\d{12}.\)\(0+(\d+\.\d+)\*m3\)/m);
Importeren gegevens in Pimatic
Nu werden ook mijn gasmetingen netjes uitgelezen m.b.v. Pimatic. Ik wilde in Pimatic met deze gegevens ook uitgebreidere statistieken maken. Zo is het handig om te weten wat je uur en dag verbruik van je elektriciteit en gas is. Verder kun je het nog meer inzichtelijk maken om er gelijk de kosten aan te verbinden daar je immers weet wat je voor je elektriciteit en gas betaald. Uiteindelijk heb ik de config.json file van Pimatic de volgende zaken toegevoegd:
Aan de ‘plugins’ sectie
{ "plugin": "smartmeter2" }
Aan de ‘devices’ sectie:
{ "id": "smartmeter2", "class": "Smartmeterdevice2", "name": "Smartmeter", "serialport": "/dev/serial/by-id/usb-FTDI_P1_Converter_Cable_P11AS8BB-if00-port0", "baudRate": 115200, "dataBits": 7, "parity": "even", "stopBits": 1, "flowControl": true }, { "id": "show_total_electricity", "name": "Totaal Electriciteit", "class": "VariablesDevice", "variables": [ { "name": "total_electricity", "expression": "round(($smartmeter2.tariff1totalusage + $smartmeter2.tariff2totalusage),3)", "type": "number", "unit": "kWh" } ] }, { "id": "show_total_gas", "name": "Totaal Gas", "class": "VariablesDevice", "variables": [ { "name": "total_gas", "expression": "$smartmeter2.gastotalusage", "type": "number", "unit": "m3" } ] }, { "id": "show_actual_electricity", "name": "Actueel Electriciteit", "class": "VariablesDevice", "variables": [ { "name": "actual_electricity", "expression": "$smartmeter2.actualusage", "type": "number", "unit": "Watt" } ] }, { "id": "show_electra_day_usage", "name": "Electriciteit Dag Verbruik", "class": "VariablesDevice", "variables": [ { "name": "electra_day_usage_total", "expression": "$electra_day_usage_total", "type": "number", "unit": "kWh" } ] }, { "id": "show_electra_hour_usage", "name": "Electriciteit Uur Verbruik", "class": "VariablesDevice", "variables": [ { "name": "electra_hour_usage_total", "expression": "round(($electra_hour_usage_low + $electra_hour_usage_high),3)", "type": "number", "unit": "kWh" } ] }, { "id": "show_gas_day_usage", "name": "Gas Dag Verbruik", "class": "VariablesDevice", "variables": [ { "name": "gas_day_usage", "expression": "$gas_day_usage", "type": "number", "unit": "m3" } ] }, { "id": "show_gas_hour_usage", "name": "Gas Uur Verbruik", "class": "VariablesDevice", "variables": [ { "name": "gas_hour_usage", "expression": "$gas_hour_usage", "type": "number", "unit": "m3" } ] }, { "id": "show_electra_day_costs", "name": "Electriciteit Dag Kosten", "class": "VariablesDevice", "variables": [ { "name": "electra_day_costs", "expression": "$electra_day_costs", "type": "number", "unit": "Euro" } ] }, { "id": "show_electra_hour_costs", "name": "Electriciteit Uur Kosten", "class": "VariablesDevice", "variables": [ { "name": "electra_hour_costs", "expression": "round(($electra_hour_costs_low + $electra_hour_costs_high),3)", "type": "number", "unit": "Euro" } ] }, { "id": "show_gas_day_costs", "name": "Gas Dag Kosten", "class": "VariablesDevice", "variables": [ { "name": "gas_day_costs", "expression": "$gas_day_costs", "type": "number", "unit": "Euro" } ] }, { "id": "show_gas_hour_costs", "name": "Gas Uur Kosten", "class": "VariablesDevice", "variables": [ { "name": "gas_hour_costs", "expression": "$gas_hour_costs", "type": "number", "unit": "Euro" } ] }
PS: Let op dat je serialport instelt n.a.v. jouw situatie. Dit kun je snel zien door het commando: ‘sudo dir /dev/serial/by-id/’
Aan de ‘Rules’ sectie:
{ "id": "smartmeter2_day_usage", "name": "Dag verbruik", "rule": "when its 00:01 then $electra_day_usage_low := (round($smartmeter2.tariff1totalusage,3) - $electra_day_low_memory) and $electra_day_usage_high := (round($smartmeter2.tariff2totalusage,3) - $electra_day_high_memory) and $electra_day_usage_total := (round($smartmeter2.tariff1totalusage,3) + round($smartmeter2.tariff2totalusage,3) - $electra_day_usage_total_memory) and $gas_day_usage := ($smartmeter2.gastotalusage - $gas_day_memory) and $electra_day_low_memory := round($smartmeter2.tariff1totalusage,3) after 10 second and $electra_day_high_memory := round($smartmeter2.tariff2totalusage,3) after 10 second and $electra_day_usage_total_memory := (round($smartmeter2.tariff1totalusage,3) + round($smartmeter2.tariff2totalusage,3)) after 10 second and $gas_day_memory := $smartmeter2.gastotalusage after 10 second", "active": true, "logging": false }, { "id": "smartmeter2_hour_usage", "name": "Uur verbruik", "rule": "when every 60 minutes then $electra_hour_usage_low := (round($smartmeter2.tariff1totalusage - $electra_hour_low_memory,2)) and $electra_hour_usage_high := (round($smartmeter2.tariff2totalusage,3) - $electra_hour_high_memory) and $gas_hour_usage := ($smartmeter2.gastotalusage - $gas_hour_memory) and $electra_hour_low_memory := round($smartmeter2.tariff1totalusage,3) after 10 second and $electra_hour_high_memory := round($smartmeter2.tariff2totalusage,3) after 10 second and $gas_hour_memory := $smartmeter2.gastotalusage after 10 seconds", "active": true, "logging": false }, { "id": "smartmeter2_day_usage_costs", "name": "Dag verbruik kosten", "rule": "when $electra_day_usage_low gets updated or $electra_day_usage_high gets updated or $electra_day_usage_total gets updated or $gas_day_usage gets updated then $electra_day_costs := ($electra_day_usage_low * $electra_rate_low) + ($electra_day_usage_high * $electra_rate_high) and $gas_day_costs := ($gas_day_usage * $gas_rate)", "active": true, "logging": false }, { "id": "smartmeter2_hour_usage_costs", "name": "Uur verbruik kosten", "rule": "when $electra_hour_usage_low gets updated or $electra_hour_usage_high gets updated or $gas_hour_usage gets updated then $electra_hour_costs_low := ($electra_hour_usage_low * $electra_rate_low) and $electra_hour_costs_high := ($electra_hour_usage_high * $electra_rate_high) and $gas_hour_costs := ($gas_hour_usage * $gas_rate)", "active": true, "logging": false }
Aan de ‘variables’ sectie:
{ "name": "total_electricity", "value": 0 }, { "name": "total_gas", "value": 0 }, { "name": "actual_electricity", "value": 0 }, { "name": "electra_day_high_memory", "value": 0 }, { "name": "electra_day_low_memory", "value": 0 }, { "name": "electra_day_usage_low", "value": 0 }, { "name": "electra_day_usage_high", "value": 0 }, { "name": "electra_day_usage_total", "value": 0 }, { "name": "gas_day_memory", "value": 0 }, { "name": "electra_day_usage_total_memory", "value": 0 }, { "name": "gas_day_usage", "value": 0 }, { "name": "electra_hour_high_memory", "value": 0 }, { "name": "electra_hour_low_memory", "value": 0 }, { "name": "electra_hour_usage_low", "value": 0 }, { "name": "electra_hour_usage_high", "value": 0 }, { "name": "gas_hour_usage", "value": 0 }, { "name": "gas_hour_memory", "value": 0 }, { "name": "electra_hour_costs_high", "value": 0 }, { "name": "electra_hour_costs_low", "value": 0 }, { "name": "gas_hour_costs", "value": 0 }, { "name": "electra_rate_high", "value": 0.2127 }, { "name": "electra_rate_low", "value": 0.2127 }, { "name": "gas_rate", "value": 0.6341 }, { "name": "gas_day_costs", "value": 0 }, { "name": "electra_day_costs", "value": 0 }
Uiteindelijk levert dit in Pimatic het volgende overzicht voor je Smartmeter op:
Het leuke is dat je van elke variable een grafiek kunt tonen. Op deze manier kun je bijvoorbeeld een goed inzicht krijgen wanneer je het meeste elektriciteit op een dag gebruikt en uitvinden hoe dat komt. Zo kun je bijvoorbeeld minder zuinige apparaten opsporen.
Als je vervolgens ook nog de kosten toont wordt je een stuk bewuster van je energie-verbruik. Ik vind het in elk geval erg handig.
Hallo Henri,
Ik moet je eerst complimenteren met betrekking tot je duidelijke blogs. Ik ben momenteel vooral bezig met Pimatic en de topics hebben een sfeer van achteloos programmeursjargon die niet iedereen zal begrijpen.
Mijn kennis is vooral electronisch (nog uit de buizentijd en alles wat ik daarna via Elektuur/Elektor en heel veel boeken heb vergaard) gebaseerd op je motto linksboven (Ik ben 72). Genoeg.., nu mijn probleem: Mijn Pimatic met 7″ display hangt als luxe thermostaat in de kamer veel te ver van mijn slimme meter. Ik heb al een paar Wemos-bordjes en ESPimatic daarop geinstalleerd, de convertorkabel in bestelling, dus ik hoop met die Wemos contact te krijgen met Homeduino. De sites gegoogled, maar nog niet zo’n voorbeeld tegengekomen. Heb je misschien suggesties/tips met betrekking tot te definieren devices?
Bij voorbaat mijn dank, groet, Frans
Als eerste hartelijke dank voor je donatie Frans. Tot nu toe hebben nog maar 4 personen deze moeite genomen (met veel kleinere bedragen). Dit wordt erg gewaardeerd en zal gebruikt worden voor aanschaf van spullen voor deze blog. Verder harstikke goed dat je nog fanatiek met techniek bezig bent.
Ik heb geen ervaring met Wemos bordjes. Ik draai Pimatic op een Raspberry Pi die in de meterkast staat waar ook de slimmer meter hangt. Deze heb ik hier rechtstreeks aangesloten op een USB poort van de Raspberry Pi (zie blog) en maak gebruik van de ‘Pimatic Smartmeter’ plugin die de rest voor mij verzorgd. Ik heb wel enigzins ervaring met ESPimatic met een NodeMCU borjdje zoals hier beschreven. Ik heb hiermee een draadloze temperatuur-meter gemaakt die zijn waardes draadloos verstuurd naar mijn Raspberry Pi. Wellicht kan deze informatie je wat op weg helpen.
Het is echter niet de oplossing die je zoekt. In principe wil je de slimme meter waarden draadloos doorsturen naar je Pimatic systeem in je kamer. Hardop denkend zou je aan het volgende kunnen denken: Raspberry Pi bij je Slimme meter zetten en hier de Slimme meter op aan sluiten. Vervolgens in een cron job regelmatig de betreffende USB poort uitlezen. Deze waardes zou je vervolgens (b.v. via een netwerk share) kunnen aanleveren aan het systeem waarop je Pimatic hebt draaien. Het probleem is nu echter om deze waardes weer aan te leveren aan de ‘Pimatic Smartmeter’ plugin op je Pimatic systeem, daar deze normaal zijn gegevens via de serialport verkrijgt. Wellicht valt daar een ‘truc’ te bedenken door de source-code van de Pimatic Smartmeter aan te passen zodat deze zijn waardes uit een file leest i.p.v. via de serial port. Het wordt dan even zoeken in de code van de Pimatic Smartmeter plugin (directory ‘homepipimatic-appnode_modulespimatic-smartmeter2′ en lager) waar dit precies gebeurt.
Hallo Henri,
Bedankt nog voor je snelle reactie. Ik heb inmiddels de meteruitlezing draaien op een Pi 2 die ik nog had liggen met Pimatic (versie 0.8.107) en alles werkt (na aanpassing van when naar if) prima. Echter, de Pi3 waarnaar ik de informatie van de smartmeter wil zenden heeft Pimatic (versie 0.9.39). Ook daar heb ik de aanvullingen op config.json gezet.
Op een of andere manier is deze Pimaticversie veel punctueler met betrekking tot code, want in de debuglog
krijg ik een lange reeks van foutmeldingen op de rule-statements en blijven deze disabled. Ik heb me suf zitten lezen maar (met mijn beperkte programmeerkennis) kan ik geen fouten ontdekken.
Heb je enig idee wat dit kan zijn? Ik weet ook niet op welke Pimatic-versie jpuw code loopt.
Bij voorbaat dank. Groet, Frans
Ik gebruik zelf Pimatic versie 0.9.39. Ik kan zo niet vertellen wat er mis is met jouw config.json file op Pimatic versie 0.9.39. Daarvoor heb ik dan toch echt de config.json en debug logging nodig. Ik kan je eventueel mijn (gestript van prive informatie) config.json file sturen zodat je eventueel kunt vergelijken. Geef maar even aan of je daar prijs op stelt.
Hallo Henry
Heel graag, we gebruiken dezelfde versie, dus er moet toch iets zijn wat dit beinvloed. Ik hoe wel van een beetje puzzelen. Dat kan wat mij betreft rechtstreeks naar mijn emailadres.
Bij voorbaat dank, Groet, Frans
Hoi Henri,
Ik ben begonnen met het uitvoeren van dit blog, echter kom ik erachter dat ik een andere slimme meter heb dan jij. Namelijk de Kaifa E0025.
Zoals je op de foto kan zien, past de P1 kabel in mijn slimme meter, echter zie ik geen logging voorbij komen op mijn raspberry. Heb je misschien enig idee hoe ik deze blog kan uitvoeren voor deze type slimme meter?
Kijk op welke USB poort je slimme meter op de Raspberry Pi is aangesloten en check dan welke output er voorbij komt. In mijn geval deed ik dat met het commando:
sudo cat /dev/serial/by-id/usb-FTDI_P1_Converter_Cable_P11AS8BB-if00-port0
(verander gedeelte achter /dev naar jouw situatie.
gisteren is mijn slimme meter vervangen voor het sagecom model dus zag ik gelijk aanleiding (aangezien mijn USB to serial kabeltje niet direct werkte) om pimatic uit te breiden met de services en rules uit dit blog.
Ook een paar kleine aanpassingen gemaakt (extra variabelen voor netbeheer en transportkosten, deze meegenomen in de berekening van de dagtotalen, extra device die de tariefstand van de meter aangeeft en de meterstanden van hoog en laag tarief los getrokken)
En dat werkt prima! bedankt hiervoor 🙂
Fijn dat het nu werkt Maurice en ook veel dank voor je financiele bijdrage. Dat wordt erg gewaardeerd.
geen dank! ik vind het leuk om dingen werkend te krijgen maar soms gaat het boven mijn pet. dan is het fijn dat er mensen zijn die een aantal stappen verder zijn en dit delen. van daar uit kan ik dan weer mijn eigen dingen toevoegen in de meeste gevallen. inmiddels al een jaar of 3 actief gebruiker van pimatic met een behoorlijke stapel devices. nu alleen nog eens kijken of ik mijn thermostaat kan (en wil!) toevoegen aan pimatic 🙂
Welke thermostaat heb je? Ik heb een Nefit Easy en hiervoor is recent een nieuwe plugin uitgekomen die prima werkt. Verder zijn er nog diverse andere plugins m.b.t. themostaten.
PS: Binnenkort plaats ik op mijn blog een nieuw project waar ik al enige maanden aan werk (vooral wachten op spullen uit China) m.b.t. Pimatic. Zal je vast interessant vinden. Houd de blog dus in de gaten (of abonneer je erop).
heb nu een ketel van Vaillant met bijpassende thermostaat. ben er alleen nog niet helemaal uit wat betreft het standaard aan/uit schakelen of modulerend. maar ben daar ook nog niet echt ingedoken hoor. ik hou je blog in de gaten, super!
Heel veel dank voor deze uitleg! Het was even puzzelen, maar het werkt nu perfect!
Het enige waar ik tegenaan liep met je beschrijving was dat in de regel ‘/dev/serial/by-id/usb-FTDI_P1_Converter_Cable_P11AS8BB-if00-port0’ het stukje P11AS8BB nog vervangen moest worden voor het serienummer van mijn kabeltje. Voor degenen die na mij nog aan het knutselen gaan en hier tegenaan lopen: uiteindelijk kon ik de benodigde regel vinden met het commando ‘sudo dir /dev/serial/by-id/’.
Terzijde, bij mij leverde het commando ‘sudo cat /dev/serial/by-id/usb-FTDI_P1_Converter_Cable_P11AS8BB-if00-port0’ (met P11AS8BB vervangen door mijn eigen serienummer) geen resultaat op. De output bleef helemaal leeg. Ik ben maar gewoon verder gegaan met het volgen van je uitleg en het werkt nu wel allemaal verder.
Nogmaals dank!
Bedankt voor je reactie en fijn dat het nu werkt. N.a.v. je reactie heb ik even jouw ‘serialport tip’ toegevoegd aan mijn verhaal.
Verder ook nog veel dank voor je financiele bijdrage. Dat wordt erg gewaardeerd Wouter en gebruikt voor de blog.
Kijk ook eens op https://beeclear.nl. Dit is een product gebaseerd op minimalistische router hardware. Alles in 1!
Euro 99,= vind ik toch een behoorlijk stevige prijs.Met mijn oplossing (Raspberry Pi met Pimatic en een P1 kabel ben je ongeveer Euro 50,= kwijt). Overigens ben ik gisteren overgestapt naar Domoticz en hier is het nog eenvoudiger om een slimmer meter te koppelen tesamen met mooi grafieken etc. Binnenkort meer op mijn blog.