Alleen 3 regels uit p1 poort
Re: Alleen 3 regels uit p1 poort
Nou, Vandaag getest op de DSMR2.2 met de 9600 baudrate.
Dit ging goed!
Maar bij navraag en zelf even gekeken te hebben blijkt deze helemaal geen gekoppelde gasmeter te hebben, dus dit stukje kunnen we nog niet testen.
Maar met die switch op pin 2 werkt goed.
Meter ISKRA MT382 (DSMR2.2):
Meter Landis+Gyr E350 (DSMR4.0):
Meter ISKRA AM550 (DSMR5.0):
Dit ging goed!
Maar bij navraag en zelf even gekeken te hebben blijkt deze helemaal geen gekoppelde gasmeter te hebben, dus dit stukje kunnen we nog niet testen.
Maar met die switch op pin 2 werkt goed.
Meter ISKRA MT382 (DSMR2.2):
- Code: Alles selecteren
Gestart
P1 poort op 9600 baudrate voor DSMR2.2
---> Telegram iedere : 7.73 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283877
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9033
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 10.00 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283903
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9033
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 9.99 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283929
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9035
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 10.00 seconden
Meter Landis+Gyr E350 (DSMR4.0):
- Code: Alles selecteren
Gestart
P1 poort op 115200 baudrate voor DSMR4.0 of hoger
---> Telegram iedere : 6.32 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 37827956
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand verbruik HOOG tarief (Wh): 73178924
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 3049
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 41296.523
---> CRC checksum gedetecteerd: EAED
---> Telegram iedere : 10.01 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 37827956
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand verbruik HOOG tarief (Wh): 73178932
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 3038
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 41296.523
---> CRC checksum gedetecteerd: FEE3
---> Telegram iedere : 10.01 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 37827956
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand verbruik HOOG tarief (Wh): 73178941
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 3043
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 41296.523
---> CRC checksum gedetecteerd: F95A
---> Telegram iedere : 10.01 seconden
Meter ISKRA AM550 (DSMR5.0):
- Code: Alles selecteren
Gestart
P1 poort op 115200 baudrate voor DSMR4.0 of hoger
---> Telegram iedere : 0.02 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 19710948
Elektra - meterstand verbruik HOOG tarief (Wh): 18468491
Elektra - meterstand teruglevering LAAG tarief (Wh): 2
Elektra - meterstand teruglevering HOOG tarief (Wh): 4
Elektra - actueel verbruik (W): 3508
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 9988.049
---> CRC checksum gedetecteerd: 9596
---> Telegram iedere : 1.00 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 19710948
Elektra - meterstand verbruik HOOG tarief (Wh): 18468492
Elektra - meterstand teruglevering LAAG tarief (Wh): 2
Elektra - meterstand teruglevering HOOG tarief (Wh): 4
Elektra - actueel verbruik (W): 3478
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 9988.049
---> CRC checksum gedetecteerd: A367
---> Telegram iedere : 1.00 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 19710948
Elektra - meterstand verbruik HOOG tarief (Wh): 18468493
Elektra - meterstand teruglevering LAAG tarief (Wh): 2
Elektra - meterstand teruglevering HOOG tarief (Wh): 4
Elektra - actueel verbruik (W): 3453
Elektra - actueel teruglevering (W): 0
Gas - meterstand (m3): 9988.049
---> CRC checksum gedetecteerd: 3A10
---> Telegram iedere : 1.00 seconden
Advertisement
Re: Alleen 3 regels uit p1 poort
Zojuist zag ik toch een afwijking bij de 9600 baud versie..
De meterstanden kloppen niet, bijgevoegd de echte meterstand en in het register staat:
De meterstanden kloppen niet, bijgevoegd de echte meterstand en in het register staat:
- Code: Alles selecteren
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283877
Re: Alleen 3 regels uit p1 poort
Ik schreef al: "Als je een waarde niet ziet, of een getal klopt niet, kun je dan die regel uit het telegram laten zien ? Dan kan ik mijn sketch daar op aanpassen". Dus het is echt nodig dat je die regel of het hele telegram laat zien.
Om het te controleren is het nodig dat ieder cijfer klopt.
Stel dat in een telegram staat: "1-0:1.8.1(037779.54*kWh)" terwijl verwacht wordt "1-0:1.8.1(037779.548*kWh)" dan gaat het al verkeerd (het verschil is de ene keer drie cijfers achter de punt en de andere keer twee cijfers).
Je mag ook de sketch zelf gebruiken en het commentaar weghalen.
Dus deze sketch: http://arduinoforum.nl/viewtopic.php?f=8&t=4034&start=30#p27252, daar staat dit:
Als je die Serial.write( inChar); wel doet, dan wordt alles doorgegeven naar de seriële monitor, zowel het telegram als wat de sketch er uit haalt.
In de sketch worden de waarden ingelezen in de variabelen 'tl' en 'tld', waarbij 'tl' het cijfer vóór de punt is en 'tld' het cijfer na de punt. Het is dus eenvoudig om in de seriële monitor die punt er tussen te zetten. Maar ik weet niet wat jij wilt.
Ik zie overeenkomsten in de getallen, maar ik begrijp er niets van
357284 -> 57283877 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
171801 -> 71801117 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
Gelukkig komen de telegrammen netjes iedere seconde of iedere 10 seconden binnen. Het signaal lijkt betrouwbaar.
Als je in de sketch iets hebt gewijzigd, dan graag de hele sketch weer laten zien. Misschien heeft die sketch een versie-nummer en een naam nodig.
Om het te controleren is het nodig dat ieder cijfer klopt.
Stel dat in een telegram staat: "1-0:1.8.1(037779.54*kWh)" terwijl verwacht wordt "1-0:1.8.1(037779.548*kWh)" dan gaat het al verkeerd (het verschil is de ene keer drie cijfers achter de punt en de andere keer twee cijfers).
Je mag ook de sketch zelf gebruiken en het commentaar weghalen.
Dus deze sketch: http://arduinoforum.nl/viewtopic.php?f=8&t=4034&start=30#p27252, daar staat dit:
- Code: Alles selecteren
// Voor debuggen:
// Serial.write( inChar);
Als je die Serial.write( inChar); wel doet, dan wordt alles doorgegeven naar de seriële monitor, zowel het telegram als wat de sketch er uit haalt.
In de sketch worden de waarden ingelezen in de variabelen 'tl' en 'tld', waarbij 'tl' het cijfer vóór de punt is en 'tld' het cijfer na de punt. Het is dus eenvoudig om in de seriële monitor die punt er tussen te zetten. Maar ik weet niet wat jij wilt.
Ik zie overeenkomsten in de getallen, maar ik begrijp er niets van
357284 -> 57283877 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
171801 -> 71801117 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
Gelukkig komen de telegrammen netjes iedere seconde of iedere 10 seconden binnen. Het signaal lijkt betrouwbaar.
Als je in de sketch iets hebt gewijzigd, dan graag de hele sketch weer laten zien. Misschien heeft die sketch een versie-nummer en een naam nodig.
Re: Alleen 3 regels uit p1 poort
Koepel schreef:Ik schreef al: "Als je een waarde niet ziet, of een getal klopt niet, kun je dan die regel uit het telegram laten zien ? Dan kan ik mijn sketch daar op aanpassen". Dus het is echt nodig dat je die regel of het hele telegram laat zien.
Om het te controleren is het nodig dat ieder cijfer klopt.
Stel dat in een telegram staat: "1-0:1.8.1(037779.54*kWh)" terwijl verwacht wordt "1-0:1.8.1(037779.548*kWh)" dan gaat het al verkeerd (het verschil is de ene keer drie cijfers achter de punt en de andere keer twee cijfers).
Je mag ook de sketch zelf gebruiken en het commentaar weghalen.
Dus deze sketch: http://arduinoforum.nl/viewtopic.php?f=8&t=4034&start=30#p27252, daar staat dit:
- Code: Alles selecteren
// Voor debuggen:
// Serial.write( inChar);
Als je die Serial.write( inChar); wel doet, dan wordt alles doorgegeven naar de seriële monitor, zowel het telegram als wat de sketch er uit haalt.
In de sketch worden de waarden ingelezen in de variabelen 'tl' en 'tld', waarbij 'tl' het cijfer vóór de punt is en 'tld' het cijfer na de punt. Het is dus eenvoudig om in de seriële monitor die punt er tussen te zetten. Maar ik weet niet wat jij wilt.
Ik zie overeenkomsten in de getallen, maar ik begrijp er niets van
357284 -> 57283877 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
171801 -> 71801117 (eerste cijfer verschuift naar vijfde positie, er komen drie cijfers bij)
Gelukkig komen de telegrammen netjes iedere seconde of iedere 10 seconden binnen. Het signaal lijkt betrouwbaar.
Als je in de sketch iets hebt gewijzigd, dan graag de hele sketch weer laten zien. Misschien heeft die sketch een versie-nummer en een naam nodig.
Ik heb die sketch gebruikt en het telegram ook geplaats, het is deze telegram:
Ik heb niks aan de sketch veranderd! Het gaat dus alleen mis bij de 9600 baudrate gedeelte..
- Code: Alles selecteren
Gestart
P1 poort op 9600 baudrate voor DSMR2.2
---> Telegram iedere : 7.73 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283877
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9033
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 10.00 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283903
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9033
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 9.99 seconden
Elektra - meterstand verbruik LAAG tarief (Wh): 71801117
Elektra - meterstand verbruik HOOG tarief (Wh): 57283929
Elektra - meterstand teruglevering LAAG tarief (Wh): 0
Elektra - meterstand teruglevering HOOG tarief (Wh): 0
Elektra - actueel verbruik (W): 9035
Elektra - actueel teruglevering (W): 0
---> Telegram iedere : 10.00 seconden
Ik weet niet of hij dat cijfer naar de 5e rij verplaatst omdat als je het afrond ook daarop uitkomt toch?
Het lijkt wel alsof hij alleen het eerste getal niet plaatst
Re: Alleen 3 regels uit p1 poort
Sorry, maar ik denk dat dit niet gaat werken.
Je kunt beter een sketch zoeken van iemand die het al geschikt heeft gemaakt voor meerdere soorten meters.
Je kunt beter een sketch zoeken van iemand die het al geschikt heeft gemaakt voor meerdere soorten meters.
Re: Alleen 3 regels uit p1 poort
Het gaat niet fout in de posities na de komma maar het eerste cijfer wordt juist weggelaten.
Op het display staat de waarde in kW. Alles na de komma wordt op het display weggelaten.
Bij het omrekenen naar W gaat het waarschijnlijk fout.
Er staat bijvoorbeeld 71801117 W dit moet zijn 171801117(W) of 171801,117 kW
Ik denk dat de hoge meterstand ergens niet in een variabele past.
Probleem is denk ik op te lossen door van bovenstaande velden unsigned long te maken.
Andere oplossing zou kunnen zijn
Wijzigen in
Hiermee worden de cijfers na de komma dus weggelaten.
Wijzigen natuurlijk voor elke meterstand (hoog laag en gas)
m.v.g. Nico
Drie fase meter vast niet voor een "woonhuis".
Op het display staat de waarde in kW. Alles na de komma wordt op het display weggelaten.
Bij het omrekenen naar W gaat het waarschijnlijk fout.
Er staat bijvoorbeeld 71801117 W dit moet zijn 171801117(W) of 171801,117 kW
Ik denk dat de hoge meterstand ergens niet in een variabele past.
- Code: Alles selecteren
long mEVLT; // Meterstand Elektra - verbruik laag tarief
long mEVHT; // Meterstand Elektra - verbruik hoog tarief
long mETLT; // Meterstand Elektra - teruglevering laag tarief
long mETHT; // Meterstand Elektra - teruglevering hoog tarief
long mEAV; // Meterstand Elektra - actueel verbruik
long mEAT; // Meterstand Elektra - actueel teruglevering
Probleem is denk ik op te lossen door van bovenstaande velden unsigned long te maken.
Andere oplossing zou kunnen zijn
- Code: Alles selecteren
mEVLT = tl * 1000 + tld;
Wijzigen in
- Code: Alles selecteren
mEVLT = tl ;
Hiermee worden de cijfers na de komma dus weggelaten.
Wijzigen natuurlijk voor elke meterstand (hoog laag en gas)
m.v.g. Nico
Drie fase meter vast niet voor een "woonhuis".
Re: Alleen 3 regels uit p1 poort
Bedankt Nico voor het meedenken, het is geen woonhuis nee maar een bedrijfspand waar ik deze kan testen.
Ik zal dit maandag weer even proberen.
Wat koepel ook schreef zal ik even die Serial.write( inChar); even proberen en het verschil laten zien.
Ben ook erg benieuwd hoe ik deze sketch op een ESP32 draaiend kan krijgen trouwens. Daar krijg ik voor mij onbekende foutmeldingen te zien tijdens het verifiëren.
Ik zal dit maandag weer even proberen.
Wat koepel ook schreef zal ik even die Serial.write( inChar); even proberen en het verschil laten zien.
Ben ook erg benieuwd hoe ik deze sketch op een ESP32 draaiend kan krijgen trouwens. Daar krijg ik voor mij onbekende foutmeldingen te zien tijdens het verifiëren.
- Code: Alles selecteren
exit status 1
'sscanf_P' was not declared in this scope
Re: Alleen 3 regels uit p1 poort
Ik zie in een voorgaand post nu dat je alleen in kW geïnteresseerd bent en dus bij de andere meters door 1000 moet delen.
Mij tweede voorstel lost dat voor de andere meters ook gelijk op delen is dan niet meer nodig.
Geeft wel een afrondingsfoutje.
Weet je zeker dat de ESP foutmelding bedoelt wat er staat.
Is het geen fout in de { en } Daarbij krijg je ook wel eens vreemde meldingen.
m.v.g. Nico
Mij tweede voorstel lost dat voor de andere meters ook gelijk op delen is dan niet meer nodig.
Geeft wel een afrondingsfoutje.
Weet je zeker dat de ESP foutmelding bedoelt wat er staat.
Is het geen fout in de { en } Daarbij krijg je ook wel eens vreemde meldingen.
m.v.g. Nico
Re: Alleen 3 regels uit p1 poort
Het kan ook zijn dat scanf_P niet geïmplementeerd is op een ESP32
De code moet dan worden gewijzigd naar de variant zonder _P
Dus naar sscanf
In mijn schets staat: if (sscanf(buffer, "1-0:%d.8.%d(%ld.%ld" , &i, &j, &tl, &tld)
Het verschil zit in waar de constante waarnaar gezocht wordt, wordt geladen in het geheugen van de ESP
Zie https://www.microchip.com/webdoc/AVRLibcReferenceManual/assembler.html
(zoek hierin naar scanf)
De code moet dan worden gewijzigd naar de variant zonder _P
Dus naar sscanf
In mijn schets staat: if (sscanf(buffer, "1-0:%d.8.%d(%ld.%ld" , &i, &j, &tl, &tld)
Het verschil zit in waar de constante waarnaar gezocht wordt, wordt geladen in het geheugen van de ESP
Zie https://www.microchip.com/webdoc/AVRLibcReferenceManual/assembler.html
(zoek hierin naar scanf)
Re: Alleen 3 regels uit p1 poort
Het was inderdaad de scanf_P, deze aangepast naar scanf en nu lukt het verifiëren wel. Heb nu alleen geen ESP thuis liggen om hem te testen, komt maandag wel die test.
Ik vind Wh ook prima maar uiteindelijk wil ik een output hoog brengen als er een KW bij gekomen is, dit om een externe teller aan te sturen.
Zit alleen even te zoeken naar voorbeelden hoe ik een serial input waarde kan gebruiken om dus verschillen te gaan zien en acties uit te gaan voeren.
Ik vind Wh ook prima maar uiteindelijk wil ik een output hoog brengen als er een KW bij gekomen is, dit om een externe teller aan te sturen.
Zit alleen even te zoeken naar voorbeelden hoe ik een serial input waarde kan gebruiken om dus verschillen te gaan zien en acties uit te gaan voeren.
- Code: Alles selecteren
{
{
// 1-0:1.8.1 = Elektra verbruik laag tarief (DSMR v4.0)
mEVLT = tl * 1000 + tld;
Serial.print( F( "Elektra - meterstand verbruik LAAG tarief (Wh): "));
Serial.println( mEVLT);
if (mEVLT + 1KW bijvoorbeeld...dan:) {
Serial.println("+1KW bijvoorbeeld");
}
}
Wie is er online?
Gebruikers in dit forum: Google [Bot] en 6 gasten