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.