N'Abend,
ich bin jetzt nicht ganz sicher, ob es hier jetzt richtig ist. Falls nicht, bitte umbiegen.
Grundlage ist das Skript von Markus (Danke dafür, ich habe viel gelernt). Als Fingerübung habe ich es für meine Zwecke angepasst. Eigentlich muss es nur eingespielt und gestartet werden. Es sei denn, die MQTT-Daten vom Thermo finden sich nicht unter mqtt.0 oder die ausgelesenen Werte sollen nicht unter javascript.0.WlanThermo abgelegt werden.
Der mqtt-Adapter muss natürlich eingespielt und die Anmeldedaten dort und im Thermo hinterlegt worden sein.
Wenn das Skript gestartet wird, durchläuft es alle, unter mqtt angemeldeten, Thermos und hinterlegt sie in einem Array. Für jedes Thermo werden die data- und settings-Objekte gelesen, geparsed und unter javascript.0.WLANThermo.[Thermoname] abgelegt. Ich habe ein Mini V2, es sollte aber auch mit den anderen Thermos klappen. Falls nicht, bitte eine Rückmeldung geben, ich schaue dann mal, ob ich das anpassen kann.
Beim ersten Start gibt es viele Warnungen, das passiert bei der Neuanlage der States.
Unter javascript.0.WLANThermo wird ein State 'change' angelegt. Wird er auf true gesetzt, wird die Thermoliste neu aufgebaut. Das gilt natürlich auch für einen Neustart des Skripts. Veraltete Einträge von z.B. nicht mehr vorhandenen Thermos müssen händisch gelöscht werden, das macht das Skript nicht.
Bei Änderungen an den Objekten, werden die Objekte neu geparsed und die Werte wieder abgelegt. Das passiert nur alle 30 Sekunden, auch wenn sich die Werte vorher ändern. Wenn jemand weiß, wie ich das so ändern kann, dass die Werte sofort bei einer Änderung gelesen werden, baue ich das auch gerne um. Wobei ein Intervall von 30 Sekunden sicher ausreichen sollte.
Was ich noch umsetzen möchte: Bei Änderung der Werte unter javascript.0.WLANThermo sollen diese in die passenden Objekte geschrieben und über mqtt wieder ans Thermo geschickt werden. Das kann aber noch dauern.
Viel Spaß