Seite 1 von 3

Powershell mit OH starten?

Verfasst: 21. Jan 2023 13:54
von Norick
Hallo
gibt es die Möglichkeit ein Powershell-Script (mit Parameter) aus OH3 (Windows) zu starten? Leider finde ich überhaupt nichts konkretes zu diesem Thema.

Danke

Re: Powershell mit OH starten?

Verfasst: 21. Jan 2023 19:42
von udo1toni
Ich möchte davon ausgehen, dass aus Rules heraus executeCommandline funktioniert (oder eben über das exec Binding). Kann sein, dass Du ein Hilfsscript nutzen musst, welches das Powershell Script startet.

Re: Powershell mit OH starten?

Verfasst: 22. Jan 2023 10:28
von Norick
Nun ich habe eine einfache Rule erstellt die so aussieht:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "2"
    configuration:
      itemName: AstronomischeSonnendaten_Spring
    type: core.ItemCommandTrigger
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: executeCommandLine (“cmd /c notepad.exe”)
      // script: executeCommandLine("cmd /c C:\\openhab\\conf\\scripts\\Russ.bat", 1000)
    type: script.ScriptAction
unabhängig ob ich das "notepad.exe" aufrufe oder das batch file mit "Russ.bat" bekomme ich folgende Fehlermeldung im log:

Code: Alles auswählen

2023-01-22 10:22:57.725 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID '5e0474553a' failed: executeCommandLine (“notepad.exe”)
2023-01-22 10:24:12.808 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID '5e0474553a' failed: executeCommandLine (“cmd /c notepad.exe”)

wenn ich das "Russ.bat" direkt in Windows aufrufe funktioniert es.

Stimmt hier der skript Aufruf nicht oder...?

Re: Powershell mit OH starten?

Verfasst: 22. Jan 2023 15:29
von udo1toni
Im Zweifel musst Du den gesamten Pfad angeben:

Code: Alles auswählen

executeCommandLine("C:\\Windows\\System32\\cmd.exe","/c","C:\\openhab\\conf\\scripts\\Russ.bat")
Achte darauf, jedes Leerzeichen durch Unterbrechen des Strings zu kennzeichnen.

Und immer vorausgesetzt, dass die Batchdatei unzulässigerweise in diesem Ordner liegt.

Der Ordner

Code: Alles auswählen

$OPENHAB_CONF/scripts/
ist ausschließlich für *.script Dateien gedacht. Das wird für Einsteiger leider aus der Doku überhaupt nicht klar. Tatsächlich habe ich einen Bezug auf den Ordner nur an einer Stelle gefunden: https://www.openhab.org/docs/configurat ... em-actions, aber eben keinen Hinweis darauf, dass dieser Ordner nicht für andere als DSL-Scripts gedacht ist.

Re: Powershell mit OH starten?

Verfasst: 25. Jan 2023 05:49
von Norick
Also ich habe das Russ.bat File in diesem Ordner:

Code: Alles auswählen

C:\openhab\conf\scripts
Mit folgender Rule:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "2"
    configuration:
      itemName: AstronomischeSonnendaten_Spring
    type: core.ItemCommandTrigger
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: executeCommandLine("C:\\Windows\\System32\\cmd.exe","/c","C:\\openhab\\conf\\scripts\\Russ.bat")
    type: script.ScriptAction
Wenn ich die Rule manuell triggere wird das bat-File nicht ausgeführt resp. im log-File sehe ich keinen Eintrag obwohl das batch-File direkt in Windows ausgeführt funktioniert.

Ist u.U. das ExecBinding besser geeignet?

Re: Powershell mit OH starten?

Verfasst: 25. Jan 2023 16:27
von udo1toni
Und es gibt keine Fehlermeldung im log?

Re: Powershell mit OH starten?

Verfasst: 11. Feb 2023 09:13
von Norick
So jetzt endlich kann ich es nochmals testen mit folgendem Ergebnis:

Wenn ich die Rule manuell starte sehe ich keine Fehlermeldung im log. Ich habe diesbezüglich das Script der Rule wiefolgt erweitert:

Code: Alles auswählen

logInfo("TEST", "Start Batchfile")
executeCommandLine("C:\\Windows\\System32\\cmd.exe","/c","C:\\openhab\\conf\\scripts\\Russ.bat")
logInfo("TEST", "End Batchfile")

Dann nochmals die Rule manuell gestartet. Im Log sehe ich dann folgendes:

Code: Alles auswählen

2023-02-11 09:07:44.788 [INFO ] [org.openhab.core.model.script.TEST  ] - Start Batchfile
2023-02-11 09:07:44.792 [INFO ] [org.openhab.core.model.script.TEST  ] - End Batchfile
Das würde dann wohl heissen dass "executeCommandLine" nicht ausgeführt oder nicht erkannt wird. Kann dies sein oder wo liegt der Hund begraben?!

Re: Powershell mit OH starten?

Verfasst: 13. Feb 2023 06:47
von Norick
oder gibt es eine andere Möglichkeit diesen Befehl aus Openhab zu prüfen ob er richtig funktioniert? Ich habe irgendwie das Gefühl das der Befehl - aus welchem Grund auch immer - nicht ausgeführt wird.

Oder gibt es eine Alternative ein Script aus einer Rule zu starten?

Re: Powershell mit OH starten?

Verfasst: 13. Feb 2023 09:57
von udo1toni
Da kannst noch das exec Binding ausprobieren. Andererseits muss das auch mit executeCommandLine gehen, Java ist OS-neutral und solche Aufrufe werden entsprechend OS-abhängig korrekt verarbeitet. Im Gegensatz zu einer GNU/Linux Umgebung sollte die Groß-/Kleinschreibung hier auch keine Rolle spielen und die Backslashes sind korrekt doppelt eingegeben.
Ich würde Dich ja ins englische Forum verweisen, aber das ist seit gestern down...
Das Softwareupgrade ist durch, siehe https://twitter.com/openHAB aber hier kommt immer noch die Hinweistafel.

Re: Powershell mit OH starten?

Verfasst: 13. Feb 2023 09:58
von udo1toni
So, gerade eben(!) probiere ich es noch mal (vor Fünf Minuten ging's noch nicht), jetzt ist https://community.openhab.org/ wieder normal erreichbar...