• Sander_88
  • Registratie: Februari 2007
  • Laatst online: 10-03-2025
Hallo allemaal,

Ik probeer de P1 poort uit lezen van mijn energiemeter. Dat gaat prima via mijn PC (USB serial), het is een vrij nieuwe (E350 Landis+Gyr ZCF110CCtFs2) dus was even uit proberen hoe de data binnenkwam. Maar uiteindelijk gevonden:
- Inverted (ik gebruik een 7404IC om het signaal te inverteren)
- 8 bit
- 115200 baud
- Weerstandje (1k ohm) nodig tussen de data en 5v.

Dat werkt dus prima, echter wil ik de data uitlezen met een Arduino Uno (i.v.m. met verdere integratie) en daar gaat het fout. De data komt anders binnen op de Arduino dan wanneer ik hem direct op mijn PC aansluit.

Vanwege de hogere snelheid (115200 baud) heb ik de P1 poort aangesloten op de hardware serial van de Arduino. Het debuggen naar de PC loopt via een software serial.

Ik hoop dat iemand is die kan zien wat er hier fout gaat? Daarom hieronder de exacte code en output die ik krijg.

Alvast dank voor de hulp!

Groet,
Sander




Dit is de test code die ik gebruik:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <SoftwareSerial.h>
 
SoftwareSerial softSerial(2, 3); // RX, TX
char input;

void setup() {
    Serial.begin(115200);
    softSerial.begin(9600);
    softSerial.println("Started, waiting for data...");
}

void loop() {
  if (Serial.available()) {
    softSerial.write(Serial.read());
  }
}


Serial output P1 rechtstreeks op de PC (serienummers deels afgeschermd met XXXXXXXX):
/XMX5LGBBLA44XXXXXXXX
 
1-3:0.2.8(50)
0-0:1.0.0(18060XXXXXXXX)
0-0:96.1.1(4530303435XXXXXXXXXXXXXXXXXXXXXXXX)
1-0:1.8.1(000497.797*kWh)
1-0:1.8.2(000503.844*kWh)
1-0:2.8.1(000606.252*kWh)
1-0:2.8.2(001467.959*kWh)
0-0:96.14.0(0001)
1-0:1.7.0(00.180*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(00013)
0-0:96.7.9(00007)
1-0:99.97.0(7)(0-0:96.7.19)(171028142331S)(0000000497*s)(171028153612S)(0000004330*s)(171109142354W)(0000000205*s)(171109154601W)(0000004124*s)(171109163130W)(0000000639*s)(171114002703W)(0000019549*s)(171126164211W)(0000001367*s)
1-0:32.32.0(00002)
1-0:32.36.0(00000)
0-0:96.13.0()
1-0:32.7.0(231.0*V)
1-0:31.7.0(002*A)
1-0:21.7.0(00.179*kW)
1-0:22.7.0(00.000*kW)
0-2:24.1.0(003)
0-2:96.1.0(4730303332XXXXXXXXXXXXXXXXXXXXXXXX)
0-2:24.2.1(180603213000S)(00225.687*m3)
!829A


Serial output P1 via Arduino:
 /XM4412

          1-30)

0-08061

0-045300338373

              1-8.184*k

                       1-0:517.

1-1(0*kWh

         1-:2.7.20

                  0-(00

                       1-1.7.*kW)

                                 1-1.29

                                       0-7.21

                                             0-0:9607)

1-0(77.1)(1731S)97*)(1712S)30*)(1754W)05*)(1701W)24*)(1730W)39*)(1703W)49*)(1711                                                                                                                                                             W)67*)

1-0(000

       1-0(000

              0-0()

1-0233.

       1-0006*

              1-000.0

                     1-001.2

                            0-2003)

                                   0-247306358353

                                                 0-21806)(0m3)

!93

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:11

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Ik ben niet zo thuis met Arduino (ik ben zelf fan van Espruino), maar je dumpt nu rechtstreeks input in output. Dat terwijl de baudrate ervan verschilt. Is het niet een logisch gevolg dat je maar een deel van de input te zien krijgt? SoftSerial is minder vaak beschikbaar dan dat Serial informatie doorgeeft.

Probeer de input vanuit je P1 een variabele te laten aanvullen, en die variabele naar de output te schrijven.

Pseudo-code:
code:
1
2
3
4
5
6
while( Serial.available() ) 
{
    out += Serial.read();
}

softSerial.write( out );

[ Voor 7% gewijzigd door Thijsmans op 16-06-2018 11:40 ]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • The Wizard
  • Registratie: Januari 2000
  • Laatst online: 02-03 15:06

