NEWS
SQL Datenbank auslesen
-
Hallo,
irgendwo gabs hier mal ein Script für mySQL, was aber nicht funktionierte.
Denke aber, das einige sowas nutzen.
Also, wie werte ich eine SQL Datenbank aus?
- kumulierte Werte
zb mein Gaszähler. Der zählt ja nur hoch, ich möchte aber auch Tageswerte, Wochenwerte oder Monatswerte
- Min / Max / Mittel
zb Temperaturwerte auswerten (Tageswerte, Wochenwerte oder Monatswerte)
-
Wozu eine SQL Datenbank ?
@noxx:Gaszähler. Der zählt ja nur hoch, ich möchte aber auch Tageswerte, Wochenwerte oder Monatswerte `
Dazu muss man nur den Zähl-Wert täglich, wöchentlich und monatlich in jeweils einem Datenpunkt speichern und die Differenz bilden.
@noxx:- Min / Max / Mittel `
Dafür gibt es ein http://www.iobroker.net/docu/?page_id=3670&lang=de, das die Werte über 24 h ermittelt. Aus den Tageswerten lassen sich nach dem gleichen Prinzip auch Wochen- und Monatswerte bilden.
EDIT: Es gibt auch noch die Möglichkeit, die Werte mittels https://github.com/ioBroker/ioBroker.javascript#gethistory einzulesen.
- Min / Max / Mittel `
-
Wozu eine SQL Datenbank ?
Dazu muss man nur den Zähl-Wert täglich, wöchentlich und monatlich in jeweils einem Datenpunkt speichern und die Differenz bilden. `
In erster Line weil die Daten ja in die SQL geschrieben werden und bisher
nur für vis genutzt werden, warum nicht auch im iobroker?
Und, weil das 2 Beispiele waren, ich weiß ja noch nicht welche
Datenpunkte ich ggf später benötige. Die Daten würden dann fehlen, oder
müssten dann noch extrahiert werden.
Und, weil ich gerne wüsste, wie es geht.
Schöner wäre natürlich ein Adapter, der das machen würde
(Gerät wählen, Datenbank wählen, Was man auswerten möchte, Name neuer Datenpunkt)
Gruß
-
Und, weil ich gerne wüsste, wie es geht. `
Hast Du Dir https://github.com/ioBroker/ioBroker.javascript#gethistory angesehen. Damit bekommst Du die Daten für einen definierten Zeitraum aus der Datenbank und must sie "nur noch" auswerten. -
Danke, ich versuche es mal.
Gesendet von meinem GT-I9195 mit Tapatalk
-
-
danke, das Beispiel funktioniert bei mir nicht
`var end = new Date().getTime(); sendTo('sql.0', 'getHistory', { id: 'rflink.0.channels.Cresta_4.TEMP', options: { start: end - 3600000, end: end, aggregate: 'minmax' // or 'none' to get raw values } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].id + ' ' + new Date(result.result[i].ts).toISOString()); } });` liefert: `~~[code]~~21:41:40.041 [info] javascript.0 Stop script script.js.common.Wetter_MinMax_Temp 21:41:40.042 [info] javascript.0 Start javascript script.js.common.Wetter_MinMax_Temp 21:41:40.043 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: registered 0 subscriptions and 0 schedules 21:41:40.044 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:41:39.837Z 21:41:40.044 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:45:06.279Z 21:41:40.045 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:48:22.237Z 21:41:40.045 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:52:27.529Z 21:41:40.045 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:55:43.375Z 21:41:40.046 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T18:58:10.233Z 21:41:40.046 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:03:04.744Z 21:41:40.046 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:07:09.245Z 21:41:40.046 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:09:36.403Z 21:41:40.047 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:16:10.837Z 21:41:40.047 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:18:35.243Z 21:41:40.047 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:21:02.243Z 21:41:40.047 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:25:07.287Z 21:41:40.048 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:30:01.266Z 21:41:40.048 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:33:17.247Z 21:41:40.048 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:37:22.393Z 21:41:40.049 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:40:38.301Z 21:41:40.049 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:41:27.251Z[/code]`[/i][/i]
-
minmax als Aggregaotortyp gibts bei sql nicht. nimm average
-
kommt das gleiche bei raus
`var end = new Date().getTime(); sendTo('sql.0', 'getHistory', { id: 'rflink.0.channels.Cresta_4.TEMP', options: { start: end - 3600000, end: end, aggregate: 'average' // or 'none' to get raw values } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].id + ' ' + new Date(result.result[i].ts).toISOString()); } });` `~~[code]~~22:13:18.608 [info] javascript.0 Stop script script.js.common.Wetter_MinMax_Temp 22:13:18.960 [info] javascript.0 Start javascript script.js.common.Wetter_MinMax_Temp 22:13:18.961 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: registered 0 subscriptions and 0 schedules 22:13:19.010 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:13:18.953Z 22:13:19.011 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:16:08.153Z 22:13:19.012 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:18:32.153Z 22:13:19.012 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:21:03.353Z 22:13:19.012 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:25:08.153Z 22:13:19.013 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:30:03.353Z 22:13:19.013 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:33:17.753Z 22:13:19.013 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:37:22.553Z 22:13:19.013 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:40:36.953Z 22:13:19.014 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:41:27.353Z 22:13:19.014 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:42:17.753Z 22:13:19.014 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:47:56.153Z 22:13:19.014 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:54:32.153Z 22:13:19.015 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T19:59:27.353Z 22:13:19.015 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T20:01:51.353Z 22:13:19.015 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T20:07:36.953Z 22:13:19.015 [info] javascript.0 script.js.common.Wetter_MinMax_Temp: undefined 2017-08-07T20:10:51.353Z[/code]` [2880_1.png](/assets/uploads/files/2880_1.png) [/i][/i]
-
Bei vorgegebener ID wird sie nicht zurück geliefert. Was Du benötigst, ist
`for (var i = 0; i < result.result.length; i++) { log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); }` [/i][/i]
-
Hätte jetzt auch vorgeschlagen erstmal ganz einfach anzufangen und ein
console.log(JSON.stringify(result,null,2));
in die Callback Methode zu schreiben, dann sieht man ganz genau was zurückkommt.
-
Bei vorgegebener ID wird sie nicht zurück geliefert. Was Du benötigst, ist
`for (var i = 0; i < result.result.length; i++) { log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); }` danke, damit kommt was. sind halt mehr Infos, die ein Quereinsteiger ohne JS Kenntnisse weiß. versuche schon immer die Beispiele zu verstehen, aber manchmal sind das doch böhmische Dörfer.[/i][/i] ``` `
-
versuche schon immer die Beispiele zu verstehen, aber manchmal sind das doch böhmische Dörfer. `
Das liegt nicht an Dir, sondern an dem schlechten Beispiel. Ich hatte vor einiger Zeit mal getestet und herausgefunden, dass result.result.id__ nur geliefert wird, wenn man als ID übergibt id: '*'.Javascript-Kenntnisse habe ich mir auch erst durch ioBroker angeeignet.__
-
@ noxx:
Hast du mittlerweile eine Lösung für dein Thema gefunden ?
Gruß
Michael