Ich habe mal zum Testen den DataPort eingebaut.
Die Firmware stellt nun, wenn man es auf der Setup-Page eingeschaltet hat, den TCP Port 81 bereit, auf dem sie, falls ein FHEM drauf verbunden ist, die Daten (aktuell den "compact" Umfang) ausliefert und Kommandos entgegen nimmt.
Die Übermittlung der Daten ist schon deutlich schneller, die "http post" Variante benötigt für die Daten ca 6ms, über den DataPort ist es in ca. 1ms durch, ist auch klar, der Verbindungsauf- und Abbau bei jeder Übermittlung entfällt und es sind weniger bytes, da das ganze "setreading Gedöns drum rum nicht gebraucht wird."
Das Ganze läuft auch parallel zur bisherigen post-Variante, man kann also z.B. ein Produktiv-FHEM auf den DataPort setzen und den Rest für Testzwecke an ein Test-FHEM posten.
Es dürfen sich auch mehrere FHEM auf den DataPort verbinden.
Das Gegegstück auf FHEM-Seite gibt es hier:
https://github.com/chunter1/precipitationSensorESP32/blob/master/FHEM/36_PrecipitationSensor.pmBeispielkonfiguration:
define Radar208 PrecipitationSensor 192.168.31.208:81
attr Radar208 disable 0
attr Radar208 stateFormat {ReadingsVal("Radar208", "state", "") . " UpTime: " . InternalVal("Radar208", "UPTIME", "?"). " detections: " . ReadingsVal("Radar208", "detections", "?");;}
attr Radar208 timeout 30
Die Kommunikation ist ähnlich ist beim KeyValueProtocol-Modul
Das Attribut timeout legt fest, in welchem Intervall geprüft wird, ob die Firmware noch antwortet und ggf. die TCP-Verbindung neu aufgebaut wird (nach reboot, "WiFi weg", ...)
Mit dem Attribut disable kann man es vorübergehend stilllegen (also jeglichen Verbindungsaufba unterdrücken)
Set Befehle:
set Radar208 connectbaut die TCP-Verbindung (neu) auf
set Radar208 flashlädt die Firmware hoch. Dazu muss auf dem ESP32 mindestens schon V9.0 drauf sein und die precipitationSensor32.bin in FHEM/firmware liegen
set Radar208 rebootlöst einen Neustart der Firmware aus
set Radar208 treshold xx setzt den treshold auf xx. Er wird aktuell nur gesetzt und angewendet, aber nicht gespeichert. Wenn man ihn speichern will, muss man auf der Setup Page speichern. Damit kann man, bis es eine Automatik gibt, einfacher den richtigen treshold suchen.
Beispiel: set Radar208 treshold 1.2
Das internal VERSION zeigt die firmware-Version an
Das internal UPTIME die uptime.
Zu beachten ist, dass in FHEM die Internals nur bei einem Browser refresh neu angezeigt werden.
Ist eingecheckt, incl der 8 decimals für magAVGkorrThresh