FHEM Forum

FHEM => Automatisierung => Thema gestartet von: mrhaefele@gmx.de am 13 Dezember 2016, 22:18:47

Titel: apptime Erklärung
Beitrag von: mrhaefele@gmx.de am 13 Dezember 2016, 22:18:47
Hallo,

ich baue mir gerade eine Oberfläche mit Tablet UI zusammen und hier stört es extrem, dass mein FHEM aktuell ständig hängt (vereinzelt bis zu 10sec). FHEM läuft auf einem Raspberry3.
Ich habe dann apptime bemüht, aber ich verstehe den Output nicht ausreichend
                               name             function    max  count    total  average param Max call
               tmr-DOIF_SleepTrigger      HASH(0x594d4b8)   7946      1     7946  7946.00 HASH(0x594d4b8)
               tmr-DOIF_SleepTrigger      HASH(0x5e86ec0)   7820      2     8195  4097.50 HASH(0x5e86ec0)
             tmr-CUL_HM_respPendTout      respPend:29F26F   7383    126     9034    71.70 respPend:29F26F
                              HMLAN2           HMLAN_Read   7230  24561  3611472   147.04 HASH(0x64cd1b8)
                               TRX_0             TRX_Read   6634  13009   303811    23.35 HASH(0x62605b8)
                 FileLof_Aussenlicht          FileLog_Log   6627 155993   350649     2.25 HASH(0x5144170); HASH(0x291bfd8)
                         tmr-at_Exec      HASH(0x768c7e0)   6543   1587   622439   392.21 HASH(0x768c7e0)
                   FileLog_KuecheNeu          FileLog_Log   6529 155993    13489     0.09 HASH(0x4ed2a00); HASH(0x2a71d18)
                         UhrzeitECMD       ECMDDevice_Set   6256  17498   542484    31.00 HASH(0x4edb138); UhrzeitECMD; on
              Kalender_Muell_Anzeige       CALVIEW_Notify   5064 155993    43803     0.28 HASH(0x74f5c20); HASH(0x510a228)
           FileLog_EG.Klo.Stelltrieb          FileLog_Log   5043    673     9875    14.67 HASH(0x4e0e4c0); HASH(0x4f9bc60)
                 FileLog_GarageLicht          FileLog_Log   5026    146     8009    54.86 HASH(0x5948650); HASH(0x5ada838)
               tmr-DOIF_SleepTrigger      HASH(0x2b77cf8)   4808   1156  1908901  1651.30 HASH(0x2b77cf8)
                              HMLAN1           HMLAN_Read   4769  24851  3620770   145.70 HASH(0x58bfd00)
                 tmr-Calendar_Wakeup      HASH(0x4f541c8)   4302     18    44919  2495.50 HASH(0x4f541c8)
                             ARDUINO            ECMD_Read   4248   9996   540021    54.02 HASH(0x513fb98)
                       FileLog_Test0          FileLog_Log   4167 155993    59889     0.38 HASH(0x74b77d8); HASH(0x2a3ae78)
            Kalender_Familie_Anzeige       CALVIEW_Notify   4111 155993    69914     0.45 HASH(0x75b7a20); HASH(0x4f541c8)
               tmr-DOIF_TimerTrigger       REF(0x781f888)   4083      1     4083  4083.00 REF(0x781f888)
            tmr-perfmon_ProcessTimer      HASH(0x569d968)   4067  50214    18685     0.37 HASH(0x569d968)
               tmr-DOIF_TimerTrigger       REF(0x76fbed8)   3922      1     3922  3922.00 REF(0x76fbed8)


Ich bin leider etwas aufgeschmissen...

Könnt Ihr etwas rauslesen aus dem Logfile? Was versteckt sich hinter DOIF_SleepTrigger oder "at_Exec". Mein Problem ist, dass ich nicht sehe, welche "DOIF" bzw "at" diese Verzögerungen auslöst. Es ist "nur" ein HASH angegeben, mit dem ich nichts anfangen kann

Wie komme ich mit Perl vom HASH Wert auf den Funktionsnamen bzw Device-Namen. Kann ich in der Befehlszeile in FHEM irgendwas eingeben, um vom HASH Wert auf einen sprechenden Namen zu kommen?.......so was wie {return {0x569d968}->{NAME} ;;  }???

