[gelöst] Slider in setlist mit Min- und Max-Werten aus readings desselben device?

Begonnen von dadoc, 22 November 2025, 16:21:53

Vorheriges Thema - Nächstes Thema

dadoc

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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

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
   

dadoc

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?
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

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!
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

{'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';}

dadoc

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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee


dadoc

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?
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

{'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.

dadoc

{'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.
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

TomLee

Kommas setzen ist wie atmen: manche vergessen es

Ich bin auch nur ein Mensch.

dadoc

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...
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods