Hallo,
Ich bastele gerade an einem mqtt Template für einen Zigbee-Thermostaten (für den ich zuvor einen rudimentären Converter für z2mqtt erstellt habe).
Der hat datapoints für den erlaubten Einstellbereich der Soll-Temperatur, min und max, die der User festlegen kann und die in fhem als readings ankommen. Da wäre es schön, wenn man diese Werte für die Definition des Einstellsliders heranziehen könnte anstelle von fixen Werten, die dann ggfalls ungültig sind. Habe dazu nichts finden können - geht das überhaupt?
Danke & Grüße
Martin
Hallo,
geht. Du musst zwei (Perl) Teile draus machen, vorne und hinten. Vorne dürfen keine Leerzeichen vorkommen und es muss $name (klein geschrieben) heißen. Hinten $NAME (groß geschrieben).
desiredTemperature:{'slider,'.ReadingsNum($name,'min',1).',1,'.ReadingsNum($name,'max',100);} {qq($DEVICETOPIC/set {"$EVTPART0":$EVTPART1})}
edit:
es müssen keine zwei Perlteile sein, es geht auch nur vorne:
desiredTemperature:{'slider,'.ReadingsNum($name,'min',1).',1,'.ReadingsNum($name,'max',100);} $DEVICETOPIC/set {"$EVTPART0":$EVTPART1}
Gruß Thomas
Mega! Im setlist-Teil des Templates sieht das bei mir dann konkret so aus:
desired-temp:{'slider,'.ReadingsVal($name,'min_temperature','').',1,'.ReadingsVal($name,'max_temperature','').',5';} $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1}Da wäre ich von selbst im Leben nicht draufgekommen.
Noch nicht ganz klar ist mir ,1 und ,5 - bzw. wo man dabei das Intervall und die optionale ,1 für das Anzeigen von Kommastellen unterbringen würde?
desired-temp:{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100);},1 $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1}So gehts in angezeigten 0,5 ° Schritten - vielen Dank!
{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100);},1
Auch wenn das geht, würd ich die optionale 1 im Perlcode anhängen:
{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100).'1';}
Zitat von: TomLee am 22 November 2025, 17:53:45Auch wenn das geht, würd ich die optionale 1 im Perlcode anhängen:
{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100).'1';}
So tuts bei mir nicht mehr: der slider startet dann zwar noch mit dem korrekten min-Wert, lässt sich aber bis 251 aufziehen
Dir wird schon noch auffallen was fehlt... :P
Bisher nicht :-/
desired-temp:{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100).'1';} $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1ist doch das, was du vorschlägst?
{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100).'1';;}
Ersetze mal $name mit deinem Devicename und wirf das oben in die Komandozeile.
{'slider,'.ReadingsNum('Thermostat_WC_unten','min_temperature',1).',0.5,'.ReadingsNum('Thermostat_WC_unten','max_temperature',100).'1';;}Ergibt als Antwort
slider,7,0.5,251Sorry, stehe auf dem Schlauch.
Kommas setzen ist wie atmen: manche vergessen es
Ich bin auch nur ein Mensch.
Ich hab jetzt nochmal geatmet und so passts:
desired-temp:{'slider,'.ReadingsNum($name,'min_temperature',1).',0.5,'.ReadingsNum($name,'max_temperature',100).',1';} $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1}Vielen Dank nochmal!
Werde es demnächst im Wiki für die Nachwelt festhalten...