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

Gruppen abfragen

Beitrag von manes »

Hi,
ich möchte gerne die einzelnen Kanäle einen KNX FBH Aktor abfragen umd die Öffnung der einzelnen Ventile zu erfahren. Jetzt hatte ich mir gedacht, ich packe die alle in ein Gruppenitem und frage sie dann darüber ab. Eine Regel soll das machen. Meine Frage wäre jetzt, kann man einfach nur abfragen ob sich was in der Gruppe getan hat und dann reagieren, oder muß man das in einer Schleife machen? Wenn über eine Schleife, wie geht sowas? Muß schon was beim Erstellen des Gruppenitems beachtet werden? Muß was beim Hinzufügen in die Gruppe beachtet werden? Ist die Idee überhaupt passen für mein Problem? In erster Linie geht es mir darum überhaupt zu erfahren wenn sich irgendein Stellwert in der Gruppe ändert.
---------------------
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 »

Ja, das geht.
Der Trigger lautet dann Member of GroupItem changed In einer Rule z.B. ungefähr so:

Code: Alles auswählen

rule "Member geändert"
when
    Member of gFBH_Vents changed
then
    logInfo("vents","Ventil {} geändert auf {}",triggeringItem.name,triggeringItem.state)
end
Du kannst auch über die gesamte Gruppe iterieren:

Code: Alles auswählen

gFBH_Vents.forEach[vent| // vent ist der Platzhalter für das aktuell betrachtete Item der Gruppe
    if((vent.state as Number) == 0)
        logInfo("vents","Ventil {} ist geschlossen",vent.name)
    else
        logInfo("vents","Ventil {} ist {} % geöffnet",vent.name,vent.state)
]
Die Gruppen sind ein sehr mächtiges Werkzeug im Zusammenhang mit Rules :)
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 »

hm,
wie macht man sowas in der grafischen Oberfläche? Geht das überhaupt? Es ist ja ein GruppenItem, dann muß es doch auch bei der Eingabe des Triggers als ItemEvent genommen werden? Da wird es aber nicht angezeigt oder gefunden.
---------------------
liebe Grüße Manfred

Benutzeravatar
peter-pan
Beiträge: 2836
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Gruppen abfragen

Beitrag von peter-pan »

Ich bin mir nicht ganz sicher was du genau meinst, aber in den "Pages" kann man das mit einem einfachen Label-Widget darstellen.
group.jpg
Der Yaml-Code dazu sieht so aus:

Code: Alles auswählen

component: oh-label-cell
config:
  action: group
  actionGroupPopupItem: gWindow
  color: '=(items.gWindow.state == "CLOSED") ? "teal" : "red"'
  icon: '=(items.gWindow.state == "CLOSED") ? "oh:window-closed" : "oh:window-open"'
  item: gWindow
  label: =items.gWindow.displayState + " " + " -> click for detail"
  stateStyle:
    color: '=(items.gWindow.state == "CLOSED") ? "blue" : "red"'
  title: Fenster Status
Das Group-Item hat folgendes Aussehen (.items)

Code: Alles auswählen

