Hallo zusammen,
ich habe ein Verständnisproblem bei der Umsetzung für ein Heizungsventil. Mein MQTT2_Device hat ein Reading "desired-new" für die Solltemperatur und eine setList Anweisung mit Slider zum Einstellen. Den Wert kann ich über die Weboberfläche einstellen und er wird auch an meinen Mosquitto udn von dort an meine zweite FHEM Instanz übertragen.
Das Reading "desired-new" wird allerdings nicht aktualisiert - nur der state auf "desired-new" gesetzt. Auch aus einer Routine in meiner 99_myUtils heraus lässt sich mit set desired-new xx.x zwar der Wert setzen bzw. übertragen, aber das Reading ändert sich nicht.
Bei einem Schalter ändert sich zumindest der state auf on / off, wenn ich über die Weboberfläche ein set on / off anklicke.
Wo liegt mein (Denk-)Fehler oder geht es gar nicht, dass das Reading auch aktualisiert wird?
Hier noch ein List:
Internals:
CHANGED
CID E4_az_THKV_Heizkoerper_Wand
DEF E4_az_THKV_Heizkoerper_Wand
DEVICETOPIC E4_az_THKV_Heizkoerper_Wand
FUUID 5e286185-f33f-f2d8-17d1-a5c3702ffcf71491
FVERSION 10_MQTT2_DEVICE.pm:0.215010/2020-03-24
IODev ZS_zs_CO_SmartHome_MQTT_Client
LASTInputDev ZS_zs_CO_SmartHome_MQTT_Client
MSGCNT 125
NAME E4_az_THKV_Heizkoerper_Wand
NR 16
STATE Ist: 22.02 °C (20.5 °C)
Ventil: 0 % (heating)
TYPE MQTT2_DEVICE
ZS_zs_CO_SmartHome_MQTT_Client_MSGCNT 125
ZS_zs_CO_SmartHome_MQTT_Client_TIME 2020-03-25 15:28:54
READINGS:
2020-01-29 18:39:43 associatedWith ZS_zs_MQTT2_SCADA_Bridge
2020-02-29 16:20:24 battery 35 %
2020-02-29 16:20:24 batteryPercent 35
2020-03-25 11:18:54 desired-new 00
2020-03-25 11:22:31 desired-temp 20.5
2020-03-25 15:28:54 reportedState 0
2020-01-29 18:39:43 room Übersicht
2020-03-25 11:22:31 setpointTemp 20.5
2020-03-25 15:28:50 state desired-new
2020-03-25 15:22:59 temperature 22.02
2020-03-07 13:01:06 thermostatMode heating
Attributes:
IODev ZS_zs_CO_SmartHome_MQTT_Client
alias Arbeitszimmer
event-on-change-reading .*
group Heizung
readingList scada/haus/E4/az/THKV_Heizkoerper_Wand/desired-temp:.* desired-temp
scada/haus/E4/az/THKV_Heizkoerper_Wand/temperature:.* temperature
scada/haus/E4/az/THKV_Heizkoerper_Wand/reportedState:.* reportedState
scada/haus/E4/az/THKV_Heizkoerper_Wand/thermostatMode:.* thermostatMode
scada/haus/E4/az/THKV_Heizkoerper_Wand/battery:.* battery
scada/haus/E4/az/THKV_Heizkoerper_Wand/batteryPercent:.* batteryPercent
scada/haus/E4/az/THKV_Heizkoerper_Wand/setpointTemp:.* setpointTemp
scada/haus/E4/az/THKV_Heizkoerper_Wand/lastActivity:.* lastActivity
room Arbeitszimmer,MQTT2_DEVICE,Übersicht
setList desired-new:slider,18,0.5,25,1 smarthome/haus/E4/az/THKV_Heizkoerper_Wand/desired-temp:r $EVTPART1
sortby 1
stateFormat Ist: temperature °C (desired-temp °C)
Ventil: reportedState % (thermostatMode)
timestamp-on-change-reading .*
webCmd desired-new
Beste Grüße
Torsten
In den Readings werden die vom Geraet (bzw. MQTT Server) gelieferten Werte gespeichert.
Ausnahme: das Attribut setStateList ist gesetzt, und der Befehl CMD_X befindet sich nicht in der Liste. Siehe auch https://fhem.de/commandref_modular.html#setStateList
Hallo Rudi,
danke für den Hinweis. Habe jetzt "attr setStateList X Y" gemacht und siehe da, beim Ändern über den slider wird jetzt das Reading "desired-new" z.B. mit "set 18.5" gefüllt. Daraus kann ich ja jetzt in einem weitere userreading den eigentlichen Temperaturwert extrahieren.
Beste Grüße
Torsten
Frage: Warum verwendest du nicht einfach direkt und nur desired-temp?
Dass der Befehl abgesetzt wurde, aber noch nicht "beantwortet", sieht man dann in dem "set_..."-Teil des Readings-Werts. Das war mit ein Grund, warum ich Rudi damals gefragt hatte, ob er das machen kann, was heute setStateList heißt...
(Das hat den weiteren Vorteil, dass z.B. WeekdayTimer das Teil auch direkt als "Heizungs-Device" erkennt...).
Hallo Beta-User,
ich war unsicher wie sich die readings verhalten, wenn sie einerseits in readingsList und andererseits in setList. Deshalb habe ich zum weiteren Tasten das andere Reading genutzt, das ich sonst in einer readingsGroup verwende.
Nachdem mir jetzt die Logik klar ist, werde ich mit desired-temp weiter arbeiten.
Beste Grüße
Torsten