NEWS
Zurücksetzen einzelner Datenpunkte im SQL-Adapter
-
Im dunkelorangen Knoten die DB einstellen, dann den Namen des DP's in den blauen Knoten schreiben und starten…
-
Alles klar.
Ich hab da übrigens noch einen recht einfachen Workaround gefunden.
Wenn man im History-Datenpunkt die Vorhaltezeit auf einen Tag einstellt, dann werden mit dem nächsten Eintrag in die SQL-Datenbank sämtliche Werte, die älter als ein Tag sind, gelöscht.
Danach kann man dann einfach die Vorhaltezeit wieder auf ein Jahr oder einen anderen Wert stellen.
Was ich noch gerne hätte, wäre eine Möglichkeit zum Löschen bestimmter Werte eines Datenpunkts. Dazu wäre es super, wenn es in der Tabellenansicht des Datenpunkts eine Löschfunktion für jeden eizelnen Wert gäbe.
Gruß,
Thorsten
-
@dtp:Wenn man im History-Datenpunkt die Vorhaltezeit auf einen Tag einstellt, dann werden mit dem nächsten Eintrag in die SQL-Datenbank sämtliche Werte, die älter als ein Tag sind, gelöscht. `
Hehe. Sinnvolle Nutzung der vorhandenen Features
@dtp:Was ich noch gerne hätte, wäre eine Möglichkeit zum Löschen bestimmter Werte eines Datenpunkts. Dazu wäre es super, wenn es in der Tabellenansicht des Datenpunkts eine Löschfunktion für jeden eizelnen Wert gäbe. `
AMN besten nschreib es als Idee/Request ins Trello. Dann schauen wir mal ob wir das mal unterbekommen
-
Hab mal ein kleines skript geschrieben, mit dem geloggt wird, welche Datenpunkte in iobroker nicht mehr vorhanden sind, aber in der Datenbank.
Hab das ganze mit MySql getestet.Achtung: je nachdem wieviele tote Datenpunkte in der Db existieren, kann das skript schon mal ein bissle länger laufen. vollständig durchgelaufen ist es wenn folgende Zeile im log steht:
javascript.0 2019-08-10 16:39:27.598 warn script.js.Netzwerk.MySql.Wartung: 294 Objects found, that not exist anymore in ioBroker, sum of items in tables: 1.414.628
Skript:
async function wartung() { try { // alle Datenpunkte aus Db holen let datapoints = await getQueryResult(`SELECT * FROM iobroker.datapoints`); if (datapoints) { let count = 0; let sum = 0; // Datenpunkte durchlaufen for (const datapoint of datapoints) { // prüfen ob kein Objekt in ioBroker existiert if (!getObject(datapoint.name)) { count++; // Daten des Datenpunktes in Tabelle 'ts_bool' zählen let countBool = 0; let booleanTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_bool WHERE id = ${datapoint.id}`); if (booleanTableItems && Object.keys(booleanTableItems).length > 0) { countBool = Object.keys(booleanTableItems).length; } // Daten des Datenpunktes in Tabelle 'ts_number' zählen let countNumber = 0; let numberTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_number WHERE id = ${datapoint.id}`); if (numberTableItems && Object.keys(numberTableItems).length > 0) { countNumber = Object.keys(numberTableItems).length; } // Daten des Datenpunktes in Tabelle 'ts_string' zählen let countString = 0; let stringTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_string WHERE id = ${datapoint.id}`); if (stringTableItems && Object.keys(stringTableItems).length > 0) { countString = Object.keys(stringTableItems).length; } log(`DB id: ${datapoint.id} (type: ${datapoint.type}) -> number: ${countNumber}, string: ${countString}, bool: ${countBool} | ioBroker id: '${datapoint.name}'`) sum = sum + countBool + countNumber + countString; } } console.warn(`${count} Objects found, that not exist anymore in ioBroker, sum of items in tables: ${sum.toLocaleString().replace(/,/g, ".")}`); } } catch (err) { console.error(`[wartung] error: ${err.message}`); console.error(`[wartung] stack: ${err.stack}`); } } async function getQueryResult(query) { return new Promise((resolve, reject) => { sendTo('sql.0', 'query', query, function (result) { if (!result.error) { resolve(result.result); } else { resolve(null); } }); }); } wartung();
-
Nur mal so in den Raum geworfen: zu beachten wären dabei auch noch die Alias-Datenpunkte die man ja beim Logging angeben kann...
-
ich habe dein Script ums Löschen von nicht mehr existierenden Datenpunkten erweitert.
So konnte ich bei mir über 1Mio überflüssige Datensätze löschen.Vielleicht kann es jemand gebrauchen.
Verwendung auf eigene Gefahr! Vorher Backup anfertigen
async function wartung() { try { const activate_delete = false; // alle Datenpunkte aus Db holen let datapoints = await getQueryResult(`SELECT * FROM iobroker.datapoints`); if (datapoints) { let count = 0; let sum = 0; // Datenpunkte durchlaufen for (const datapoint of datapoints) { // prüfen ob kein Objekt in ioBroker existiert if (!getObject(datapoint.name)) { count++; // Daten des Datenpunktes in Tabelle 'ts_bool' zählen let countBool = 0; let booleanTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_bool WHERE id = ${datapoint.id}`); if (booleanTableItems && Object.keys(booleanTableItems).length > 0) { countBool = Object.keys(booleanTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_bool WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } // Daten des Datenpunktes in Tabelle 'ts_number' zählen let countNumber = 0; let numberTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_number WHERE id = ${datapoint.id}`); if (numberTableItems && Object.keys(numberTableItems).length > 0) { countNumber = Object.keys(numberTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_number WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } // Daten des Datenpunktes in Tabelle 'ts_string' zählen let countString = 0; let stringTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_string WHERE id = ${datapoint.id}`); if (stringTableItems && Object.keys(stringTableItems).length > 0) { countString = Object.keys(stringTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_string WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.datapoints WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } console.warn(`DB id: ${datapoint.id} (type: ${datapoint.type}) -> number: ${countNumber}, string: ${countString}, bool: ${countBool} | ioBroker id: '${datapoint.name}'`); sum = sum + countBool + countNumber + countString; } } console.warn(`${count} Objects found, that not exist anymore in ioBroker, sum of items in tables: ${sum.toLocaleString().replace(/,/g, ".")}`); } } catch (err) { console.error(`[wartung] error: ${err.message}`); console.error(`[wartung] stack: ${err.stack}`); } } async function getQueryResult(query) { return new Promise((resolve, reject) => { sendTo('sql.0', 'query', query, function (result) { if (!result.error) { resolve(result.result); } else { resolve(null); } }); }); } wartung();
-
danke für die scripte
ergebnis:
127 Objects found, that not exist anymore in ioBroker, sum of items in tables: 68.211
-
Hallo in die wissende Runde,
das Skript werde ich vermutlich nicht für InfluxDB verwenden können? Einfach ausprobieren ist mir zu riskant, hab erst 4 Neuaufsätze hinter mir trotz Proxmox ^^
Vielleicht könnte man eine solche Funktion auch in den jeweiligen Adaptern einbauen? Aber das ist etwas für einen anderen thread...
Danke euch und vG, Thorsten -
Ich habe solch eine Aufräum-Funktionalität für den SQL-Adapter angefragt.
https://github.com/ioBroker/ioBroker.sql/issues/247Gebt gerne auch dort Feedback, ob ihr so etwas benötigt.
Mir sparte das beim täglichem Backup der SQL-DB trotz ZIP über 10MB ein. -
@andi2055 Heyho,
besten Dank für das Script, ich würde es gerne mal ausprobieren weil ich im Log dauernd die Meldung vom SQL Adapter bekomme, dass Datenpunkt xy keinen Wert zurückgibt. Liegt halt daran, dass es die Datenpunkte nicht mehr gibt
Hab das script mal gestartet und es meldet recht schnell Funde, allerdings ist irgendwann Schluss ohne "Abschlussmeldung". Wie lange läuft das denn bei dir so? Hier mittlerweile mehr als eine Stunde ohne weiteres Ergebnis.
Danke und Gruß
Andreas -
@andi2055 hab da mal eine Frage, wo muss dieses Script den ausgeführt werden?
-
@mike2712
als Javascript im JS-Adapter anlegen und ausführen@Borkenkaefer
Laufzeit ist abhängig von Anzahl der gefundenen Einträge und Anzahl Datensätze. Wenige Sekunden bis Minuten würde ich sagen. Im Log steht dann genau welche Datenpunkte gefunden wurden und wie viele SQL-Werte dazu noch in der DB stehen -
@andi2055
Super, danke, wollte da immer schon mal etwas aufräumen, kenne mich im Bereich PHPmyAdmin leider gar nicht aus.
Hier ist das Ergebnis von dem Script, was müssten den für ein sinnvolles aufräumen die nächsten Schritte sein?Würde das erweiterte Script von Dir alles überflüssige aus der Datenbank löschen? Wie mache ich den ein Backup so das ich meine archivierten Daten nicht verlieren würde?
18:41:55.180 info javascript.0 (158) Stop script script.js.Allgemein.SQL_TEST 18:41:55.183 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 195 (type: 0) -> number: 140294, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116570356042.power' 18:41:55.183 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.present" does not exist 18:41:55.330 info javascript.0 (158) Start javascript script.js.Allgemein.SQL_TEST 18:41:55.354 info javascript.0 (158) script.js.Allgemein.SQL_TEST: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 18:41:55.391 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.0.MEQ0375275.1.LEVEL" does not exist 18:41:56.238 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 34 (type: 0) -> number: 26646, string: 0, bool: 0 | ioBroker id: 'hm-rpc.0.MEQ0375275.1.LEVEL' 18:41:56.239 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "sonoff.0.Sonoff-Steckdose-51.POWER" does not exist 18:41:56.413 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 77 (type: 2) -> number: 0, string: 0, bool: 4789 | ioBroker id: 'fritzdect.0.DECT200_087610475216.present' 18:41:56.414 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.state" does not exist 18:41:56.452 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 44 (type: 2) -> number: 0, string: 0, bool: 4953 | ioBroker id: 'sonoff.0.Sonoff-Steckdose-51.POWER' 18:41:56.455 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116570356042.power" does not exist 18:42:02.852 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 195 (type: 0) -> number: 140294, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116570356042.power' 18:42:02.853 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.present" does not exist 18:42:03.095 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 78 (type: 2) -> number: 0, string: 0, bool: 36314 | ioBroker id: 'fritzdect.0.DECT200_087610475216.state' 18:42:03.096 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.power" does not exist 18:42:03.223 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 77 (type: 2) -> number: 0, string: 0, bool: 4789 | ioBroker id: 'fritzdect.0.DECT200_087610475216.present' 18:42:03.228 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.state" does not exist 18:42:06.359 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 78 (type: 2) -> number: 0, string: 0, bool: 36314 | ioBroker id: 'fritzdect.0.DECT200_087610475216.state' 18:42:06.360 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.power" does not exist 18:42:24.748 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 79 (type: 0) -> number: 270994, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_087610475216.power' 18:42:24.749 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.temp" does not exist 18:42:25.869 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 79 (type: 0) -> number: 270994, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_087610475216.power' 18:42:25.870 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_087610475216.temp" does not exist 18:42:27.476 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 80 (type: 0) -> number: 30132, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_087610475216.temp' 18:42:27.477 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.temp" does not exist 18:42:27.667 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 80 (type: 0) -> number: 30132, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_087610475216.temp' 18:42:27.668 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.temp" does not exist 18:42:29.786 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 90 (type: 0) -> number: 39412, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300020276.temp' 18:42:29.788 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65537.lightbulb.state" does not exist 18:42:29.975 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 90 (type: 0) -> number: 39412, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300020276.temp' 18:42:29.976 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65537.lightbulb.state" does not exist 18:42:30.358 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 102 (type: 2) -> number: 0, string: 0, bool: 2178 | ioBroker id: 'tradfri.0.L-65537.lightbulb.state' 18:42:30.358 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65539.lightbulb.state" does not exist 18:42:30.369 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 102 (type: 2) -> number: 0, string: 0, bool: 2178 | ioBroker id: 'tradfri.0.L-65537.lightbulb.state' 18:42:30.370 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65539.lightbulb.state" does not exist 18:42:30.593 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 103 (type: 2) -> number: 0, string: 0, bool: 2177 | ioBroker id: 'tradfri.0.L-65539.lightbulb.state' 18:42:30.594 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131073.state" does not exist 18:42:30.615 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 103 (type: 2) -> number: 0, string: 0, bool: 2177 | ioBroker id: 'tradfri.0.L-65539.lightbulb.state' 18:42:30.616 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131073.state" does not exist 18:42:30.741 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 104 (type: 2) -> number: 0, string: 0, bool: 2246 | ioBroker id: 'tradfri.0.G-131073.state' 18:42:30.742 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65541.lightbulb.state" does not exist 18:42:30.760 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 104 (type: 2) -> number: 0, string: 0, bool: 2246 | ioBroker id: 'tradfri.0.G-131073.state' 18:42:30.761 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.L-65541.lightbulb.state" does not exist 18:42:30.930 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 105 (type: 2) -> number: 0, string: 0, bool: 2176 | ioBroker id: 'tradfri.0.L-65541.lightbulb.state' 18:42:30.931 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131074.state" does not exist 18:42:30.934 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 105 (type: 2) -> number: 0, string: 0, bool: 2176 | ioBroker id: 'tradfri.0.L-65541.lightbulb.state' 18:42:30.935 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131074.state" does not exist 18:42:31.119 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 106 (type: 2) -> number: 0, string: 0, bool: 2248 | ioBroker id: 'tradfri.0.G-131074.state' 18:42:31.122 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131075.state" does not exist 18:42:31.138 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 106 (type: 2) -> number: 0, string: 0, bool: 2248 | ioBroker id: 'tradfri.0.G-131074.state' 18:42:31.138 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tradfri.0.G-131075.state" does not exist 18:42:31.402 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 107 (type: 2) -> number: 0, string: 0, bool: 2167 | ioBroker id: 'tradfri.0.G-131075.state' 18:42:31.403 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Allgemein.Handy_Anwesend" does not exist 18:42:31.410 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 107 (type: 2) -> number: 0, string: 0, bool: 2167 | ioBroker id: 'tradfri.0.G-131075.state' 18:42:31.412 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Allgemein.Handy_Anwesend" does not exist 18:42:31.936 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 110 (type: 2) -> number: 0, string: 0, bool: 4795 | ioBroker id: 'MeineObjekte.0.Allgemein.Handy_Anwesend' 18:42:31.937 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300011906.state" does not exist 18:42:31.975 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 110 (type: 2) -> number: 0, string: 0, bool: 4795 | ioBroker id: 'MeineObjekte.0.Allgemein.Handy_Anwesend' 18:42:31.976 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300011906.state" does not exist 18:42:34.222 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 112 (type: 2) -> number: 0, string: 0, bool: 33197 | ioBroker id: 'fritzdect.0.DECT200_116300011906.state' 18:42:34.222 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300011906.power" does not exist 18:42:34.236 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 112 (type: 2) -> number: 0, string: 0, bool: 33197 | ioBroker id: 'fritzdect.0.DECT200_116300011906.state' 18:42:34.237 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300011906.power" does not exist 18:43:04.825 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 113 (type: 0) -> number: 350196, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300011906.power' 18:43:04.827 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Tanel.Internet.Berechnung.Zeit_Soll_MM" does not exist 18:43:05.480 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 113 (type: 0) -> number: 350196, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300011906.power' 18:43:05.480 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Tanel.Internet.Berechnung.Zeit_Soll_MM" does not exist 18:43:05.635 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 187 (type: 1) -> number: 4, string: 1, bool: 0 | ioBroker id: 'MeineObjekte.0.Tanel.Internet.Berechnung.Zeit_Soll_MM' 18:43:05.636 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.state" does not exist 18:43:05.789 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 187 (type: 1) -> number: 4, string: 1, bool: 0 | ioBroker id: 'MeineObjekte.0.Tanel.Internet.Berechnung.Zeit_Soll_MM' 18:43:05.789 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.state" does not exist 18:43:08.464 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 116 (type: 2) -> number: 0, string: 0, bool: 33178 | ioBroker id: 'fritzdect.0.DECT200_116300020276.state' 18:43:08.465 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.power" does not exist 18:43:08.520 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 116 (type: 2) -> number: 0, string: 0, bool: 33178 | ioBroker id: 'fritzdect.0.DECT200_116300020276.state' 18:43:08.520 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116300020276.power" does not exist 18:44:05.666 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 117 (type: 0) -> number: 496674, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300020276.power' 18:44:05.668 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Sonoff-Steckdose-51" does not exist 18:44:07.549 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 117 (type: 0) -> number: 496674, string: 0, bool: 0 | ioBroker id: 'fritzdect.0.DECT200_116300020276.power' 18:44:07.550 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Sonoff-Steckdose-51" does not exist 18:44:07.989 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 123 (type: 2) -> number: 0, string: 0, bool: 4765 | ioBroker id: 'tr-064.0.devices.Sonoff-Steckdose-51' 18:44:07.990 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Echo-Dot-Arbeitszimmer" does not exist 18:44:08.261 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 123 (type: 2) -> number: 0, string: 0, bool: 4765 | ioBroker id: 'tr-064.0.devices.Sonoff-Steckdose-51' 18:44:08.261 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Echo-Dot-Arbeitszimmer" does not exist 18:44:08.440 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 128 (type: 2) -> number: 0, string: 0, bool: 1685 | ioBroker id: 'tr-064.0.devices.Home-Echo-Dot-Arbeitszimmer' 18:44:08.441 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Counter.PC-Tanel.Count-24h" does not exist 18:44:08.458 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 128 (type: 2) -> number: 0, string: 0, bool: 1685 | ioBroker id: 'tr-064.0.devices.Home-Echo-Dot-Arbeitszimmer' 18:44:08.459 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Counter.PC-Tanel.Count-24h" does not exist 18:44:08.495 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 181 (type: 1) -> number: 0, string: 5, bool: 0 | ioBroker id: 'MeineObjekte.0.Counter.PC-Tanel.Count-24h' 18:44:08.496 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Counter.PC-Tanel.IP-Count-24h" does not exist 18:44:08.508 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 181 (type: 1) -> number: 0, string: 5, bool: 0 | ioBroker id: 'MeineObjekte.0.Counter.PC-Tanel.Count-24h' 18:44:08.509 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Counter.PC-Tanel.IP-Count-24h" does not exist 18:44:08.573 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 182 (type: 1) -> number: 0, string: 5, bool: 0 | ioBroker id: 'MeineObjekte.0.Counter.PC-Tanel.IP-Count-24h' 18:44:08.574 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Tanel.Internet.Nutzung" does not exist 18:44:08.615 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 182 (type: 1) -> number: 0, string: 5, bool: 0 | ioBroker id: 'MeineObjekte.0.Counter.PC-Tanel.IP-Count-24h' 18:44:08.616 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "MeineObjekte.0.Tanel.Internet.Nutzung" does not exist 18:44:08.675 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 188 (type: 1) -> number: 0, string: 1, bool: 4 | ioBroker id: 'MeineObjekte.0.Tanel.Internet.Nutzung' 18:44:08.675 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rega.0.2115" does not exist 18:44:08.696 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 188 (type: 1) -> number: 0, string: 1, bool: 4 | ioBroker id: 'MeineObjekte.0.Tanel.Internet.Nutzung' 18:44:08.696 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rega.0.2115" does not exist 18:44:10.044 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 189 (type: 2) -> number: 0, string: 0, bool: 20869 | ioBroker id: 'hm-rega.0.2115' 18:44:10.045 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Echo-Dot-Kueche" does not exist 18:44:10.066 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 189 (type: 2) -> number: 0, string: 0, bool: 20869 | ioBroker id: 'hm-rega.0.2115' 18:44:10.067 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Echo-Dot-Kueche" does not exist 18:44:10.671 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 138 (type: 2) -> number: 0, string: 0, bool: 4753 | ioBroker id: 'tr-064.0.devices.Home-Echo-Dot-Kueche' 18:44:10.672 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Fritz-Repeater-5GHZ" does not exist 18:44:10.674 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 138 (type: 2) -> number: 0, string: 0, bool: 4753 | ioBroker id: 'tr-064.0.devices.Home-Echo-Dot-Kueche' 18:44:10.674 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-Fritz-Repeater-5GHZ" does not exist 18:44:11.037 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 140 (type: 2) -> number: 0, string: 0, bool: 4738 | ioBroker id: 'tr-064.0.devices.Home-Fritz-Repeater-5GHZ' 18:44:11.038 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-HP-LaserJet" does not exist 18:44:11.052 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 140 (type: 2) -> number: 0, string: 0, bool: 4738 | ioBroker id: 'tr-064.0.devices.Home-Fritz-Repeater-5GHZ' 18:44:11.053 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-HP-LaserJet" does not exist 18:44:11.287 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 146 (type: 2) -> number: 0, string: 0, bool: 4782 | ioBroker id: 'tr-064.0.devices.Home-HP-LaserJet' 18:44:11.289 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-HP-LaserJet-LAN" does not exist 18:44:11.308 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 146 (type: 2) -> number: 0, string: 0, bool: 4782 | ioBroker id: 'tr-064.0.devices.Home-HP-LaserJet' 18:44:11.310 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-HP-LaserJet-LAN" does not exist 18:44:11.599 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 147 (type: 2) -> number: 0, string: 0, bool: 4778 | ioBroker id: 'tr-064.0.devices.Home-HP-LaserJet-LAN' 18:44:11.600 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-TV-Schlafzimmer-SAT" does not exist 18:44:11.605 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 147 (type: 2) -> number: 0, string: 0, bool: 4778 | ioBroker id: 'tr-064.0.devices.Home-HP-LaserJet-LAN' 18:44:11.605 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-TV-Schlafzimmer-SAT" does not exist 18:44:11.771 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 148 (type: 2) -> number: 0, string: 0, bool: 1617 | ioBroker id: 'tr-064.0.devices.Home-TV-Schlafzimmer-SAT' 18:44:11.778 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.0008D8A9AC1C5B.4.LEVEL" does not exist 18:44:11.800 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 148 (type: 2) -> number: 0, string: 0, bool: 1617 | ioBroker id: 'tr-064.0.devices.Home-TV-Schlafzimmer-SAT' 18:44:11.800 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.0008D8A9AC1C5B.4.LEVEL" does not exist 18:44:11.953 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 149 (type: 0) -> number: 831, string: 0, bool: 0 | ioBroker id: 'hm-rpc.2.0008D8A9AC1C5B.4.LEVEL' 18:44:11.954 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.0008D8A9AC1B2A.4.LEVEL" does not exist 18:44:11.955 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 149 (type: 0) -> number: 831, string: 0, bool: 0 | ioBroker id: 'hm-rpc.2.0008D8A9AC1C5B.4.LEVEL' 18:44:11.957 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.0008D8A9AC1B2A.4.LEVEL" does not exist 18:44:12.110 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 150 (type: 0) -> number: 1170, string: 0, bool: 0 | ioBroker id: 'hm-rpc.2.0008D8A9AC1B2A.4.LEVEL' 18:44:12.111 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.000855699C43AF.4.STATE" does not exist 18:44:12.113 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 150 (type: 0) -> number: 1170, string: 0, bool: 0 | ioBroker id: 'hm-rpc.2.0008D8A9AC1B2A.4.LEVEL' 18:44:12.114 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "hm-rpc.2.000855699C43AF.4.STATE" does not exist 18:44:12.268 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 151 (type: 2) -> number: 0, string: 0, bool: 775 | ioBroker id: 'hm-rpc.2.000855699C43AF.4.STATE' 18:44:12.272 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-iPadMini" does not exist 18:44:12.275 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 151 (type: 2) -> number: 0, string: 0, bool: 775 | ioBroker id: 'hm-rpc.2.000855699C43AF.4.STATE' 18:44:12.279 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-iPadMini" does not exist 18:44:12.511 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 153 (type: 2) -> number: 0, string: 0, bool: 1705 | ioBroker id: 'tr-064.0.devices.Home-iPadMini' 18:44:12.512 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Mike-iPhone-7plus" does not exist 18:44:12.560 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 153 (type: 2) -> number: 0, string: 0, bool: 1705 | ioBroker id: 'tr-064.0.devices.Home-iPadMini' 18:44:12.561 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Mike-iPhone-7plus" does not exist 18:44:14.010 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 155 (type: 2) -> number: 0, string: 0, bool: 27568 | ioBroker id: 'tr-064.0.devices.Mike-iPhone-7plus' 18:44:14.011 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116570356042.state" does not exist 18:44:14.028 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 155 (type: 2) -> number: 0, string: 0, bool: 27568 | ioBroker id: 'tr-064.0.devices.Mike-iPhone-7plus' 18:44:14.029 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "fritzdect.0.DECT200_116570356042.state" does not exist 18:44:14.814 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 196 (type: 2) -> number: 0, string: 0, bool: 15562 | ioBroker id: 'fritzdect.0.DECT200_116570356042.state' 18:44:14.814 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-ioBroker" does not exist 18:44:14.839 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 196 (type: 2) -> number: 0, string: 0, bool: 15562 | ioBroker id: 'fritzdect.0.DECT200_116570356042.state' 18:44:14.840 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "tr-064.0.devices.Home-ioBroker" does not exist 18:44:15.405 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 158 (type: 2) -> number: 0, string: 0, bool: 4734 | ioBroker id: 'tr-064.0.devices.Home-ioBroker' 18:44:15.406 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.power" does not exist 18:44:15.441 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 158 (type: 2) -> number: 0, string: 0, bool: 4734 | ioBroker id: 'tr-064.0.devices.Home-ioBroker' 18:44:15.449 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.power" does not exist 18:44:15.582 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 197 (type: 0) -> number: 4, string: 0, bool: 0 | ioBroker id: 'FRITZ!DECT 200 #2.power' 18:44:15.583 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.power.state" does not exist 18:44:15.584 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 197 (type: 0) -> number: 4, string: 0, bool: 0 | ioBroker id: 'FRITZ!DECT 200 #2.power' 18:44:15.585 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.power.state" does not exist 18:44:15.703 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 198 (type: 1) -> number: 0, string: 1, bool: 0 | ioBroker id: 'FRITZ!DECT 200 #2.power.state' 18:44:15.704 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.state" does not exist 18:44:15.740 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 198 (type: 1) -> number: 0, string: 1, bool: 0 | ioBroker id: 'FRITZ!DECT 200 #2.power.state' 18:44:15.741 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "FRITZ!DECT 200 #2.state" does not exist 18:44:15.830 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 199 (type: 2) -> number: 0, string: 0, bool: 15 | ioBroker id: 'FRITZ!DECT 200 #2.state' 18:44:15.849 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.11150211.POWER" does not exist 18:44:15.898 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 199 (type: 2) -> number: 0, string: 0, bool: 15 | ioBroker id: 'FRITZ!DECT 200 #2.state' 18:44:15.912 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.11150211.POWER" does not exist 18:44:16.090 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 247 (type: 1) -> number: 0, string: 1039, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.11150211.POWER' 18:44:16.091 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.11150603.POWER" does not exist 18:44:16.127 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 247 (type: 1) -> number: 0, string: 1039, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.11150211.POWER' 18:44:16.128 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.11150603.POWER" does not exist 18:44:16.311 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 248 (type: 1) -> number: 0, string: 1045, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.11150603.POWER' 18:44:16.312 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "0_userdata.0.kW_Gesamt" does not exist 18:44:16.349 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 248 (type: 1) -> number: 0, string: 1045, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.11150603.POWER' 18:44:16.349 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "0_userdata.0.kW_Gesamt" does not exist 18:44:18.926 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 250 (type: 0) -> number: 41422, string: 0, bool: 0 | ioBroker id: '0_userdata.0.kW_Gesamt' 18:44:18.936 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.260W-Süd-1.POWER" does not exist 18:44:19.066 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 250 (type: 0) -> number: 41422, string: 0, bool: 0 | ioBroker id: '0_userdata.0.kW_Gesamt' 18:44:19.066 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: Object "envertech-pv.0.data.gateway_90013936.260W-Süd-1.POWER" does not exist 18:44:21.690 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 255 (type: 1) -> number: 0, string: 57947, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.260W-Süd-1.POWER' 18:44:21.712 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: 45 Objects found, that not exist anymore in ioBroker, sum of items in tables: 1.686.591 18:44:22.548 info javascript.0 (158) script.js.Allgemein.SQL_TEST: DB id: 255 (type: 1) -> number: 0, string: 57947, bool: 0 | ioBroker id: 'envertech-pv.0.data.gateway_90013936.260W-Süd-1.POWER' 18:44:22.550 warn javascript.0 (158) script.js.Allgemein.SQL_TEST: 45 Objects found, that not exist anymore in ioBroker, sum of items in tables: 1.686.591
-
@mike2712
wenn du so wenig Kenntnisse hast, dann würde ich ganz ehrlich raten auf das Löschen zu verzichten.
Besser die paar unnötigen Daten als dass etwas schief läuft...
Zum Löschen musst du im Skript die Konstante auf true setzen. Alles auf eigene Gefahr!Für Backup kannst du auch ioBroker backup Adapter verwenden
-
@andi2055 Danke, ja iobroker backup ist selbstverständlich vorhanden, es geht mir um die noch gültigen Einträge in der Datenbank (diese werden mit dem Adapter ja nicht gesichert), da habe ich kein Plan, ich wüsste auch nicht einmal wie ich es richtig händisch löschen müsste in der Datenbank, ich sehe die Datenpunkte, wenn ich einen Datenpunkt lösche, werden dann alle Daten zu diesem Datenpunkt gelöscht, aber händisch ist das sicher wie das aussieht auch sehr mühselig.
Was kann passieren wenn es mit dem scipt schief geht? Das ich die Daten verliere die in der Datenbank stehen, kann man in der Datenbank selbst ein komplette Update machen, habe versucht die Daten zu exportieren, aber das dauert ewig. -
@andi2055 sagte in Zurücksetzen einzelner Datenpunkte im SQL-Adapter:
ich habe dein Script ums Löschen von nicht mehr existierenden Datenpunkten erweitert.
So konnte ich bei mir über 1Mio überflüssige Datensätze löschen.
Vielleicht kann es jemand gebrauchen.
Verwendung auf eigene Gefahr! Vorher Backup anfertigenÖhm, Sehe ich das richtig das das Skript nur Daten von nicht mehr existierenden Datenpunkten löscht?
Ich würde auch gerne Datenpunkte löschen bei denen die SQL-Protokollierung deaktiviert wurde.Ich fang schon mal an zu suchen wie man das ermitteln kann ...
-
Und ich Antworte mir selbst:
Hier ist die Version die danach geht ob die Protokollierung per SQL aktiv ist.
Ist diese nicht (mehr) aktiv so taucht diese als zu löschen auf.
Gelöscht wird wie bisher auch wenn oben
const activate_delete = false;
auftrue
gesetzt wirdBenutzen auf eigene Gefahr, Verbesserungsvorschläge Willkommen.
Eventuell braucht das Skript langsam mal eine VersionierungHabe mal einen kleinen Header dazu gesetzt mit den Änderungen// SQL_Delete_Dead_Objects // V0.3 // // Changelog: // ---------- // 10.08.2019 V0.1 Scrounger erste Version welche nicht mehr existierende Datenpunkte anzeigt https://forum.iobroker.net/post/289821 // 03.05.2022 V0.2 andi2055 erweitert das die Daten auch aus der Datenbank gelöscht werden https://forum.iobroker.net/post/798291 // 01.02.2023 V0.3 BananaJoe umgestellt das nun Datenpunkte ohne SQL-Protokollierung gefunden werden https://forum.iobroker.net/post/939101 async function wartung() { try { // Hier das löschen einschalten! Sonst nur Trocken-Test const activate_delete = false; // Alle Datenpunkte holen bei welchen die SQL-Protokollierung aktiv ist: let datapointsActiveArray = new Array(); let datapointsActiceStrings = ""; await sendTo('sql.0', 'getEnabledDPs', {}, function (result) { Object.entries(result).forEach((entry) => { const [key, value] = entry; // console.log(`${key}`); datapointsActiceStrings = datapointsActiceStrings + `${key}` + ";"; }); //console.log(datapointsActiceStrings); datapointsActiveArray = datapointsActiceStrings.split(';'); }); // alle Datenpunkte aus Db holen let datapoints = await getQueryResult(`SELECT * FROM iobroker.datapoints`); if (datapoints) { let count = 0; let sum = 0; // Datenpunkte durchlaufen for (const datapoint of datapoints) { // prüfen ob kein Objekt in ioBroker existiert // if (!getObject(datapoint.name)) { // prüfen ob SQL-Protokollierung nicht aktiv ist if (!datapointsActiveArray.includes(datapoint.name)) { count++; // Daten des Datenpunktes in Tabelle 'ts_bool' zählen let countBool = 0; let booleanTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_bool WHERE id = ${datapoint.id}`); if (booleanTableItems && Object.keys(booleanTableItems).length > 0) { countBool = Object.keys(booleanTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_bool WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } // Daten des Datenpunktes in Tabelle 'ts_number' zählen let countNumber = 0; let numberTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_number WHERE id = ${datapoint.id}`); if (numberTableItems && Object.keys(numberTableItems).length > 0) { countNumber = Object.keys(numberTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_number WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } // Daten des Datenpunktes in Tabelle 'ts_string' zählen let countString = 0; let stringTableItems = await getQueryResult(`SELECT * FROM iobroker.ts_string WHERE id = ${datapoint.id}`); if (stringTableItems && Object.keys(stringTableItems).length > 0) { countString = Object.keys(stringTableItems).length; if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.ts_string WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } } if (activate_delete) { sendTo('sql.0', 'query', `DELETE FROM iobroker.datapoints WHERE id = ${datapoint.id}`, function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); } }); } console.warn(`DB id: ${datapoint.id} (type: ${datapoint.type}) -> number: ${countNumber}, string: ${countString}, bool: ${countBool} | ioBroker id: '${datapoint.name}'`); sum = sum + countBool + countNumber + countString; } } console.warn(`${count} Objects found, that not exist anymore in ioBroker, sum of items in tables: ${sum.toLocaleString().replace(/,/g, ".")}`); } } catch (err) { console.error(`[wartung] error: ${err.message}`); console.error(`[wartung] stack: ${err.stack}`); } } async function getQueryResult(query) { return new Promise((resolve, reject) => { sendTo('sql.0', 'query', query, function (result) { if (!result.error) { resolve(result.result); } else { resolve(null); } }); }); } wartung();
-
@bananajoe
Habe das Script als js eingefügt und gestartet.
Es tut sich gar nichts; absolut nichts im log.Muss man da irgendwas beachten ?
-
@bahnuhr also nicht mal einen Fehler oder so?
da sollte unten doch stehen das er das Skript gestartet hat - und dann kommt nichts?
Die Zusammenfassung sollte auf jeden Fall kommen (und wenn die 0 ist).Sind Log-Ausgaben als Warnung.
-
Wenn ich das Script starte kommt unten im log:
Sonst nix.
manches ist auch rot unterstrichen:
komisch