Hallo,
nachdem ich nun mehrere FHT80b in Verwendung habe, wollte ich auf einer Informationsseite für alle FHT80b einen Slider zur Verfügung stellen mit dem ich die desired-temp einstellen kann. Per Slider möchte ich die Temperatur zwischen 10 - 30°C regeln können.
Das zu steuerende Device ist bereits definiert und heisst SZ_Heizung.
## Heizung
define SZ_Heizung FHT XXXX
attr SZ_Heizung alias Schlafzimmer Heizung
attr SZ_Heizung fm_type temperature,desiredtemp,tempbutton,window,actuators
attr SZ_Heizung icon hc_wht_regler
attr SZ_Heizung model fht80b
attr SZ_Heizung retrycount 3
attr SZ_Heizung room 03 Schlafzimmer
Folgendes habe ich bereits :
#### Dummy Slider für Heizungen
define dy_SZ_Heizung_Slider dummy
attr dy_SZ_Heizung_Slider alias Heizung Schlafzimmer Temp
attr dy_SZ_Heizung_Slider webCmd dim
attr dy_SZ_Heizung_Slider setList dim:slider,10,0.5,30
attr dy_SZ_Heizung_Slider group Heizungsregelung
attr dy_SZ_Heizung_Slider sortby 01
attr dy_SZ_Heizung_Slider room 00 Information
Das Problem mit diesem Slider ist, dass der Anfangswert bei 0 ist und somit der Regeler ausserhalb der Spezifikation für den Slider.
Wie bekomme ich es hin, dass
1. ich die aktuelle desired-temp von SZ_Heizung auslesen kann und die als Startwert für den Slider Dummy dy_SZ_Heizung_Slider vorgebe.
2. ich den DIM Wert des Sliders dann als desired-temp setzen kann (kann ich das über ein notify machen und wenn ja wie)
?
Danke für eure Unterstützung
Hey Charity,
zu 1:
define SetzSliderNotify notify SZ_Heizung:* {\
my $timerwert = ReadingsVal("SZ_Heizung","ReadingName","on");;\
fhem ("set dy_SZ_Heizung_Slider $timerwert");;\
}
zu 2:
define SetzDesiredTemp notify dy_SZ_Heizung_Slider:* {\
my $sliderwert = ReadingsVal("dy_SZ_Heizung_Slider","state","on");;\
fhem ("set SZ_Heizung $sliderwert");;\
}
Hier würde ich nicht "dim" sondern "state" verwenden
attr dy_SZ_Heizung_Slider webCmd state
attr dy_SZ_Heizung_Slider setList state:slider,10,0.5,30
Alles ungetestet.
Alle Angaben ohne Gewähr.
Gruß jody
Super, danke.
Das werd ich heute abend gleich ausprobieren.
Hi Danke nochmal, das hat super funktioniert.
Ok, die Darstellung hat zwar funktioniert und auch das setzen der Temperatur.
Doch die notifies gehen etwas durch :-(
Ich weiss nicht warum, aber die Slider dürften ständig senden und damit wird innerhalb einer Sekunde mehrfach die Temperatur der Heizung ausgelesen, in den Slider geschrieben und damit dann auch wieder die Temperatur an die Heizung geschickt. Wodurch ich über die 1% drüber bin und die Heizung keine Einstellung mehr annimmt.
Wie kann ich diesen Wildwuchs auf tatsächliche Änderungen und nicht permanent Änderungen umstellen ?
vermutlich in dem du in 1. den slider nur dann aktualisierst wenn der neue wert ungleich dem aktuellen slider wert ist. also etwa so:define SetzSliderNotify notify SZ_Heizung:* {\
my $timerwert = ReadingsVal("SZ_Heizung","ReadingName","on");;\
fhem ("set dy_SZ_Heizung_Slider $timerwert") if( $timerwert != Value("dy_SZ_Heizung_Slider");;\
}
gruss
andre
Zustätzlich das attribute "lazy" für die FHTs benutzen.
Hallo,
ich will den Slider verwenden, um den Sollwert meiner tado.com Regelung zu setzen. Nun habe ich folgende Probleme:
1. Ich bekomme nur Ganzzahlwerte als $sliderwert. Wie kann ich zumindest 0.5 Grad-Schritte bekommen.
2. Bei Änderung kann den Sollwert ab tado.com senden, indem ich eine URL aufrufe:
"https://my.tado.com/mobile/1.3/updateThermostatSettings?&username=meinusername&password=meinpasswordhash&homeTemp=21.0"
Wie kann ich das umsetzen?
#### Dummy Slider für Heizungen
define dy_SZ_Heizung_Slider dummy
attr dy_SZ_Heizung_Slider alias Heizung Solltemperatur
attr dy_SZ_Heizung_Slider webCmd state
attr dy_SZ_Heizung_Slider setList state:slider,15,0.5,23
attr dy_SZ_Heizung_Slider group Heizungsregelung
attr dy_SZ_Heizung_Slider sortby 01
attr dy_SZ_Heizung_Slider room Heizung
define SetzSliderNotify notify tado_temp:* {\
my $timerwert = ReadingsVal("tado_temp","setPointTemp","on");;\
fhem ("set dy_SZ_Heizung_Slider $timerwert");;\
}
define SetzDesiredTemp notify dy_SZ_Heizung_Slider:* {\
my $sliderwert = ReadingsVal("dy_SZ_Heizung_Slider","state","on");;\
{ system("/usr/sbin/pebblesend2 -n Tado_geaendert -m $sliderwert") } ;;\
}
So sehen meine Setting aus momentan. Und den (leider ganzzahligen) Wert des Sliders, bekomme ich brav auf meiner Pebble angezeigt (als Test, ob es geht)
Gruß und Danke
LinuxQ
Für alle die Homematic Heizungssteuerungselemente verwenden passt diese Anleitung nicht ganz. Da ich an keiner Stelle eine funktionierende gefunden habe und vielleicht es andere auch interessieren könnte:
1. Schritt – Einen Dummy-Slider anlegen:
define Heizung_Bad_Slider dummy
2. Schritt: den Dummy konfigurieren:
attr Heizung_Bad_Slider webCmd state
attr Heizung_Bad_Slider setList state:slider,5.0,0.5,30.0
3. Schritt – erstes Notify anlegen:
Ich steuere das Thermostat und dort den Kanal ,,Climate" (tem_feuchte_Bad_Climate) an und nicht die Heizung selbst (geht natürlich auch). Wichtig sind die Absätze (später im DEF des Notifys nach dem Muster unten ändern) und das für Homematic wichtige "desired-temp" nicht vergessen:
define Heizung_Bad_SliderNotify notify Heizung_Bad_Slider:* {
my $sliderwert =
ReadingsVal("Heizung_Bad_Slider","state","on");
fhem ("set temp_feuchte_Bad_Climate desired-temp $sliderwert");
}
4. Schritt – zweites Notify anlegen:
define Heizung_Bad_Slider2Notify notify Heizung_Bad_Slider:* {
my $timerwert =
ReadingsVal("Heizung_Bad_Slider","ReadingName","on");
fhem ("set temp_feuchte_Bad_Climate desired-temp $timerwert") if( $timerwert != Value("Heizung_Bad_Slider");
}
Problem: Der Slider kann nicht auf 0,5er Werte gestellt werden. Nur ganze Werte werden eingeblendet und auch an das Thermostat/die Heizung gesendet.
Ich hatte das gleiche Problem.
Hier die Lösung für die Nachkommastelle : state:slider,5.0,0.5,30.0,1
Super, danke für die Info!
Noch eine "Anfängerfrage"... ähm... wofür ist jetzt nochmal das zweite Notify? Beide reagieren doch auf das gleiche Ereignis, den "Slider"?
Müsste nicht einer auf temp_feuchte_Bad_Climate reagieren?
Ich würde gerne hier meinen Senf dazu packen.
Der Slider an sich ist ja OK, diesen habe ich bei meinen Z-Wave Ventilen in Funktion.
Doch bekomme ich nicht hin das der Slider den aktuellen Wert anzeigt :(.
Nochmal, Slider Funktion OK, die eingestellte Temperatur (z.B.25) wird so übertragen und das Ventil Regelt nach.
Zeitgesteuert wird die Heizung aber dann heruntergefahren auf 17, der Slider zeigt aber immer noch 25 an.
define Heizung.Buero.Slider dummy
attr Heizung.Buero.Slider setList state:slider,4.0,0.5,28.0
attr Heizung.Buero.Slider webCmd state
define Heizung.Buero.Slider.Notify notify Heizung.Buero.Slider:* {\
my $sliderwert = \
ReadingsVal("Heizung.Buero.Slider","state","on");; \
fhem ("set Heizung.Buero setpointHeating $sliderwert");;\
}
Diese Slider waren bei mir über ein Jahr im Einsatz. Dann habe ich mein fhem vom raspberry (immer häufigere korrupte sd-Karte) auf meinen qnap umgezogen. In dem Zusammenhang habe ich die neueste Version installiert. Ich muss gestehen, dass ich zuvor sehr faul war, was die updates anging. Beim Versuch meine alte fhem.cfg zu übertragen hatte ich einige Probleme mit fehlenden perl-Modulen, welche ich beheben konnte. Eins der letzten Probleme ist folgendes:
Dieser Teil in der fhem.cfg:
define Slider_wz_HeizungFensterfront_Clima dummy
attr Slider_wz_HeizungFensterfront_Clima alias Heizung Wohnzimmer Fensterfront
attr Slider_wz_HeizungFensterfront_Clima fp_Erdgeschoss 64,1175,7,Heizungsregelung
attr Slider_wz_HeizungFensterfront_Clima group Heizungsregelung
attr Slider_wz_HeizungFensterfront_Clima room Wohnzimmer
attr Slider_wz_HeizungFensterfront_Clima setList state:slider,15.0,0.5,25.0
attr Slider_wz_HeizungFensterfront_Clima sortby 01
attr Slider_wz_HeizungFensterfront_Clima webCmd state
Produziert beim Speichern:
Slider_wz_HeizungFensterfront_Clima: unknown attribute sortby. Type 'attr Slider_wz_HeizungFensterfront_Clima ?' for a detailed list. Slider_wz_HeizungFensterfront_Clima: unknown attribute webCmd. Type 'attr Slider_wz_HeizungFensterfront_Clima ?' for a detailed list.
Hat sich da mit den letzten Versionen an dem webCmd-Attribut für dummy's was geändert?
Sry, ich muss den pushen, komme da alleine nicht weiter. Gibt es irgendwelche Infos von mir, die noch helfen könnten?
Hmm... was machst du in dieser Zeile?
attr Slider_wz_HeizungFensterfront_Clima fp_Erdgeschoss 64,1175,7,Heizungsregelung
Zitat von: Leinad am 29 Februar 2016, 20:54:40
Hmm... was machst du in dieser Zeile?
attr Slider_wz_HeizungFensterfront_Clima fp_Erdgeschoss 64,1175,7,Heizungsregelung
Das war für den Floorplan.
Ich habe es soeben rausgefunden: das
global userattr
hatte sich mysteriöserweise geleert. Nachdem ich die Werte aus der ursprünglichen fhem.cfg wieder eingetragen hatte lief das ganze wieder.
Zitat von: tomspatz am 20 Dezember 2015, 17:43:43
Nochmal, Slider Funktion OK, die eingestellte Temperatur (z.B.25) wird so übertragen und das Ventil Regelt nach.
Zeitgesteuert wird die Heizung aber dann heruntergefahren auf 17, der Slider zeigt aber immer noch 25 an.
stand vorm gleichen Problem - hier meine Loesung:
Mein Spirit-Thermostat - meldet sich, wenn man ihn manuell (oder per Funk) verstellt.
Um jetzt den Slider mit dem gemeldeten Wert upzudaten - einfach noch einen Notify, der den Slider updatet, wenn der Thermostat sich mit 'ner Aenderung meldet:
In meinem LOG vom Thermostat sieht's so aus:
1. Fall - Temperatur via Slider auf z.B. 20.0 Grad gesetzt:
2018-11-24_12:39:38 THERMOSTAT1_OFFICE thermostatSetpointSet 20.0
2.) Fall - via +-Button am Thermostat auf 21.0 gesetzt:
2018-11-24_12:41:55 THERMOSTAT1_OFFICE setpointTemp: 21.0 C heating
...und auf diesen Event - setzt man einen notify - der dann den Slider updated:
define thermostat1_office_setpoint_change notify THERMOSTAT1_OFFICE:setpointTemp:.* set Heizung.Buero.Slider $EVTPART1
...und somit ist der Slider 'in sync' :-)