Seite 1 von 1

Rule macht nicht, was ICH will ...

Verfasst: 6. Feb 2024 17:01
von kaloschke
Hallo,
ich habe folgende Rule:

Code: Alles auswählen

rule "Remote Button6 short"
when
    Channel "livisismarthome:BRC8:Nirwana:d85e0ec0133346dc9d29d71ba332ff77:button6" triggered SHORT_PRESSED or
then
    logInfo("Button6 short", "Socket_GardenLight.state: {}",Socket_GardenLight.state.toString)
    if (Socket_GardenLight.state == ON) {
        Socket_GardenLight.sendCommand(OFF)
    } 
    else {
        Socket_GardenLight.sendCommand(ON)
    }
end
Erhofftes Verhalten ist, dass das Item Socket_GardenLight bei jedem Tastendruck umgeschaltet wird.
Im event.log steht aber:

Code: Alles auswählen

2024-02-06 16:43:27.653 ... - Item 'Socket_GardenLight' received command ON
2024-02-06 16:43:27.655 ... - Item 'Socket_GardenLight' predicted to become OFF
und im openhab.log bei JEDEM Tastendruck:

Code: Alles auswählen

2024-02-06 16:43:27.646 ... - Socket_GardenLight.state: OFF
Warum wird nach einem richtigen ON sofort wieder auf OFF gestellt? Verstehe ich nicht :-(

Re: Rule macht nicht, was ICH will ...

Verfasst: 6. Feb 2024 17:47
von tomtom97
Hallo,
kaloschke hat geschrieben: 6. Feb 2024 17:01 Hallo,
ich habe folgende Rule:

Code: Alles auswählen

rule "Remote Button6 short"
when
    Channel "livisismarthome:BRC8:Nirwana:d85e0ec0133346dc9d29d71ba332ff77:button6" triggered SHORT_PRESSED or
then
Da ist ein "or" am Zeilenende zu viel!

Re: Rule macht nicht, was ICH will ...

Verfasst: 6. Feb 2024 20:23
von mad-mike
Moin, Ich habe einige ""long_pressed"", sowie Batterie taster so verknüpft:

Code: Alles auswählen

rule "Remote Button6 short"
when
    Channel "livisismarthome:BRC8:Nirwana:d85e0ec0133346dc9d29d71ba332ff77:button6" triggered SHORT_PRESSED
then
  Socket_GardenLight.sendCommand(if(Socket_GardenLight.state != ON) ON else OFF)
end

Re: Rule macht nicht, was ICH will ...

Verfasst: 6. Feb 2024 21:11
von kaloschke
@tomtom97 Sorry, da war noch ein zweites Event von einer zweiten Remote. Habe ich rausgelöscht, da es für das Problem irrelevant ist.
@mad-mike Gleiches Ergebnis. Der Inhalt meiner Rule ist m.E. ja auch in Ordnung :roll:

Re: Rule macht nicht, was ICH will ...

Verfasst: 6. Feb 2024 21:28
von tomtom97
Wird das SHORT_PRESSED eventuell bei einem Tastendruck mehrfach getriggert?

Re: Rule macht nicht, was ICH will ...

Verfasst: 7. Feb 2024 03:10
von udo1toni
Wie ist Socket_GardenLight definiert? Womit ist das Item verlinkt? Wenn Du über die UI Socket_GardenLight direkt schaltest, was steht dann im Log?
Was passiert drum herum? Im events.log sollte es z.B. jeweils auch eine Zeile zum Channel geben, der die Rule triggert. Ist das der Fall? Wird nur ein Trigger angezeigt?

Welche Version von openHAB setzt Du ein? Es gab mal in openHAB3 ein entsprechendes Verhalten, also nach einem sendCommand(ON) ein predeicted to become OFF. Der Workaround war, autoupdate abzuschalten, das wäre auch mein erster Vorschlag - auch wenn das erst mal eine Art Symptombehandlung wäre.
Für das Toggeln wäre allerdings in der Tat der ternäre Operator die saubere Lösung, auch wenn Dein Code quasi das gleiche macht und ebenfalls funktionieren sollte.
Nutzt Du noch weitere Trigger dieses Tasters? Oder anders ausgedrückt: könnte es sein, dass Du viele verschiedene "kleine" Rules hast, die sich um solche Tastendrücke kümmern? Oft können solche Rules prima optimiert werden, wenn man sie als Gruppe von Rules betrachtet.