The Wizard

Moderator Mobile
Kijk anders even naar Solarmeter, te vinden op https://github.com/harold65/SolarMeter

7740 kWp, 3 subsystemen (20x 320 Wp / 2x 230 Wp / 2x 440 Wp)


  • Sander_88
  • Registratie: Februari 2007
  • Laatst online: 10-03-2025
Dank voor input! Ik ben nog even aan het testen geweest. Tevens even die code bekeken zoals The Wizard zei.

Ondertussen werkt het gelukkig :) Wat blijkt: het schrijven naar de soft serial (dus Arduino naar PC) is zo zwaar dat de hardware serial (tussen P1 en Arduino) data gaat missen.

Ik gebruik nu deze (test) code, wellicht dat iemand er nog iets aan heeft...
C:
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
49
#include <SoftwareSerial.h>
 
SoftwareSerial softSerial(2, 3); // RX, TX

#define BUFSIZE 1024
char buffer[BUFSIZE];
int bufpos = 0;
bool reading = false;
bool lastLine = false;

void setup() {
    Serial.begin(115200);
    delay(1);
    softSerial.begin(9600);
    softSerial.println("Started, waiting for data...");
}

void loop() {
  while(Serial.available()) {
    char c = Serial.read(); 

    if(reading) {
      if ((lastLine && c == '\n') || bufpos == BUFSIZE-1) {
        // Reached end of P1 packet (or prevent buffer overflow).
        buffer[bufpos] = '\0';
        softSerial.println(buffer);
        softSerial.println("--------------------");
        softSerial.flush();
        bufpos = 0;
        reading = false;
        lastLine = false;

        // Clear the P1 serial input buffer.
        while(Serial.available()) {
          char c2 = Serial.read(); 
        }
      } else {
        if(c == '!') {
          lastLine = true;
        }
        buffer[bufpos++] = c;
      }
    } else if(c == '/') {
      // Detected start char. Start reading the new P1 packet...
      reading = true;
      buffer[bufpos++] = c;
    }
  }
}


Oh ja, de pull up weerstand heb ik vervangen door eentje van 2k ohm. Dat werkt ook prima.

  • oezie
  • Registratie: Oktober 2012
  • Laatst online: 08:35
Welke versie DSMR heeft jouw meter? Ik heb zelf ook deze meter met DSMR 4.2 maar het lukt me nog niet om hier zinnige data uit te halen. Ik vraag mij dus eventjes af of ik ook het signaal moet inverten. Dat zou namelijk volgens deze bron http://domoticx.com/p1-poort-slimme-meter-hardware/ niet hoeven?

  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Hi, om even in te haken in dit topic, ik heb solarmeter al enige tijd met plezier draaien maar nu heb ik slimme meters gekregen en en volgens de beschrijving alles aangesloten en geconfigureerd voor mijn Arduino Mega maar krijg geen data eruit. Nu lees ik hier dat ik een Iskra SMR 5.0 type AM550-TD2 meter heb die een RJ11 6-pins gebruiken ipv. 4-pins en de baudrate is anders.
En hier lees ik dat iemand daar een oplossing voor heeft maar daar houd nu net mijn kennis op om in een bestaand programma iets te veranderen omdat ik niet weet en begrijp wat ik doen moet?

Kan iemand mij op weg helpen?
Ik heb een:
Arduino Mega 2560 met de sketch Solarmeter draaien
Iskra SMR 5.0 AM550-TD2 slimme meter

Groetjes André,


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Beste mensen,

