Arduino Mega slimme meter uitlezen met Solarmeter Harold65

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 18 Jun 2019, 06:11

Handz, heb jij dit al gedaan want ik weet niet precies hoe dat moet?

- Seriele buffer verhogen (Arduino Mega has Flash 256k bytes (of which 8k is used for the bootloader) SRAM 8k bytes EEPROM 4k byte).
- De afhandeling van een regel
- Deze code Serial.println(bufpos); weg commentariëren
- Alle sscanf() te vervangen door strncmp()
- if (sscanf ... vervangen voor else if (sscanf ...

Advertisement

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 18 Jun 2019, 12:32

Zijn jullie serieus ? :roll: :roll: :roll:
Ik spui zomaar wat ideeën om het sneller te maken, maar dat is niet genoeg.

Als het niet mogelijk is om tussen de telegrammen door andere dingen te doen, dan zit er niets anders op dan tijd te claimen voor het telegram.
Ik weet niet of er een paar seconden gewacht kan worden om op een telegram te wachten. Als dat kan, dan is het in te lezen.
Omdat de RX buffer in de Serial library waarschijnlijk telegrammen heeft met ontbrekende stukken, wil ik die eerst leegmaken.

Samen met mijn andere ideeën wordt het dan zoiets:
Code: Alles selecteren
Zet de MsTimer2 uit. Die loopt iedere 5ms, en in de 5ms gebeurt er van alles.
Laat wel de WatchDog-reset doorlopen, maar alleen de wdt_reset(), niet het schrijven naar EEPROM.
Haal de RX buffer leeg (alles weglezen met serial.read).
Start een timeout met millis() voor bijvoorbeeld drie seconden.
Wacht in de drie seconden op het begin van een telegram, dat is een '/'.
Alles wat geen '/' is, gewoon weggooien.
Zodra dat ingelezen wordt, dan start het inlezen.
Start een nieuwe timeout van 1 seconde. Volgens de beschrijvingen mag een telegram niet langer duren dan 1 seconde.
Lees het telegram in en verwerk het.
Aan het einde van het telegram (een '!') of als de timeout afloopt dan alles weer normaal zetten.


Ik heb een Landis + Gyr E350 met zonnepanelen op het dak en een 10 meter lange USB kabel (zo'n kabel met ingebouwde versterker) die tot de meterkast komt. Het lukt me nog niet om iets uit mijn meter te krijgen :(

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 18 Jun 2019, 14:12

Koepel schreef:Zijn jullie serieus ? :roll: :roll: :roll:
Ik spui zomaar wat ideeën om het sneller te maken, maar dat is niet genoeg.

Als het niet mogelijk is om tussen de telegrammen door andere dingen te doen, dan zit er niets anders op dan tijd te claimen voor het telegram.
Ik weet niet of er een paar seconden gewacht kan worden om op een telegram te wachten. Als dat kan, dan is het in te lezen.
Omdat de RX buffer in de Serial library waarschijnlijk telegrammen heeft met ontbrekende stukken, wil ik die eerst leegmaken.

Samen met mijn andere ideeën wordt het dan zoiets:
Code: Alles selecteren
Zet de MsTimer2 uit. Die loopt iedere 5ms, en in de 5ms gebeurt er van alles.
Laat wel de WatchDog-reset doorlopen, maar alleen de wdt_reset(), niet het schrijven naar EEPROM.
Haal de RX buffer leeg (alles weglezen met serial.read).
Start een timeout met millis() voor bijvoorbeeld drie seconden.
Wacht in de drie seconden op het begin van een telegram, dat is een '/'.
Alles wat geen '/' is, gewoon weggooien.
Zodra dat ingelezen wordt, dan start het inlezen.
Start een nieuwe timeout van 1 seconde. Volgens de beschrijvingen mag een telegram niet langer duren dan 1 seconde.
Lees het telegram in en verwerk het.
Aan het einde van het telegram (een '!') of als de timeout afloopt dan alles weer normaal zetten.


Ik heb een Landis + Gyr E350 met zonnepanelen op het dak en een 10 meter lange USB kabel (zo'n kabel met ingebouwde versterker) die tot de meterkast komt. Het lukt me nog niet om iets uit mijn meter te krijgen :(


Ja, ik ben serieus. Ik heb geen verstand van dat c++ en zie mij dat ook niet snel onder de knie krijgen. Genoeg hobby`s en werk waar ik al genoeg voor moet bijblijven. Een leven is te weinig voor mij ;)
Ik wil graag al die dingen toepassen maar weet niet hoe? Je zult echt de originele code moeten laten zien en dan zeggen vervang voor deze voor deze. Graag zelfs! Misschien doordat te doen dat ik wat meer inzicht krijg.

Ik weet niet wat Handz allemaal al toegepast heeft? Ik heb nog niets gezien behalve Serial.println(bufpos); weg commentariëren.

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 18 Jun 2019, 14:26

Maar ik weet dus niet of er een paar seconden gewacht kan worden om op een telegram te wachten :!:
Als daardoor andere dingen van de sketch in de soep lopen, dan is het niet mogelijk.

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 18 Jun 2019, 16:14

Koepel schreef:Maar ik weet dus niet of er een paar seconden gewacht kan worden om op een telegram te wachten :!:
Als daardoor andere dingen van de sketch in de soep lopen, dan is het niet mogelijk.


Als we beginnen met al die wijzigingen zonder aan die tijd te rommelen. Gewoon baby stapjes maken :)

Berichten: 17
Geregistreerd: 13 Jun 2019, 14:24

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Handz » 18 Jun 2019, 16:33

Op dit moment krijg ik met mijn Arduino ongeveer 10-20 foute datapieken per dag (hele hoge waarden voor consumption in de Arduino server en op PVOutput) en dat klopt aardig met de voorspelde foutmarge van de Arduino Mega uitgelezen op 115200 baudrate. Daarmee is mijn consumption data zo goed als onbruikbaar. Gek komen de andere waarden goed door.

De beide verbouwingen voorgesteld door Koepel zijn wel een hele puist werk en dat vergt inderdaad een tweede leven aan hobbytijd. De vraag is inderdaad of de voorgestelde verbeteringen genoeg helpen.

- Seriele buffer verhogen (Arduino Mega has Flash 256k bytes (of which 8k is used for the bootloader) SRAM 8k bytes EEPROM 4k byte).
- De afhandeling van een regel
- Deze code Serial.println(bufpos); weg commentariëren
- Alle sscanf() te vervangen door strncmp()
- if (sscanf ... vervangen voor else if (sscanf ...


Zet de MsTimer2 uit. Die loopt iedere 5ms, en in de 5ms gebeurt er van alles.
Laat wel de WatchDog-reset doorlopen, maar alleen de wdt_reset(), niet het schrijven naar EEPROM.
Haal de RX buffer leeg (alles weglezen met serial.read).
Start een timeout met millis() voor bijvoorbeeld drie seconden.
Wacht in de drie seconden op het begin van een telegram, dat is een '/'.
Alles wat geen '/' is, gewoon weggooien.
Zodra dat ingelezen wordt, dan start het inlezen.
Start een nieuwe timeout van 1 seconde. Volgens de beschrijvingen mag een telegram niet langer duren dan 1 seconde.
Lees het telegram in en verwerk het.
Aan het einde van het telegram (een '!') of als de timeout afloopt dan alles weer normaal zetten.


Ik heb als parallel oplossing een Nodemcu V3 (ESP8266) bordje besteld en ga kijken of ik daarmee de telegrammen wel goed kan binnenhalen. Dat is wel een "whole new can of worms", want de Nodemcu draait op 3.3V en mijn huidige P1 kabel op basis van 5V en een 74LS04 Hex inverter werkt dus niet meer en ik moet dus iets nieuws bastelen.
Bovendien maakt het woud aan benodigde firmwares (AT firmware, NodeMCU LUA firmware, ESP Easy firmware???), flashtools, wifi-instellingen etc. etc. het er allemaal niet eenvoudiger op.

Wat betreft uren en frustratie zou je logischerwijs een kant en klaar oplossing moeten kopen, maar dat is wel mijn eer te na.

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 18 Jun 2019, 18:09

Als je mij codes voor kouwt dan wil ik wel die baby stapjes maken.

Ik wil eigenlijk pas aan iets nieuws beginnen als het echt niet lukt. Het vervelende is dat het forum wijhebbenzon er niet meer is want daar waren er een paar die hadden de code van Harold verbouwd en draaide op de Arduino Mega. Toen dacht ik van tegen die tijd dat ik een slimme meter krijg dan zet ik dat er in. NOT! forum weg.

Er is wel iemand van dat forum die heeft het op een ESP laten draaien, zie https://github.com/JeffrySteegmans/SolarMeter. Maar goed, ik wou graag de Arduino Mega dit laten doen.

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 18 Jun 2019, 19:43

Een delay van 50 ms in de loop() duurt ook op een ESP8266 50 ms: https://github.com/JeffrySteegmans/SolarMeter/blob/master/Solarmeter.ino#L246.

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor master64nl » 18 Jun 2019, 21:00

Koepel schreef:Een delay van 50 ms in de loop() duurt ook op een ESP8266 50 ms: https://github.com/JeffrySteegmans/SolarMeter/blob/master/Solarmeter.ino#L246.


Koepel,

Wat bedoel je daar mee? Dat wat jij in gedachte hebt en voorstelt op de Arduino Mega gaat werken ? :D

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

Re: Arduino Mega slimme meter uitlezen met Solarmeter Harold

Berichtdoor Koepel » 18 Jun 2019, 21:59

Die 50ms delay betekend dat de RX buffer vol raakt. De library is dan wel geschikt gemaakt voor de ESP8266, maar ik heb mijn twijfels of die 115200 baud daar wel werkt.

VorigeVolgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: ahuteexmiw, effisuveo, ivabofaf en 24 gasten