NEWS
[gelöst] sql-Adapter - einige sich selten ändernde Variablen werden nicht in die DB geschrieben
-
Wenn bei Werten zum Eintrag in die sql-db der Modus "nur bei Änderung speichern" angewählt wird findet
der Eintrag in die Datenbank nur statt, wenn die Zeitpunkte der Datenänderung exakt identisch mit dem
Zeitpunkt des Lesens der Daten übereinstimmt. Es wird also nicht auf Änderung des Wertes geprüft, sondern
ob die Änderung genau jetzt erfolgt ist und nicht schon älter ist.
Wenn aber Variable durch Scripte geändert werden ist der Zeitstempel der Änderung der Zeitstempel des Programmablaufs.
Dieser Zeitpunkt kann bis zu 30 Sekunden (dem Abstand des Polling von hm-rega Aufrufen) vom Zeitpunkt
der Datenänderung unterscheiden. Daher wird der Wert nicht in die sql-db geschrieebn, obwohl er geändert wurde.
Lösung:
In /opt/iobroker/node_modules/iobroker.sql/main.js hatte ich in der Funktion pushHistory(id, state) gesehen, dass
in der Zeile 904 bei geseztem Flag "nur bei Änderung" KEIN Eintrag in die sql-db stattfindet, wenn diese beiden Zeitstempel ungleich sind.
Also der geänderte Programmcode: (das Original steht noch als Kommentar drin):
// if (sqlDPs[id].state && settings.changesOnly && (state.ts !== state.lc)) return; if (sqlDPs[id].state && settings.changesOnly && ((state.ts - state.lc) >= 30)) return;Und schon werden alle Daten in die sql-db geschrieben, deren Änderung innerhalb der letzten 30 Sekunden stattgefunden haben.
Mein Problem hat sich damit gelöst.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden