Gruppen abfragen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Gruppen abfragen

Beitrag von manes »

ok, gehe ich wieder zu meinem Punkt oben zurück. Ich habe im Moment ein Brett vor dem Kopf, wie erstelle ich Deinen Vorschlag? Wo muß ich da was anlegen?
---------------------
liebe Grüße Manfred

nw378
Beiträge: 357
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Gruppen abfragen

Beitrag von nw378 »

In dem (Linux) Verzeichnis /etc/openhab/rules/ kannst Du textbasierte Regeln erstellen. Diese Dateien müssen auf .rules enden.

Details dazu findest Du auch hier:

https://www.openhab.org/docs/configurat ... s-dsl.html

Sehr hilfreich zum Programmieren ist Visual Studio Code https://code.visualstudio.com/?wt.mc_id=vscom_downloads.
Dort gibt es auch ein PlugIn für openHAB, so dass Du direkt Werte und Programmierfehler (Syntax) angezeigt bekommst.

Alternativ gehst Du in der WebUI auf Rules, wählst das + für Add, gehst dort auf Code, und gibst folgenden YAML ein:

Code: Alles auswählen

uid: heizungssteuerung
label: Heizungssteuerung
description: Schaltet die Heizung abhängig von offenen Heizventilen
triggers:
  - id: alle_10_minuten
    type: timer.GenericCronTrigger
    configuration:
      cronExpression: "0 */10 * * * ?"
conditions: []
actions:
  - id: logik
    type: script.ScriptAction
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: |
        // nur während der Heizperiode
        if (heizPeriode.state == OFF) return;

         val heizVentilAuf = gFBH_Vents.members.filter[item | item.state > 0].size > 0
       // true, wenn mindestens ein Heizventil geöffnet ist

        if (heizVentilAuf) {
          if (heizung.state != ON)
            heizung.sendCommand(ON)
        } else {
          if (heizung.state != OFF)
            heizung.sendCommand(OFF)
        }

openHAB 5.1.0 @ RPi 5 / M.2 SSD - openhabian/Debian 13.1 (trixie) - InfluxDB2 und Grafana @ Synology Docker - KNX, Viessmann vcontrol, u.v.m.

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

Re: Gruppen abfragen

Beitrag von Harka »

manes hat geschrieben: 6. Feb 2026 09:34 Nur, ab da finde ich das Gruppenitem nicht mehr. (kann man das überhaupt so machen?) Ich dachte man könnte dann einfach nur den Trigger so bauen, das man sagt: reagiere bitte auf Änderungen in der Gruppe. Und dann wird ein inline Script erstellt, wo ich dann weitere Aktionen dazu eingebe.
Ja, geht genau so.
Aktiviere mal unten "Show non-semantic" und nutze die Suchleiste oben (direkt unterhalb "Pick from Model").

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

Re: Gruppen abfragen

Beitrag von manes »

auh verdammt, war ganz unten und ausgegraut. Konnte aber angewählt werden. Hatte ich wohl total übersehen, obwohl ich auch schon show non semantic angeklickt hatte.
---------------------
liebe Grüße Manfred

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

Re: Gruppen abfragen

Beitrag von udo1toni »

Noch ein Tipp von mir :) Weil Du ja explizit schreibst, dass es darum geht, ob alle Regler auf 0 stehen...
Dazu brauchst Du überhaupt keine Regel (bzw. nur noch, um was auch immer auszulösen).

Definiere ein Group:Number:SUM Item (Gruppenitem vom Typ Number mit der Aggregation SUM) und ordne alle Regler zu. Wenn alle Regler 0 sind, ist auch das Group Item 0, ansonsten hält es die Summe aller offenen Ventile. Du könntest auch mit MAX nach dem höchsten Wert schauen oder mit AVG den Durchschnitt nehmen, ganz nach Belieben.

Wenn das Group Item so definiert ist, kannst Du entweder zwei Rules anlegen oder auch nur eine, die zwei Trigger hat, nämlich Item MeinGroupItem changed to 0 und Item MeinGroupItem changed from 0, dann musst Du in der Rule über die implizite Variable newState nur abfragen, ob der aktuelle Zustand von 0 abweicht. Ist das der Fall, muss die Heizung laufen, ansonsten kann sie ausgeschaltet werden.

Die Rule dazu kannst Du über die Main UI eingeben (Add Action -> Inline Script) und hast dort die Wahl zwischen verschiedenen Scriptsprachen. Von Haus aus ist (noch) die DSL installiert, Du kannst aber auch Java Script Scripting installieren und ein passendes Script grafisch erstellen, das geht mit Blockly.
Dabei kann man mit etwas Erfahrung auch sehr komplexe Logiken mit Blockly erstellen. Und das Beste: Blockly generiert JavaScript Code, den man sich anschauen kann (man kann ihn auch editieren, zerstört dann aber evtl. die Blockly Ansicht)

Die fertige Rule wird dank des Group Items mit Aggregation nur beim Wechsel von oder nach 0 ausgelöst. Eventuell ist es sinnvoll, hier noch Timeouts einzubauen, um ein ständiges Ein- und Ausschalten zu verhindern.
openHAB5.1.2 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.5 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

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

Re: Gruppen abfragen

Beitrag von manes »

Das klingt nach einem guten Plan, Danke. Den werde ich mal weiter verfolgen. Ich merke, die Tiefen sind noch sehr tief für mich....
---------------------
liebe Grüße Manfred

Antworten