Hallo zusammen,
ich bin relativer Anfänger und bastele gerade an diversen Temperaturregelungen (z.B. aktuell der Kühlschkrankregelung) rum.
Dazu habe ich folgendes programmiert:
##
# Kühlschrank
# Kühlschrankregelung mit Ein-/Ausschalteinstellung
define Fridge dummy
attr Fridge event-on-change-reading state
attr Fridge group Steuerung_Kuehlschrank
attr Fridge room Test
define Kuehlschranktemp dummy
attr Kuehlschranktemp group Steuerung_Kuehlschrank
attr Kuehlschranktemp room Test
attr Kuehlschranktemp webCmd 05:06:07:08:09:10:11:12
define FridgeSwitch DOIF ([Kuehlschranktemp] >[Einschalttemp])(set Fridge on) DOELSEIF ([Kuehlschranktemp] <[Ausschalttemp]) (set Fridge off)
attr FridgeSwitch event-on-change-reading 1
attr FridgeSwitch group Steuerung_Kuehlschrank
attr FridgeSwitch room Test
define Fridge_Push notify Fridge:off set Push message 'Achtung - Der Kühlschrank ist ausgefallen!!!!'
attr Fridge_Push room Test
define Ausfall dummy
attr Ausfall devStateIcon on:Wecker.Immer off:Wecker.Wochentags
attr Ausfall group Steuerung_Kuehlschrank
attr Ausfall room Test
define FridgeWarner DOIF ([Kuehlschranktemp] >11)(set Ausfall on) DOELSEIF ([Kuehlschranktemp] <10) (set Ausfall off)
attr FridgeWarner event-on-change-reading 1
attr FridgeWarner group Steuerung_Kuehlschrank
attr FridgeWarner room Test
##
## Test Slider
#
## Einschalten
define Einschalttemp dummy
attr Einschalttemp group Steuerung_Kuehlschrank
attr Einschalttemp room Test
attr Einschalttemp setList state:7.0,7.5,8.0,18.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0
attr Einschalttemp webCmd state
## Ausschalten
define Ausschalttemp dummy
attr Ausschalttemp group Steuerung_Kuehlschrank
attr Ausschalttemp room Test
attr Ausschalttemp setList state:7.0,7.5,8.0,18.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0
attr Ausschalttemp webCmd state
Das funktioniert soweit auch ganz gut. Allerdings muss ich immer die Ein-und Ausschalttemperatur eingeben.
Das ist eigentlich quatsch, denn die Ausschalttemperatur soll immer 2 Grad unter der Einschalttemperatur liegen.
Kann ich das irgendwie definieren???
Kann ich das in mein DOIF eingeben?
Wäre super, wenn es einen Tipp gäbe. Ich weiß auch, dass es hier im Forum einige gibt, die DOIF nicht toll finden. Für mich ist es aber prinzipiell einfach zu verstehen und daher nutze ich es gerne.
Hallo Jogi,
vielleicht kannst Du das besser mit THRESHOLD machen? Das ist genau dafür gedacht.
Gruß Otto
Zitat von: Otto123 am 06 März 2017, 16:18:02
Hallo Jogi,
vielleicht kannst Du das besser mit THRESHOLD machen? Das ist genau dafür gedacht.
Gruß Otto
Tja, nur weiß ich leider nicht, wie ich das mit einem Slider da hinbekomme!
Ich habe schon mal mit Threshold gearbeitet:
define th_fl_heating THRESHOLD TempRes:temperature:0.5:23.5 Zusatzheizung
attr th_fl_heating number_format %.1f
attr th_fl_heating room 9.OG
attr th_fl_heating setOnDeactivated cmd1_gt
attr th_fl_heating state_cmd1_gt off
attr th_fl_heating state_cmd2_lt on
attr th_fl_heating state_format _m _dv _sc
Das funktioniert, aber leider ist da kein Slider und den hätte ich gerne.
Ich kann meiner Familie nicht zumuten, umständlich die Solltemperatur anders einzugeben.
Mir ist ja prinzipiell egal, mit welcher Methode ich zum Ziel komme, aber ich benötige ein, die ich sowohl für Heiz- oder Kühlzwecke einsetzen kann und vor allem ist mir wichtig, dass ich die Solltemperatur bequem, z.B. mit einem Slider vorwählen kann. Und bei letzterem weiß ich leider nicht wie es geht. Weder bei THRESHOLD noch bei DOIF.
Daher wäre ich für eine Lösung super dankbar.
Mit der aktuellen Version von DOIF kannst du alles in einem Modul unterbringen
define Fridge DOIF ([TempRes:temperature] >[$SELF:Einschalttemp])(set Fridge on) DOELSEIF ([TempRes:temperature] <[$SELF:Ausschalttemp]) (set Fridge off)
attr Fridge readingList Einschalttemp,Ausschalttemp
attr Fridge setList Einschalttemp:7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0 Ausschalttemp:7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0
1) Die Vorgabe-Temperaturen kannst du im Modul selbst ändern.
2) Das Modul reagiert sofort auf Veränderung der Vorgabetemperaturen.
3) Die aktuellen Vorgabe-Werte kannst du in den Readings des DOIF-Moduls einsehen.
4) Du brauchst keine Dummys oder andere Module.
Vielen Dank für den Tipp, ABER leider ist das wieder so eine Lösung, bei der man zuerst in das Modul gehen muss, um die Temperatur zu verstellen.
Bei einem Kühlschrank mag das noch Sinn machen, aber z.B. bei der Heizung wird das nicht funktionieren, weil meine Familie die Einstellung je nach Wohlbefinden einstellen möchte und die nicht in irgendwelchen Modulen rumsuchen sollen. Ich möchte die Temperatureinstellung -auch für Laien machbar-auf der Oberfläche haben.
Geht das irgendwie???
Zitat von: Jogi am 06 März 2017, 18:11:56
Vielen Dank für den Tipp, ABER leider ist das wieder so eine Lösung, bei der man zuerst in das Modul gehen muss, um die Temperatur zu verstellen.
Bei einem Kühlschrank mag das noch Sinn machen, aber z.B. bei der Heizung wird das nicht funktionieren, weil meine Familie die Einstellung je nach Wohlbefinden einstellen möchte und die nicht in irgendwelchen Modulen rumsuchen sollen. Ich möchte die Temperatureinstellung -auch für Laien machbar-auf der Oberfläche haben.
Geht das irgendwie???
Das set-Menü ist zwar auch Oberfläche, aber du willst es noch einfacher, na denn:
attr Fridge webCmd Einschattemp:Ausschalttemp
attr Fridge cmdState on|off
hinzufügen.
Für noch mehr Komfort, musst du andere Weboberflächen einsetzen, wie z. B. TabletUI oder andere.
oder so, dann hast du nur die Wunschtemperatur und die Hysterese stellst du im Device ein.
defmod Fridge_DOIF DOIF ([Temp] >([$SELF:Temp]+0.5)) (set Fridge on) DOELSEIF ([Temp] <([$SELF:Temp]-0.5)) (set Fridge off)
attr Fridge_DOIF readingList Temp
attr Fridge_DOIF room test
attr Fridge_DOIF setList Temp:7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0
attr Fridge webCmd Temp
Die Hysterese kannst du natürlich auch noch über ein Zusätzliches Reading leichter änderbar machen, oder noch ein 'aus' hinzu nehmen...