Arduino Mega slimme meter uitlezen met Solarmeter Harold65

Arduino specifieke Software
Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Arduino Mega slimme meter uitlezen met Solarmeter Harold65

Berichtdoor master64nl » 10 Jun 2019, 12:46

Beste mensen,

Ik kreeg via een een kennis een bericht dat op dit forum kennis is 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.

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?
Bijlagen
Arduino webbrowser 640 versie.jpg
Arduino webbrowser 640 versie.jpg (28.17 KiB) 1357 keer bekeken
Putty 7404 usb ttl.jpg
Putty 7404 usb ttl.jpg (51.64 KiB) 1357 keer bekeken

Advertisement

Gebruikers-avatar
Berichten: 2192
Geregistreerd: 06 Aug 2016, 01:03

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 10 Jun 2019, 20:20

Waren er ooit apparaten met een verkeerde dinges voor het gas ? Ik meen me er iets van te herinneren.
Ik heb geen verstand van die bibliotheek, maar ik kan even in de code kijken.

Bij deze regel wordt de gas waarde ingelezen: https://github.com/harold65/SolarMeter/blob/8f2cf97f13b269b32c362e6a9be9c3d1aeaded7b/P1Power.cpp#L85.

Code: Alles selecteren
// gas definition: 0-1:24.3.0
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
  if(i == 3 && j == 0) readnextLine = true; // the actual gas counter is found on the next line
}


De volgende keer is 'readnextLine' true en dan wordt dit uitgevoerd:
Code: Alles selecteren
if (readnextLine)
{
  // gas actual counter: (00127.969)
  if (sscanf(buffer,"(%ld.%ld)" , &tl, &tld) == 2)
  {
    GasUsage =  tl * 1000 + tld;
    readnextLine = false;
  }
}


Er wordt dus een 0-1:24.3 verwacht, dat is volgens mij die verkeerde dinges voor het gas. Dan stond het gas verbruik op de volgende regel.

Het programma leest blijkbaar geen 0-1:24.2 in.

Wat jij nodig hebt is zoiets als een:
Code: Alles selecteren
sscanf(buffer,"0-1:24.2.1(%sS)(%ld.%d"

Dit zal niet kloppen, ik gok maar een beetje.
Zit je op Github ? Dan kun je daar een issue maken, en daar de tekst laten zien die jij voor je gas verbruik hebt. Misschien wordt het dan opgelost.

Wat is dat eerste grote getal: 190606181...S
Is dat ergens voor nodig ?

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 10 Jun 2019, 23:35

Hi Koepel,

Wat fijn dat je wilt meedenken/helpen. Ik snap al die codes niet en daardoor kom ik er ook niet achter? Ik heb ook geen idee wat dat grote getal betekend? Ik vond het al heel stoer dat ik met een USB naar TTL USB naar Seriële Poort programmer alles zichtbaar kreeg in putty. Je heb hier met iemand te maken die deze materie niet in de vingers heeft. Wat ik wel zie is dat jij al een afwijking gezien hebt namelijk de 0-1:24.2.1 regel en Solarmeter verwacht 0-1:24.3.0 regel. Als je iets veranderd in Solarmeter zal ik elders waarschijnlijk ook iets moeten veranderen anders komt de sketch niet foutloos door de controle heen. Maar dat weet ik niet zeker. Ik zou die regel die Solarmeter verwacht kunnen veranderen en controleren of de sketch foutloos gecompileerd kan worden.

Ik heb een account op github maar zou niet weten hoe ik dat daar moet plaatsen?

Groetjes,

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 11 Jun 2019, 06:37

Dan klopt deze code dan ook niet voor power?
// Consumption: 1-0:1.8.1(00391.000*kWh)
// 1-0:1.8.2(00391.000*kWh)
// Production: 1-0:2.8.1(00391.000*kWh)
// 1-0:2.8.2(00391.000*kWh)
if (sscanf(buffer,"1-0:%d.8.%d(%ld.%ld" , &i, &j, &tl, &tld)==4)

want uit de meter komt bijv:
1-0:4.1.7.0

Hier krijg ik wel waarden van in Arduino naar PVOutput en die kloppen volgens mij ook.

Gebruikers-avatar
Berichten: 2192
Geregistreerd: 06 Aug 2016, 01:03

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 11 Jun 2019, 07:59

Ik had de verkeerde link naar de broncode gegeven, dit is de juiste link: https://github.com/harold65/SolarMeter/blob/master/P1Power.cpp.

Dat van de power begrijp ik ook niet, misschien zitten die andere er ook ergens tussen.

Je kunt op Github bij het tabblad "Issues" op de groene knop "New issue" klikken en het daar uitleggen.
Bijvoorbeeld met een titel: "Not understanding gas identifier 0-1:24.2".
Geef dan wat je leest met PuTTY als tekst. Misschien kun je voor de privacy een serienummer weghalen :?

Het grote getal is het tijdstip. Ik vond dat hier ergens in een document: https://www.netbeheernederland.nl/dossiers/slimme-meter-15/documenten.
YYMMDDhhmmssX : ASCII presentation of Time stamp with Year, Month, Day, Hour, Minute, Second, and an indication whether DST is active (X=S) or DST is not active (X=W).

Als je in de tekst van PuTTY toch nog die andere codes kunt vinden (1.8.1, 1.8.2, en zo), dan weten we voldoende om extra code toe te voegen voor de "0-1:24.2".

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 11 Jun 2019, 08:11

[b][/b]Hi Koepel, goedemorgen :)

