-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
⚠️ Docker only - Reading timestamp differences (1 or 2 hours off) #1282
Comments
Bedankt voor je melding. Toevallig had iemand soortgelijke issues in xirixiz/dsmr-reader-docker/issues/171, dus mogelijk helpt dat in het vinden van de oorzaak met die null-meldingen. Wat betreft je andere issue over de foutmelding tussen 23:00 en 0:00, dat klinkt erg als een tijdzone issue en klinkt als een bug in DSMR-reader bij het bepalen van de datum aan de hand van de huidige tijd.
|
Yep. Ik had precies hetzelfde probleem als de persoon waarnaar je refereert, database was corrupt omdat de datum en tijd van de alpine docker image niet meer werkte op de Raspberry Pi 4 na een update van de containers. Dus ook hier was sprake van een update. Een korte serie van de stappen die ik heb gezet:
Tijdzone in de containers, op de host, en op de remote datalogger is allemaal Ik heb trouwens sinds het volgen van mijn eigen stappen geen problemen meer ondervonden met de NULL-waardes: het was iets wat alleen voorkwam na het terugzetten van de backup. |
@8uurg dank voor de uitgebreide toelichting. @Tralapo wellicht wil je dezelfde stappen volgen als onderin bovenstaande comment: #1282 (comment) voor het oplossen van de null-waardes. Ondertussen zal ik even kijken of ik wat kan vinden mbt de andere datumfout. |
Ik ben zowel met Docker als SQL geen enorme pro, dus eigenlijk twee losse vragen aan @8uurg:
|
Het lijkt erop dat de specifieke fout komt doordat DSMR-reader de datum gebruikt van het meest recente telegram. Dat kan wellicht botsen met een paar seconden als de meter voorloopt, maar ik ga er vanuit dat jullie meter niet heel toevallig een uur voor loopt. Helaas zie ik niet zo 1-2-3 waarom dit op deze manier gedaan is. Het is een wijziging van november 2017, dus lang geleden, voor v1.11. |
@dennissiemensma Ik weet niet of het relevant is, maar wat me wel opvalt wat tijden betreft: Als ik in de Admin naar geplande processen ga en er een aanpas, kun je naast het vakje tijd op 'Nu' klikken. Dan vult hij de correcte, huidige, tijd in, maar zodra ik op opslaan druk springt hij een uur vooruit en staat er 'over 59 minuten'. |
@Tralapo dank voor de aanvulling, des te meer vermoedens ik heb dat het iets met de tijdzone is, want ik krijg dat zelf niet voor elkaar. Wat krijg je te zien als je inlogt op de docker container en |
@dennissiemensma Ik heb zelf ook de vermoedens dat het iets met tijdzones te maken heeft gegeven het precieze uur verschil. Desnoods kan ik kijken of het met het terugzetten van de backup te maken heeft/of het door iets wat al in de database staat, te maken heeft door een losse database en een schone installatie te bekijken. |
Heb dit gecheckt met |
@8uurg wat krijg je te zien op de commandline in de docker container als je De (standaard) remote datalogger stuurt verder gewoon het telegram door, met de datumtijd van de meter, dus daar verwacht ik ook geen afwijkingen. |
Wat krijgen jullie te zien als jullie in de database container dit doen? Ik weet overigens niet of het eerst command nodig is in Docker.
Bij mij is het:
Wat klopt, in de zin dat het 1 uur achterloopt, maar dat dat gecompenseerd wordt met |
Hier nog even in afbeeldingen wat er gebeurt als ik een gepland proces met de hand invul op nu + 2 minuten. Zodra ik op opslaan heb gedrukt, schiet hij een uur vooruit: @dennissiemensma Met
|
@dennissiemensma In de container bestaat bij mij de postgres user niet, deze stap sla ik dus over. |
@8uurg Het loopt hier allemaal wat (snel) door elkaar heen nu, maar zou jij mij nog even kunnen toelichten hoe je die acties toepast om de null fouten weg te krijgen? Ik zit nog steeds voornamelijk met dat probleem namelijk, maar begrijp niet helemaal waar/hoe ik de fix toepas. |
@Tralapo De NULL fouten komen -- mijn inziens -- door telegrams die om een onbekende reden na verwerking overal null voor hebben (behalve de timestamp). De database faalt ze te verwerken (ze voldoen niet aan de eisen voor een valide waarde in de database), maar de verwerkingsprocedure probeert het dan opnieuw: het bericht is nog niet verwerkt.
ervoor dat deze eisen komen te vervallen, de database staat toe dat deze waardes worden toegevoegd.
(Ik ga er van uit dat er, net zoals bij mij, er sprake is dat alle waardes null zijn, en dat dus een check for een enkele kolom die non-null is volstaat) Vervolgens zet ik de eisen weer terug naar normaal:
|
@8uurg Maar hoe kom ik 'in' docker om deze SQL acties in te voeren? Simpelweg Wat bedoel je precies met het hebben van een backup? Ben ik na deze actie alle gegevens uit dsmr kwijt? |
Klopt!
Je raakt niet alle data kwijt, maar als je in een live database data gaat verwijderen word ik altijd nerveus. Ik zorg er altijd voor en raad aan dat er een backup is: een typefout kan wel alles verwijderen... |
Volgens mij doe ik het niet goed:
|
Uh. Hij heeft de aanpassingen in een keer succesvol doorgevoerd. De bedoeling was meer om
te gebruiken om een command line te krijgen en ze daarin uit te voeren. Het commando is correct uitgevoerd, dus je hoeft het niet opnieuw te doen... |
Ah, bedankt. Heb voor de zekerheid de eerste reeks ALTER TABLE commando's nog een keer gedaan via die interface. De DELETE actie lijkt alleen niet echt iets te doen daarna, klopt dat?
|
Als het goed zou zijn, zou hij alle NULLs verwijderd moeten zijn, of zijn ze nog niet toegevoegd. |
Ik had natuurlijk weer veel te veel haast. Heb de boel even opnieuw opgestart en de eerste reeks Inmiddels, een paar minuutjes later, zie ik voor het eerst de hoeveelheid onverwerkte telegrammen omlaag gaan in plaats van omhoog! Van ruim 26000 stuks naar ruim 22000 stuks nu. Nog even geduld dus, maar er lijkt iets te gebeuren. Update: Dat probleem is dus uit de weg! Ik kan zelf nog niet bevestigen of ik tussen 23:00 en 00:00 ook niet in de interface kan (niet getest), maar kans lijkt groot omdat ik wel vergelijkebare tijd-afwijkingen lijk te hebben. |
Dank voor jullie input, ik heb dan geen verdere ideeen meer waar het aan kan liggen qua 23:00-0:00. Er is nu overigens een derde Docker-gebruiker die hetzelfde probleem heeft qua null-velden in #1288, dus ik ben heel benieuwd wat er in Docker of PostgreSQL gebeurd is met jullie dat dit plotseling speelt. Ik houdhet huidige issue wel voor "23:00-0:00" en zal de oplossing voor de null-velden in de andere zetten. |
Nog een aanvulling: bij mij loopt hij nu ~600 readings achter, wat ongeveer overeen komt met 1 uur. Dit aantal loopt ook niet meer verder terug... |
Toch weer een kleine correctie/aanvulling hierop. Dan ontstaat het andere issue weer, waarbij de containers van zowel DSMR als de DB eindeloos blijven herstarten. De log zegt dan dit (check ook de timestamps):
De container blijft alleen niet eens lang genoeg online om de database te kunnen droppen (die mogelijk corrupt is geraakt) en een backup terug te zetten om te kijken wat er dan gebeurt. Als ik dan alles verwijder, een nieuwe container maak op basis van Vreemd, maar |
Goede analyse heren, jammer dat ik niet veel bij heb kunnen dragen. Ik ben dit weekend helaas druk met andere zaken. De DSMR image (latest) is gebaseerd op, dus het issue zit idd zoals eerder gedacht echt in de Alpine PG release.
|
Voor de mensen die afvragen wat er met de Alpine images mis is: ze zijn overgestapt naar 64 bits tijd. (Zie https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0#time64_requirements) Het probleem is echter dat een tussenlaag waar docker gebruik van maakt ( De standaarddistributie voor een Raspberry Pi is op Debian (Buster) gebaseerd, updaten van libseccomp2 naar een nieuwere versie die wel 64-bits tijd ondersteunt gaat dan als volgt.
Als het goed is zullen alle alpine images nu weer werken (incl. de nieuwe update van DSMR-reader!) Wat betreft het tijdsverschil: dat verdwijnt als zowel DSMR-reader als de database binnen een Alpine Linux container draaien. Als je |
Images based on Debian are now available (development tag). Please verify and let me know if eveything is working properly again so I can proceed and create a PR to the master branch and build new "production" releases. |
Thanks! Ik heb het toegevoegd aan de initiele tekst in dit issue. |
Ik heb vorige week naar aanleiding van de comment van @8uurg de |
Na de upgrade naar v4.12 faalt de backup, omdat pg_dump nu ineens versie 11.10 heeft en de database postgres 12 is/was. Na een downgrade naar postgres 11.10 werkt de backup weer. Heb dus handmatig een backup moeten maken van de database waar ik wel toegang had tot een pg_dump versie 12. |
Hallo, ik ben nieuw in dit topic (en zal me later uitgebreider introduceren) maar heb hetzelfde probleem met de docker image. Ik gebruik een remote datalogger op de P1 poort die de telegrammen via wifi doorstuurt. DSMR Reader draait in docker op mijn thuisserver (amd64, Debian 10 Buster, eigenlijk OpenMediaVault 5). Het probleem is bij mij ook de timestaps van de telegrammen, die lopen 1 uur voor. De datalogger en de server gebruiken NTP, die tijd loopt bij. In beide dockers dsmr en dsmrdb geeft commando date ook de juiste tijd aan. De log files van beide dockers hebben de juiste tijd. De web GUI van DSMR Reader geeft de juiste tijd aan in de header. Maar onder "DSMR Meter statistics (read only)" toont de timestamp van het laatste telegram een tijd die een uur voor loopt. Vreemd genoeg doet de "live view" daar nog een schepje bovenop, die loopt 2 uur voor. Het lijkt fout te gaan met tijdzones en mogelijk DST. Nav de genoemde oplossing heb ik de docker image aangepast naar EDIT: problem solved, oplossing gevonden in een andere issue. In de dsmrdb container heb ik de regel met volume |
yes.. het verwijderen van etc/local ... hielp.Geen idee wat ik heb gedaan maar ik krijg weer data binnen... |
Ik heb de regel uit het docker-compose voorbeeld verwijderd, en daarnaast heb ik "common issues" opgenomen in de README en dit issue benoemd. Overiges kan je nu ook gewoon weer deze tag/release gebruiken: Goed werk verricht, daar hou ik van zelf ook gedegen onderzoek verrichten 👍 ! |
Hoi Bram, thx!! groet, Ronald |
Ik probeer dit command uit te voeren maar krijg deze fout melding |
@marcovtr je kunt het beste even een nieuw issue openen en vermelden wat je allemaal gebruikt |
Oplossing
Verwijder deze mount:
Alternatief
#1282 (comment)
Oorspronkelijk issue:
Omgeving
Ik draai DSMR reader in Docker, met een remote datalogger.
(voor unprocessed readings heb ik de reportagesnelheid al op 5s gezet, ipv de standaardwaarde van 0.5s.)
Probleemomschrijving
Na terugzetten van een backup probeert DSMR na opstarten herhaaldelijk rijen toe te voegen waarin waardes voorkomen met
null
:Dit herhaalt zich zo ongeveer iedere 30s, ondertussen update de live grafiek niet.
Verder heb ik tussen 23:00 en 24:00 geen toegang tot het dashboard en krijg ik het volgende bericht (om 23:18):
Kanttekening
Voor als iemand anders dit tegenkomt: Ik heb dit kort opgelost door de constraints uit de tabellen te verwijderen
Om de rijen toegevoegd te laten worden, om ze vervolgens weer te verwijderen:
En de constraints weer teruggezet:
Voor het laatste probleem heb ik echter geen oplossing... De datum en tijd in de containers (dsmr en db) zijn correct.
The text was updated successfully, but these errors were encountered: