Hauptmenü

Problem mit DOIF

Begonnen von m8ichael, 11 März 2016, 23:14:13

Vorheriges Thema - Nächstes Thema

m8ichael

Hallo Gemeinde,

ich habe seit kurzem das Problem, dass mein DOIF- Befehl irgendwie nicht sauber abgearbeitet wird:
Internals: DEF ([{sunset_abs("HORIZON=-2.0")}-22:45])
((set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 on))
DOELSE
((set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 off))

NAME di.Eingangsbeleuchtung NR 136 NTFY_ORDER 50-di.Eingangsbeleuchtung
STATE cmd_2 TYPE DOIF Readings: 2016-03-04 22:45:00 cmd_event timer_2 2016-03-04 22:45:00 cmd_nr 2 2016-03-04 22:45:00 state cmd_2 2016-03-11 22:54:22 timer_1_c1 12.03.2016 18:29:01 2016-03-11 22:54:22 timer_2_c1 12.03.2016 22:45:00 Condition: 0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") Days: Devices: Do: 0: 0 (set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 on) 1: 0 (set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 off) Helper: globalinit 1 last_timer 2 sleeptimer -1 Interval: 0 -1 1 0 Itimer: Localtime: 0 1457803741 1 1457819100 Realtime: 0 18:29:01 1 22:45:00 Regexp: State: Time: 0 {sunset_abs("HORIZON=-2.0")} 1 22:45:00 Timecond: 0 0 1 0 Timer: 0 0 1 0 Timers: 0 0 1 Triggertime: 1457803741: localtime 1457803741 Hash: 1457819100: localtime 1457819100 Hash: Attributes:


So werden die Lampen pünktlich eingeschaltet (zum Sonnenuntergang), jedoch nicht wieder ausgeschaltet. Kurios ist, dass der Status im Webfrontend dabei wechselt (Lampen sind dann aus), es erfolgt jedoch kein Schaltvorgang. Im Log (verbose 3) wird ebenfalls nichts protokolliert (kein Fehler, aber auch kein Schaltvorgang).

Habe ich hier etwas übersehen? Oder muss ich mal wieder Verbose 5 aktivieren?

Viele Grüße

Michael

rudolfkoenig

Gibt es einen Grund, dass das Problem in diesem Bereich (ZWave) gepostet wurde? Fuer mich schaut es nach einem DOIF Thema aus, ich habe von DOIF keine Ahnung, und der DOIF Maintainer liest diesen Forumsbereich vermutlich nicht. Vorschlag: Thema ins richtige Bereich (siehe MAINTAINER.txt) verschieben.

CoolTux

Verschiebe das mal bitte nach Automatisierung und nimm den Screen raus und stattdessen ein list vom Device rein.



Danke
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: m8ichael am 11 März 2016, 23:14:13
Hallo Gemeinde,

ich habe seit kurzem das Problem, dass mein DOIF- Befehl irgendwie nicht sauber abgearbeitet wird:
Internals: DEF ([{sunset_abs("HORIZON=-2.0")}-22:45])
((set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 on))
DOELSE
((set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 off))

NAME di.Eingangsbeleuchtung NR 136 NTFY_ORDER 50-di.Eingangsbeleuchtung
STATE cmd_2 TYPE DOIF Readings: 2016-03-04 22:45:00 cmd_event timer_2 2016-03-04 22:45:00 cmd_nr 2 2016-03-04 22:45:00 state cmd_2 2016-03-11 22:54:22 timer_1_c1 12.03.2016 18:29:01 2016-03-11 22:54:22 timer_2_c1 12.03.2016 22:45:00 Condition: 0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") Days: Devices: Do: 0: 0 (set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 on) 1: 0 (set eg.fl.Eingang.Stimmungsbeleuchtung,div.Schalter2 off) Helper: globalinit 1 last_timer 2 sleeptimer -1 Interval: 0 -1 1 0 Itimer: Localtime: 0 1457803741 1 1457819100 Realtime: 0 18:29:01 1 22:45:00 Regexp: State: Time: 0 {sunset_abs("HORIZON=-2.0")} 1 22:45:00 Timecond: 0 0 1 0 Timer: 0 0 1 0 Timers: 0 0 1 Triggertime: 1457803741: localtime 1457803741 Hash: 1457819100: localtime 1457819100 Hash: Attributes:


