NEWS
Daten aus der Fritzbox visualisieren
-
Danke für das Script wusste nicht dass das auch nachträglich geht
Allerdings bringt das Script bei mir einen Fehlerjavascript.0 2024-10-04 10:20:12.837 error at processImmediate (node:internal/timers:476:21) javascript.0 2024-10-04 10:20:12.836 error at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37) javascript.0 2024-10-04 10:20:12.835 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:10886:45) javascript.0 2024-10-04 10:20:12.835 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3097:38) javascript.0 2024-10-04 10:20:12.834 error at Object.<anonymous> (script.js.common.FritzBox_Daten_nachträglich_neuberechnen:33:23) javascript.0 2024-10-04 10:20:12.833 error Error in callback: TypeError: Cannot read properties of undefined (reading 'length') javascript.0 2024-10-04 10:20:12.829 error at processImmediate (node:internal/timers:476:21) javascript.0 2024-10-04 10:20:12.829 error at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37) javascript.0 2024-10-04 10:20:12.829 error at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:10886:45) javascript.0 2024-10-04 10:20:12.829 error at Object.cb (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3097:38) javascript.0 2024-10-04 10:20:12.828 error at Object.<anonymous> (script.js.common.FritzBox_Daten_nachträglich_neuberechnen:33:23) javascript.0 2024-10-04 10:20:12.827 error Error in callback: TypeError: Cannot read properties of undefined (reading 'length')
-
@werners Das kommt davon wenn man keine Fehlerbehandlung einbaut, my bad!
Kopiere bitte nochmal das verbesserte Skript und achte darauf dass der Datenbankname in Zeile 1 richtig ist. Dass der Statename in Zeile 2 verkürzt scheint ist Absicht, nicht abändern!
const db = 'iobrokerslave02' const stateID = '0_userdata.0.FritzBox.Traffic.Tag'; //summe(8, 3); // Der 3. September summe(8); // Der gesamte September function summe(monat = null, tag = null) { const monatsStart = new Date(); const monatsEnde = new Date(); monatsStart.setDate(tag || 1); monatsStart.setHours(0, 0, 0, 0); monatsStart.setMonth(monat || new Date().getMonth()); monatsEnde.setMonth(monatsStart.getMonth() + (tag ? 0 : 1)); monatsEnde.setDate(tag || 0); monatsEnde.setHours(23, 59, 59, 999); log(monatsStart.toString()); log(monatsEnde.toString()); const query = ` SELECT b.name, sum(a.val) AS summe FROM ${db}.ts_number a JOIN ${db}.datapoints b ON a.id = b.id AND b.name LIKE "${stateID}%" WHERE a.ts BETWEEN ${monatsStart.getTime()} AND ${monatsEnde.getTime()} GROUP BY b.name` sendTo('sql.0', 'query', query, (res) => { if (/*!res.error &&*/ res.result?.length) { log(res.result[0].name.split('.')[4] + ' : ' + res.result[0].summe) log(res.result[1].name.split('.')[4] + ' : ' + res.result[1].summe) } else { log('Keine Daten!', 'warn'); res.error && log(res.error, 'error') } }) }
-
@ro75 entschuldige, kannst du mir sagen wo ich den Code reinkopieren muss ? Stehe da gerade ein wenig auf dem Schlauch. Hab iobroker drauf und den Adapter avm 64, welcher auch verbunden ist, aber nichts anzeigt.
Danke
Grüße
Daniel -
habe ich gemacht.
Beim Script kommt das unten
javascript.0 16:03:13.360 info Start JavaScript script.js.common.FritzBox_Daten_nachträglich_neuberechnen (Javascript/js) javascript.0 16:03:13.411 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Sun Sep 01 2024 00:00:00 GMT+0200 (Central European Summer Time) javascript.0 16:03:13.412 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Mon Sep 30 2024 23:59:59 GMT+0200 (Central European Summer Time) javascript.0 16:03:13.412 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 16:03:13.423 warn script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Keine Daten! javascript.0 16:03:13.424 error script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Error: SELECT command denied to user 'iobroker'@'Iobroker.fritz.box' for table `iobrokerslave02`.`ts_number`
In den Protokollen steht das drin
avascript.0 2024-10-07 16:05:50.482 info Stopping script script.js.common.FritzBox_Daten_nachträglich_neuberechnen javascript.0 2024-10-07 16:05:45.756 error script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Error: SELECT command denied to user 'iobroker'@'Iobroker.fritz.box' for table `iobrokerslave02`.`ts_number` javascript.0 2024-10-07 16:05:45.755 warn script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Keine Daten! javascript.0 2024-10-07 16:05:45.746 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2024-10-07 16:05:45.745 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Mon Sep 30 2024 23:59:59 GMT+0200 (Central European Summer Time) javascript.0 2024-10-07 16:05:45.745 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Sun Sep 01 2024 00:00:00 GMT+0200 (Central European Summer Time) javascript.0 2024-10-07 16:05:45.689 info Start JavaScript script.js.common.FritzBox_Daten_nachträglich_neuberechnen (Javascript/js)
-
@werners demnach dürfte das 'Originalscript' auch nicht mehr funktionieren! Hast Du an den Settings im SQL-Adapter oder in der Datenbank rumgespielt?
-
nein da ist alles wie es war. Also das andere Script das läuft und berechnet die aktuelle und die Tagesrate.
-
@werners sagte in Daten aus der Fritzbox visualisieren:
nein da ist alles wie es war. Also das andere Script das läuft und berechnet die aktuelle und die Tagesrate.
das Skript nutzt dieselbe Instanz von SQL wie das originale, somit auch die gleichen Berechtigungen! Läuft es denn auf einer anderen Instanz als das Original?
-
@fastfoot sagte in Daten aus der Fritzbox visualisieren:
@werners sagte in Daten aus der Fritzbox visualisieren:
nein da ist alles wie es war. Also das andere Script das läuft und berechnet die aktuelle und die Tagesrate.
das Skript nutzt dieselbe Instanz von SQL wie das originale, somit auch die gleichen Berechtigungen! Läuft es denn auf einer anderen Instanz als das Original?
Nein ich habe nur eine Javascript Instanz auf meinem slave01
-
ih glaube ich habe was gefunden. muss es nicht
0_userdata.0.FritzBox.Traffic.Tag_IN heißen?
Aber der Fehler kommt trotzdem -
@fastfoot
Da ist mir nochwas aufgefallen. Bei dem Datenpunkt geht es ja um einen Tag, aber er 3.09. ist auskommentiert.
Ist das so gewollt? -
so und noch was. Im script steht sql.0. Das habe ich übersehen denn ich habe auf allen 3 Raspis mit iobroker eine SQL Datenbank. Die vom Slave 2 heißt dann sql.2
Aber das andere Script läuft und berechnet ja die Daten da steht auch sql.0 drin
Ich habe mal versuchhalber das auf sql.2 geändert und das so gemacht
summe(8, 3); // Der 3. September
//summe(8); // Der gesamte Septemberdann bekomme ich
javascript.0 17:51:52.131 info Start JavaScript script.js.common.FritzBox_Daten_nachträglich_neuberechnen (Javascript/js) javascript.0 17:51:52.162 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Tue Sep 03 2024 00:00:00 GMT+0200 (Central European Summer Time) javascript.0 17:51:52.162 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Tue Sep 03 2024 23:59:59 GMT+0200 (Central European Summer Time) javascript.0 17:51:52.163 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 17:51:52.179 info script.js.common.FritzBox_Daten_nachträglich_neuberechnen: Tag_IN : 32828971246 javascript.0 17:51:52.181 error at Object.<anonymous> (script.js.common.FritzBox_Daten_nachträglich_neuberechnen:66:31)
Ich hoffe ich habe jetzt nicht alles durcheinander gemacht
Danke für deine Geduld -
@ro75 erstmal herzlichen Dank für das zur Verfügung gestelltes Script...
ein Frage dazu... als command result steht hier code:500
ist das korrekt oder eher nicht... denn ich bekomme alle DP´s angelegt, aber keine Daten darin? -
@docsnyder7 500 ist nicht in Ordnung. Da stimmt was bei den Einstellungen im Adapter nicht. Eventuell Benutzer Kennwort. Ist in der FB selbst die Freigabe im Benutzer erteilt worden?
Ro75.
-
@ro75
Kacke.. genau das wars! Es fehlte die Berechtigung ! Danke für den schnellen Support!!!! -
@werners sagte in Daten aus der Fritzbox visualisieren:
ih glaube ich habe was gefunden. muss es nicht
0_userdata.0.FritzBox.Traffic.Tag_IN heißen?
Aber der Fehler kommt trotzdemDass der Statename in Zeile 2 verkürzt scheint ist Absicht, nicht abändern!
also das _IN weg
-
@werners sagte in Daten aus der Fritzbox visualisieren:
@fastfoot
Da ist mir nochwas aufgefallen. Bei dem Datenpunkt geht es ja um einen Tag, aber er 3.09. ist auskommentiert.
Ist das so gewollt?Du kannst ja die einzelnen Tage summiert berechnen, dafür ist der Monatsmodus gedacht
-
@werners sagte in Daten aus der Fritzbox visualisieren:
dann bekomme ich
und die Fehlermeldung schneidest du ab!
Also nochmal
- Das Skript muss da laufen wo auch das Original läuft
- wenn dort sql.0 steht muss das auch in diesem Skript so stehen.
- Wenn im Original iobrokerslave02 steht, muss das auch in diesem Skript in Zeile 1 so stehen
- Den Datenbanknamen findest du auch in den Settings der jeweiligen SQL Instanz und der muss in beiden Skripts genau so lauten wie dort angegeben
ich fürchte dein Setup verwirrt dich etwas, ganz zu schweigen von den Helfern die dein System nicht kennen und auf deine korrekten Infos angewiesen sind