Het is gelukt! Ik kan nu mijn slimme meter uitlezen met enkel een oude RJ11 kabel en een Arduino. Sluit geel op pin10, zwart op pin4 en rood op ground, gebruik onderstaande code en je kan beginnen met uitlezen.
Ik krijg er dit uit, elke 10 seconden (ik heb geen gasaansluiting, maar wel zonnepanelen):
Bedankt Frank Oxener en ricdijk om het laatste en lastigste gedeelte werkend te krijgen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| #include <SoftwareSerial.h> const int requestPin = 4; int incomingByte = 0; String inputString = ""; boolean start_p1_record; boolean data_ready = false; SoftwareSerial mySerial(10, 11, true); // RX, TX, inverted void setup () { mySerial.begin(9600); delay(1); Serial.begin(9600); Serial.println("P1 Smart meter reading - START\n"); pinMode(requestPin, OUTPUT); digitalWrite(requestPin, HIGH); } void loop () { while (mySerial.available() > 0) { incomingByte = mySerial.read(); incomingByte &= ~(1 << 7); char inChar = (char)incomingByte; inputString += inChar; if (inChar == '/') { start_p1_record = true; } if (inChar == '!') { data_ready = true; start_p1_record = false; Serial.println("\n\nData received!\n\n\n"); Serial.println(inputString); inputString = ""; } if (inputString.length() > 350) { start_p1_record = false; inputString = ""; } } } |
Ik krijg er dit uit, elke 10 seconden (ik heb geen gasaansluiting, maar wel zonnepanelen):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| /ISk5\2ME382-1003 0-0:96.1.1(xxxhierstaatmijnmetercodexxx) 1-0:1.8.1(00053.950*kWh) 1-0:1.8.2(00084.458*kWh) 1-0:2.8.1(00003.303*kWh) 1-0:2.8.2(00009.309*kWh) 0-0:96.14.0(0002) 1-0:1.7.0(0000.14*kW) 1-0:2.7.0(0000.00*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() ! |
Bedankt Frank Oxener en ricdijk om het laatste en lastigste gedeelte werkend te krijgen.