NEWS
[Blockly/JavaScript] SQL Abfrage - Ergebnis in Variable speichern
-
Moin!
Ich habe leider keine große Ahnung von Javascript und muss meine Sachen alle in Blockly programmieren. Das klappt auch alles ziemlich gut, bis ich jetzt an die Grenzen gestoßen bin.
Ich tracke über sql.0 Zustände von HomeMatic Komponenten. So bspw. auch eine Sensor, der misst, ob der Toilettendeckel geöffnet ist oder nicht.
Nachdem das "Geschäft" beendet worden ist, möchte ich eine Sprachausgabe über die Dauer dieses Vorganges ausgeben.
Die SQL Abfrage funktioniert auch wunderbar, jedoch möchte ich dieses Ergebnis (=eine Zahl in Sekunden), in eine Variable speichern. Entweder direkt in Blockly oder auch in ein ioBroker Objekt.
Der Block sieht so aus:
(Habe ich hier aus dem ersten SendTo SQL Beispiel übernommen:https://github.com/ioBroker/ioBroker.ja … ndto-block)
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="GVW732OFexZ9HP[q]B3," x="-313" y="-13"><field name="COMMENT">Send query to SQL adapter</field> <next><block type="sendto_custom" id="C5n}DvzjidAsuqnz9vDP"><mutation items/with_statement="true"></mutation> <field name="INSTANCE">sql.0</field> <field name="COMMAND">query</field> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG">log</field> <value name="ARG0"><shadow type="text" id="-/Uh;!,T}h/D-y(o7lAr"><field name="TEXT">SELECT ((SELECT ts FROM Haushaltsrechnungen.ts_bool WHERE id = 5 and val = 0 Order by `Datum` DESC Limit 1) - (SELECT ts FROM Haushaltsrechnungen.ts_bool WHERE id = 5 and val = 1 Order by `Datum` DESC Limit 1)) / 1000 FROM Haushaltsrechnungen.ts_bool Limit 1</field></shadow></value> <statement name="STATEMENT"><block type="debug" id="YpKkor:gc8r1-l8yO@Oe"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="#!NJS43!0z@}z:6~_,9("><field name="TEXT">test</field></shadow> <block type="procedures_callcustomreturn" id="0E2fmQQduf4)-({z(om|"><mutation name="JSON.stringify"><arg name="obj"></arg></mutation> <value name="ARG0"><block type="variables_get" id=",^2E2eT#598hI^TvABD9"><field name="VAR">result</field></block></value></block></value></block></statement></block></next></block> <block type="procedures_defcustomreturn" id="lm*.n3kQXll8o9X^*m,k" x="-312" y="288"><mutation statements="false"><arg name="obj"></arg></mutation> <field name="NAME">JSON.stringify</field> <field name="SCRIPT">IHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopOwo=</field> <comment pinned="false" h="80" w="160">Describe this function...</comment></block></xml>
Im Log steht mein Ergebnis auch bereits:
03:11:40.596 [info] javascript.0 script.js.Badezimmer.Skript3: registered 0 subscriptions and 0 schedules 03:11:40.602 [info] javascript.0 script.js.Badezimmer.Skript3: {"error":null,"result":[{"((SELECT ts FROM Haushaltsrechnungen.ts_bool WHERE id = 5 and val = 0 Order by `Datum` DESC Limit 1) - (SELECT ts FROM Haushaltsrechnungen.ts_bool WHERE id = 5 and val = 1 Order by `Datum` DESC Limit 1)) / 1000":89.992}]}
Diese 89.992 (Das Ergebnis der Abfrage, steht ganz rechts am Ende des Logs) möchte ich in eine Variable speichern, bekomme das leider nicht hin.
Vielen Dank!
-
So bspw. auch eine Sensor, der misst, ob der Toilettendeckel geöffnet ist oder nicht.
Nachdem das "Geschäft" beendet worden ist, möchte ich eine Sprachausgabe über die Dauer dieses Vorganges ausgeben. `
:lol:
-
Ich tracke über sql.0 Zustände von HomeMatic Komponenten. So bspw. auch eine Sensor, der misst, ob der Toilettendeckel geöffnet ist oder nicht. `
Weshalb möchtest Du sql.0 auswerten ? Da wirst Du mit Blockly nicht weit kommen. Die Auswertung des Datenpunktes "Toilettendeckel" ist viel einfacher.