Seite 1 von 1

Gruppe iterieren

Verfasst: 5. Dez 2024 17:02
von manes
Hi,
ich habe x Temperatursensoren, die jeweils eine Aktion ausführen sollen, wenn sich deren Wert ändert. Also dachte ich mir packt man die alle zusammen in eine Gruppe. Dann habe ich eine Regel erstellen wollen, die auf die Änderung eines Items in der Gruppe reagieren soll. Mit Erstaunen habe ich festgestellt, das man in der WHEN Abfrage wohl die Members in der Gruppe abfragen kann um dann zu reagieren. Leider ist das Ergebnis nicht so, wie ich es erhofft hatte. Es scheint wohl am laufenden Band eine Reaktion der Regel zu geben, aber nicht nur wenn sich die Werte der einzelnen Sensoren ändert. Wie muß ich denn da vorgehen? Oder war diese Idee erstmal totaler Unsinn? Zumal die Items numerisch sind, aber die Regel wohl darauf gar nicht ragieren kann, wenn man die Werte angeben will/muß, die sich ändern.
Das hier ist erstmal der einfache Code der Regel

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      groupName: Temperaturen
    type: core.GroupStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/javascript
      script: >-
        var telegramAction =
        actions.get("telegram","telegram:telegramBot:xxxxxxxx");

        telegramAction.sendTelegram("eine Temp hat sich verändert");
    type: script.ScriptAction
Im Einsatz ist OH 4

Re: Gruppe iterieren

Verfasst: 5. Dez 2024 18:31
von Harka
Moin,
Update dürfte hier der falsche Trigger sein.
Beispiel mit detaillierterer Ausgabe:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      groupName: g_Temperaturen
    type: core.GroupStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/javascript
      script: >
        var telegramAction = actions.get("telegram","telegram:telegramBot:xxxxxxxx");
        var triggerTemp = ((event.itemState !== undefined) ? Quantity(event.itemState.toString()) : undefined);
        var triggerName = event.itemName;
        telegramAction.sendTelegram(([triggerName,'wechselte auf :',triggerTemp].join('')));
    type: script.ScriptAction

Re: Gruppe iterieren

Verfasst: 5. Dez 2024 19:07
von manes
Prima, das klappt und ist sogar noch viel mehr als ich dachte. Jetzt werden nur die angezeigt, die sich geändert haben. Echt Klasse, sowas hatte ich die ganze Zeit gesucht. Vielen Dank.