NEWS
Wie exec Ergebnis mit Blockly nutzen? (gelöst)
-
Hallo, ich würde gerne über Telnet abgefragten AVR-Status in Blockly weiterverwenden, also als Objekt speichern:
#!/bin/sh host=192.168.0.xxx port=xxxx cmd1=?P (echo open ${host} ${port} sleep 1 echo ${cmd1} sleep 1 echo exit ) | telnet
In der Konsole funktioniert die Abfrage auch, wenn ich das obige script ausführe und gibt dann folgendes aus:
Connected to 192.168.0.xxx. Escape character is '^]'. PWR0 Connection closed by foreign host.
Aber wie kann ich die möglichen Ausgaben "PWR0" und "PWR1" als String in einem Objekt speichern, um dies dann in Blockly weiterverwenden zu können? (so dass ich weiß, ob der AVR an ist oder nicht)
Nutze zur Zeit immer den exec block um kleine sh datein, wie die oben auszuführen und damit den AVR zu bedienen, klappt zwar wunderbar ist aber bestimmt unnötig kompliziert, muss ja für jeden neuen Steuerbefehl eine neue sh datei anlegen …
POWER_ON="PO" POWER_OFF="PF" POWER_QUERY="?P" POWER_ONSTATE="PWR0" POWER_OFFSTATE="PWR1"
ihr merkt schon, ich hab nur bedingt eine Ahnung, was ich da mache … :lol:
Vielen Dank und Grüße.
-
Moin,
relativ einfach. Du machst einen Block "Exec" und aktivierst die Option "mit Ergebnissen". Dann bekommst du nach Ausführung die Variable "error" und "result". Beide Blöcke sind unter den Variablen zu finden. Mit diesen Blöcken kannst du nun das Ergebnis verarbeiten. Der Result Block enthält die Text-Ausgabe der Shell und deinen Wert kannst du dir dann z.B. über die Text-Funktionen raussplitten. Könnte z.B. mit "suche erstes Auftreten von PWR" gehen.
Ich nutze das z.B. um die Ping Zeit im Netzwerk zu bestimmen und in Blockly weiter zu verarbeiten.
Ob das mit den SH Dateien sinnvoll ist kann ich nicht sagen, bin weder in Java noch im Raspi so fit, dass ich da andere / schnellere Lösungen kennen würde. Die Befehle für den Exec baue ich mir aber auch im Blockly - sprich habe keine SH Dateien am start.
Gruß
Mario
-
Ah die Variablen sind mir vorher nie aufgefallen. Vielen Dank, war genau das was ich gesucht habe. Meinst ich kann die obige Funktion auch mit blockly nachbauen?
Grüße
-
Ich würde es einfach mal probieren. Also ich mache mit Exec befehlen z.B. den Connect zum HM Gateway und rebootet das z.B. bei Bedarf.
-
so bin nun zuhause und wollte das mal ausprobieren,
Du machst einen Block "Exec" und aktivierst die Option "mit Ergebnissen". Dann bekommst du nach Ausführung die Variable "error" und "result". `
aber leider finde ich keine neuen variablen
4250_exec_test.jpg -
aber leider finde ich keine neuen variablen `
Mhm…. seltsam. Also bei mir kommt da der Block "error" und "result" zum Vorschein, den mann dann normal verarbeiten kann.
Hast du mal geschaut, ob in der Java Script Instanz auch der Haken bei "Erlaube das Kommando "exec":" gesetzt ist?
Gruß
Mario
-
Hast du mal geschaut, ob in der Java Script Instanz auch der Haken bei "Erlaube das Kommando "exec":" gesetzt ist? `
Hi, sorry für die späte Antwort. War nicht im Lande.
Ja das hab ich direkt als erstes. Ist natürlich aktiviert.
Bin daher auch etwas ratlos
-
Dann gehen mir leider auch die Ideen aus
Vielleicht versuchst du es mal mit einem direkten Befehl - so wie bei mir mit Ping - ob dann ein Ergebnis kommt?
-
so bin nun zuhause und wollte das mal ausprobieren,
Du machst einen Block "Exec" und aktivierst die Option "mit Ergebnissen". Dann bekommst du nach Ausführung die Variable "error" und "result". `
aber leider finde ich keine neuen variablen `
Dafür braucht man kleinen Trick.Erst muss die Variable mit dem Namen "result" erzeugt werden und dann kann man die im Ergebnis abfragen:
48_2018-03-15_13_58_58-iobroker.admin.png -
Nur mal so…
ist das kein AVR für den es einen fertigen Adapter gibt?
-
Nur mal so…
ist das kein AVR für den es einen fertigen Adapter gibt? `
hmm das müsste ich nochmal checken. Ist ein Pioneer VSX921.
Dafür braucht man kleinen Trick.
Erst muss die Variable mit dem Namen "result" erzeugt werden und dann kann man die im Ergebnis abfragen: `
vielen Dank, das war die Lösung