Erledigt: event_Readings für mehrere Geräte

Begonnen von juemuc, 07 Januar 2021, 18:03:42

Vorheriges Thema - Nächstes Thema

juemuc

Hallo,

ich möchte unter "lights" alle Lampen, die an sind, auflisten. Leider habe ich Lampen, die dies über "state:on" und andere, die dies über "onoff:1" anzeigen. 

ligths:[@as(<br>)"^HmIP_BSM":state:"on","alles aus"],
count:[#"HM":state:"on","off"] + [#"HUEDevice":onoff:"1","0"]


Wie muss ich dies definieren?

Der Counter funktioniert  ;D

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

juemuc

Hallo Damian,

hast Du keinen Tipp für mich?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Im Prinzip genauso:

lights: [@"HM":state:"on",""]." ".[@"HUEDevice":onoff:"1",""]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

Zitat von: Damian am 09 Januar 2021, 17:36:51
Im Prinzip genauso:

lights: [@"HM":state:"on",""]." ".[@"HUEDevice":onoff:"1",""]

Hallo Damian,

vielen Dank. Allerdings wird hier der Devicenamen und nicht de "alias" übertragen. Außerdem sind die Devices mit Komma getrennt.
ligths    Lichtschalter Büro HUEDevice10,HUEDevice9

Was mache ich noch falsch?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Zitat von: juemuc am 09 Januar 2021, 18:11:22
Hallo Damian,

vielen Dank. Allerdings wird hier der Devicenamen und nicht de "alias" übertragen. Außerdem sind die Devices mit Komma getrennt.
ligths    Lichtschalter Büro HUEDevice10,HUEDevice9

Was mache ich noch falsch?

Viele Grüße
Jürgen
Wenn du es doch vorher geschafft hast, dann sollte es jetzt erst recht kein Problem sein.

as(<br>) ist doch in der Commandref beschrieben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

Danke.

Das kommt davon, wenn man nur "copy und paste" macht 8)

Jetzt geht alles.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

juemuc

Hallo Damian,

ich benötige noch einmal Deine Hilfe.

Die nachfolgende Zeile sorgt dafür, das ist auch "alles aus" zusätzlich übergeben wird, wenn nur ein HUE-Device an ist. Es soll aber "alles aus" nur übergeben werden, wenn keine Lampe an ist.
ligths:[@as(<br>)"^HmIP_BSM|^HM_LC":state:"on","alles aus"]."<br>".[@as(<br>)"HUEDevice":onoff:"1",""],

Wie ist der Eintrag zu ändern?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Zitat von: juemuc am 12 Januar 2021, 20:32:31
Hallo Damian,

ich benötige noch einmal Deine Hilfe.

Die nachfolgende Zeile sorgt dafür, das ist auch "alles aus" zusätzlich übergeben wird, wenn nur ein HUE-Device an ist. Es soll aber "alles aus" nur übergeben werden, wenn keine Lampe an ist.
ligths:[@as(<br>)"^HmIP_BSM|^HM_LC":state:"on","alles aus"]."<br>".[@as(<br>)"HUEDevice":onoff:"1",""],

Wie ist der Eintrag zu ändern?

Viele Grüße
Jürgen

Man kann es beliebig kompliziert definieren, da du sowohl verschiedene Devices, als auch verschiedene Readings abfragst, müsste man mehr Logik einbringen, aber vielleicht reicht dir statt "alles aus" in beiden Fällen "" nichts anzugeben. Das Nichts könnte man dann über ein weiteres Reading, auf etwas anders, wie "alles aus" umbiegen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

#8
Hallo Damian,

