OpenHAB2 Exec Skript wird nur einmal ausgeführt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Bernd
Beiträge: 4
Registriert: 21. Feb 2019 17:50
Answers: 0

OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von Bernd »

Hallo,
ich über HAB über das Exec Binding mittels Skript Infrarotsignale an meine Musikanlage zu senden. Das funktioniert auch einmalig nach Neustart von OpenHAB. Danach wird die Rule beim Schalten zwar durchlaufen, es werden aber keine IR-Signale mehr gesendet.
als Thing habe ich definiert

Code: Alles auswählen

Thing exec:command:yamaha_IR [
    command="/etc/openhab2/scripts/yamaha.sh %2$s",
    interval=0,
    autorun=true]

Items:

Code: Alles auswählen

Switch IR_SEND_POWER  <poweroutlet>
Switch ON_OFF { channel="exec:command:yamaha_IR:run" }
String IR_SEND_Args { channel="exec:command:yamaha_IR:input" }
String IR_SEND_Out { channel="exec:command:yamaha_IR:output" }
Sitemap:

Code: Alles auswählen

sitemap yamaha label="Yamaha"{
    Frame label="Allgemeine Schaltungen" {
		Switch item=IR_SEND_POWER
	    }
}
Rule

Code: Alles auswählen

rule "yamaha"
when
    Item IR_SEND_POWER received command
then
    IR_SEND_Args.sendCommand("KEY_POWER")
    Thread::sleep(500)
end

Hat jemand von euch eine Idee, was ich falsch mache?
Viele Grüße
Bernd

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

Re: OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von udo1toni »

Wenn Du Dir den Switch ON_OFF anschaust, springt der wieder auf OFF zurück?

Falls nicht, könntest Du mal testweise den timeout Parameter setzen.

Code: Alles auswählen

Thing exec:command:yamaha_IR [
    command="/etc/openhab2/scripts/yamaha.sh %2$s",
    interval=0,
    timeout=2,
    autorun=true
]
Ich bin mir auch nicht sicher (einfach, weil ich das noch nie probiert habe), ob derselbe Befehl vom Binding als neuer Befehl erkannt wird (eigentlich wäre das aber das logische Verhalten).

Ist Dir bewusst, dass Du die Rule nicht brauchst? In der Sitemap könntest Du das hier schreiben:

Code: Alles auswählen

sitemap yamaha label="Yamaha"{
    Frame label="Allgemeine Schaltungen" {
		Switch item=IR_SEND_Args label="Yamaha" mappings=[KEY_POWER="Power"]
	    }
}
Wichtig wäre dann, die Itemdefinition zu ergänzen:

Code: Alles auswählen

String IR_SEND_Args { channel="exec:command:yamaha_IR:input", autoupdate="false" }
Das nur, um dafür zu sorgen, dass der Knopf zum Drücken wieder heraus springt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Bernd
Beiträge: 4
Registriert: 21. Feb 2019 17:50
Answers: 0

Re: OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von Bernd »

Vielen Dank erst mal. Ich habe das so übernommen, es ändert sich aber leider nichts daran, dass die LED nur beim ersten Schalten ein Signal abgibt und dann erst wieder nach einem Neustart des OpenHAB Service. Ich werde morgen weiter probieren.

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

Re: OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von udo1toni »

Dann wäre die Frage, wie das Script selbst aussieht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Bernd
Beiträge: 4
Registriert: 21. Feb 2019 17:50
Answers: 0

Re: OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von Bernd »

Das Skript ist relativ kurz.

Code: Alles auswählen

irsend SEND_ONCE Yamaha $1
Der Parameter wird aus OpenHAB heraus übergeben. Eigentümer und Gruppe des Skripts sind jeweils openhab. An den Rechten kann es eigentlich auch nicht liegen, sonst würde die IR-LED ja nicht einmal aus OpenHAB angesprochen und danach nicht wieder.

Bernd
Beiträge: 4
Registriert: 21. Feb 2019 17:50
Answers: 0

Re: OpenHAB2 Exec Skript wird nur einmal ausgeführt

Beitrag von Bernd »

Hier noch ein Auszug aus der Log-Datei:

Code: Alles auswählen

2019-02-24 02:04:47.095 [hingStatusInfoChangedEvent] - 'exec:command:yamaha_IR' changed from UNINITIALIZED to INITIALIZING
2019-02-24 02:04:47.103 [hingStatusInfoChangedEvent] - 'exec:command:yamaha_IR' changed from INITIALIZING to ONLINE
2019-02-24 02:04:54.312 [ome.event.ItemCommandEvent] - Item 'IR_SEND_Args' received command KEY_POWER
2019-02-24 02:04:54.367 [vent.ItemStateChangedEvent] - ON_OFF changed from NULL to ON
2019-02-24 02:04:54.386 [vent.ItemStateChangedEvent] - ON_OFF changed from ON to OFF
2019-02-24 02:04:55.687 [ome.event.ItemCommandEvent] - Item 'IR_SEND_Args' received command KEY_POWER
2019-02-24 02:04:56.614 [ome.event.ItemCommandEvent] - Item 'IR_SEND_Args' received command KEY_POWER
2019-02-24 02:04:57.397 [ome.event.ItemCommandEvent] - Item 'IR_SEND_Args' received command KEY_POWER
2019
Beim ersten auslösen wird der Switch "ON_OFF" verändert, danach nicht mehr.

Antworten