So werden die Lampen pünktlich eingeschaltet (zum Sonnenuntergang), jedoch nicht wieder ausgeschaltet. Kurios ist, dass der Status im Webfrontend dabei wechselt (Lampen sind dann aus), es erfolgt jedoch kein Schaltvorgang. Im Log (verbose 3) wird ebenfalls nichts protokolliert (kein Fehler, aber auch kein Schaltvorgang).

Habe ich hier etwas übersehen? Oder muss ich mal wieder Verbose 5 aktivieren?

Viele Grüße

Michael

Hast du aktuelle Version von DOIF?

# $Id: 98_DOIF.pm 10985 2016-03-03 17:25:24Z damian-s $

Gruß

Damian

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

m8ichael

ZitatHast du aktuelle Version von DOIF?

# $Id: 98_DOIF.pm 10985 2016-03-03 17:25:24Z damian-s $

Ja, die wurde per Update installiert.

Ellert

ZitatJa, die wurde per Update installiert.

Und wurde nach dem Update ein "shutdown restart" durchgeführt?

Wenn im Frontend die Lampen den Status "aus" anzeigen und DOIF STATE cmd_2 zeigt, dann hat vermutlich der physikalische Aktor das Signal nicht erhalten.

Sind Gerätestati von "Eingang.Stimmungsbeleuchtung" und "div.Schalter2" auch auf "aus"?
Gibt es eine Rückmeldung vom Aktor?

m8ichael

Halllo!

ZitatUnd wurde nach dem Update ein "shutdown restart" durchgeführt?

Aber klar!  ;)

ZitatWenn im Frontend die Lampen den Status "aus" anzeigen und DOIF STATE cmd_2 zeigt, dann hat vermutlich der physikalische Aktor das Signal nicht erhalten.

Ich nutze ZWave-Geräte. Bisher haben die dann immer im Log gemeldet, wenn ein Befehl nicht durchgegangen ist. Tatsächlich finde ich zum Ausschaltzeitpunkt überhaupt keinen Log-Eintrag. Wenn ich die dann manuell über das Frontend schalte, werden die Vorgänge auch ohne Verzögerung ausgeführt. Im Frontend selbst haben die den State "off", obwohl sie nicht geschaltet wurden...

Problematisch ist, dass der Fehler nicht direkt reproduzierbar ist. Vorgestern ist wiederholt der Fehler aufgetreten, gestern lief offenbar alles so, wie es soll...  :-[

Ellert

Z-Wave kenne ich nicht.
Allgemein sieht die Abarbeitung eines Befehls etwa so aus:

DOIF Bedingung wahr --> set Gerät off --> Gerät setzt den Funkbefehl ab, wartet auf Rückmeldung und STATE/state wird auf off gesetzt --> Aktualisierung des Frontend und anzeigen des STATE Icon.

Wenn das STATE-Icon sich ändert, hat DOIF den Befehl gesendet und im Gerät hat sich STATE auch geändert.

Da hilft nur probieren:

Du könntest den Befehl zeitlich entzerren mit wait.
oder versuchsweise nur einen Befehl senden
und den Befehlszweig des DOIF mitloggen
DOELSE (set eg.fl.Eingang.Stimmungsbeleuchtung off) (set div.Schalter2 off, ({Log 1, "DOELSE hat geschaltet"}))

wait 0:0,1

Damian

Was mich irritiert ist, dass die letzte Ausführung vom 04.03 ist aber die Timer weiter aktualisiert werden.

STATE cmd_2 TYPE DOIF Readings:
2016-03-04 22:45:00 cmd_event timer_2
2016-03-04 22:45:00 cmd_nr 2
2016-03-04 22:45:00 state cmd_2
2016-03-11 22:54:22 timer_1_c1 12.03.2016 18:29:01


Das sieht aus, als wenn sich das Modul per set disable im disable-Zustand befände.

Gruß

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