Neues Modul YAAHM - Yet Another Auto Home Module

Begonnen von Prof. Dr. Peter Henning, 09 August 2017, 08:01:55

Vorheriges Thema - Nächstes Thema

andies

Wird bei mir schlimmer, inzwischen stürzt FHEM ab:
2020.11.05 06:25:00 1: ERROR evaluating {YAAHM_time('Profil','sleep',1)}: Reference to nonexistent group in regex; marked by <-- HERE in m/\7 <-- HERE \0/ at ./FHEM/10_CUL_HM.pm line 4597.

Reference to nonexistent group in regex; marked by <-- HERE in m/\8 <-- HERE \2/ at ./FHEM/10_CUL_HM.pm line 4597.

Kannst du mir sagen, wo ich da suchen kann? Sonst habe ich das Problem das Modul nicht mehr nützen zu können, das wäre echt ärgerlich.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Könnte es sein, dass eine ganz andere Sache das verursacht (CUL vielleicht?)
020.11.05 07:05:27 1: PERL WARNING: Argument "<html>3</html>" isn't numeric in array element at ./FHEM/95_YAAHM.pm line 3023.
2020.11.05 07:06:45 1: ACTION: EVTPART0 = status_Briefkasten: | EVTPART1 = alive
2020.11.05 07:16:45 1: ACTION: EVTPART0 = status_BadUntenfenster: | EVTPART1 = alive
2020.11.05 07:16:45 1: ACTION: EVTPART0 = status_Terassenfenster: | EVTPART1 = alive
2020.11.05 07:26:45 1: ACTION: EVTPART0 = status_Badezimmerfenster: | EVTPART1 = alive
Reference to nonexistent group in regex; marked by <-- HERE in m/\6 <-- HERE \9/ at ./FHEM/10_CUL_HM.pm line 4597.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Prof. Dr. Peter Henning

Ichhabe versucht das nachzustellen - kann ich nicht. Muss also aus CUL_HM kommen. Das propagiert dann die Ausführung durch YAAHM, und liefert dann dort die finale Fehlermeldung.

Die Ausführung in YAAHM ist aber gekapselt in "eval", würde also niemals zum Absturz von FHEM führen. Der Fehler ist also mit einem Update von CUL_HM hineingekommen - da kann ich nicht helfen, poste das doch mal in der entsprechenden Ecke.

LG

pah

andies

FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Newbee

Hallo PAH,

habe folgende perl warnings im LOG. Könntest Du Dir das bei Gelegenheit bitte mal anschauen.
Die tauchen bei mir meistens nach einen Neustart von FHEM auf und ganz sporadisch auch ab und zu ohne Neustart.


2021.02.27 08:48:13 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 3671.
2021.02.27 08:48:13 1: eval: {YAAHM_Shorttable("YAAutoHM")}
2021.02.27 08:48:13 1: stacktrace:
2021.02.27 08:48:13 1:     main::__ANON__                      called by ./FHEM/95_YAAHM.pm (3671)
2021.02.27 08:48:13 1:     main::YAAHM_toptable                called by ./FHEM/95_YAAHM.pm (3835)
2021.02.27 08:48:13 1:     main::YAAHM_Shorttable              called by (eval 6212) (1)
2021.02.27 08:48:13 1:     (eval)                              called by fhem.pl (1154)
2021.02.27 08:48:13 1:     main::AnalyzePerlCommand            called by ./FHEM/98_weblink.pm (106)
2021.02.27 08:48:13 1:     main::weblink_FwFn                  called by ./FHEM/01_FHEMWEB.pm (2062)
2021.02.27 08:48:13 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1176)
2021.02.27 08:48:13 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (596)
2021.02.27 08:48:13 1:     main::FW_Read                       called by fhem.pl (3830)
2021.02.27 08:48:13 1:     main::CallFn                        called by fhem.pl (767)
2021.02.27 08:48:13 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 3770.
2021.02.27 08:48:13 1: eval: {YAAHM_Shorttable("YAAutoHM")}
2021.02.27 08:48:13 1: stacktrace:
2021.02.27 08:48:13 1:     main::__ANON__                      called by ./FHEM/95_YAAHM.pm (3770)
2021.02.27 08:48:13 1:     main::YAAHM_toptable                called by ./FHEM/95_YAAHM.pm (3835)
2021.02.27 08:48:13 1:     main::YAAHM_Shorttable              called by (eval 6212) (1)
2021.02.27 08:48:13 1:     (eval)                              called by fhem.pl (1154)
2021.02.27 08:48:13 1:     main::AnalyzePerlCommand            called by ./FHEM/98_weblink.pm (106)
2021.02.27 08:48:13 1:     main::weblink_FwFn                  called by ./FHEM/01_FHEMWEB.pm (2062)
2021.02.27 08:48:13 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1176)
2021.02.27 08:48:13 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (596)
2021.02.27 08:48:13 1:     main::FW_Read                       called by fhem.pl (3830)
2021.02.27 08:48:13 1:     main::CallFn                        called by fhem.pl (767)


