Moin,
vielleicht liegt es an der Hitze und ich kann nicht mehr klar denken...
Mein Problem: Ich will eine sub über userReadings von einem virtuellen Device ausführen.
Der entsprechende Event wird laut Event-Monitor ausgelöst, aber via userReadings wird die sub nicht ausgeführt. Als Vergleich dazu geht es per notify. Die sub steht in der 99_myUtils und funktioniert.
List des virtuellen Device:
Internals:
DEF FF001701
FUUID 5c4b88b0-f33f-5817-3b03-5cfa002c6e156615
NAME Helligkeit_Blocker_1
NOTIFYDEV global
NR 1518
NTFY_ORDER 50-Helligkeit_Blocker_1
STATE set_postEvent 188
TYPE CUL_HM
chanNo 01
device Virtual_Device_02
peerList Lampe_Slot,Lampe_EG_Treppe,Lampe_EG_Terrasse_rechts,Lampe_EG_Terrasse_Column,
READINGS:
2020-08-17 12:41:56 cfgState ok
2020-08-17 12:02:12 peerList Lampe_Slot,Lampe_EG_Treppe,Lampe_EG_Terrasse_rechts,Lampe_EG_Terrasse_Column,
2020-08-17 13:45:45 state set_postEvent 188
2020-08-17 13:40:49 trigger_cnt 34
helper:
count 35
peerFriend peerSD,peerSens,peerAct
peerOpt -:virtual
regLst
cmds:
TmplKey Lampe_Slot,Lampe_EG_Treppe,Lampe_EG_Terrasse_rechts,Lampe_EG_Terrasse_Column,:no:1597658554.67316
TmplTs 1597658554.67316
cmdKey 1:0:1::Virtual_Device_02:FFF1:01:Lampe_Slot,Lampe_EG_Treppe,Lampe_EG_Terrasse_rechts,Lampe_EG_Terrasse_Column,
cmdLst:
peerChan -btnNumber- -actChn- ... [single|dual|reverse] [set|unset] [actor|remote|both]
peerSmart -peerOpt-
postEvent -condition-
press [long|short] [noBurst] [-repCount(long only)-] [-repDelay-] ...
pressL -peer-
pressS -peer-
tplSet_0 -tplChan-
tplSet_Lampe_EG_Terrasse_Column -tplPeer-
tplSet_Lampe_EG_Terrasse_rechts -tplPeer-
tplSet_Lampe_EG_Treppe -tplPeer-
tplSet_Lampe_Slot -tplPeer-
lst:
condition slider,0,1,255
peer Lampe_Slot,Lampe_EG_Treppe,Lampe_EG_Terrasse_rechts,Lampe_EG_Terrasse_Column
peerOpt
... gekürzt weil zu lang....
tplChan
tplDel
tplPeer
expert:
def 1
det 0
raw 1
tpl 0
role:
chn 1
vrt 1
tmpl:
Attributes:
comment Helligkeitsblocker für Außenlampen
transmitted: (trigger_cnt.*) {userReadings_05($name)};
wird nicht als userReading ausgeführt
transmitted:(Helligkeit_Blocker_1:trigger_cnt:.*){userReadings_05("Helligkeit_Blocker_1")}
Helligkeit_Blocker_1:trigger_cnt:.* {userReadings_05("Helligkeit_Blocker_1")}
(Helligkeit_Blocker_1:trigger_cnt:.*) {userReadings_05("Helligkeit_Blocker_1")}
event-on-change-reading trigger_cnt
model VIRTUAL
peerIDs 33C62702,495E1503,495E1504,4E80D701,
userReadings {userReadings_05("Helligkeit_Blocker_1")}
verbose 5
webCmd :
Ich habe hier das userReading testweise gekürzt. Im Comment sehen diverse Versuche, die alle nicht funktionieren.
Trigger im EventMonitor:
2020-08-17 13:50:49 CUL_HM Helligkeit_Blocker_1 trigger_cnt: 36
list vom notify (als Test)
Internals:
CFGFN
DEF Helligkeit_Blocker_1:trigger_cnt:.*
{userReadings_05("Helligkeit_Blocker_1")}
FUUID 5f3a618d-f33f-5817-3360-c2bb6e9ec0ba3360
NAME Helligkeit_Blocker_1_notify_1
NOTIFYDEV Helligkeit_Blocker_1
NR 2413
NTFY_ORDER 50-Helligkeit_Blocker_1_notify_1
REGEXP Helligkeit_Blocker_1:trigger_cnt:.*
STATE inactive
TRIGGERTIME 1597662498.13235
TYPE notify
READINGS:
2020-08-17 13:08:32 state inactive
Attributes:
group Bewegungsmelder
room Funktionen
verbose 5
Könnte bitte jemand helfen ?
Vielen Dank und moin
Bernd
Das Problem ist sicher, dass FHEM einen Trigger braucht, wann das Reading zu erstellen ist. Es wird nicht bei JEDEM Reading aufgerufen.
Mit nachfolgendem code solltest du die Internals des User-Readings sehen können.
{my $dev = "Helligkeit_Blocker_1";;my @k =();;foreach my $ky (@{$defs{$dev}{'.userReadings'}}){push @k,map{"$_ :$ky->{$_}"} keys %{$ky}} ;;return join("\n",@k)}
im Eintrag "trigger" sollte wohl stehen, welche notfies das User-reading triggern
Gemäß commandref kannst du den Trigger selbst bestimmen.