kann DOIF Zustand nicht nachvollziehen

Begonnen von kupfermuetze, 22 September 2014, 18:34:07

Vorheriges Thema - Nächstes Thema

kupfermuetze

zumindest macht er cmd_1 :-) aber kommt eine Fehlermeldung

CFGFN
   DEF        ([22:04])({print "$hms\n"})
   NAME       di_test
   NR         9783
   NTFY_ORDER 50-di_test
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2014-09-24 22:04:00   cmd_event       timer_1
     2014-09-24 22:04:00   cmd_nr          1
     2014-09-24 22:04:00   error           {print "$hms\n"}: 1
     2014-09-24 22:04:00   state           cmd_1
     2014-09-24 22:04:00   timer_1_c1      25.09.2014 22:04:00
   Condition:
     0          DOIF_time_once($hash->{timer}{0},$wday,"")
   Days:
   Devices:
   Do:
     0          {print "$hms\n"}
   Helper:
     last_timer 1
     sleeptimer -1
   Internals:
   Readings:
   Realtime:
     0          22:04:00
   State:
   Time:
     0          22:04:00
   Timecond:
     0          0
   Timer:
     0          0
   Timerfunc:
   Timers:
     0           0
Attributes:

Damian

Zitat von: kupfermuetze am 24 September 2014, 22:05:16
zumindest macht er cmd_1 :-) aber kommt eine Fehlermeldung

Dass cmd_1 kommt ist klar und die Fehlermeldung ist auch für mich normal. Aber welche Zeit steht auf der Konsole? Das ist jetzt entscheidend für die Fehleranalyse. Wenn du da nicht nachschauen kannst, dann kannst du statt ({print "$hms\n"}) ({Log (3,"Die Zeit beträgt: $hms")}) eingeben, dann wird die Zeit im Log erscheinen.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze

2014.09.25 05:47:00 3: Die Zeit beträgt: 05:47:00

Damian

Zitat von: kupfermuetze am 25 September 2014, 05:47:38
2014.09.25 05:47:00 3: Die Zeit beträgt: 05:47:00

Die Frage ist: Was hast du bei DOIF definiert?

Wenn auch 05:47:00, dann müssen wir größere Geschütze auffahren. Ich werde mal eine Version mit Testausgaben für dich basteln.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze


Damian

#20
Zitat von: kupfermuetze am 25 September 2014, 21:09:17
Ja auch um 5:47

Seltsam das alles

Ich habe mal ein paar Testausgaben, die im Log erscheinen, eingebaut. Du kannst die angehängte Version bei dir einspielen und einen einfachen Test mit einem Zeitintervall [von-bis] laufen lassen und die Logausgaben posten.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze

so, nach langer Zeit ohne Zeit zum Testen hier die Logausgaben aus deiner Spezialversion:

2014.10.02 20:45:00 2: begin: 20:45:00, end: 20:47:00, wday: 4, hms: 20:44:59, days
2014.10.02 20:45:00 2: return 0
2014.10.02 20:47:00 2: begin: 20:47:00, end: 20:48:00, wday: 4, hms: 20:46:59, days
2014.10.02 20:47:00 2: return 0
2014.10.02 20:47:00 3: CUL_HM set bad.fbh off
2014.10.02 20:48:00 2: begin: 20:47:00, end: 20:48:00, wday: 4, hms: 20:47:59, days
2014.10.02 20:48:00 2: return 1
2014.10.02 20:48:00 3: CUL_HM set bad.fbh off

Doif definition:
([20:47-20:48]) (set bad.fbh off) DOELSE (set bad.fbh off)

Grüße
Stefan

Damian

Zitat von: kupfermuetze am 02 Oktober 2014, 20:49:44
so, nach langer Zeit ohne Zeit zum Testen hier die Logausgaben aus deiner Spezialversion:

2014.10.02 20:45:00 2: begin: 20:45:00, end: 20:47:00, wday: 4, hms: 20:44:59, days
2014.10.02 20:45:00 2: return 0
2014.10.02 20:47:00 2: begin: 20:47:00, end: 20:48:00, wday: 4, hms: 20:46:59, days
2014.10.02 20:47:00 2: return 0
2014.10.02 20:47:00 3: CUL_HM set bad.fbh off
2014.10.02 20:48:00 2: begin: 20:47:00, end: 20:48:00, wday: 4, hms: 20:47:59, days
2014.10.02 20:48:00 2: return 1
2014.10.02 20:48:00 3: CUL_HM set bad.fbh off

Doif definition:
([20:47-20:48]) (set bad.fbh off) DOELSE (set bad.fbh off)

Grüße
Stefan

Das, was ich befürchtet habe - bei dir läuft die Zeit "auseinander". Der Interne FHEM-Timer ist auf 20:45 gesetzt worden, ausgeführt wurde das Kommando aber um 20:44:59. Das sind fhem.pl-Mechanismen und liegen außerhalb meines Codes. Da müsste der Chef-Entwickler etwas dazu sagen können.


Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze

ok, hab jetzt mal die FritzBox neu gebootet und beim ersten Test scheint's zu gehen
;D Problem für den Moment gelöst :-)

ABER: wie kann ich das denn für die Zukunft verhinder? Fritzbox regelmäßig neu starten ist seit dem neuesten Firmware-Update ja auch doof (da dann ja FHEM nicht mehr automatisch startet)

Damian

Zitat von: kupfermuetze am 02 Oktober 2014, 21:07:25
ok, hab jetzt mal die FritzBox neu gebootet und beim ersten Test scheint's zu gehen
;D Problem für den Moment gelöst :-)

ABER: wie kann ich das denn für die Zukunft verhinder? Fritzbox regelmäßig neu starten ist seit dem neuesten Firmware-Update ja auch doof (da dann ja FHEM nicht mehr automatisch startet)

Wie schon gesagt, das müsste sich Rudi anschauen. hms habe ich mit localtime ermittelt nachdem die Funktion vom Internaltimer getrigger wurde.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze

OK, Vielen Dank auf jeden Fall schonmal! :-)

Damian

Zitat von: kupfermuetze am 02 Oktober 2014, 21:39:53
OK, Vielen Dank auf jeden Fall schonmal! :-)

Ich habe die Bestimmung der Zeit intern auf eine andere Routine umgestellt (gettimeofday), das sollte das Problem beheben. Kannst du schon mal mit der angehängten Version testen, bevor ich es später einchecke.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kupfermuetze

Danke :-) Sieht erstmal prima aus (hab ein paar DOIFs getestet); werd mir morgen nochmal die FBH ankucken.