Script wird nicht ausgeführt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Script wird nicht ausgeführt

Beitrag von kaloschke »

Hallo,

mein bash-script wird in OH 3 nicht ausgeführt und ich finde einfach nicht heraus, woran es liegt.

Was ich gemacht habe:
  • Im Ordner /etc/openhab/scripts/test das Script test.sh

    Code: Alles auswählen

    #!/bin/bash
    echo "Geht doch ..." >> test.txt
    erstellt.
    Es ist für alle ausführbar und als Besitzer ist openhab eingetragen. Der Befehl

    Code: Alles auswählen

    sudo -u openhab ./test.sh 
    führt das Script aus und die Datei test.txt wird erstellt.
  • Das Exec-Binding installiert
  • Das Thing

    Code: Alles auswählen

    Thing exec:command:testcommand    [command="/etc/openhab/scripts/test/test.sh", interval=0, timeout=5, autorun=true]
    
    angelegt.
  • In der exec.whitelist

    Code: Alles auswählen

    /etc/openhab/scripts/test/test.sh
    eingetragen.
  • Das Item

    Code: Alles auswählen

    Switch Testcommand    "Test Script"   {channel="exec:command:testcommand:run", autoupdate="false"}
    angelegt.
  • In der Sitemap den Switch eingetragen.
  • Die Regeln

    Code: Alles auswählen

    rule "Command Test 1"
    when
      Item Testcommand changed from OFF to ON
    then 
        Testcommand.sendCommand(ON)
        logInfo("Testcommand", "sollte ausgeführt werden")
    end
    
    rule "Command Test 2"
    when
      Item Testcommand changed from ON to OFF
    then
        logInfo("Testcommand", "sollte beendet werden")
    end
    
    rule "Command Test 3"
    when
      Item Testcommand changed 
    then 
        logInfo("Testcommand","Status {}", Testcommand .state)
    end
    erstellt.
Wenn ich den Schalter umlege, erscheint im openhab.log

Code: Alles auswählen

