Hallo,
ich habe mir mit Hilfe eines Wemos D1 (Espeasy) einen Tempregler mit Tasten und Display zusammen gezimmert.
Internals:
DEF ESPEasy_Reifebox_Reifebox_Temp Reifebox_Switch
FUUID 600012b7-f33f-a358-28f6-b47a67e2ab6feb05
NAME Reifebox_Regler
NR 386
NTFY_ORDER 50-Reifebox_Regler
STATE Zustand: active - SOLL: 20.0 °C - IST: 22.2 °C - Heizung: off
TYPE THRESHOLD
cmd1_gt set Reifebox_Switch off
cmd2_lt set Reifebox_Switch on
cmd_default 2
hysteresis 1
offset 0
sensor ESPEasy_Reifebox_Reifebox_Temp
sensor_reading temperature
READINGS:
2021-02-16 11:08:22 Statenum 1
2021-02-16 11:08:06 cmd cmd1_gt
2021-02-16 11:08:06 desired_value 20
2021-02-16 11:08:06 mode active
2021-02-16 11:08:17 sensor_value 22.25
2021-02-16 11:08:17 state Zustand: active - SOLL: 20.0 °C - IST: 22.2 °C - Heizung: off
2021-02-16 11:08:22 status 0
2021-02-16 11:08:06 threshold_max 20
2021-02-16 11:08:06 threshold_min 19
Attributes:
desiredActivate 1
genericDeviceType thermostat
group Reifebox
number_format %.1f
room Reifebox
state_cmd1_gt off
state_cmd2_lt on
state_format Zustand: _m - SOLL: _dv °C - IST: _s1v °C - Heizung: _sc
userReadings Statenum {if(ReadingsVal("Reifebox_Regler","mode","") eq "active") {return 1} elsif (ReadingsVal("Reifebox_Regler","mode","") eq "deactivated") {return 0}},
status {if(ReadingsVal("Reifebox_Regler","cmd","") eq "cmd2_lt") {return 1} elsif (ReadingsVal("Reifebox_Regler","cmd","") eq "cmd1_gt") {return 0}}
webCmd desired
widgetOverride desired:20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,28.5,29,29.5,30
Das funktioniert auch prinzipiell alles ganz ordentlich.
ABER:
Wenn ich in FHEM die Soll-Temp einstelle ändert sich entsprechend der Hysterese auch der Wert in threshold_max und threshold_min.
Soweit so gut.
Wenn ich aber nun die Temp-Einstellung über einen Button in Verbindung mit dem Notify ändere ändert sich der Wert in threshold_max und threshold_min NICHT!
Warum funtkioniert das nicht? Bzw. wie kann ich das ändern?
Denn die Einstellung in FHEM ist doch eigentlich nichts anderes als ein "setreading Reifebox_Regler desired_value" oder etwa nicht?
Ich würde ungerne zu jeder Temp ein Notify bauen das dann auch threshold_max und threshold_min setzt.
Hier noch das besagte Notify:
Internals:
DEF ESPEasy_Reifebox_NEU_Button_hoch:.* {my $Wert=ReadingsVal("Reifebox_Regler","desired_value",0);;
if ($EVENT eq "Sta: on" && $Wert <= 29) {
$Wert = $Wert+1;;
fhem("setreading Reifebox_Regler desired_value $Wert")}
elsif ($EVENT eq "Sta: on" && $Wert >= 30) {
$Wert = $Wert+0;;
fhem("setreading Reifebox_Regler desired_value 20")}
}
FUUID 60018783-f33f-a358-a76f-fd65a00cb7f661ec
NAME Temp_Einstellung
NOTIFYDEV ESPEasy_Reifebox_NEU_Button_hoch
NR 387
NTFY_ORDER 50-Temp_Einstellung
REGEXP ESPEasy_Reifebox_NEU_Button_hoch:.*
STATE 2021-02-16 11:14:40
TRIGGERTIME 1613470480.20981
TYPE notify
READINGS:
2021-02-16 11:04:20 state active
Attributes:
room Reifebox
Danke für eure Hilfe.
Grüße
Hi,
warum machst Du nicht wie vom Modul vorgesehen ein set Reifebox_Regler desired $Wert?
Dann weiß das Modul es soll die Werte neu setzen ;)
Gruß Otto
Ah jetzt...... wenn ich in das Notify noch ein fhem("set Reifebox_Regler hysteresis 1")}
funktioniert es wie es soll.
Wahrscheinlich ein Umweg aber es funktioniert erstmal.
NACHTRAG: Danke für deinen Beitrag Otto, das muss ich jetzt mal testen.
Ich habe mich einfach an dem Namen für das Reading orientiert. Denn sonst führt ja schon z.Bsp. ein State und state zu einem Fehler.
Grüße
Zitat von: Otto123 am 16 Februar 2021, 11:22:18
Hi,
warum machst Du nicht wie vom Modul vorgesehen ein set Reifebox_Regler desired $Wert?
Dann weiß das Modul es soll die Werte neu setzen ;)
Gruß Otto
Das funktioniert natürlich.
Bei Einbau der "Hysteresis-Zeile" im Notify bin ich schon über meinen Fehler mit set und setreading gestolpert, habe es aber nicht realisiert.
Erst beim ändern auf deinen Tipp hin, ist mir der Fehler aufgefallen.
Mein FHEM wäschst und gedeiht, aber bei solchen Dingern komme ich immer und immer wieder ins straucheln.
Danke für die schnelle Unterstützung.