Rule wird nicht ausgeführt, wie prüfen ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
TorstenE
Beiträge: 246
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von TorstenE »

Ich habe eine rule für einen Aqara H1 Schalter.
Wird die linke Taste gedrückt "action=single_left" soll eine Steckdose ein/ausgeschaltet werden.

Wenn ich die Rule im UI starte wird die Steckdose wie gewünscht ein/aus geschaltet.
Aber irgendwie erkennt die Rule die "action" nicht. Obwohl das ITEM selbst seinen
status entsprechend ändert.

Wie kann ich das prüfen, weshalb die Rule nicht reagiert ?

Danke

Torsten


Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: AqaraH1Doppelschalter01_Action
      state: single_left
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      # Hier nur den blockSource rausgenommen, um die script hier zu kürzen
      type: application/javascript
      script: |
        if (itemRegistry.getItem('Steckdose2_Schalter').getState() == 'ON') {
          events.sendCommand('Steckdose2_Schalter', 'OFF');
        } else {
          events.sendCommand('Steckdose2_Schalter', 'ON');
        }
    type: script.ScriptAction
openHAB 5.0.0 (#4495) auf einem Pi 4 mit openHABian

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

Re: Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von udo1toni »

Ein Status und ein String sind zwei unterschiedliche Dinge. Setze einfach keinen Status im Trigger, sondern prüfe entweder über die Condition (but only if) oder teste den aktuellen Status direkt im Code (jeweils als String...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
TorstenE
Beiträge: 246
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von TorstenE »

Hallo Udo1Toni,

das verstehe ich, aber wer/was löst dann die Rule aus?
Es muss ja irgend ein Event stattfinden, damit die Rule anfängt zu "arbeiten" ?
openHAB 5.0.0 (#4495) auf einem Pi 4 mit openHABian

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

Re: Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von udo1toni »

Der Trigger ist, dass das Item ein Update bekommt. Nur ist es egal, welches Update es bekommt.
Falls das Item mehrere unterschiedliche Updates bekommt (weil es mehrere Schaltflächen gibt z.B.) kannst Du die Rule auch für alle möglichen Werte gemeinsam nutzen. Du fragst Dann halt stumpf mit if(itemwert == ...) die verschiedenen Möglichkeiten ab.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
TorstenE
Beiträge: 246
Registriert: 12. Jan 2022 18:29
Answers: 4
Wohnort: Niederstaufen

Re: Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von TorstenE »

Hallo Udo1Toni,

in der Zwischenzeit läuft es. Ich hab OH neu gestartet die Rules (Ein/Aus) neu erstellt, dann lief es.
Jetzt noch eine Frage zu diesem Thema:
Der Schalter liefert die "action" "single_left" wenn die linke Taste gedrückt wurde.
Wird die Taste erneut gedrückt, wird kein Trigger ausgelöst, da es kein "update" und kein "change" gibt.
Ich habe jetzt einfach am Ende des Scriptes immer den Wert des Items auf "NULL" gesetzt. Damit erfolgt bei jedem Tastendruck ein "update"

Das ist jedoch vermutlich nicht die sauberste Lösung, oder ?

Danke

Torsten
openHAB 5.0.0 (#4495) auf einem Pi 4 mit openHABian

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

Re: Rule wird nicht ausgeführt, wie prüfen ?

Beitrag von udo1toni »

Das kann nicht sein.
Das received update Ereignis muss bei jedem Tastendruck kommen, egal welchen Zustand das Item zu dem Zeitpunkt hat.
Wenn es aber anders nicht funktioniert, ist die Lösung, das Item gezielt auf einen Status zu setzen, der nicht vom Binding kommen kann, sicher legitim.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten