NEWS
[gelöst] Skript - JS und SQL Abfrage - Erg undifined
-
@paul53 ah ok, also es wartet nicht ab... ok, wäre es besser wenn ich nicht blockly nehme dann?
Ich habs mal versucht so umzusetzen... Ergebnis ist nun aber "leer"...

@michl75
Wie man mit dem Blockly-sendTo eine query-Abfrage macht, weiß ich auch nicht. Das Ergebnis steht jedenfalls nicht in Wert, sondern in einer Variable result.Versuche es mal so:

Funktion abfrage(t):
let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, auswertung); -
@michl75
Wie man mit dem Blockly-sendTo eine query-Abfrage macht, weiß ich auch nicht. Das Ergebnis steht jedenfalls nicht in Wert, sondern in einer Variable result.Versuche es mal so:

Funktion abfrage(t):
let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, auswertung);@paul53 Erstmal danke für deine Mühe... Habe erst mal meins verworfen und NEU wie deins aufgebaut....

Der Code dazu... genau so...
let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, auswertung); {1}und Ergebnis:

Hätte ich nur mehr Ahnung davon...
EDIT .. das Doppelte {1} ... keine ahnugn woher das kommt, steht aber nicht so in meinem Code...
-
@paul53 Erstmal danke für deine Mühe... Habe erst mal meins verworfen und NEU wie deins aufgebaut....

Der Code dazu... genau so...
let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, auswertung); {1}und Ergebnis:

Hätte ich nur mehr Ahnung davon...
EDIT .. das Doppelte {1} ... keine ahnugn woher das kommt, steht aber nicht so in meinem Code...
-
@michl75 sagte: Hätte ich nur mehr Ahnung davon...
Ich hatte anfangs noch einen Fehler drin, den ich nachträglich korrigiert habe: Die Funktion auswertung(result) muss den Parameter result erhalten.

-
@paul53 ok moment ich teste
EDIT: Es tut sich was auch wenn noch kein Ergebnis... aber ... so sieht die Ausgabe nun aus:

...und so versucht er es auch mit setState in die Variable zu schreiben - klar bleibt 0 ist ja text und keine Zahl
@michl75 sagte:
so sieht die Ausgabe nun aus:
Das sieht schon gut aus. Mach mal weiter:

Nun müsste noch obj['AVG(val)'] ermittelt werden, was wohl so wegen der Klammern in Blockly nicht funktioniert.
Dann besser gleich eine JS-Funktion mit Ergebnis:
return res.result[0]['AVG(val)'];
-
@michl75 sagte:
so sieht die Ausgabe nun aus:
Das sieht schon gut aus. Mach mal weiter:

Nun müsste noch obj['AVG(val)'] ermittelt werden, was wohl so wegen der Klammern in Blockly nicht funktioniert.
Dann besser gleich eine JS-Funktion mit Ergebnis:
return res.result[0]['AVG(val)'];
-
@paul53 sieht nun so aus...

glaub wir kommen dem ergebnis näher :)
das AVG muss noch weg iwie -
@paul53 sieht nun so aus...

glaub wir kommen dem ergebnis näher :)
das AVG muss noch weg iwie@michl75
Man kann die Aufschlüsselung des Abfrageergebnisses auch gleich in die Funktion abfrage(t) packen:let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, function(res) { if(!res.error) auswertung(res.result[0]['AVG(val)']); });
-
@michl75
Man kann die Aufschlüsselung des Abfrageergebnisses auch gleich in die Funktion abfrage(t) packen:let _sql = "SELECT AVG(val) FROM iobroker.ts_number where id = 218 and ts > (" + t + ")"; sendTo('sql.0', 'query', _sql, function(res) { if(!res.error) auswertung(res.result[0]['AVG(val)']); });
-

