Gruppen abfragen
-
manes
- Beiträge: 243
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Gruppen abfragen
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.
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
liebe Grüße Manfred
- udo1toni
- Beiträge: 15622
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Gruppen abfragen
Ja, das geht.
Der Trigger lautet dann Member of GroupItem changed In einer Rule z.B. ungefähr so:
Du kannst auch über die gesamte Gruppe iterieren:
Die Gruppen sind ein sehr mächtiges Werkzeug im Zusammenhang mit Rules 
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)
endCode: 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)
]
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
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
- Wohnort: Kreis Wesel
Re: Gruppen abfragen
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.
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
liebe Grüße Manfred
- peter-pan
- Beiträge: 2836
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Gruppen abfragen
Ich bin mir nicht ganz sicher was du genau meinst, aber in den "Pages" kann man das mit einem einfachen Label-Widget darstellen.
Der Yaml-Code dazu sieht so aus:
Das Group-Item hat folgendes Aussehen (.items)
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
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)
(Test openHAB 5.2.0 Build #5140 - snapshot)
-
manes
- Beiträge: 243
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Gruppen abfragen
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.
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
liebe Grüße Manfred
- peter-pan
- Beiträge: 2836
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Gruppen abfragen
...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) ?
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)
(Test openHAB 5.2.0 Build #5140 - snapshot)
-
manes
- Beiträge: 243
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Gruppen abfragen
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
liebe Grüße Manfred
-
nw378
- Beiträge: 357
- Registriert: 22. Sep 2018 10:38
Re: Gruppen abfragen
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.:
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.:
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
- Wohnort: Kreis Wesel
Re: Gruppen abfragen
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
liebe Grüße Manfred
-
nw378
- Beiträge: 357
- Registriert: 22. Sep 2018 10:38
Re: Gruppen abfragen
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:
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.