NEWS
Hm-rega und sql
-
Hallo,
zunächst einmal allen frohe Weihnachten…
Ich glaube es gibt noch ein Problem mit dem loggen nur geänderter States. Zum Beispiel funktioniert die Überprüfung der Änderung einer Systemvariablen nicht. Im hm-rega Adapter wird die LastChangedTime von der CCU verwendet und als lc: der Funktion setState übergeben.
function pollVariables() { ... var ts = Math.floor((new Date(data[id][1])).getTime() / 1000); ... adapter.setState(adapter.namespace + '.' + id, {val: val, ack: true, lc: ts});
Der TimeStamp (ts) wird im js-Controller mit der aktuellen Zeit gefüllt. Sei es durch Laufzeiten, oder aber durch nicht exakt übereinstimmende Zeiten der CCU und ioBroker. ergibt sich fast immer eine Differenz zwischen ts und lc. Da diese aber im SQL Adapter verwendet wird, werden kaum Einträge in die Datenbank geschrieben.
function pushHistory(id, state) { ... if (sqlDPs[id].state && settings.changesOnly && (state.ts !== state.lc)) return;
Mein Vorschlag wäre, im hm-rega-Adapter entweder beide Werte, also ts und tc, der Funktion setState zu übergeben, oder aber keinen von beiden.
adapter.setState(adapter.namespace + '.' + id, {val: val, ack: true, ts: ts, lc: ts});
Ich weiß nicht ob es weitere Stellen gibt, an denen lc und ts aus unterschiedlichen Quellen stammen. Beim Pollen der CCU-Programme habe ich noch eine Stelle gesehen.
Es wäre toll, wenn das angepasst werden könnte.
Viele Grüße.