Hallo Community,
ich habe folgendes DOIF Gerät:
Internals:
DEF ([_Licht$":on"])
FUUID 646c5e0a-f33f-53b5-a44c-d3e1e549aa4406fe
MODEL FHEM
NAME Count_Lights
NOTIFYDEV .*(_Licht$).*,global
NR 660
NTFY_ORDER 50-Count_Lights
STATE 5
TYPE DOIF
VERSION 26938 2023-01-01 18:13:32
eventCount 6
Helper:
DBLOG:
state:
logdb:
TIME 1684870319.22021
VALUE 5
READINGS:
2023-05-23 08:48:22 cmd 2
2023-05-23 08:48:22 cmd_event Count_Lights
2023-05-23 08:48:22 cmd_nr 2
2023-05-23 08:48:19 mode enabled
2023-05-23 21:31:59 state 5
2023-05-23 21:30:24 timer_01_c01 error: Wrong timespec _Licht$":on": either HH:MM:SS or {perlcode}
Regex:
STATE:
:
STATE:
"_Licht$" _Licht$
accu:
collect:
attr:
cmdState:
condition:
0 ::DOIF_time_once($hash,0,$wday)
do:
0:
0
1:
helper:
NOTIFYDEV .*(_Licht$).*,global
event rampTime: 0,on,dim: 50,dimValueLast: 50
globalinit 1
last_timer 1
sleeptimer -1
triggerDev Kueche_innen_Dim_Licht
triggerEvents:
rampTime: 0
on
dim: 50
dimValueLast: 50
triggerEventsState:
rampTime: 0
state: on
dim: 50
dimValueLast: 50
localtime:
perlblock:
time:
0 _Licht$":on"
timeCond:
0 0
timer:
0 0
timers:
0 0
uiState:
uiTable:
Attributes:
room System
state [#"_Licht$":state:"on"]
Nun würde ich gerne auch noch gerne alle Geräte zählen, die mit HUE im Namen anfangen, wie muss ich den dann state und das DEF anpassen, schaffe es nicht, habe es wie folgt versucht, leider ohne Erfolg:
DEF: ([_Licht$":on"]|[^HUE$":1"])
state: [#"_Licht$":state:"on"|#"^HUE$":onoff:"1"]
Ich danke schonmal für Eure Hilfe ;-)
Hier ein Beispiel von mir.
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-on-change-reading .*
attr di_uiTable_Licht event_Readings ligths:\
my $hm=[@as(<br>)"^HmIP_BSM:^state|^HM_LC:^hmstate":hmstate:"on",""];;\
my $hue=[@as(<br>)"HUEDevice:^onoff":onoff:"1",""];;\
my $br="<br>";;\
my $anz=[#"^HmIP_BSM:^state|^HM_LC:^state":state:"on","0"] + [#"HUEDevice:^onoff":onoff:"1","0"];;\
if ($anz eq "0") \
{"alles aus";;} \
else \
{if ($anz eq "0" or $anz eq "1") \
{$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
Danke für deine Antwort, gibt es denn keine einfache Möglichkeit zur Abfrage nach "or", wie in der Command ref mit AND:
[@"rooms$":temperature:$_ > 20 and $room eq "livingroom"]
-->
[@"rooms$":temperature:$_ > 20 | $room eq "livingroom"]
geht nicht
Spezielle Fragen zu DOIF solltest Du im entsprechenden Unterforum stellen. Da sind die Chancen auf eine Antwort größer.
Zitat von: TimoD am 24 Mai 2023, 08:19:40Danke für deine Antwort, gibt es denn keine einfache Möglichkeit zur Abfrage nach "or", wie in der Command ref mit AND:
[@"rooms$":temperature:$_ > 20 and $room eq "livingroom"]
-->
[@"rooms$":temperature:$_ > 20 | $room eq "livingroom"]
geht nicht
wenn es
and gibt dann wird es wohl auch
or geben ;) siehe Perl-Operatoren
Ja, wenn ich dann aber abfragen möchte wie viele HUE und Decken Lampen an sind, mit folgender Abfrage geht or nicht:
[#"^HUE":onoff:"1" or "_Licht$":state:"on"]
wie müsste den der Code aussehen, das er dieses zusammen zählt?
(separat funktioniert die jeweilige Abfrage:[#"^HUE":onoff:"1"] [#"_Licht$":state:"on"])
Grüße
Zitat von: TimoD am 25 Mai 2023, 11:18:00Ja, wenn ich dann aber abfragen möchte wie viele HUE und Decken Lampen an sind, mit folgender Abfrage geht or nicht:
[#"^HUE":onoff:"1" or "_Licht$":state:"on"]
wie müsste den der Code aussehen, das er dieses zusammen zählt?
(separat funktioniert die jeweilige Abfrage:[#"^HUE":onoff:"1"] [#"_Licht$":state:"on"])
Grüße
Dann musst du sie einfach zusammenaddieren [#"^HUE":onoff:"1"] + [#"_Licht$":state:"on"]