Hi zusammen,
das habe ich auch gerade benötigt und habe es per Script erledigt.
/*
Funktion aktiviert Logging für Datenpunkt in SQL-Adapter mit folgenden Einstellungen
- nur Änderungen aufzeichnen
- bei gleichen Werten alle 300 Sekunden loggen
- Änderungen erst nach 1 Sek. Aufzeichnen
- Speicherdauer 3 Monate
- Keine Delta-Kontrolle
*/
function aktiviereSQL(datenpunkt, overwrite=false){
var sql = {
"sql.0": {
"enabled": true,
"changesOnly": true,
"debounce": "1000",
"retention": "7948800",
"changesRelogInterval": "300",
"changesMinDelta": 0,
"storageType": ""
}
};
var obj = getObject(datenpunkt);
// Wenn Objekt vorhanden und noch keine Custom-Einstellungen (sql-adapter) gemacht, wird SQL aktiviert
if(obj.common && !obj.common.custom) {
obj.common.custom = sql;
setObject(datenpunkt, obj);
console.log("DEBUG: SQL-Logging für den Datenpunkt " + datenpunkt + " wurde aktiviert !");
}
// Objekt vorhanden, Einstellungen schon gesetzt -> überschreiben
else if(obj.common && obj.common.custom && overwrite) {
obj.common.custom = sql;
setObject(datenpunkt, obj);
console.log("DEBUG: SQL-Logging für den Datenpunkt " + datenpunkt + " wurde überschrieben !");
}
else {
console.log("DEBUG: SQL-Logging für den Datenpunkt " + datenpunkt + " konnte nicht aktiviert werden !");
}
}
// Für diese states soll Logging aktiviert werden
var loggen = ["power", "energy"];
// hier suchen wir nach den states, Rückgabe ist die Objekt-ID
var sensors = $('[state.id=javascript.0.ShellyPlugs.*]');
console.log("DEBUG: Anzahl Sensoren -> " + sensors.length);
sensors.each(function(id, i) {
var wert = id.substring(id.lastIndexOf(".")+1);
if(loggen.includes(wert)){
console.log("DEBUG: Würde ausgeführt für -> " + id);
aktiviereSQL(id); // oder aktiviereSQL(id, true); wenn überschreiben werden soll
}
});