Hi zusammen,
Msinn: Ich sehe das Problem aktuell auch nur in Verbindung mit database:init. Das Verhalten wird genau wie von strupp3003 beschrieben sichtbar.
a) Item bekommt einen bestimmten Wert und wird in die DB geschrieben
b) SmarthomeNG wird neu gestartet
c) Nach dem Neustart wird das item wegen database:init aus der DB korrekt initialisiert.
Bis hierher alles wie gewünscht. Die DB wurde bis jetzt nicht verändert Jetzt passiert aber das störende:
d) Die DB Funktion update_item wird aufgerufen und der Wert, der durch die DB Initialisierung geschrieben wurde, wird jetzt nochmal in die DB geschrieben.
Defakto gab es keine Änderung des Items und trotzdem wird ein neuer DB Eintrag geschrieben. Bei Plots von Werten wir Zählerständen etc. macht das keinen Sinn und sieht störend aus.
Ich teste gerade einen Patch für das DB plugin bei dem ich in der update_item Funktion das Schreiben in die DB blockiere, falls das item mit database:init konfiguriert ist und die Item Eigenschaft changed_by == 'DBInit' ist.
Msinn: Siehst Du darin ein Problem? Sobald mein Test abgeschlossen ist, schiebe ich den Patch zum Testen ins Develop.
Mit enforce_updates hat es meiner Meinung nach nichts zu tun. Jede item Änderung von außerhalb des Plugins wird weiterhin geschrieben. Bei enforce_updates: true werden halt auch identische Werte geloggt.
Msinn: Ich sehe das Problem aktuell auch nur in Verbindung mit database:init. Das Verhalten wird genau wie von strupp3003 beschrieben sichtbar.
a) Item bekommt einen bestimmten Wert und wird in die DB geschrieben
b) SmarthomeNG wird neu gestartet
c) Nach dem Neustart wird das item wegen database:init aus der DB korrekt initialisiert.
Bis hierher alles wie gewünscht. Die DB wurde bis jetzt nicht verändert Jetzt passiert aber das störende:
d) Die DB Funktion update_item wird aufgerufen und der Wert, der durch die DB Initialisierung geschrieben wurde, wird jetzt nochmal in die DB geschrieben.
Defakto gab es keine Änderung des Items und trotzdem wird ein neuer DB Eintrag geschrieben. Bei Plots von Werten wir Zählerständen etc. macht das keinen Sinn und sieht störend aus.
Ich teste gerade einen Patch für das DB plugin bei dem ich in der update_item Funktion das Schreiben in die DB blockiere, falls das item mit database:init konfiguriert ist und die Item Eigenschaft changed_by == 'DBInit' ist.
Msinn: Siehst Du darin ein Problem? Sobald mein Test abgeschlossen ist, schiebe ich den Patch zum Testen ins Develop.
Mit enforce_updates hat es meiner Meinung nach nichts zu tun. Jede item Änderung von außerhalb des Plugins wird weiterhin geschrieben. Bei enforce_updates: true werden halt auch identische Werte geloggt.
Kommentar