Hallo zusammen,
ich habe hier ein NSPanel mit Tasmota 13.1.0 laufen, das als externer Thermostat für ein EQ3 Bluetooth Thermostat am Heizkörper dienen soll.
Vor dem Heizkörper und dem Termostat steht ein Bett, wodurch die Messung direkt am Thermostat wenig Aussagekraft über den Raum hat.
Ich habe also eine Tasmota Variante mit NSPanel und BLE kompiliert.
Die Steuerung funktioniert soweit schon ganz gut, indem ich das Ventil einfach komplett "on" oder "off" schalte.
Allerdings möchte ich die tatsächliche Position des Stellantriebs in meine Berechnungen mit einbeziehen.
Ich habe bisher leider vergeblich versucht, den Wert per Rule aus der JSON Payload zu ziehen, die in regelmäßigen Abständen über die Konsole läuft.
Die ist die Payload:
20:17:31.881 MQT: stat/EQ3/001A221B9F9E = {"cmd":"poll","result":"ok","MAC":"001A221B9F9E","tas":"sonoff-2536","RSSI":-84,"stattime":1697138251,"temp":4.5,"posn":0,"mode":"manual","hassmode":"off","boost":"inactive","dst":"set","window":"closed","state":"unlocked","battery":"GOOD","holidayend":"00-00-00 00:00","windowtemp":12.0,"windowdur":15,"day":21.0,"night":17.0,"offset":0.0}
Ich bin scharf auf den Wert von "posn", hier im Beispiel also 0 und würde den gerne erstmal per Rule in eine Variable speichern.
Meine Rule sieht aktuell vollständig so aus:
Rule1
ON NSPanel#ATCExpect0 DO Backlog mem1 %value% ENDON
ON Tele-ANALOG#Temperature1 DO Backlog event temp_demand=%value%; mem2 0 ENDON
ON event#temp_demand>%mem1%+0.2 DO var1 0 ENDON
ON event#temp_demand<%mem1%-0.2 DO var1 1 ENDON
ON Var1#State DO if (var1!=%var2%) var2 %var1%; Backlog event control_valve=%var1% endif ENDON
ON event#control_valve DO IF (%value%==1) Backlog TRV 001A221B9F9E valve on ELSE Backlog TRV 001A221B9F9E valve off ENDIF ENDON
ON Mem1#State DO Backlog NSPSend {"ATCExpect0":%mem1%} ENDON
ON posn#Data DO Backlog var3 %value% ENDON
Interessant ist natürlich hier jetzt die letzte Zeile.
Ich habe es auch mit
ON posn DO Backlog var3 %value% ENDON
versucht aber bisher kein Erfolg.
Ich dachte "top Level" im JSON müsste ich einfach mit ON <ValueName> kriegen, scheint aber nicht zu triggern.
Kann mir jemand erklären wo mein Fehler liegt?