Vielen Dank

Grüße Newbee
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

Prof. Dr. Peter Henning

Das ist ein Fehler, der außerhalb von YAAHM liegt. Aus der Definition von Shorttable:
# YAAHM_Shorttable - returns complete HTML code for inclusion into any room page
#                  (action and overview fields)
#
# Parameter name = name of the YAAHM definition


Ich halte es für unwahrscheinlich, dass jemand seine YAAHM-Installation "YAAutoHM" nennt - ich vermute vielmehr, dass da jemand mit einem Ersetzungsbefehl den htlmCode-Aufruf von Shorttable im entsprechenden weblink zu
Zitat{YAAHM_Shorttable("YAAutoHM")}
umgeschossen hat.

Dazu sollte man - wie in Zeile 707 des Moduls erkennbar ist - mal das Device für diesen Weblink anschauhen:
#-- this is the short YAAHM entry
   FW_fC("defmod ".$name."_shortlink weblink htmlCode {YAAHM_Shorttable(\"".$name."\")}");
   Log3 $hash, 3, "[".$name. " V".$yaahmversion."]"." Weblink ".$name."_shortlink created";


Also, was steht im FHEM-Device "<YAAHM-Devicename>_shortlink", und zwar als Internal LINK?

LG

pah

wcraffonara

Guten Abend Herr Prof Henning,
  ich habe mir vor einigen Wochen das Buch "Smart Home mit FHEM" von Ihnen gekauft und versuche gerade das Modul YAAHM anzuwenden, jedoch werden bei mir fogende events nicht ausgeführt: aftermidnight/beforesunrise/aftersunrise/beforesunset/aftersunset/beforemidnight <- also jene, die mittels Offset berechnet werden.

Nachdem ich das device YYY erstellt habe, habe ich den timeHelper auf HouseTimeHelper gesetzt. Danach habe ich den Button Start Tages-Timer angeklickt, worauf dann YYY.dtimer.IF erstellt worden ist. In dessen readings ist mir dann aufgefallen, dass einige timer nicht richtig konfiguriert werden, z.B.:
timer_01_c01 29.11.2021 00:01:00 2021-11-28 19:26:21
timer_02_c01 error: Wrong timespec : either HH:MM:SS or {perlcode} 2021-11-28 19:26:21
timer_03_c02 29.11.2021 06:19:00 2021-11-28 19:26:21
timer_04_c02 error: Wrong timespec : either HH:MM:SS or {perlcode} 2021-11-28 19:26:21


Manche events werden zum richtigen Zeitpunkt ausgeführt (z.B. [YAAHM_time] executing {HouseTimeHelper('evening')}), andere wiederum nicht (z.B. aftersunset).

