Seite 1 von 1

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

Verfasst: 17. Sep 2022 09:58
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

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

Verfasst: 17. Sep 2022 12:29
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...)

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

Verfasst: 17. Sep 2022 15:12
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" ?

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

Verfasst: 17. Sep 2022 17:38
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.

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

Verfasst: 17. Sep 2022 17:55
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

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

Verfasst: 17. Sep 2022 18:43
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.