2021-04-16 17:39:07.437 [INFO ] [penhab.core.model.script.Testcommand] - Status ON
2021-04-16 17:39:07.442 [INFO ] [penhab.core.model.script.Testcommand] - sollte ausgeführt werden
2021-04-16 17:39:07.471 [INFO ] [penhab.core.model.script.Testcommand] - Status OFF
2021-04-16 17:39:07.474 [INFO ] [penhab.core.model.script.Testcommand] - sollte beendet werden
aber die Datei test.txt wird nicht erstellt :-(

Ich hoffe, Ihr entdeckt etwas ...

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

Re: Script wird nicht ausgeführt

Beitrag von udo1toni »

In der ersten Rule setzt Du ein sendCommand ab, das ist nicht gut. openHAB sendet selbst ein sendCommand, wenn Du den Schalter umlegst.

Frage: in welchem Verzeichnis hast Du die exec.whitelist angelegt? (nur zur Sicherheit...) Gehört die Datei dem User openhab?

Der Parameter autorun=true im Thing bewirkt, dass ein Update des Input Channels dazu führt, dass das Script ausgeführt wird. Der sollte in diesem Fall
(Du startest das Script manuell) auf false stehen. Allerdings sollte dieser Parameter nicht verhindern, dass das Script per run gestartet wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Script wird nicht ausgeführt

Beitrag von kaloschke »

Das ist nur eine Testrule und das sendCommand nur um sicher zu gehen. Das Exec-Thing benötigt ja ein sendCommand(ON), ein Wechsel eines Itemstates reicht nicht.
Es klappt auch mit autorun=false nicht. Ehrlich gesagt habe ich den Sinn nicht ganz verstanden. Und auch Dich nicht mit "ein Update des Input Channels ".
Die exec.whitelist liegt unter /etc/openhab/misc und gehört openhab.

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Script wird nicht ausgeführt

Beitrag von kaloschke »

Krass. Habe gerade mein OH zerschossen. Dachte, ich installier mal des Exec-Binding neu um so sehen, ob das was bringt.
Also deintalliert, OH beendet, Cache gelöscht, Neustart - und - ALLE Bindings sind weg. Da ändert auch ein Neustart des Pi nix.
Das Gleiche hatte ich schon nach einem Restore mit anschließendem Upgrade. Da die Bindings doch einige Einstellungen verlangen, hatte ich das Restore erneut gemacht und dann ohne Upgrade.
Hmm. Sehr seltsam.

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Script wird nicht ausgeführt

Beitrag von oh73 »

das mit dem Script ausführen hat mich interessiert,
hab das mal nach gebaut und auch etwas länger gebraucht, aber es geht!

2 Änderungen hab ich gemacht,

beim [command="....
ein sh eingefügt.
[command="sh /etc/openhab/scripts/test.sh", interval=0, timeout=5, autorun=true]

und in der test.sh
einen Pfad mit angegeben wo die test.txt hin gespeichert werden soll

echo "Geht doch ..." >> /etc/openhab/scripts/test.txt

hab festgestellt ohne die Pfadangabe speichert openhab die Datei nach /var/lib/openhab !

Edit: in der exec.whitelist auch den Befehl anpassen!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Script wird nicht ausgeführt

Beitrag von kaloschke »

Großartig. Vielen Dank für Deine Mühe.
Wie gerne würde ich es jetzt ausprobieren, aber mein OH ist ja im Eimer :-(. Ich mache dazu mal ein Topic auf.
Ich denke, es funktioniert vielleicht auch ohne sh, denn in meinem Ordner /val/lib/openhab befindet sich eine Datei test.txt :-)

Noch mal vielen Dank. Da wäre ich NIÈ drauf gekommen.

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Script wird nicht ausgeführt

Beitrag von oh73 »

ja, es geht auch ohne "sh" !
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Script wird nicht ausgeführt

Beitrag von udo1toni »

kaloschke hat geschrieben: 16. Apr 2021 20:54 Das Exec-Thing benötigt ja ein sendCommand(ON)
Nein?
kaloschke hat geschrieben: 16. Apr 2021 20:54
Es klappt auch mit autorun=false nicht. Ehrlich gesagt habe ich den Sinn nicht ganz verstanden.
Der Punkt ist, es gibt für jedes exec Thing mehrere Channel.
input String Input parameter to provide to the command
output String Output of the last execution of the command
exit Number The exit value of the last execution of the command
run Switch Send ON to execute the command, the current state tells whether it is running or not
lastexecution
Wenn Du den input Channel mit einem String Item verbindest und autorun auf true steht, dann bewirkt ein Update des Items, welches mit dem input Channel verlinkt ist, dass das Kommando ausgeführt wird. Hintergrund ist, dass der input Channel im Kommando als Parameter übergeben werden kann. Man kann also den ausgeführten Befehl variabel nutzen, und muss nicht mal den Befehl zum Ausführen schicken, das macht das Binding auf Wunsch von selbst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Script wird nicht ausgeführt

Beitrag von kaloschke »

Ah, danke für die Erläuterungen

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Script wird nicht ausgeführt

Beitrag von kaloschke »

@oh73
'So, nach der Neuinstallation von OH 3 läuft es jetzt wieder. Und es ist so, wie Du gesagt hast.
Mein eigentliches 'Problem ist jedoch ein anderes und besteht immer noch. Ich möchte mit dem Script eine sogenannte Asterisk Call-Datei von /etc/openhab/scripts/test nach /var/spool/astersik/outgoing kopieren. Das Script test.sh sollte erstmal zeigen, dass es überhaupt ausgeführt wird.

Ich habe für Asterisk den User asterisk und die Gruppe asterisk eingeführt.
Wenn ich auf der Kommandozeile

Code: Alles auswählen

sudo -u asterisk cp callwest.call /var/spool/asterisk/outgoing
eingebe, funktioniert es so wie gewünscht.

Über das Script

Code: Alles auswählen

#!/bin/bash
echo "Geht doch ..." >> /etc/openhab/scripts/test/test.txt
sudo -u asterisk cp callwest.call /var/spool/asterisk/outgoing
wird jedoch nichts kopiert. Scheint also wohl ein Rechteproblem zu sein.

Ich bräuchte da mal jemanden, der sich mit Linux auskennt (im Gegensatz zu mir).

Antworten