Ich gehe davon aus, dass dies mit den nicht angelegten Timer zusammenhängt, aber woran liegt das und wie kann ich das beheben?

Vielen Dank!

Mit freundlichen Grüßen
Walter




Prof. Dr. Peter Henning

#337
Das kann eigentlich nur daran liegen, dass die Offsets nicht richtig eingetragen wurden. Der entsprechende Block auf der YAAHM-Seite muss so aussehen, wie auf der Anlage.

Im Device YYY wiederum gibt es dann entsprechende Readings mit den berechneten Endzeiten:


s_aftermidnight 00:05   2021-11-29 00:00:33
s_afternoon      14:30    2021-11-29 00:00:33
s_aftersunrise   08:56   2021-11-29 00:00:33
s_aftersunset    17:32   2021-11-29 00:00:33
s_beforemidnight  23:55 2021-11-29 00:00:33
s_beforesunrise 06:56  2021-11-29 00:00:33
s_beforesunset  15:32  2021-11-29 00:00:33
s_evening          18:30  2021-11-29 00:00:33
s_morning          7:30   2021-11-29 00:00:33
s_night               22:00  2021-11-29 00:00:33
s_noon               13:30  2021-11-29 00:00:33
s_sunrise           07:56  2021-11-29 00:00:33
s_sunset            16:32  2021-11-29 00:00:33


LG

pah

wcraffonara

Hallo,
  jetzt funktioniert es.
Ich habe die Offsets nichts angepasst, da sie bei mir genauso wie im Buch bereits standardmäßig eingetragen waren und der entsprechende Block auf der YAAHM-Seite genauso wie in Ihrer vorherigen Anlage bereits angezeigt wurden.
Ich habe jetzt einfach das Offset von aftermidnight von +00:01 auf +00:05 geändert und dann auf Start Tages-Timer geklickt. Danach sind alle Timer richtig angelegt worden, auch jene, wo ich das Offset nicht geändert habe.

Vielen Dank für die Hilfe und für dieses Modul!

lG
Walter

wcraffonara

Hallo,
  muss mich leider korrigieren... es funktioniert doch (noch) nicht.
Im logfile bekomme ich für den Zeitpunkt beforesunrise folgende Einträge und die Befehle in der HouseTimeHelper werden nicht ausgeführt

