Powershell mit OH starten?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Norick
Beiträge: 254
Answers: 0
Registriert: 31. Jan 2022 06:35

Re: Powershell mit OH starten?

Beitrag von Norick »

meinst du es würde ein Update von 3.3.0 auf 3.4.2 helfen resp. geht dies problemlos per "update" (win11)?

Benutzeravatar
udo1toni
Beiträge: 15263
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Powershell mit OH starten?

Beitrag von udo1toni »

Ich habe openHAB schon lange nicht mehr unter Windows aufgesetzt, aber es läuft ja darauf hinaus, das gezipppte Archiv auf dem System zu entpacken und anschließend den Inhalt der Ordner $OPENHAB_CONF und $OPENHAB_USERDATA der alten Installation in die neue Installation zu verschieben.
Und dieser Vorgang funktioniert natürlich auch in die andere Richtung, solange Du die alte Installation nicht weg wirfst oder zumindest noch die Archive für runtime und addons parat hast.
Ich danke aber nicht, dass das irgendeinen Einfluss auf das Ausführen oder nicht Ausführen der Befehle haben wird. Da wird einfach an anderer Stelle etwas nicht stimmen. Das ist aber kein grundsätzliches Problem, denn ich habe schon diverse Anleitungen dafür (unter Windows) gesehen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Norick
Beiträge: 254
Answers: 0
Registriert: 31. Jan 2022 06:35

Re: Powershell mit OH starten?

Beitrag von Norick »

da hattest du Recht. Ich habe jetzt auf 3.4.2 aktualisiert aber das Problem besteht leider immer noch wie vorher. Es ist mir unerklärlich wieso dieser Befehl als Rule nicht funktioniert.

Code: Alles auswählen

configuration: {}
triggers: []
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: logInfo("TEST", "Start Batchfile")
        executeCommandLine("C:\\Windows\\System32\\cmd.exe","/c","C:\\openhab\\conf\\scripts\\test.bat")
        logInfo("TEST", "End Batchfile")
    type: script.ScriptAction

Im test.bat steht dann nur:

Code: Alles auswählen

"C:\Windows\system32\calc.exe"
was auch per Doppelklick funktioniert.

Im Log-File erscheint nur "Start Batchfile" und dann "End Batchfile"

Bin am Ende meines Lateins... :?

Benutzeravatar
udo1toni
Beiträge: 15263
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Powershell mit OH starten?

Beitrag von udo1toni »

Also, Du könntest noch versuchen, das Logging aufzudrehen. Ich bin mir nicht sicher, welcher Logger hier zuständig ist, das einfachste wäre also, openHAB im Debug-Modus zu starten.
Früher gab es mal eine start_debug.bat dafür, keine Ahnung, ob das noch so vorhanden ist, notfalls gibt es aber auch eine Einstellung dafür, die man vor dem Starten des Programms setzen muss.

EDIT: Da debug für alles zu sehr viel Information führt :) ist es sinnvoll vorher alle Things zu pausieren...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Answers: 9
Registriert: 4. Nov 2019 22:08

Re: Powershell mit OH starten?

Beitrag von int5749 »

Hast Du neben Logging schon wie im englischen Forum empfohlen mit

Code: Alles auswählen

executeCommandLine(Duration.ofSeconds(timeout), String commandLine)
versucht??

Auch könntest Du Dir den output des Befehls in eine Variable ausgeben lassen

Code: Alles auswählen

var ScriptResponse = executeCommandLine(Duration.ofSeconds(60), "path/to/my/script.sh", itemState1, itemState2);
Quelle: offizielle Doku

Auch ist dort bei den Beispielen immer ein ; am Ende, was ich bei Deinem Code vermisse, kann aber auch daran liegen, dass Du diesen in der MainUI konfigurierst und das ; nur bei Text-Files notwendig ist.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
udo1toni
Beiträge: 15263
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Powershell mit OH starten?

Beitrag von udo1toni »

Also, das mit dem Semikolon ist Quatsch. Wenn es um JavaScript geht, muss das Semikolon geschrieben werden, in der DSL nicht.
In der DSL gibt es exakt einen Befehl, der mit einem Semikolon abzuschließen ist, und zwar zwingend, der Befehl lautet return;
Grund für das Semikolon:
return verlässt das Programm und gibt einen Rückgabewert an die aufrufende Instanz zurück. Der Rückgabewert besteht aus dem Wert, der nach dem return kommt.
Nun könnte man auf die Idee kommen, z.B. return 4 zu schreiben, das führt aber zu einem Fehler, denn der Code wird nicht als Unterprogramm aufgerufen, es ist also an dieser Stelle nicht erlaubt, dass return einen Wert zurück liefert. Dieses "Sonderverhalten" wird mit dem ; erreicht.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Norick
Beiträge: 254
Answers: 0
Registriert: 31. Jan 2022 06:35

Re: Powershell mit OH starten?

Beitrag von Norick »

Habe ich wie hier beschrieben gerade versucht, jedoch mit dem gleichen Ergebnis. Der timeout hat bei mir zumindest nichts gebracht.

https://community.openhab.org/t/execute ... e/144536/3


noch als Ergänzung: Ja, das Semikolon hat dann nichts gebracht ;)

Benutzeravatar
udo1toni
Beiträge: 15263
Answers: 244
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Powershell mit OH starten?

Beitrag von udo1toni »

Hast Du openHAB schon im Debug-Modus laufen lassen?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Norick
Beiträge: 254
Answers: 0
Registriert: 31. Jan 2022 06:35

Re: Powershell mit OH starten?

Beitrag von Norick »

Habe es mit dem Batch file "start_debug" versucht. Aber das Ergebnis ist dasselbe. Im Logfile openhab.log sehe ich die gleiche Zeile wie schon ohne Debug Mode...

Norick
Beiträge: 254
Answers: 0
Registriert: 31. Jan 2022 06:35

Re: Powershell mit OH starten?

Beitrag von Norick »

Frage:
wäre es möglich dass du meine Rule 1:1 kopierst und bei dir kurz testen könntest? Ich denke nicht dass das Problem beim batch file liegt sondern eher beim OH-cmd oder der Rule so wie ich es geschrieben habe.

Antworten