[gelöst]VirtualDevice - Frage zu Aufruf von userReadings

Begonnen von pwlr, 17 August 2020, 14:01:12

Vorheriges Thema - Nächstes Thema

pwlr

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

martinp876

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.