Ik heb vanochtend vroeg vlak voor het werk even getest met die nieuwe regel erin zetten en de sketch komt er goed doorheen zonder fouten :)

Nu je mij die richting op gewezen hebt zie ik nog iets wat misschien ook veranderd moet worden, zie vetgedrukt in de code. Volgens mij moeten die corresponderen met elkaar?

// gas definition: 0-1:24.3.0
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
if(i == 3 && j == 0) readnextLine = true; // the actual gas counter is found on the next line

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 11 Jun 2019, 17:58

Ik ga de stoute schoenen aantrekken en het veranderen in de code.

// gas definition: 0-1:24.3.0
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
if(i == 3 && j == 0) readnextLine = true; // the actual gas counter is found on the next line

word dan

// gas definition: 0-1:24.2.1
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
if(i == 2 && j == 1) readnextLine = true; // the actual gas counter is found on the next line

Nu werkt het niet goed. Zie M1,2,3 en M4 en ik meet geen gas als ik gas verbruik.
Bijlagen
Arduino webbrowser na regel 0 1 24 2 1 klein .jpg
Arduino webbrowser na regel 0 1 24 2 1 klein .jpg (35.32 KiB) 1295 keer bekeken
Laatst gewijzigd door master64nl op 11 Jun 2019, 18:20, in totaal 1 keer gewijzigd.

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 11 Jun 2019, 18:19

Ik heb dit er van gemaakt:
// gas definition: 0-1:24.2.1
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
if(i == 3 && j == 0) readnextLine = true; // the actual gas counter is found on the next line

Vetgedrukt heb ik weer origineel gemaakt en dan krijg ik weer de metingen die ik had alleen nog geen gas.


Ik heb een Liander-ISKRA-ELEK_AM550-ED1_eenfase_GPRS_v1_2 meter btw.
Dit is een voorbeeld hoe het telegram van mijn meter er uit moet zien:
ESMR 5.0 / ISKRA AM550
/ISK5\2M550T-1011

