Gruppe iterieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
manes
Beiträge: 224
Registriert: 23. Jul 2020 17:49
Answers: 0
Wohnort: Kreis Wesel

Gruppe iterieren

Beitrag 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
---------------------
liebe Grüße Manfred

Harka
Beiträge: 488
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Gruppe iterieren

Beitrag 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

manes
Beiträge: 224
Registriert: 23. Jul 2020 17:49
Answers: 0
Wohnort: Kreis Wesel

Re: Gruppe iterieren

Beitrag 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.
---------------------
liebe Grüße Manfred

Antworten