Hallo,
ich habe hier ein Perl-Modus-DOIF, das mir in der Übersicht (Everything -> DOIF) das Reading "doifState" anzeigen soll. Momentan steht da permanent "initialized", was mir wenig/nichts bringt. Leider kann ich für dieses Device das Attribut cmdState nicht auswählen. Bei meinen anderen, nicht Perl-Modus-basierten DOIF-Devices, ist cmdState auswählbar.
Was kann ich tun, um mir das Reading "doifState" trotzdem anzeigen lassen zu können?
Gruß Chris
Edit: Hier ein List des entspr. Devices:
Internals:
DEF ## {if([10:00]) {fhem("set HM_rolloEsszimmer pct 10")}} ## schlecht
## {if([10:00]) {fhem_set("HM_rolloEsszimmer pct 10")}} ## gut
## {if([10:00]) {set_Reading("doifState","fhemCmd")}} ## Reading im selben Device ändern
{if (fhem("uptime raw") > 10 ) ## Mit Versatz starten, um eintreffende Meldungen der CCU2 zu ignorieren
{
{if([":fhemCmd"] or ([HM_rolloEsszimmer:""] and [?HM_rolloEsszimmer:state] eq "closed")) ## Bei fhemCmd, oder wenn morgens händisch erstmalig am Tag der Rollo betätigt wird
{set_Reading("doifState","running");
set_Exec("fhemCmdTimer",40,'set_Reading("doifState","idle")')}} ## def. Zeit das doifState auf fhemCmd setzen.
{if([HM_rolloEsszimmer:""] and get_Reading("doifState") eq "idle" and [?twilight:azimuth] >= "202") {set_Reading("doifState","sonnenstDisabled");
fhem_set("doif_sonnenstand disable")}}
{if([23:59]) {set_Reading("doifState","idle");
fhem_set("doif_sonnenstand enable")}} ## Um 23:59 Uhr: doif_sonnenstand aktivieren, da um 0:00 Uhr doif_sonnenstand innerhalb von doif_sonnenstand auf "idle" zurückgesetzt wird.
}
}
MODEL Perl
NAME doif_rolloEZhandlerPerl
NR 75
NTFY_ORDER 50-doif_rolloEZhandlerPerl
STATE initialized
TYPE DOIF
READINGS:
2018-10-20 10:32:39 Device HM_rolloEsszimmer
2018-10-20 10:32:39 block_01 executed
2018-10-20 10:33:12 doifState idle
2018-10-20 10:32:39 e_HM_rolloEsszimmer_events 1.WORKING: no,1.DIRECTION: none,hmstate: open
2018-10-20 09:41:59 mode enabled
2018-10-20 09:41:59 state initialized
2018-10-20 09:41:59 timer_01_c01 20.10.2018 23:59:00
Regex:
cond:
:
0:
":fhemCmd" :fhemCmd
condition:
0 if (fhem("uptime raw") > 10 ) {
{if(::EventDoIf('',$hash,'fhemCmd',0) or (::EventDoIf('HM_rolloEsszimmer',$hash,'',1) and ::ReadingValDoIf($hash,'HM_rolloEsszimmer','state') eq "closed")) {set_Reading("doifState","running");
set_Exec("fhemCmdTimer",40,'set_Reading("doifState","idle")')}}
{if(::EventDoIf('HM_rolloEsszimmer',$hash,'',1) and get_Reading("doifState") eq "idle" and ::ReadingValDoIf($hash,'twilight','azimuth') >= "202") {set_Reading("doifState","sonnenstDisabled");
fhem_set("doif_sonnenstand disable")}}
{if(::DOIF_time_once($hash,0,$wday)) {set_Reading("doifState","idle");
fhem_set("doif_sonnenstand enable")}} }
days:
devices:
0 HM_rolloEsszimmer
all HM_rolloEsszimmer
helper:
event 1.WORKING: no,1.DIRECTION: none,hmstate: open
globalinit 1
last_timer 1
sleeptimer -1
triggerDev HM_rolloEsszimmer
triggerEvents:
1.WORKING: no
1.DIRECTION: none
hmstate: open
triggerEventsState:
1.WORKING: no
1.DIRECTION: none
hmstate: open
internals:
intervalfunc:
itimer:
localtime:
0 1540072740
perlblock:
0
ptimer:
fhemCmdTimer:
name fhemCmdTimer
subname set_Reading("doifState","idle")
time 1540024392.20042
hash:
readings:
realtime:
0 23:59:00
time:
0 23:59:00
timeCond:
0 0
timer:
0 0
timers:
0 0
trigger:
all HM_rolloEsszimmer
triggertime:
1540072740:
localtime 1540072740
hash:
uiState:
uiTable:
Attributes:
alias doif_Rollo Esszimmer Perl
ZitatWas kann ich tun, um mir das Reading "doifState" trotzdem anzeigen lassen zu können?
Das Reading mit uiTable oder stateFormat anzeigen lassen oder state parallel setzen.
Jeah. Damit ging's:
attr doif_rolloEZhandlerPerl [$name:doifState]
Was auch hilfreich war: https://forum.fhem.de/index.php?topic=47186.0 (https://forum.fhem.de/index.php?topic=47186.0)
Gruß Chris