Ik ben verder gekomen met kennis van slimme meters uitlezen met een Arduino Mega waar het programma Solarmeterhttps://github.com/harold65/SolarMeter op draait van Harold65.
Het programma Solarmeter draaide al jaren prima op de Arduino Mega. Ik mat hiermee mijn brutoproductiemeter (zonnepanelen) met een S0 meter, mijn gasmeter met een analoge opnemer, en watermeter met een analoge opnemer. Deze waarden stuurde ik naar PVOutput en Exosite.
Op een gegeven moment kreeg ik een nieuwe slimme meter voor elektra en gas. Hier was het programma Solarmeter al op voorbereid. Na wat gestoei kreeg ik het dan eindelijk werkend. Ik kon met putty het signaal zien en met het ic 7404 ertussen de juiste waarden te zien, zie toegevoegde foto`s. Je kunt duidelijk bij de onderste regel zien dat de gasmeter stand voorbij komt.
Afbeeldingslocatie: https://www.arduinoforum.nl/download/file.php?id=680
Afbeeldingslocatie: https://www.arduinoforum.nl/download/file.php?id=679

Het enig wat nog ontbreekt is de waarde van de gasmeter. Deze is niet zichtbaar in de Arduino webbrowser en ook niet in PVOutput, zie gekopieerde tekst uit de Arduino webbrowser. GasUsage is en blijft nul ook aan het einde van de dag als alle date door de Arduino naar mijn mail adres gemaild word:
PowerUsage=0 PowerSolar=5200 GasUsage=0 M1=126416 M2=73137 M3=222664 M4=389401

Wie kan mijn helpen om dit goed te krijgen?

[ Voor 8% gewijzigd door andregroeneveld op 10-06-2019 14:50 ]

Groetjes André,


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Voor wie gedesinteresseerd is heb ik op dit forum een post geplaatst en is er mogelijk een oplossing voor het goed uitlezen van de P1 poort van de nieuwe generatie slimme meters.

Groetjes André,


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Ik was mijn netwerk aan het her configureren vanwege de vele WIFI verbindingen. Ik wou mijn Arduino een ander IP adres geven. Dit kan alleen door de Arduino opnieuw te flashen. Helaas lukt het niet om de laatste compilatie goed te krijgen. Ik krijg steeds dit:
Arduino:1.8.9 (Windows 10), Board:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
Solarmeter:8:21: error: TimeLib.h: No such file or directory
compilation terminated.
exit status 1
TimeLib.h: No such file or directory
Dit rapport zou meer informatie bevatten met
"Uitgebreide uitvoer weergeven tijden compilatie"
optie aan in Bestand -> Voorkeuren.


Het forum waar ik destijds geholpen ben bestaat niet meer helaas. Daar stond de uitleg die ik nodig had. Is het misschien mogelijk om uit de ArduinoMega de compilatie te halen en veranderen en terugzetten?

Groetjes André,


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

Nee, dat gaat niet (dat is een complex proces, moet je niet aan willen beginnen).

De foutmelding die je krijgt lijkt mij niet specifiek voor dat project.

Een simpele Google actie op de fout waar het om draait: "TimeLib.h: No such file or directory" geeft mij deze hit:
https://forum.arduino.cc/...-file-or-directory/678344
A good place to start is the Arduino IDE's Library Manager:

1. Select Sketch > Include Library > Manage Libraries... from the Arduino IDE's menus.
2.In the "Filter your search..." box, type some keywords you have gleaned from the missing file name.
3. Scroll through the results for the right library. Click on it.
4. Click the Install button.
5. Wait for the installation to finish.
6. Click the Close button.
7. Try compiling your code again.
(Of even verder lezen/zoeken als dit het probleem niet oplost. Tip: ChatGPT gebruiken)
Deze laatste zegt:
1. Open de Arduino IDE
2. Ga naar Sketch → Include Library → Manage Libraries…
3. Zoek op: TimeLib
4. Installeer: Time by Michael Margolis (Die heet soms gewoon Time)
5. Start daarna de IDE opnieuw op en compileer opnieuw.
Als je het compileren weer voor elkaar hebt; zet je Arduino dan op DHCP ipv een vast IP adres (als dat kan, ik neem aan van wel).
Mocht je graag een vast IP adres hebben (wat wel handig is bij dergelijke apparaten). Dan kan je dat in je modem/router regelen (daar waar je DHCP server leeft). Daar kan je het adres per device vastzetten.

Als je dat doet heb je dit probleem nooit meer. Dit is (in de meeste gevallen) de voorkeur/meest flexibele manier om apparaten op deze manier vaste adressen te geven. (Ter vergelijking; ik heb hier in huis niets een statisch adres gegeven in het apparaat zelf, alle statische adressen zijn in de DHCP server ingesteld).

[ Voor 9% gewijzigd door remco_k op 01-03-2026 10:17 ]

Alles kan stuk.


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Dank je voor de toelichting. Ik ben morgen vrij en dan ga ik er even mee aan de slag.

Ja, ik moet het IP-adres een lager nummer geven.

Nogmaals bedankt om mij de goede richting in te sturen.

[ Voor 17% gewijzigd door andregroeneveld op 01-03-2026 17:30 ]

Groetjes André,


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Kon het niet laten om toch meteen even te kijken. Ik had Time en MsTimer2 nodig. Hij is nu goed. Morgen flashen.

Groetjes André,


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

Lukt het ook om hem op DHCP te zetten ipv een vast IP te geven?

Alles kan stuk.


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
remco_k schreef op zondag 1 maart 2026 @ 20:53:
Lukt het ook om hem op DHCP te zetten ipv een vast IP te geven?
Dat was het probleem niet. Deze stond op static altijd al.

Ik heb destijds heel veel hulp gehad via het Nederlandse Arduino forum. Met een extra SparkFun_Pro_Micro kon ik een P1 verslomer maken om de P1 van mijn slimme meter te gebruiken. Dat was in 2019, dus enige tijd terug. Ook mailde de Arduino Mega 2560_r3 mij elke dag mijn gegevens maar dat stond nog op smpt kpn en dit heb ik nu ook naar smpt gmail veranderd, als dit überhaupt nog werkt? Enige tijd terug kreeg ik WIFI problemen omdat al mijn schakelaars WIFI zijn en een hoop ander dingen waardoor er soms geen IP werd vrij gegeven. Door alles op de schop te gooien en opnieuw vaste IP te geven tot een bepaalde hoogte, kon ik weer mijn IP range via DHCP vergroten. Alleen had de Arduino Mega 2560 nog een hoog vast IP adres. Doordat het zolang geleden was was ik helemaal vergeten om waar foutmeldingen van waren. Door te downloaden van de bibliotheek in Arduino kwam het goed. Dus nu een aantekening gemaakt in de Arduino-map. Het werkt en ik ben blij :*)

Groetjes André,


  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

Moderator Wonen & Mobiliteit
@andregroeneveld Maar wat @remco_k volgens mij probeert te zeggen is dat als je naar DHCP gaat je dus af bent van het recompilen voor ander IP. Dan regel je dat gewoon centraal op je router. Naar mijn idee veel makkelijker. Loop je dus ook niet aan dat je vaste ranges voor vaste IP's moet maken etc.

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

Klopt als een bus

Alles kan stuk.


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Septillion schreef op maandag 2 maart 2026 @ 11:48:
@andregroeneveld Maar wat @remco_k volgens mij probeert te zeggen is dat als je naar DHCP gaat je dus af bent van het recompilen voor ander IP. Dan regel je dat gewoon centraal op je router. Naar mijn idee veel makkelijker. Loop je dus ook niet aan dat je vaste ranges voor vaste IP's moet maken etc.
Ook dat begrijp ik maar ik heb liever een aantal dingen met een vast IP.

Groetjes André,


  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

Moderator Wonen & Mobiliteit
@andregroeneveld Ook als dat dus via DHCP minde hoofdpijn geeft? :?

  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
Septillion schreef op maandag 2 maart 2026 @ 16:22:
@andregroeneveld Ook als dat dus via DHCP minde hoofdpijn geeft? :?
Maar ik wil overal mijn webpagina kunnen bereiken van mijn Arduino Mega met het programma solarmeter.

[ Voor 5% gewijzigd door andregroeneveld op 02-03-2026 18:20 ]

Groetjes André,


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

andregroeneveld schreef op maandag 2 maart 2026 @ 15:49:
[...]
Ook dat begrijp ik maar ik heb liever een aantal dingen met een vast IP.
Dat is juist wat ik beschrijf hoe je dat doet in een DHCP server én tevens best practice om het op die manier te doen:
Mocht je graag een vast IP adres hebben (wat wel handig is bij dergelijke apparaten). Dan kan je dat in je modem/router regelen (daar waar je DHCP server leeft). Daar kan je het adres per device vastzetten.

Alles kan stuk.


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

Ergo; dus juist niets een vast IP adres geven, alles op DHCP zetten en dan in je DHCP server die adressen vastzetten. Dan heb je die administratie op één centrale plek.

Alles kan stuk.


  • andregroeneveld
  • Registratie: Januari 2006
  • Laatst online: 15:53
remco_k schreef op maandag 2 maart 2026 @ 18:54:
Ergo; dus juist niets een vast IP adres geven, alles op DHCP zetten en dan in je DHCP server die adressen vastzetten. Dan heb je die administratie op één centrale plek.
Dat is niet handig met portforwarding.

Groetjes André,


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:46

remco_k

een cassettebandje was genoeg

Dan begrijp je nog steeds niet wat hier nu bedoeld wordt of hoe een statisch ip adres instellen in een DHCP server werkt.
Ook met portforwarding kan je dit prima doen.

Alles kan stuk.


  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

Moderator Wonen & Mobiliteit
@andregroeneveld Want? Vast IP == vast IP wat dat betreft :)

Alleen met vaste lease in de DHCP heb je het allemaal op één plek. En waarschijnlijk nog op dezelfde plek waar je portforwards maakt.
Pagina: 1