Group:Contact:OR(OPEN,CLOSED)      gWindow    "Fenster [MAP(de.map):%s]"    <window>            (gInnen)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Pi5/8GB(PiOS Lite 64-bit(trixie)/SSD 120GB - OH5.1.1 openhabian
(Test openHAB 5.2.0 Build #5140 - snapshot)

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

Re: Gruppen abfragen

Beitrag von manes »

ok, war genau anders gemeint. Ich erstelle ein Gruppenitem und ordne dann die einzelnen Items der Gruppe zu. So weit so gut.
diese Gruppe möchte ich dann auf Änderungen überwachen mit einer Regel. Das wollte ich dann aber auch über die grafische Oberfläche machen. Also eine neue Regel erstellen und dann einen Trigger erstellen auf ein Item Event. 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.
---------------------
liebe Grüße Manfred

Benutzeravatar
peter-pan
Beiträge: 2836
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Gruppen abfragen

Beitrag von peter-pan »

...bin mir immer noch nicht ganz sicher was du genau bezwecken willst.

Die Rule von Udo macht doch genau das was du willst; sieh zeigt an, wenn sich ein Gruppen Item ändert und gibt dir im einfachsten Falle eine LOGINFO aus. Damit kannst du auch ein Update auf ein Item machen, welches wiederum ein Rule auslöst. Und was das Gruppenitem selber betrieff, das kennst du ja, oder (z.B. gFBH_Vents) ?
Pi5/8GB(PiOS Lite 64-bit(trixie)/SSD 120GB - OH5.1.1 openhabian
(Test openHAB 5.2.0 Build #5140 - snapshot)

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

Re: Gruppen abfragen

Beitrag von manes »

ich möchte die Regel über Einstellungen/Regeln/neue Regel erstellen machen. Udos Tipp muß doch händisch irgendwo eingegeben werden, oder wie sehe ich das?
---------------------
liebe Grüße Manfred

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

Re: Gruppen abfragen

Beitrag von nw378 »

Udos Tips sind für textbasierte .rules Dateien. Grundsätzlich geht vieles (aber nicht alles!) auch über die WebUI. Und dort im Zweifelsfall über YAML, diehe Hinweis von Peter-Pan.

Ich habe eine grundlegende Frage: möchtest Du denn wirklich eine Regel, die bei jeder Statusänderung der Ventile etwas macht (Log, Notification, etc)? Das ändert sich ja beinahe minütlich etwas, und das 24/7.
Im Debug-Modus, um bspw. herauszufinden, ob sich hier oder dort überhaupt was tut, ok. Aber dauerhaft?

Oder möchtest Du vielmehr einen Verlauf sehen, wo sich wann was tut? Dann wäre es sinnvoller, die Daten zu persistieren und in einem Diagramm darzustellen, so bpsw.:
Bildschirmfoto_6-2-2026_111644_192.168.178.60.jpeg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
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.

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

Re: Gruppen abfragen

Beitrag von manes »

ich möchte mitbekommen wenn innerhalb der Heizperiode alle Regler zu sind, weil gerade die Sonne voll auf dem Haus steht und es aufheizt. Dann kann man die Heizung ausmachen. Das passiert eigentlich recht oft und spart doch deutlich Energie. Normalerweise hätte ich jeden Regler einzeln als TRigger genommen. Mir fiel halt nur ein, ob man das nicht üebr eine Gruppe lösen könnte.
---------------------
liebe Grüße Manfred

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

Re: Gruppen abfragen

Beitrag von nw378 »

Ok, dann würde ich eine Regel schreiben, die alle x Minuten (z.B. 10 - Deine Wahl) abfragt, ob die Anzahl der Ventile mit Stellwert größer Null sich von Null unterscheidet; in diesem Fall wird der Befehl Heizung an gesendet, sonst Heizung aus.

Ungetestet in etwa so:

Code: Alles auswählen

rule "Heizungssteuerung"
when 
    Time cron "0 */10 * * * ?"  //alle 10 Minuten
then
    if (heizPeriode.state == OFF) return; // nur während der Heizperiode, sonst Abbruch

    val heizVentilAuf = gFBH_Vents.members.filter[ item | item.state > 0 ].size > 0 // Boolsche Variable: wenn mind. 1 Heizventil auf ist => true, sonst false
    if (heizVentilAuf)
        if (heizung.state != ON) // Item zur Steuerung deiner Heizung
            heizung.sendCommand(ON)
    if (!heizVentilAuf)  //alle HeizVentile sind zu
        if (heizung.state != OFF)
            heizung.sendCommand(OFF)
end
Zuletzt geändert von nw378 am 6. Feb 2026 12:06, insgesamt 2-mal geändert.
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.

Antworten