Autor Thema: Effekt von Version 5.8 auf DOIF  (Gelesen 317 mal)

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4364
Effekt von Version 5.8 auf DOIF
« am: 17 März 2017, 07:57:16 »
Guten Morgen,

seit Jahren ist der Ausführungsteil meines Weckers:

define House.Wakeup DOIF ([Weckzeit:today] eq "none") () DOELSEIF ([([Weckzeit:today] + [00:05])]) ({HouseTimeHelper("wakeup")})
Beim Start von FHEM hat Weckzeit:today noch nicht den Wert einer Zeit - und prompt steigt die Definition aus mit

Zitat
([([Weckzeit:today] + [00:05:00])]) ({HouseTimeHelper("wakeup")}): House.Wakeup DOIF: Wrong timespec : either HH:MM:SS or {perlcode}: ([Weckzeit:today]+[00:05:00])
2017.03.17 07:22:53 1: configDB: House.Wakeup DOIF: Wrong timespec : either HH:MM:SS or {perlcode}: ([Weckzeit:today]+[00:05:00])

Das könnte ein Effekt des frühen Perl Syntaxcheck sein. Mir ist bisher noch keine Möglichkeit eingefallen, das zu verhindern.

LG

pah

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16232
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #1 am: 17 März 2017, 11:25:50 »
perlSyntaxCheck() ist waehrend des Einlesens von fhem.cfg ($init_done == 0) nicht aktiv.

Gibt es einen Grund dieses Problem nicht direkt dem DOIF Maintainer, sondern im Developer zu melden? Ich fuehle mich angesprochen, weiss aber nicht, was ich tun soll.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12964
  • Probleme sind auch keine Lösung.
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #2 am: 17 März 2017, 12:48:03 »
perlSyntaxCheck() ist waehrend des Einlesens von fhem.cfg ($init_done == 0) nicht aktiv.

Anmerkung: Peters Konfiguration wird nicht aus der fhem.cfg gelesen, sondern aus configDB.
configDB selbst führt beim Aktivieren der Konfiguration keinerlei Syntaxprüfung durch, sondern übergibt das an AnalyzeCommandChain()

Ob dort der perlSyntaxCheck irgendeinen Einfluss während des Systemstarts hat, kann ich spontan nicht beantworten.
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12964
  • Probleme sind auch keine Lösung.
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #3 am: 17 März 2017, 12:49:44 »
@Peter: hast Du schon getestet, ob das Problem auch auftritt, wenn Du perlSyntaxCheck abschaltest?
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16232
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #4 am: 17 März 2017, 13:06:55 »
Zitat
Anmerkung: Peters Konfiguration wird nicht aus der fhem.cfg gelesen, sondern aus configDB.
Das ist eher irrelevant. Weil:
- Befehl wird per cfgDB_ReadAll oder "include fhem.cfg"  gelesen
- Diese Funktionen rufen jeweils AnalyzeCommandChain auf, was wiederum ueber CommandDefine das Modulspezifische DefineFn aufruft
- DefineFn ruft perlSyntaxCheck auf
- perlSyntaxCheck macht nichts, falls init_done 0 ist.

Das gemeldete Problem duerfte nicht an dem perlSyntaxCheck liegen, da die Pruefung des Zeitformats nicht da stattfindet. Und daran hat sich mit der Aktivierung von perlSyntaxCheck oder csrfToken (und was anderes hat 5.8 nicht gemacht) nichts geaendert.

Ein Blick ins 98_DOIF.pm hat mir gerade verraten, dass es perlSyntaxCheck nicht kennt. Bisher wird das Attribut in notify, at, EnOcean, readings* verwendet und beim Aendern des stateFormat Attributes.

Ich gehe von einem "normalen" DOIF Bug oder Feature aus, evtl. eins was in der letzten Zeit implementiert wurde.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12964
  • Probleme sind auch keine Lösung.
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #5 am: 17 März 2017, 13:17:56 »
Das ist eher irrelevant. Weil:
- Befehl wird per cfgDB_ReadAll oder "include fhem.cfg"  gelesen
- Diese Funktionen rufen jeweils AnalyzeCommandChain auf, was wiederum ueber CommandDefine das Modulspezifische DefineFn aufruft
- DefineFn ruft perlSyntaxCheck auf
- perlSyntaxCheck macht nichts, falls init_done 0 ist.

Soweit war ich gerade beim Suchen auch gekommen :) Danke für die Bestätigung.
Aus technischen Gründen befindet sich die Signatur auf der Rückseite dieses Beitrages.

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4364
Antw:Effekt von Version 5.8 auf DOIF
« Antwort #6 am: 17 März 2017, 16:44:22 »
Ich schließe das hier, und poste es im DOIF-Bereich.

Danke für Eure Mithilfe.

LG

pah

 

decade-submarginal