NEWS
JS-Funktion mit Ergebnis - Result aus SQL an Blockly
-
Hallo zusammen,
versuche gerade eine Funktion mit Ergebnis in Blockly zu erstellen, aber bekomme das mit dem Return Wert nicht hin.
Wo liegt mein Fehler?
das consolen log gibt mir ein value aus
der blockly debug undefined?sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="javascript.0.variables.test"', function (result) { if (result.error) { console.error(result.error); } else { var now = new Date; sendTo('sql.0', 'query', 'SELECT ts,val FROM iobroker.ts_number WHERE _from = 6 AND id=' + result.result[0].id, function (ergebnis) { console.log('result sql: ' +JSON.stringify(result.result[0])); return result.result[0]; }); } });
Ich möchte ein Ergebnis aus SQL soweit aufbereiten, dass ich es in einer Liste Anzeigen kann.
Ziel ist es, eine Gegenüberstellung von monatlichen Werten der letzten Jahre zu bekommen.
Besten Dank schon mal
david -
Hallo zusammen,
versuche gerade eine Funktion mit Ergebnis in Blockly zu erstellen, aber bekomme das mit dem Return Wert nicht hin.
Wo liegt mein Fehler?
das consolen log gibt mir ein value aus
der blockly debug undefined?sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="javascript.0.variables.test"', function (result) { if (result.error) { console.error(result.error); } else { var now = new Date; sendTo('sql.0', 'query', 'SELECT ts,val FROM iobroker.ts_number WHERE _from = 6 AND id=' + result.result[0].id, function (ergebnis) { console.log('result sql: ' +JSON.stringify(result.result[0])); return result.result[0]; }); } });
Ich möchte ein Ergebnis aus SQL soweit aufbereiten, dass ich es in einer Liste Anzeigen kann.
Ziel ist es, eine Gegenüberstellung von monatlichen Werten der letzten Jahre zu bekommen.
Besten Dank schon mal
david -
@mystisch
Man kann nicht das Ergebnis aus einer Callback-Funktion zurück geben, denn die Callback-Funktion wird asynchron aufgerufen. -
@paul53 wie kann ich dann das ergebnis aus der query an blockly schicken? geht dann nur der Umweg über setstate?
-
@paul53 Ich habe erst vor ein paar monaten mit ioBroker angefangen und finde mich erst solangsam rein, daher sind mir noch nicht alle Funktionen geläufig.
Und das sendTo mit SQL hat auch nicht zum gewünschten Ziel geführt. Bei dem sendTo bekomme gar kein Ergebnis zurück oder was auch immer. -
@paul53 Ich habe erst vor ein paar monaten mit ioBroker angefangen und finde mich erst solangsam rein, daher sind mir noch nicht alle Funktionen geläufig.
Und das sendTo mit SQL hat auch nicht zum gewünschten Ziel geführt. Bei dem sendTo bekomme gar kein Ergebnis zurück oder was auch immer. -
@mystisch sagte: sendTo mit SQL hat auch nicht zum gewünschten Ziel geführt.
Dann solltest Du die Überschrift ändern, damit SQL-kundige helfen.
@paul53 das SQL ist nicht das Problem, in der JavaScript bekomme ich mein gewünchstes Ergebnis in der Console, nur bekomme ich das Ergebnis nicht ins Blockly.
Bei dem Blockly SendTo bekomme ich gar nichts zurück, bin mir aber auch nicht sicher, ob ich das Richtig nutze, da ich in Google auch keine Beschreibung fand. -
@paul53 das SQL ist nicht das Problem, in der JavaScript bekomme ich mein gewünchstes Ergebnis in der Console, nur bekomme ich das Ergebnis nicht ins Blockly.
Bei dem Blockly SendTo bekomme ich gar nichts zurück, bin mir aber auch nicht sicher, ob ich das Richtig nutze, da ich in Google auch keine Beschreibung fand.@mystisch sagte in JS-Funktion mit Ergebnis - Result aus SQL an Blockly:
bekomme ich das Ergebnis nicht ins Blockly.
Dann erstelle eine Blockly-Funktion zur Auswertung der SQL-Abfrage

In der Javascript-Funktion ersetze
return result.result[0];durch
auswertung(result.result[0]);besser in einer Javascript-Funktion (ohne Ergebnis).
-
@mystisch sagte in JS-Funktion mit Ergebnis - Result aus SQL an Blockly:
bekomme ich das Ergebnis nicht ins Blockly.
Dann erstelle eine Blockly-Funktion zur Auswertung der SQL-Abfrage

In der Javascript-Funktion ersetze
return result.result[0];durch
auswertung(result.result[0]);besser in einer Javascript-Funktion (ohne Ergebnis).
-
es gibt auch noch die gethistory
ein beispiel - dort bekommst , je nach zeitangabe, die daten in ein array und kannst dann dieses arr verarbeiten
var end = new Date().getTime(); let myArrTemp=[] getHistory('sql.0', { id: 'javascript.0.variables.test', //''0_userdata.0.CONTROL-OWN.FUTRO.CPUTempNUC1', start: end - 60000000, end: end, // aggregate: 'm4', timeout: 2000 }, function (err, result) { if (err) console.error(err); if (result) { // log(JSON.stringify(result)) for (var i = 0; i < result.length; i++) { myArrTemp.push({ "ts": new Date(result[i].ts).toISOString(), "val":result[i].val }) // console.log(result[i].val + ' ' + new Date(result[i].ts).toISOString()); } // log ("ende func1 "+JSON.stringify(myArrTemp)) ; // return log(JSON.stringify(myArrTemp)); } });bin mir nicht ganz sicher, ob ich verstehe, was du machen willst :-(
-
@mystisch sagte in JS-Funktion mit Ergebnis - Result aus SQL an Blockly:
bekomme ich das Ergebnis nicht ins Blockly.
Dann erstelle eine Blockly-Funktion zur Auswertung der SQL-Abfrage

In der Javascript-Funktion ersetze
return result.result[0];durch
auswertung(result.result[0]);besser in einer Javascript-Funktion (ohne Ergebnis).
@paul53 was ist das den für ein Block? Ich finde keinen mit Ergebnis.
Edit: Hat sich erledigt.
Für andere mit der gleichen Frage: Funktionen -> etwas tun -> Zahnrad -> Variable in Parameter ziehen
Dann kann man die Variable unter Variablen finden.