Seite 1 von 1

Blockly "call script file" funktioniert nicht

Verfasst: 7. Jan 2024 19:31
von Homer-S
Hallo zusammen,

ich habe in Blockly diese Zeile eingefügt:
2024-01-07 19_19_49-openHAB – Mozilla Firefox.jpg
Als Inhalt hatte ich schon:
mopidy_ausschalten.sh
/pfad/mopidyausschalten.sh

immer bekomme ich diesen Fehler:
Failed to execute rule 'dummyswitche-': Fail to execute action: 2

Ich habe schon mehrfach versucht, das Script im Container usw auszuführen, was immer funktioniert hat, natürlich auch als Openhab User.

In den "händischen" Rules hat bisher das immer funktioniert:
executeCommandLine(Duration.ofSeconds(3), "/openhab/conf/scripts/relais_an.sh")

Wo mach ich den Fehler?
Danke

Re: Blockly "call script file" funktioniert nicht

Verfasst: 7. Jan 2024 21:50
von udo1toni
Da liegt ein Irrtum vor.
call script file tut genau das: es führt ein Script aus.
Damit ist aber nicht executeCommandLine() gemeint (dafür gibt es evtl. gar keinen Baustein, oder vielleicht hat jemand aus der Community einen entsprechenden in den Marketplace hochgeladen), sondern die DSL Scripts, welche im Verzeichnis $OPENHAB_CONF/scripts/ mit der Endung *.script gespeichert sind (und ausschließlich solche Dateien sollten sich in dem genannten Verzeichnis befinden).

Re: Blockly "call script file" funktioniert nicht

Verfasst: 7. Jan 2024 22:12
von Homer-S
Ahhhhh, OK.
Hab gerade einen Threat gefunden wo diskutiert wurde, ob man das nicht implementiert, wegen Risiken.
Also doch wieder "von Hand", schade.

Re: Blockly "call script file" funktioniert nicht

Verfasst: 7. Jan 2024 22:14
von Harka
Bis jemand eine schönere Lösung präsentiert kannst Du folgendes machen ->
ein neues Script vom Typ Rule_DSL anlegen mit der UID "relais_an_script", dort diese eine Zeile rein schmeißen,

Code: Alles auswählen

logInfo("mach was",executeCommandLine(Duration.ofSeconds(3), "/openhab/conf/scripts/relais_an.sh"))
anschließend kannst Du es mit dem anderen Scriptblock, ruleUID ist dann "relais_an_script", ohne weitere Parameter aufrufen. Hat bei mir jedenfalls gerade geklappt.

Re: Blockly "call script file" funktioniert nicht

Verfasst: 8. Jan 2024 16:41
von Harka
Hat mir keine Ruhe gelassen :roll:
Mit Javascript (ECMAScript 262 Edition 11) lautet der Befehl

Code: Alles auswählen

actions.Exec.executeCommandLine(time.Duration.ofSeconds(3), "/openhab/conf/scripts/relais_an.sh");
Diesen kannst Du im inline_Script-Block einfügen

Re: Blockly "call script file" funktioniert nicht

Verfasst: 8. Jan 2024 19:52
von Homer-S
@Harka

Deine erste Lösung hab ich getestet und die funktioniert super! DANKE

Re: Blockly "call script file" funktioniert nicht

Verfasst: 8. Jan 2024 22:39
von Homer-S
Das zweite geht leider nicht

Script execution of rule with UID 'dummyswitche-5' failed: TypeError: Cannot read property "executeCommandLine" from undefined in <eval> at line number 21

Re: Blockly "call script file" funktioniert nicht

Verfasst: 9. Jan 2024 05:39
von Harka
Jup, habe nicht auf deine Signatur geachtet. Geht erst ab OH 4 mit Blockly.