Temperatur zeitverzögert absenken (HM-CC-RT-DN/HM-SEC-SC-2)

Begonnen von elDudereeno, 01 Mai 2014, 18:23:11

Vorheriges Thema - Nächstes Thema

elDudereeno

Hallo Zusammen,

nachdem ich jetzt seit Tagen mit den Homematic Eigenheiten kämpfe, aber mittlerweile das ein oder andere auch selber lösen konnte, brauche ich als absoluter Anfänger doch Hilfe.

Ausgangssituation.
Ich habe:
1 Homematic LanGateway
1 HM-CC-RT-DN
1 HM-SEC-SC-2

Ich möchte:
Dass die Temperatur heruntergeregelt wird, wenn die Terassentür länger als zB. 30 Sekunden offen steht.

Mein Notify sieht bisher so aus:

### Dummy, um zu erkennen, ob Fenster geöffnet wurde ###
define Wz_fensteroffen dummy
### Dummy speichert ,,vorher"-Temperatur der Heizung ###
define Wz_fensteroffenTemp dummy

### Bei Öffnung wird aktueller Wert gespeichert in Dummy, Temp auf 12 gesetzt und der Zustands-Dummy aktiviert ###

define TempWzSenken notify wz_fenster:open {\
my $WzCurrentTemp=ReadingsVal("wz_thermo_1","desired-temp",0);;\
fhem ("set wz_thermo_1 desired-temp 12.0;; set Wz.fensteroffen on;; set Wz.fensteroffenTemp $WzCurrentTemp;; set wz_thermo_1 burstXmit")\
}
### Bei Schließen wird alter Wert wieder gesetzt, Zustands-Dummy wieder aus, nur wenn Zustand bisher offen ###

define TempWzAnheben notify wz_fenster:closed {\
my $WzTempBefore=Value("Wz.fensteroffenTemp");;\
if (Value("Wz.fensteroffen") eq "on") { \
fhem ("set wz_thermo_1 desired-temp $WzTempBefore;; set Wz.fensteroffen off;; set wz_thermo_1 burstXmit") \
  }\
}


(Weitesgehend aus dem Internet kopiert)
Bisher funktioniert jedoch nur das Absenken, die alte Temperatur wird nicht zurückgespielt, Wz.fensteroffen wird nicht zurückgesetzt.
Wo liegt hier das Problem?

Und wie schaffe ich jetzt, dass die Aktion erst ausgeführt wird, wenn der Zustand wz_fenster:open für 30 Sekunden bestand hat?

Vielen Dank im Voraus

Schöne Grüße
Dominik

Thorsten Pferdekaemper

Zitat von: elDudereeno am 01 Mai 2014, 18:23:11
Wo liegt hier das Problem?
Wahrscheinlich hier:
if (Value("Wz.fensteroffen") eq "on") { \
Ich denke, da muss man auch ReadingsVal() benutzen.
ZitatUnd wie schaffe ich jetzt, dass die Aktion erst ausgeführt wird, wenn der Zustand wz_fenster:open für 30 Sekunden bestand hat?
Erzeuge im ersten notify ein at, welches nach 30 Sekunden das macht, was jetzt im ersten notify gemacht wird. (Ich glaube sowas wie "define blabla at +00:00:30 {...}". Im zweiten notify loeschst Du dieses at.
FUIP

Puschel74

Hallo,

ZitatUnd wie schaffe ich jetzt, dass die Aktion erst ausgeführt wird, wenn der Zustand wz_fenster:open für 30 Sekunden bestand hat?

Watchdog?

Mit Value kannst du nur Stati abfragen.
Mit ReadingsVal kannst du, wie der Name schon sagt, Werte aus Readings abfragen.
Das wurde aber alles schonmal erklärt (ich denke das es öfter als einmal war)  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

elDudereeno

Ok, danke euch Beiden.
Habe es so jetzt hinbekommen.




### Absenkung der Temperatur nach Öffnen der Terassentür ###
define Wz_fensteroffen dummy
define Wz_fensteroffenTemp dummy

define Temp_Offen watchdog wz_fenster:open 00:00:30 wz_fenster:closed {my $WzCurrentTemp=ReadingsVal("wz_thermo_1","desired-temp",0);; fhem ("set Wz.fensteroffenTemp $WzCurrentTemp;; set wz_thermo_1 desired-temp 10.0;; set wz_thermo_1 burstXmit;; set Wz.fensteroffen on;; trigger Temp_Offen .")}


define TempWzAnheben notify wz_fenster:closed {if (ReadingsVal("Wz_fensteroffen","state",0) eq "on"){my $WzTempBefore=ReadingsVal("Wz_fensteroffenTemp","state",0);; fhem ("set wz_thermo_1 desired-temp $WzTempBefore;; set wz_thermo_1 burstXmit;; set Wz.fensteroffen off;; trigger Temp_Offen .")}}


Grüße
Dominik