ja mit "" habe ich es aktuell gelöst. Ich hatte gehofft, dass ich noch ein ."<br>"[wenn countl = 0, dann "alles aus"] anhängen kann. Hierbei könnte ich den Zähler dieses DOIF abfragen, der ja dann null ist. Aber alle meine Versuche sind kläglich gescheitert  :-[

Auch den Zeilenumbruch würde ich gerne unterdrücken, wenn die erste Bedingung nicht zutrifft. Ansonsten ist die Ausgabe immer eine Zeile tiefer.

Hast Du noch einen Tipp?

Viele Grüße
Jürgen   
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Zitat von: juemuc am 12 Januar 2021, 22:52:45
Hallo Damian,

ja mit "" habe ich es aktuell gelöst. Ich hatte gehofft, dass ich noch ein ."<br>"[wenn countl = 0, dann "alles aus"] anhängen kann. Hierbei könnte ich den Zähler dieses DOIF abfragen, der ja dann null ist. Aber alle meine Versuche sind kläglich gescheitert  :-[

Auch den Zeilenumbruch würde ich gerne unterdrücken, wenn die erste Bedingung nicht zutrifft. Ansonsten ist die Ausgabe immer eine Zeile tiefer.

Hast Du noch einen Tipp?

Viele Grüße
Jürgen

Meine HueDevices haben on/off im state. Haben deine das nicht?

Ansonsten kann man mit stateFormat den Status anpassen, dann kannst du es mit einer einheitlichen Abfrage darstellen - das dürfte einfacher sein, als drumherum zu programmieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#10
Hier drumherum programmiert als Anregung:

ligths:my $hm=[@as(<br>)"^HmIP_BSM|^HM_LC":state:"on",""];my $hue=[@as(<br>)"HUEDevice":onoff:"1",""];
my $br="<br>";
if ($hm eq "" and $hue eq "") {
  "alles aus";
} else {
  if ($hm eq "") {
    $br="";
  }
  $hm.$br.$hue;
}


Den Code  ab der zweiten Zeile könnte man auch in eine eigene Funktion auslagern - $hm und $hue müssten dann übergeben werden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

Zitat von: Damian am 13 Januar 2021, 00:08:42
Meine HueDevices haben on/off im state. Haben deine das nicht?

Ansonsten kann man mit stateFormat den Status anpassen, dann kannst du es mit einer einheitlichen Abfrage darstellen - das dürfte einfacher sein, als drumherum zu programmieren.

Hallo Damian,

dann solltest Du Deine HUE-Lampen einmal dimmen  8)
Alternativ hatte ich überlegt überall ein userreadings "onoff" zu hinterlegen.

Deine "Programmierung" ist super. Vielen vielen Dank. Ich habe nur $br="br" durch $br="<br>" ersetzt ;)

Viele Grüße
Jürgen

3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Zitat von: juemuc am 13 Januar 2021, 20:27:30
Hallo Damian,

dann solltest Du Deine HUE-Lampen einmal dimmen  8)
Alternativ hatte ich überlegt überall ein userreadings "onoff" zu hinterlegen.

Deine "Programmierung" ist super. Vielen vielen Dank. Ich habe nur $br="br" durch $br="<br>" ersetzt ;)

Viele Grüße
Jürgen

OK, ich habe keine dimmbaren Lampen. Ich habe $br="<br>" für die Nachwelt angepasst. Du solltest noch bedenken, dass jedes Event des jeweiligen Devices einen "aufwändigen" Scannvorgang im DOIF initiiert.

Daher ist es besser die regex-Trigger-Angabe genauer zu spezifizieren:

[@as(<br>)"^HmIP_BSM|^HM_LC:^state":state:"on",""]

und

[@as(<br>)"HUEDevice:^onoff":onoff:"1",""]

wegen state in der ersten Abfrage muss man noch das Attribut

addStateEvent 1

im DOIF setzen, weil state selbst nicht im Event-Monitor erscheint.

Das dürfte einiges an Ressourcen schonen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

Hallo Damian,

vielen Dank noch einmal für Deine Zusatztipps. Anbei meine komplette Definition:
defmod di_uiTable_Licht DOIF ## Visualisierung von Lichtschaltern und Steckdosen, die an sind
attr di_uiTable_Licht addStateEvent 1
attr di_uiTable_Licht alias Licht/Steckdosen-Status
attr di_uiTable_Licht devStateStyle style="text-align:right"
attr di_uiTable_Licht event_Readings ligths:\
my $hm=[@as(<br>)"^HmIP_BSM:^state|^HM_LC:^state":state:"on",""];;\
my $hue=[@as(<br>)"HUEDevice:^onoff":onoff:"1",""];;\
my $br="<br>";;\
if ($hm eq "" and $hue eq "") \
  {"alles aus";;} \
else \
  {if ($hm eq "") \
     {$br="";;}\
   $hm.$br.$hue;;},\
sockets:[@as(<br>)"^FBDECT_FB|HM_ES":state:"on","alles aus"],\
countl:[#"HmIP_BSM:^state|^HM_LC:^state":state:"on","0"] + [#"HUEDevice:^onoff":onoff:"1","0"],\
counts:[#"HM_ES|FBDECT_FB:^state":state:"on","0"]
attr di_uiTable_Licht room Statuszentrale
attr di_uiTable_Licht uiTable {\
package ui_Table;;\
$TC{1}="align='center'";;\
$TC{2}="align='left'";;\
}\
"Licht"|icon([$SELF:ligths],"on","off",".*","alles aus")|[$SELF:ligths]\
"Steckdosen"|icon([$SELF:sockets],"black_Steckdose.on","black_Steckdose.off",".*","alles aus")|[$SELF:sockets]\
"Anzahl Licht"|[$SELF:countl]\
"Anzahl Steckdosen"|[$SELF:counts]



Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).