Hauptmenü

DOIF unzuverlässig?

Begonnen von chunter1, 04 November 2015, 09:05:31

Vorheriges Thema - Nächstes Thema

chunter1

Hallo,

heute hat bei mir der folgende DOIF timer nicht ausgelöst obwohl er bisher funktioniert hat:
(Uhrzeit und Datum sind korrekt eingestellt)


... DOIF ([06:15|1] or [06:30|2] or [05:45|3] or [06:15|4]) ( set SZ_Lampe 100 1800 1800 )


Im Log sehe ich auch keinen Hinweis, dass die Lampe versucht worden wäre einzuschalten:


...
2015.11.03 23:00:00 3: CUL_HM set WZ_Lampe 0 1 600
2015.11.04 06:16:06 3: CUL_HM set KZ_Lampe 50 3600 1200
2015.11.04 06:26:07 3: deletereading Radio_Guten_Morgen_Announcement
...


Hab grade testweise die Auslösezeit umgestellt - hat funktioniert.
Gibts noch was was ich prüfen kann oder darf man sich auf DOIF nicht verlassen und verwendet besser NOTIFY?


Damian

Zitat von: chunter1 am 04 November 2015, 09:05:31
Hallo,

heute hat bei mir der folgende DOIF timer nicht ausgelöst obwohl er bisher funktioniert hat:
(Uhrzeit und Datum sind korrekt eingestellt)


... DOIF ([06:15|1] or [06:30|2] or [05:45|3] or [06:15|4]) ( set SZ_Lampe 100 1800 1800 )


Im Log sehe ich auch keinen Hinweis, dass die Lampe versucht worden wäre einzuschalten:


...
2015.11.03 23:00:00 3: CUL_HM set WZ_Lampe 0 1 600
2015.11.04 06:16:06 3: CUL_HM set KZ_Lampe 50 3600 1200
2015.11.04 06:26:07 3: deletereading Radio_Guten_Morgen_Announcement
...


Hab grade testweise die Auslösezeit umgestellt - hat funktioniert.
Gibts noch was was ich prüfen kann oder darf man sich auf DOIF nicht verlassen und verwendet besser NOTIFY?

Ich hoffe du hast das Attribut do always gesetzt, ansonsten wird dein set-Befehl nur einmal ausgeführt.

DOIF benutzt die gleichen Funktionen/Mechanismen in FHEM wie auch notify und sollte auch die gleiche "Zuverlässigkeit" haben ;)

Gruß

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

chunter1

#2
OUCH!!!  ::)
Danke für den wertvollen Hinweis!

Frage... wär es nicht besser die Logik zu invertieren (explizites "doOnce") und standardmäßig immer das DOIF auszuführen?
Ich denke, dass jeder der das DOIF zum ersten mal einsetzt davon ausgehen, dass das Kommando immer ausgeführt wird.

Vize

Zitat von: chunter1 am 04 November 2015, 11:35:05
Ich denke, dass jeder der das DOIF zum ersten mal einsetzt davon ausgehen, dass das Kommando immer ausgeführt wird.

Man kann aber auch sagen, jeder, der das Modul zum ersten mal einsetzt, sollte vorher die commandref dazu lesen...  8)

Gruß
Andreas

CoolTux

Zitat von: Vize am 04 November 2015, 12:54:57
Man kann aber auch sagen, jeder, der das Modul zum ersten mal einsetzt, sollte vorher die commandref dazu lesen...  8)

Gruß
Andreas

Ich finde das sollte man immer. Ansonsten können sich die Entwickler das anlegen der CommandRef auch sparen. Was die meisten Entwickler nämlich mehr hassen wie alles andere ist Dokumentation schreiben   :P
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Zitat von: chunter1 am 04 November 2015, 11:35:05
OUCH!!!  ::)
Danke für den wertvollen Hinweis!

Frage... wär es nicht besser die Logik zu invertieren (explizites "doOnce") und standardmäßig immer das DOIF auszuführen?
Ich denke, dass jeder der das DOIF zum ersten mal einsetzt davon ausgehen, dass das Kommando immer ausgeführt wird.

Dahinter steckt eine andere Idee. Das Modul arbeitet mit Zuständen, die es sich merkt und schaltet "immer" auch ohne do always, wenn der Zustand sich ändert. Das ist insbesondere bei zyklisch sendenden Sensoren sinnvoll.

Beispiel:

([device:temperature] < 0) (push ....Frostgefahr...)

Die nächste Frostmeldung kommt wieder, wenn die Temperatur zwischendurch über Null Grad war.

Probiere so etwas mit notify und du wirst schnell den Unterschied sehen.

Gruß

Damian

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

chunter1

Zitat von: Vize am 04 November 2015, 12:54:57
Man kann aber auch sagen, jeder, der das Modul zum ersten mal einsetzt, sollte vorher die commandref dazu lesen...  8)

Gruß
Andreas

das seh ich nicht so.
wirklich gut designte, komplexe systeme zeichnen sich heutzutage bekanntermaßen u.a. dadurch aus, das sie grade für einsteiger selbsterklärend/intuitiv anzuwenden sind.
fhem soll sich doch vorwärts entwickeln und nicht in das altmodische denken "... uggga, muss unbedingt vorher gebrauchsanleitung lesen um nicht auch in die vorprogrammierte falle zu tappen!" verfallen?

Damian

Zitat von: chunter1 am 04 November 2015, 13:51:12
das seh ich nicht so.
wirklich gut designte, komplexe systeme zeichnen sich heutzutage bekanntermaßen u.a. dadurch aus, das sie grade für einsteiger selbsterklärend/intuitiv anzuwenden sind.
fhem soll sich doch vorwärts entwickeln und nicht in das altmodische denken "... uggga, muss unbedingt vorher gebrauchsanleitung lesen um nicht auch in die vorprogrammierte falle zu tappen!" verfallen?

Die "vorprogrammierte Falle" wäre ein do always als Defaultwert zu nehmen. Erklärung habe ich bereits hier geliefert (zyklisch sendende Sensoren kommen mindestens genau so oft vor, wie andere, die nur gelegentlich ihren Zustand wechseln).

Gruß

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