Temperaturgesteuerte Zeitschaltuhr

Begonnen von Kitt, 22 September 2017, 14:20:21

Vorheriges Thema - Nächstes Thema

Kitt

Hallo an alle,

ich würde würde gerne eine Zeitschaltuhr ab einer gewissen Temperatur einschalten und unterhalt dieser
Temperatur ausschalten (um damit eine Elektroheizung zu betreiben).

Da der Sensor gelegentlich falsche Werte produziert, würde ich die Zeitschaltuhr gerne erst ansteuern, wenn
der Temperaturwert 2x erreicht wird.

Außerdem soll die Zeitschaltuhr nachts (ab 22 Uhr) generell aus bleiben.

Kann mir da jemand von euch mit dem Code helfen?

Viele Grüße

CoolTux

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

jkriegl

Wann soll es in der Frühe los gehen?
Lies mal bei DOIF da kannst Du was basteln wie
([06:00-22:00] and [sensor:temperatur] < 21)
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Kitt

#3
Ok, bitte nicht lachen. Das hier hab ich als Code, natürlich funktioniert es nicht. Außerdem ist die Abschaltzeit während der Nacht nicht eingebaut

Liebe Grüße

Internals:
   CFGFN
   DEF        ([Sensor:Temperature] < 20) (set Heizung=STATE on) DOELSEIF ([Sensor:Temperature] > 20) (set Heizung=State off)
   NAME       Elektroheizung
   NR         42944
   NTFY_ORDER 50-Elektroheizung
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-09-22 23:31:13   cmd             1
     2017-09-22 23:31:13   cmd_event       set_cmd_1
     2017-09-22 23:31:13   cmd_nr          1
     2017-09-22 23:31:13   state           cmd_1
   condition:
     0          ReadingValDoIf($hash,'Sensor','Temperature') < 20
     1          ReadingValDoIf($hash,'Sensor','Temperature') > 20
   devices:
     0           Sensor
     1           Sensor
     all         Sensor
   do:
     0:
       0          set Ventilator=STATE on
     1:
       0          set Ventilator=State off
     2:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Sensor:Temperature
     1           Sensor:Temperature
     all         Sensor:Temperature
   regexp:
     all:
   state:
     STATE:
Attributes:
   room       Oben

CoolTux


([Sensor:Temperature] < 20) (set Heizung on) DOELSEIF ([Sensor:Temperature] > 20) (set Heizung off)


So sollte er zu mindestens schalten. Probiere das erstmal aus.
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

Kitt

Es schaltet leider nicht automatisch (über den Set-Knopf kann ich den Befehl allerdings senden, das funktioniert also).
"Sensor" ist übrigens ein Dummy.

Internals:
   CFGFN
   DEF        ([Sensor:Temperature] < 18) (set Heizung on) DOELSEIF ([Sensor:Temperature] > 19) (set Heizung off)
   NAME       Elektroheizung
   NR         42944
   NTFY_ORDER 50-Elektroheizung
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-09-23 12:46:46   cmd             1
     2017-09-23 12:46:46   cmd_event       set_cmd_1
     2017-09-23 12:46:46   cmd_nr          1
     2017-09-23 12:46:31   mode            enable
     2017-09-23 12:46:46   state           cmd_1
   condition:
     0          ReadingValDoIf($hash,'Sensor','Temperature') < 18
     1          ReadingValDoIf($hash,'Sensor','Temperature') > 19
   devices:
     0           Sensor
     1           Sensor
     all         Sensor
   do:
     0:
       0          set Heizung on
     1:
       0          set Heizung off
     2:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Sensor:Temperature
     1           Sensor:Temperature
     all         Sensor:Temperature
   regexp:
     all:
   state:
     STATE:
Attributes:
   room       Oben

CoolTux

Und der Sensor? Sehe nicht das der Sensor beachtet wird?
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

Kitt

Wenn ich "list Sensor" eintippe, bekomme ich die Meldung "No device named Sensor found".

Achso, aber das ist ja der Alias-Name. Den darf ich wahrscheinlich nicht benutzen, oder?

