Ich habe das Gefühl, dass wir aneinander vorbeireden, da dieses Problem eben nur innerhalb der GitHub - Hiverize/FiPy noch nicht behoben wurde.
Es ist wirklich blöd, dass wir hier immer noch mit ganz unterschiedlichen Softwarevarianten zum gleichen Thema hantieren. Habt Ihr Ideen, wie wir diese Angelegenheit verbessern können?
… außer, wenn als erster Wert nach dem Bestromen der DS18B20 aus dem 2 byte -Tempraturregister 0550h (“85°C”) kommt, denn das ist klar ein Indiz, daß diese Register ausgelesen wurden, ohne, daß vorher eine temperature conversion dort gestartet wurde.
Ja genau @weef wir müssen aufpassen das, die Info welche @clemens gefunden hat, nicht gleich wieder im Caos um die Firmware-Versionen untergeht.
Hatte auch schon einen 85°C Wert, seit dem die Gliches in der hiveeyes-micropython-firmware behoben sein sollten.
Moin.
Hier nochmal ein Auszug von meinem System.
Die Ursache für die Glitches finde ich aktuell noch nicht valide. könnte doch auch Reflexionen an den Pfostensteckern sein? Interessanterweise tauchen die Glitches nur bei den internen Sensoren auf
Es kann nicht an der Hardware liegen. Ich kann die selben ( nicht gleichen ) Sensoren an einem RaspberryPi und einem Python-Programm ohne viele Messwert-Ausreisser betreiben. Wenn ich sie an den FiPy mit MicroPython stecke, tauchen sie auf. Aus meiner Sicht gibt es noch Timing-Probleme im Onewire-Treiber.
Früher wurde schon viel diskutiert, wie man die Messfehler erkennt und dann mit ihnen macht.
Mein Ansatz war, Temperatursprünge ( z.B. 10°C innerhalb von 10 sec ) zu erkennen und dann einfach den Wert durch den letzten zu ersetzen, da die Temperatur nie so schnell wechseln kann.
Definitiv! Bisher konnten wir hier nur den pure-Python Treiber von Pycom benutzen, dabei sind Timing-Fehler vorprogrammiert.
Zum Glück hatte uns die von @robert-hh verbesserte Variante der onewire.py mit integrierten CRC-checks zwischenzeitlich deutlich weitergeholfen, weil damit zumindest keine falschen Messungen mehr auftraten.
Nachdem andere genervt ähnliche Probleme schildern, haben wir hier noch einmal die Haube aufgemacht und es kommen u.U. durch neue Erkenntnisse die Dinge neu in Bewegung.
In fact, modonewire.c would be the right file implementing this functionality. The esponewire.c referenced above was the file for ESP8266 which seems to have slipped into the ESP32 port tree accidentally.
However, we failed on porting this to Pycom MicroPython appropriately. While we have come quite far making it compile, it panics at runtime right away when trying to reset the onewire bus.
In the new version I intentionally did not implement this test. 85°C is a valid result, which must not be suppressed by the driver. Checking must be done by the calling code, which knows the context.