hiasl hat geschrieben: ↑Montag 23. August 2021, 14:45
So, das war ein guter Hinweis. Nein, das Plugin schreibt nicht jede Sekunde einen Wert, sondern durchsucht den Cache (genau steige ich da auch nicht durch), ob ein neuer Wert vorliegt. Scheinbar dauert es aber ein wenig, bis dieser wieder gelöscht ist. Ich habe das Intervall auf 5 s hoch gesetzt, jetzt gibt's keine Doppeleinträge mehr (die Spindel sendet 1/min).
Wenn die Spindel einen Wert an cbpi sendet, dann wird der in cache gespeichert. id ist dabei der Name der Spindel.
Der Wert für diese Spindel wird erst wieder überschrieben, wenn sie einen neuen wert sendet.
Code: Alles auswählen
cache[id] = {'Temperature': temp, 'Angle': angle, 'Battery': battery}
In der Routine execute wird dann jede Sekunde (mit deiner Änderung alle 5 Sekunden) nachgeschaut, ob es einen Wert für die Spindel, die du in deinem Sensor konfiguriert hast (self.key) in cache gibt. Wenn id = self.key ist, dann wird der Wert verwendet und über
weitergegeben. Dabei ist es egal, ob die Spindel in der Zwischenzeit einen neuen Wert gesendet hat, oder nicht, da der cache nicht gelöscht wird. Das wäre halt auch ein Problem, da du ja auch noch weitere Werte für diese Spindel (Temp, Spannung,...) als Sensoren definieren könntest. Wenn ein Sensor den Cache leeren würde, wäre der Wert für den nächsten Sensor für diese Spindel (falls definiert) nicht mehr verfügbar...
Somit wird halt jede Sekunde ein Wert vom Sensor an das System weitergegeben. Was cbpi3 damit macht, kann ich jetzt nicht sagen.
Beim cbpi4 Plugin habe ich das anders gelöst. Ich gebe dem Cache für jede Spindel einfach noch einen Zeitstempel mit, wann cbpi die Daten der Spindel empfangen hat. Der wird dann für den jeweils definierten Sensor festgehalten, wenn ein Wert ins Log geschrieben wird. Wenn ein neuer Wert von der Spindel kommt, ändert sich der Zeitstempel im Cache und nur dann wird auch ein neuer Wert ins Logfile geschrieben. Das UI wird allerdings jede Sekunde mit dem Wert aktualisiert. Das geht aber meines Wissens bei cbpi3 nicht.
https://github.com/avollkopf/cbpi4-iSpi ... _init__.py
Allerdings könnte dieser PR/Commit für dich interessant sein:
https://github.com/carlallen/craftbeerp ... 47cc548541
Gruß,
Alex