Gruß Udo
Titel: Antw:apptime Erklärung
Beitrag von: rudolfkoenig am 14 Dezember 2016, 12:20:11
at_Exec ist die Routine, die beim at das Befehl ausfuehrt.
Eigentlich liefert apptime bei mir die Zeile mit dem Namen des ats:
                         tmr-at_Exec HASH(0x7ffecaa3c368)      1      3        1     0.33      1 HASH(atX)

Aus Hex-Adresse den Hash zu finden faellt mir nur sowas ein:
{ join(",", grep { $defs{$_}."" eq "HASH(0x7ffecaa3c368)" } keys %defs) }
Titel: Antw:apptime Erklärung
Beitrag von: mrhaefele@gmx.de am 14 Dezember 2016, 14:30:37
Cool. Danke schon mal. Das hilft schon mal weiter.

Der Ausdruck

{ join(",", grep { $defs{$_}."" eq "HASH(0x7ffecaa3c368)" } keys %defs) }

funtktioniert klasse.

Ist komisch. Manchmal kommen die "sprechenden" Namen nicht und anstelle werden die HASH's angezeigt. Manchmal erscheinen aber die Namen, wie bei dir.

Ich habe nach meinem Post von gestern fhem mal neugestartet. Jetzt erscheinen die HASH's als Namen (siehe unten). Was jetzt auch noch erscheint ist
       name             function    max  count    total  average maxDly
                          Fb_CallMon  FB_CALLMONITOR_Read  10611      1    10611 10611.00      0 HASH(Fb_CallMon)
                         Fb_CallList   FB_CALLLIST_Notify  10345      7    10345  1477.86      0 HASH(Fb_CallList); HASH(Fb_CallMon)
              Kalender_Muell_Anzeige       CALVIEW_Notify   5244  15446     5245     0.34      0 HASH(Kalender_Muell_Anzeige); HASH(Kalender_Muell)
               tmr-DOIF_SleepTrigger      HASH(0x3b3c3e8)   4649    136   433057  3184.24   3723 HASH(di_LedRemoteUpdate)
                 Kalender_Muell_Ende          notify_Exec   4324      4     4324  1081.00      0 HASH(Kalender_Muell_Ende); HASH(Kalender_Muell)
               tmr-DOIF_TimerTrigger       REF(0x5f766d0)   4314      1     4314  4314.00      2 REF(0x5f766d0)
               tmr-DOIF_TimerTrigger       REF(0x6c02ac8)   4246      1     4246  4246.00      2 REF(0x6c02ac8)
               tmr-DOIF_TimerTrigger       REF(0x6c0a058)   4074      1     4074  4074.00      3 REF(0x6c0a058)
                    nt_Abfalltermine          notify_Exec   4066      4     4066  1016.50      0 HASH(nt_Abfalltermine); HASH(Kalender_Muell)
                              HMLAN2           HMLAN_Read   4034   2938   532229   181.15      0 HASH(HMLAN2)
               tmr-DOIF_TimerTrigger       REF(0x7005390)   3876      1     3876  3876.00      3 REF(0x7005390)
               tmr-DOIF_TimerTrigger       REF(0x6669490)   3821      1     3821  3821.00      2 REF(0x6669490)
                             ARDUINO            ECMD_Read   3763   1175   168375   143.30      0 HASH(ARDUINO)
               tmr-DOIF_TimerTrigger       REF(0x5f854e0)   3756      1     3756  3756.00      2 REF(0x5f854e0)
               tmr-DOIF_TimerTrigger       REF(0x67602e0)   3744      1     3744  3744.00      3 REF(0x67602e0)
               tmr-DOIF_TimerTrigger       REF(0x71694c8)   3731      1     3731  3731.00    646 REF(0x71694c8)
               tmr-DOIF_TimerTrigger       REF(0x70c1e18)   3675      1     3675  3675.00     13 REF(0x70c1e18)
               tmr-DOIF_TimerTrigger       REF(0x66bf478)   3659      1     3659  3659.00      2 REF(0x66bf478)
               tmr-DOIF_TimerTrigger       REF(0x5f57250)   3648      1     3648  3648.00      2 REF(0x5f57250)
               tmr-DOIF_TimerTrigger       REF(0x6cc4878)   3639      1     3639  3639.00      3 REF(0x6cc4878)
               tmr-DOIF_TimerTrigger       REF(0x6537db0)   3635      1     3635  3635.00      2 REF(0x6537db0)


Was bedeuten diese  "REF(0x6537db0)". Was sind das für Referenzen und wie komme ich an die sprechenden Namen dieser Referenzen?

Gruß Udo