FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: mfeske am 06 Juli 2016, 07:13:44

Titel: Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 06 Juli 2016, 07:13:44
Hallo zusammen,

ich hatte mir mal ein DOIF zusammengebaut für eine Warnung bei geöffneter Terrassentür in Abhängigkeit zu Temepratur. Das gleiche habe ich für eine Dachluke gemacht. Das hat auch schon mal funktioniert. Seit einer Weile gibt es nun folgendes Problem. Die Tür meldet das reguöäre öffnen und schliessen ganz normal. Aber während der Öffnungsphase behauptet FHEM auch das die Tür geschlossen sei und tut dies mit einer Ansage kund. Das ist natürlich falsch und nervt, meine FRau extrem (Sie hat schon gedrohtden FHEM Stecker zu ziehen).

Hier  das DOIF der Terassentür als list:

Internals:
   DEF        ([TFA07:temperature] > [TFA08:temperature] and [Kontakt_Garten] eq "opened") (set Warnung_Gartentuer on) (set gong_MP3 playTone 010) DOELSE (set Warnung_Gartentuer off, set gong_MP3 playTone 011)
   NAME       Warnung_Gartentuer_doif
   NR         389
   NTFY_ORDER 50-Warnung_Gartentuer_doif
   STATE      cmd_1_1
   TYPE       DOIF
   Readings:
     2016-07-06 07:06:57   Device          TFA07
     2016-07-06 07:06:56   cmd             1.1
     2016-07-06 07:06:55   cmd_count       1
     2016-07-06 07:06:56   cmd_event       TFA07
     2016-07-06 07:06:56   cmd_nr          1
     2016-07-06 07:06:56   cmd_seqnr       1
     2016-07-06 06:23:52   e_Kontakt_Garten_STATE opened
     2016-07-06 07:06:57   e_TFA07_temperature 22.8
     2016-07-06 07:06:24   e_TFA08_temperature 15.2
     2016-07-06 07:06:56   state           cmd_1_1
     2016-07-06 07:06:56   wait_timer      06.07.2016 07:07:56 cmd_1_2 TFA07
   Condition:
     0          ReadingValDoIf($hash,'TFA07','temperature','','',AttrVal($hash->{NAME},'notexist',undef)) > ReadingValDoIf($hash,'TFA08','temperature','','',AttrVal($hash->{NAME},'notexist',undef)) and InternalDoIf($hash,'Kontakt_Garten','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "opened"
   Devices:
     0           TFA07 TFA08 Kontakt_Garten
     all         TFA07 TFA08 Kontakt_Garten
   Do:
     0:
       0          set Warnung_Gartentuer on
       1          set gong_MP3 playTone 010
     1:
       0          set Warnung_Gartentuer off, set gong_MP3 playTone 011
   Helper:
     event      T: 22.8 H: 50.0,humidity: 50.0
     globalinit 1
     last_timer 0
     sleepdevice TFA07
     sleepsubtimer 1
     sleeptimer 0
     timerdev   TFA07
     timerevent T: 22.8 H: 50.0,humidity: 50.0
     triggerDev TFA07
     timerevents:
       T: 22.8 H: 50.0
       humidity: 50.0
     timereventsState:
       state: T: 22.8 H: 50.0
       humidity: 50.0
     triggerEvents:
       T: 22.8 H: 50.0
       humidity: 50.0
     triggerEventsState:
       state: T: 22.8 H: 50.0
       humidity: 50.0
   Internals:
     0           Kontakt_Garten:STATE
     all         Kontakt_Garten:STATE
   Itimer:
   Readings:
     0           TFA07:temperature TFA08:temperature
     all         TFA07:temperature TFA08:temperature
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   repeatsame 3:0
   room       Wohnzimmer
   wait       0,60:0


Habt Ihr vielleicht einen Einfall was sich geändert hat?

Gruß
Micha
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 06 Juli 2016, 08:50:56
Es ist Sommer geworden, daher kann es vorkommen, dass die Temperaturen innen und aussen sich angleichen und manchmal die Eine höher ist als die Andere und umgekehrt, das lässt den DOELSE-Zweig triggern.

Du könntest den DOELSE-Zweig durch DOELSEIF ersetzen und ihn über eine Hysterese triggern lassen, etwa wie bei dem Zweipunktregler: http://fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele

Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 06 Juli 2016, 14:50:04
Hallo Ellert,

danke für den Hinweis. Ja, auch in Berlin ist es Sommer geworden ;-) Also ist es eigentlich gar kein Fehler sondern eine "falsche" Ausdrucksweise von mir, vielleicht sollte ich für die Überganszeit irgendwie ein +5 für die Temperatur setzen ?! Den Zweipunktregler habe ich leider gar nicht verstanden :-(

Gruß
Micha
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 06 Juli 2016, 15:27:15
Im Zweipunktregler ist eine Schaltdifferenz eingebaut.

Einschalten bei  T_ist < T_soll - 3
Ausschalten bei T_ist > T_soll + 3
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 06 Juli 2016, 15:32:29
also im prinzip das was ich ja wollte mit der temperatur +5 aber halt als differenz.
könntest du mir mit dem code helfen ?
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 06 Juli 2016, 16:02:36
Schlag mal den DOELSEIF Zweig mit dem Temperatur-Vergleich und der closed Abfrage vor.
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 10 Juli 2016, 13:53:38
Ich verstehe schon nicht die ersten beiden Zeilen in der commandref:
setreading sensor default 20
setreading sensor hysteresis 1


soll ich das jetzt für Beide Sensoren, also TFA07 und TFA08 ausführen?

([TFA07:temperature] > [TFA08:temperature] and [Kontakt_Garten] eq "opened") (set Warnung_Gartentuer on) (set gong_MP3 playTone 010) DOELSEIF ([sensor:temperature]>[sensor:default]) (set Warnung_Gartentuer off, set gong_MP3 playTone 011) würde sich ja den nur auf einen Sensor beziehen ?!

Gruß
Micha
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 10 Juli 2016, 14:19:56
Ich gehe mal von diesem Vergleich aus [TFA07:temperature] > [TFA08:temperature] dann könnte eine Hysterese so aussehen

[TFA07:temperature] < [TFA08:temperature] - 1

Beispiel
Bei TFA08 = 20°C und TFA07 steigt über 20°C schaltet Zweig 1,
bei TFA08 = 20°C und TFA07 sinkt unter  (20 - 1 = 19) °C schaltet Zweig 2.

Welche Bedeutung haben eigentlich die TFA07 u. 08?
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 10 Juli 2016, 14:50:00
TFA08 ist die Temperatur im Garten und TFA07 die Temperatur im Wohnzimmer. Eine Warnung zur offenen Terassentür ist für mich nur sinnvoll, wenn die Außentemperatur niedriger ist als die Wohnzimmertemperatur. Hintergrund ist, das im Winter sonst die Heizung anspringen würde und ich für den Garten heizen würde.

Ich vermute so einfach wird es wohl nicht ?!:
([TFA07:temperature] > [TFA08:temperature] and [Kontakt_Garten] eq "opened") (set Warnung_Gartentuer on) (set gong_MP3 playTone 010) DOELSEIF ([TFA07:temperature] < [TFA08:temperature] - 1) (set Warnung_Gartentuer off, set gong_MP3 playTone 011)

Mir wird dann vermutlich das normale schliessen der Tür nicht mehr signalisiert ?
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 10 Juli 2016, 16:39:16
Ja, Du müsstest Dir schon genau überlegen, welche Fälle auftreten können und welche davon etwas bewirken sollen:

- eine offen/geschlossen Meldung sollte wohl in jedem Fall erfolgen.
- eine noch offen Meldung könnte regelmässig wiederholt werden.
- der Zeitabstand der Wiedeholungen könnte mit sinkender Innentemperatur kürzer werden
- eine Temperaturwarnung sollte nicht während einer normalen Lüftungsphase erfolgen z.B. erstmals nach 7 Minuten
- Begrenzung der Temperaturwarnung auf die Heizperiode oder bestimmte Monate, z.B. mit $month !~ "5|6|7|8|9"

TFK = Tür- und Fensterkontakt
HP  = während der Heizperiode 1, sonst 0
Ti   = Innentemperatur
$SELF, $cmd siehe die deutschsprachige Befehlsreferenz zum DOIF. Sie dienen dazu das DOIF zu triggern oder zu verriegeln.

## 1
DOIF     ([TFK] eq "open" and $cmd =~ "^(5|0)\$") (...) ## Fenster/Tür wird geöffnet, wenn geschlossen oder initialisiert
## 2
DOELSEIF ([?HP] and [?TFK] eq "open" and [?Ti] > 16.5 and [$SELF] =~ "cmd_(1|2|3)") (...) ## Heizperiode, Wiederholungsmeldung langer Erinnerungsbstand
## 3
DOELSEIF ([?HP] and [?TFK] eq "open" and [?Ti] <= 16.5 and [$SELF] =~ "cmd_(1|2|3)") (...) ## Heizperiode, Wiederholungsmeldung kurzer Erinnerungsbstand
## 4
DOELSEIF (![?HP] and [?TFK] eq "open" [?07:00-21:00] and [$SELF] =~ "cmd_(1|4)") (...)  ## keine Heizperiode, Wiederholungsmeldung langer Erinnerungsbstand, nachts wir nicht wiederholt (schlafen bei offen Fenster).
## 5
DOELSEIF (TKF] eq "closed" and $cmd != 5) (...) ## Fenster/Tür wird geschlossen


Es sind folgende Attribute zu setzen:

do always
selftrigger wait
timerWithWait 1
wait 0.1:420:60:2700:0


Dieses Schema nutze ich um den Fensterstatus ansagen zu lassen, das lässt sich auch zur Signalisierung einer Terrassentür verwenden.
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 27 Juli 2016, 20:30:31
Hallo Ellert,

danke für die Unterstützung und Codezeilen, das muss ich dann mal für meinen Fall übersetzen.

Was mich jetzt aber wunder ist, das ich momentan zum Beispiel eine Aussentemperatur von 24 und einen Wohnzimmertemperatur von 19 habe und offenbar trotzdem in das else fällt das angeblich die Tür geschlossen ist obwohl Sie offen ist.

Wobei mir auch merkwürdige Temperaturschwankungen am Wonzimmerthermostat auffallen.

Gruß
Micha
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: Ellert am 27 Juli 2016, 20:34:57
Batterie wechseln?
Titel: Antw:Feher bei Terassentür ist geöffnet / geschlossen
Beitrag von: mfeske am 29 Juli 2016, 15:52:09
Danke ! Batterie wechsel ! Was der so alles bewirkt  :o