1-3:0.2.8(50)
0-0:1.0.0(181106140429W)
0-0:96.1.1(4530303334303036383130353136343136)
1-0:1.8.1(003808.351*kWh)
1-0:1.8.2(002948.827*kWh)
1-0:2.8.1(001285.951*kWh)
1-0:2.8.2(002876.514*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.000*kW)
1-0:2.7.0(00.498*kW)
0-0:96.7.21(00006)
0-0:96.7.9(00003)
1-0:99.97.0(1)(0-0:96.7.19)(180529135630S)(0000002451*s)
1-0:32.32.0(00003)
1-0:52.32.0(00002)
1-0:72.32.0(00002)
1-0:32.36.0(00001)
1-0:52.36.0(00001)
1-0:72.36.0(00001)
0-0:96.13.0()
1-0:32.7.0(236.0*V)
1-0:52.7.0(232.6*V)
1-0:72.7.0(235.1*V)
1-0:31.7.0(002*A)
1-0:51.7.0(000*A)
1-0:71.7.0(000*A)
1-0:21.7.0(00.000*kW)
1-0:41.7.0(00.033*kW)
1-0:61.7.0(00.132*kW)
1-0:22.7.0(00.676*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(4730303339303031373030343630313137)
0-1:24.2.1(181106140010W)(01569.646*m3)
!1F28
/ISK5\2M550T-1011

Gebruikers-avatar
Berichten: 2192
Geregistreerd: 06 Aug 2016, 01:03

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 12 Jun 2019, 03:38

Kun je dat bestand "P1Power.cpp" weer origineel maken ?
Kun je daarna dit doen: https://github.com/harold65/SolarMeter/issues/13.
Die 5 regels voor gas vervangen door dat andere blok met code.

Ik heb het goed getest met een test string, dus ik hoop dat het werkt.
Als het werkt dan wil ik dat op Github er graag bij schrijven.

Die andere met "0-1:24.3.0" heeft ook een "0-1:24.2.1" op het eind van de regel, maar de gas-waarde staat dan op de volgende regel. Dat is wat ik bedoelde met "foute dinges". Volgens mij is dat een fout in de apparatuur en was het nooit de bedoeling dat de gas-waarde op de volgende regel terecht zou komen. De library is dus wel geschikt voor de "foute dinges", maar niet voor de normale tekst voor de gas-waarde.

Zie ik nu in je schermdump van PuTTY een paar rare tekens staan ? Heb je last van storing ? Kun je daar wat aan doen ?

Gebruikers-avatar
Berichten: 84
Geregistreerd: 10 Jun 2019, 12:16
Woonplaats: Amsterdam

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 12 Jun 2019, 06:20

Goedemorgen Koepel,

Wat fijn dat je dit voor mij gevraagd hebt. Even voor de duidelijkheid wat ik moet doen.

// gas definition: 0-1:24.3.0
if (sscanf(buffer,"0-1:24.%d.%d",&i,&j) == 2)
{
if(i == 3 && j == 0) readnextLine = true; // the actual gas counter is found on the next line

}
Dat moet ik vervangen voor:

// gas definition: 0-1:24.3.0 gas value will be on the next line
// 0-1:24.2.1 normal gas definition
//
// The timeText will be 14 characters (13 + zero terminator).
// It has the format:
// YYMMDDhhmmssX
// Year, Month, Day, Hour, Minute, Second,
// and 'S' for DST active or 'W' for DST is not active.
// It can be retrieved with sscanf with %13s or %13c.
// The %13s will reads up to 13 characters, stops at space or tab.
// The %13c will read exactly 13 characters.
// With %13c a zero terminator has to be added:
// timeText[13] = '\0';
// Reference: http://www.cplusplus.com/reference/cstdio/scanf/
char timeText[16];

// The "0-1:24.3.0" is a special case for the gas.
// There is a "0-1:24.2.1" at the end of that line,
// but the actual gas value will be on the next line.
const char gasID2430[] = "0-1:24.3.0";

if( strncmp( buffer, gasID2430, strlen( gasID2430)) == 0)
{
readnextLine = true;
}
else if( sscanf(buffer, "0-1:24.2.1(%13s)(%ld.%ld*m3)", timeText, &tl, &tld) == 3)
{
GasUsage = (tl * 1000) + tld;
}

Is dat correct?

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 0 gasten