021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $mval in substitution (s///) at ./FHEM/95_YAAHM.pm line 1222.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $nval in substitution (s///) at ./FHEM/95_YAAHM.pm line 1223.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $tval in substitution (s///) at ./FHEM/95_YAAHM.pm line 1224.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $mval in numeric ge (>=) at ./FHEM/95_YAAHM.pm line 1227.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $nval in numeric gt (>) at ./FHEM/95_YAAHM.pm line 1227.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $xval in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 1350.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $xval in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 1352.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}
2021.12.05 06:27:00 1:  [YAAHM_time] executing
2021.12.05 06:27:00 1:  PERL WARNING: Use of uninitialized value $cmd in pattern match (m//) at fhem.pl line 1093.
2021.12.05 06:27:00 3:  eval: {YAAHM_time('YYY','beforesunrise',1)}


Das bekomme ich bei list YYY.dtimer.IF
Internals:
   DEF        ([[YYY:s_aftermidnight]])
({YAAHM_time('YYY','aftermidnight',1)})
DOELSEIF([[YYY:s_beforesunrise]])
({YAAHM_time('YYY','beforesunrise',1)})
DOELSEIF([[YYY:s_sunrise]])
({YAAHM_time('YYY','sunrise',1)})
DOELSEIF([[YYY:s_morning]])
({YAAHM_time('YYY','morning',1)})
DOELSEIF([[YYY:s_aftersunrise]])
({YAAHM_time('YYY','aftersunrise',1)})
DOELSEIF([[YYY:s_noon]])
({YAAHM_time('YYY','noon',1)})
DOELSEIF([[YYY:s_afternoon]])
({YAAHM_time('YYY','afternoon',1)})
DOELSEIF([[YYY:s_beforesunset]])
({YAAHM_time('YYY','beforesunset',1)})
DOELSEIF([[YYY:s_sunset]])
({YAAHM_time('YYY','sunset',1)})
DOELSEIF([[YYY:s_aftersunset]])
({YAAHM_time('YYY','aftersunset',1)})
DOELSEIF([[YYY:s_evening]])
({YAAHM_time('YYY','evening',1)})
DOELSEIF([[YYY:s_night]])
({YAAHM_time('YYY','night',1)})
DOELSEIF([[YYY:s_beforemidnight]])
({YAAHM_time('YYY','beforemidnight',1)})
   FUUID      61a3c9cd-f33f-97b4-1acd-19f1d971b7af34ae
   MODEL      FHEM
   NAME       YYY.dtimer.IF
   NOTIFYDEV  global,YYY
   NR         972
   NTFY_ORDER 50-YYY.dtimer.IF
   STATE      cmd_4
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-12-06 08:00:00   cmd             4
     2021-12-06 08:00:00   cmd_event       timer_4
     2021-12-06 08:00:00   cmd_nr          4
     2021-11-29 13:09:26   mode            enabled
     2021-12-06 08:00:00   state           cmd_4
     2021-12-06 03:01:57   timer_01_c01    07.12.2021 00:05:00
     2021-12-06 06:28:00   timer_02_c02    07.12.2021 06:28:00
     2021-12-06 07:28:00   timer_03_c03    07.12.2021 07:28:00
     2021-12-06 08:00:00   timer_04_c04    07.12.2021 08:00:00
     2021-12-06 03:01:57   timer_05_c05    06.12.2021 08:28:00
     2021-12-06 03:01:57   timer_06_c06    06.12.2021 13:00:00
     2021-12-06 03:01:57   timer_07_c07    06.12.2021 14:00:00
     2021-12-06 03:01:57   timer_08_c08    06.12.2021 15:04:00
     2021-12-06 03:01:57   timer_09_c09    06.12.2021 16:04:00
     2021-12-06 03:01:57   timer_10_c10    06.12.2021 17:04:00
     2021-12-06 03:01:57   timer_11_c11    06.12.2021 18:30:00
     2021-12-06 03:01:57   timer_12_c12    06.12.2021 22:00:00
     2021-12-06 03:01:57   timer_13_c13    06.12.2021 23:55:00
   Regex:
     accu:
     collect:
     itimer:
       YYY:
         itimer:
           s_aftermidnight ^YYY$:^s_aftermidnight:
           s_afternoon ^YYY$:^s_afternoon:
           s_aftersunrise ^YYY$:^s_aftersunrise:
           s_aftersunset ^YYY$:^s_aftersunset:
           s_beforemidnight ^YYY$:^s_beforemidnight:
           s_beforesunrise ^YYY$:^s_beforesunrise:
           s_beforesunset ^YYY$:^s_beforesunset:
           s_evening  ^YYY$:^s_evening:
           s_morning  ^YYY$:^s_morning:
           s_night    ^YYY$:^s_night:
           s_noon     ^YYY$:^s_noon:
           s_sunrise  ^YYY$:^s_sunrise:
           s_sunset   ^YYY$:^s_sunset:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          ::DOIF_time_once($hash,1,$wday)
     10         ::DOIF_time_once($hash,10,$wday)
     11         ::DOIF_time_once($hash,11,$wday)
     12         ::DOIF_time_once($hash,12,$wday)
     2          ::DOIF_time_once($hash,2,$wday)
     3          ::DOIF_time_once($hash,3,$wday)
     4          ::DOIF_time_once($hash,4,$wday)
     5          ::DOIF_time_once($hash,5,$wday)
     6          ::DOIF_time_once($hash,6,$wday)
     7          ::DOIF_time_once($hash,7,$wday)
     8          ::DOIF_time_once($hash,8,$wday)
     9          ::DOIF_time_once($hash,9,$wday)
   days:
   do:
     0:
       0          {YAAHM_time('YYY','aftermidnight',1)}
     1:
       0          {YAAHM_time('YYY','beforesunrise',1)}
     10:
       0          {YAAHM_time('YYY','evening',1)}
     11:
       0          {YAAHM_time('YYY','night',1)}
     12:
       0          {YAAHM_time('YYY','beforemidnight',1)}
     13:
     2:
       0          {YAAHM_time('YYY','sunrise',1)}
     3:
       0          {YAAHM_time('YYY','morning',1)}
     4:
       0          {YAAHM_time('YYY','aftersunrise',1)}
     5:
       0          {YAAHM_time('YYY','noon',1)}
     6:
       0          {YAAHM_time('YYY','afternoon',1)}
     7:
       0          {YAAHM_time('YYY','beforesunset',1)}
     8:
       0          {YAAHM_time('YYY','sunset',1)}
     9:
       0          {YAAHM_time('YYY','aftersunset',1)}
   helper:
     DEVFILTER  ^global$|^YYY$
     NOTIFYDEV  global|YYY
     event      timer_4
     globalinit 1
     last_timer 13
     sleeptimer -1
     timerdev   
     timerevent timer_4
     triggerDev
     timerevents:
       timer_4
     timereventsState:
       timer_4
     triggerEvents:
       timer_4
     triggerEventsState:
       timer_4
   interval:
   intervalfunc:
   intervaltimer:
   localtime:
     0          1638831900
     1          1638854880
     10         1638811800
     11         1638824400
     12         1638831300
     2          1638858480
     3          1638860400
     4          1638775680
     5          1638792000
     6          1638795600
     7          1638799440
     8          1638803040
     9          1638806640
   perlblock:
   realtime:
     0          00:05:00
     1          06:28:00
     10         18:30:00
     11         22:00:00
     12         23:55:00
     2          07:28:00
     3          08:00:00
     4          08:28:00
     5          13:00:00
     6          14:00:00
     7          15:04:00
     8          16:04:00
     9          17:04:00
   time:
     0          [YYY:s_aftermidnight]
     1          [YYY:s_beforesunrise]
     10         [YYY:s_evening]
     11         [YYY:s_night]
     12         [YYY:s_beforemidnight]
     2          [YYY:s_sunrise]
     3          [YYY:s_morning]
     4          [YYY:s_aftersunrise]
     5          [YYY:s_noon]
     6          [YYY:s_afternoon]
     7          [YYY:s_beforesunset]
     8          [YYY:s_sunset]
     9          [YYY:s_aftersunset]
   timeCond:
     0          0
     1          1
     10         10
     11         11
     12         12
     2          2
     3          3
     4          4
     5          5
     6          6
     7          7
     8          8
     9          9
   timer:
     0          0
     1          0
     10         0
     11         0
     12         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     0           0
     1           1
     10          10
     11          11
     12          12
     2           2
     3           3
     4           4
     5           5
     6           6
     7           7
     8           8
     9           9
   triggertime:
     1638775680:
       localtime  1638775680
       hash:
     1638792000:
       localtime  1638792000
       hash:
     1638795600:
       localtime  1638795600
       hash:
     1638799440:
       localtime  1638799440
       hash:
     1638803040:
       localtime  1638803040
       hash:
     1638806640:
       localtime  1638806640
       hash:
     1638811800:
       localtime  1638811800
       hash:
     1638824400:
       localtime  1638824400
       hash:
     1638831300:
       localtime  1638831300
       hash:
     1638831900:
       localtime  1638831900
       hash:
     1638854880:
       localtime  1638854880
       hash:
     1638858480:
       localtime  1638858480
       hash:
     1638860400:
       localtime  1638860400
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Unsorted


Finden Sie den Fehler?

lG
Walter