Internals:
   CFGFN
   DEF        ([Oben.DHT22:Temperature] < 18) (set Heizung on) DOELSEIF ([Oben.DHT22:Temperature] > 19) (set Heizung off)
   NAME       Elektroheizung
   NR         42944
   NTFY_ORDER 50-Elektroheizung
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-09-23 16:10:44   cmd             0
     2017-09-23 16:10:44   state           initialized
   condition:
     0          ReadingValDoIf($hash,'Oben.DHT22','Temperature') < 18
     1          ReadingValDoIf($hash,'Oben.DHT22','Temperature') > 19
   devices:
     0           Oben.DHT22
     1           Oben.DHT22
     all         Oben.DHT22
   do:
     0:
       0          set Heizung on
     1:
       0          set Heizung off
     2:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Oben.DHT22:Temperature
     1           Oben.DHT22:Temperature
     all         Oben.DHT22:Temperature
   regexp:
     all:
   state:
     STATE:
Attributes:
   room       Oben

CoolTux

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

CoolTux

Denke mal so passt das schon. Jetzt schauen wir mal
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

Kitt

Juhuu, es scheint zu funktionieren!!!

CoolTux

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

Kitt

Ich würde die Heizung gerne zwischen 22 Uhr und 6 Uhr abschalten  :)

TomLee

Das wird vermutlich mit dem dritten Beispiel ganz am Anfang der commandref gehen.

ZitatKombinierte Ereignis- und Zeitsteuerung

define di_lamp DOIF ([06:00-09:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)

CoolTux

#14

(["^Oben.DHT22$:^Temperature",20] < 18 and [?06:00-22:00]) (set Heizung on) DOELSEIF (["^Oben.DHT22$:^Temperature",20] > 19 and [?22:00-06:00] ) (set Heizung off)


Schau mal bitte ob das so geht. Wenn nicht muß nur bisschen die RegEx angepasst werden
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

Kitt

Ich habe eine Frage zum neuen Code:

Schaltet sich damit die Heizung nicht nur dann ab, wenn die Temperatur über 19 °C ist UND es zwischen 22 und 6 Uhr ist?
Sie soll sich tagsüber ja auch abschalten, wenn es über 19 °C ist.

Müsste da nicht eigentlich ein "Oder" hin?

CoolTux

Ha, und jetzt fällt mir auch wieder ein wieso ich off als erstes hatte. Also vor dem DOELSEIF
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

CoolTux


(["^Oben.DHT22$:^Temperature",20] > 19 or [?22:00-06:00] ) (set Heizung off)
DOELSEIF (["^Oben.DHT22$:^Temperature",20] < 18) (set Heizung on)


So sollte es nun gehen
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

Kitt

Nochmal eine generelle Frage dazu:

Das DOIF reagiert immer, wenn der Sensor ein neues Reading hat, oder?
Das passiert bei mir alle 15 Minuten.

Es wird doch also alle 15 Minuten ein Funksignal geschickt, egal ob die Steckdose
bereits an ist oder nicht?

Also: Kann man das so einstellen, dass nur ein Signal gesendet wird, wenn sich der Zustand auch ändern soll.
(Z.B. wird ja nachts alle 15 Minten ein "Off"Signal geschickt).

CoolTux

DOIF verwendet bereits das Prinzip einer Zustandsmaschine. Ist also einmal ein Zustand erreicht, wird dieser nicht noch mal geschalten bevor nicht vorher ein anderer Zustand eingetroffen ist.
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

Kitt

Habe gerade selbst noch ein bisschen gelesen und die Info dann auch gefunden.

Trotzdem Danke! Es läuft soweit alles gut, heute morgen pünktlich um 6 ging die
Heizung an. Ich bin echt begeistert von den ganzen Möglichkeiten.

Wozu braucht man eigentlich das ",20" im Code? Das ist mir noch nicht ganz klar.

Vorhin hätte ich mir im Ikea fast eine farbige Tradfri LED-Lampe mitgenommen.
Aber ich glaube laut Forum ist das Gateway nicht sehr zuverlässig...  :-\

CoolTux

Zitat von: Kitt am 25 September 2017, 16:34:08
Wozu braucht man eigentlich das ",20" im Code? Das ist mir noch nicht ganz klar.
Das ist im Prinzip wie bei ReadingsVal. Das ist der Default Wert welcher genommen werden soll wenn nichts anderes ausgelesen werden kann.
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

Kitt

Ok, danke!!!  :) Ist wahrscheinlich ganz sinnvoll, wenn die Heizung sich im Zweifel abschaltet.