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
Hallo Damian,
hast Du keinen Tipp für mich?
Viele Grüße
Jürgen
Im Prinzip genauso:
lights: [@"HM":state:"on",""]." ".[@"HUEDevice":onoff:"1",""]
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
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.
Danke.
Das kommt davon, wenn man nur "copy und paste" macht 8)
Jetzt geht alles.
Viele Grüße
Jürgen
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
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.
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
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.
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.
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
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.
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