Closed Harveg closed 3 years ago
Erste Ideen basierend auf diesem Beitrag sind in der folgenden branch abgelegt. Nun frag ich mich ob ich auf dem richtigen weg bin? https://github.com/Davideee/hiag_watchdog_win/tree/hotfix_db_client
Bei mir auf jeden Fall muss noch nachgebessert werden der function call für den infuxdb_client_hiag aus dem watchdog macht noch Probleme und das locking verstehe ich noch nicht ganz...
@Harveg Ist hier jetzt noch etwas offen?
Salut Die Implementierung vom Locking hat geklappt und es funktioniert soweit gut. Danke für den schnellen Support! Hab leider festgestellt, dass es noch ein Problem gibt beim Abfragen der Lot-NR Timestamps. Es wird der letzte Zeitstempel welcher bereits in der DB im entsprechenden Raum liegt, ausgelesen sobald eine neue LOT-NR durch die Openhab API erkannt wird. So werden dann eigentlich alle Datenpunkte vom aktuellen Zeitpunkt bis zurück zum letzten Eintrag in der DB (z.B. Raum 2) übertragen für die neue LOT-NR. Auch wenn manuel eine Zeit eingetragen wird, welcher in der Zukunft liegt, werden die Datenpunkte bis zum letzten Eintrag eingetragen. Das Problem konnte ich noch nicht genau eingrenzen, es wird vermutlich im grow-room sein wobei es stark davon abhängt wie die last db entry list mit den entsprechenden LOT-Nr daherkommt. Weist du wie man die last db entry list am besten plottet?
Der Fehler wurde mittels folgendem commit behoben
Der hiag_watchdog zeigt nun Grenzen auf des aktuellen Setups heim Hempner und macht nun fast bei jeder db_Abfrage exceptions: "Some problem occured when reading data from ..." Das Problem ist im influxdb_client welcher zwar vor jeder Abfrage einen _check_health_of_client macht und fortfährt, doch dann spätestens der 4. thread bekommt keine Antwort mehr auf die query Anfrage. Eine ersten Verbesserungsvorschlag wäre, dass wir einen check_health_of_service von Beginn an machen und je nach Response time eine Schlaufe mit 30s pause durchlaufen und spätestens nach 2 Versuchen dann fortfahren. https://github.com/Davideee/hiag_watchdog_win/blob/2d47e404da4bd685a45607fd8ff3a1fe88f92a90/influxdb_client_hiag.py#L38
Natürlich wäre es viel besser die query Abfrage nur einmal für alle threads zu machen und dann schaut jeder Thread was da drin steht, dies würde jedoch die aktuelle Struktur des Watchdog ziemlich auf den Kopf stellen nehme ich an (da die Threads und jeweiligen Klassen keine Abhängigkeiten haben etc..) Was denkt ihr, wäre für die aktuelle Situation am sinnvollsten?