Sensor update erzwingen

Hallo zusammen,
bin seit heute dabei, obwohl ich auf YouTube schon lange lausche.

Ich konnte die Überschrift nicht besser formulieren aber im Grunde trifft es den Kern, bzw. das Wissen das mir fehlt.
Ich bin gerade an einem Esphome Device, das mit einem Sensor verbunden ist, der einen Impuls abgibt, wenn er immer dieselbe Menge an Flüssigkeit abgibt.
HW kein Problem, ESP Integration auch nicht.
Ich habe zunächst einen Template Sensor angelegt, der immer bei Impuls 1000ml in den Sensor schreibt.
Das Problem, dass, wenn immer exakt derselbe Wert ist, keine Änderungen erkannt wird und sich damit keine Automation triggern lässt.
Ich habe dann einfach immer um den Wert hochgezählt, stoße aber irgendwie immer an dasselbe Problem. Sei es, dass ich über den Trend Helper oder dem Ableitungs-Helper den Trend oder die Steigung berechnen will, um z. B bei Steigung 0 zu schließen, dass sich gerade nichts tut.
Den Wert bekomme ich aber nicht, weil die Gerade nicht erkannt wird, weil der zweite Punkt fehlt.
Dieser zweite Punkt wird aber nicht gesetzt, weil sich ja der Wert nicht ändert oder der Wert derselbe ist und keine Änderung erkannt wird.

Ich hoffe, ich konnte mein Problem soweit erklären und hoffe, dass es eine Möglichkeit gibt, z. B über einen Timer, HA klar zu machen, dass es zwar derselbe Wert ist aber neu gemessen.

Momentan behelfe ich mir, indem ich einen minimalen Wert hinzufügen, und diesen durch Rundung an anderer Stelle wieder egalisiere.
Gerne hätte ich aber eine bessere Lösung.
VG Klaus

Ein Binary Sensor hoffe ich, der bei Erreichen der 1000ml auf ON wechselt.
Er kann dann sogar auf dem ESP direkt (minimale delay) wieder auf OFF wechseln.

Das reicht dann aus um in einer Automation diesen Sensor auf ON zu prüfen, damit diese losrennt. Also wie ein Taster im Vergleich zu nem Schalter.

Zumindest hatte ich es jetzt so verstanden das du an der Gesamtmenge ja gar nicht interessiert bist. Du willst nur alle 1000ml was auslösen.

Und ja du kannst unter “Home Assistant State Objects” nachlesen das kein state.last_updated erfolgt wenn sich der state nicht ändert. Macht ja auch Sinn, denn würde sich das last_updated ändern würde der state wieder in die Datenbank geschrieben. Bei mehreren Sensoren die sich möglichst schnell (sagen wir mal 5s) updaten wäre das fatal dann 24h lang alle 5s einen identischen Wert in der db zu versenken.

Schau mal hier unter Force_Update

Hallo,
Danke für die schnelle Antwort.
Es handelt sich natürlich um eine Bastelei. Konkret um einen Regensensor, der über eine Wippe funktioniert - Chinaware, AliExpress und dieser löst, wenn die Wippe voll ist einen binary_sensor aus.
Pro Auslöser sind es ca 2ml und skaliert ca 400ml/qm Regen.
Um die Regenmenge pro Stunde Tag etc zu erhalten spielt die Regenmenge spielt schon eine Rolle.
Bei jedem Puls rechne ich jetzt die 400ml drauf und das läuft so auch im Grunde.
Vorher hatte ich es mit einem Puls_Counter gemacht, jedoch hatte ich dann da schon das Problem, weil es sein konnte, dass die Regenmenge, die zyklisch ausgelesen wurden zwar ein neuer Wert war, jedoch derselben als der alte Wert und dann löste nichts aus.
Deswegen schon der Switch zum binary_sensor, bei dem sich wenigstens die Pulse wechseln und ich davon ausgelöst den Template-Sensor oder genauso einen input_nunmber hochzähle, wodurch sich auch was ändert.
Das Problem hat mich aber da wieder eingeholt, als ich feststellen wollte, ob es aufgehört hat zu regnen, also kein Puls mehr kommt und sich kein Wert mehr nach oben zählt.
Hier war meine Idee den Ableitungssensor zu nehmen oder einen Statistiksensor. Speziell der Ableitungssensor zeigt ja positive Werte an, quasi Steigung und wird nach dem Beobachtungszeitraum 0, wenn sich ein Wert nicht mehr ändert.
Das macht der Ableitungssensor aber nur, wenn er Werte bekommt und 0 wird er, wenn er eine Grade, also gleichbleibende Werte sieht.
Das gleiche für den Statistiksensor, statistc_… change.
Ich habe das dann so gelöst, dass ich den Template sensor, der die 400ml bei jedem State Trigger hochzähle zusätzlich über time_pattern triggered alle 59s triggere und dabei 0.00000001 ml hochzähle.
Leider kann man m. W. den Time_pattern nicht so flexibel einstellen, dass er alle 10min auslöst. Eine Stunde ist mir zu lange also deswegen die 59s

So gelöst funktioniert es, aber genau, das, was du schreibst, stört mich. Ich generiere über den Timer unnötig Daten, die ich mehr brauche, sobald ich erkannt habe, dass es nicht mehr regnet, wenngleich auch nur alle Minuten.

Genau deswegen habe ich nach einer Möglichkeit gesucht, wie ich vielleicht über einen Dienst o. ä, den “Hochzählsensor” zwingen kann einen neuen Wert zu triggern und so etwas auslösen zu können, obwohl er sich eben nicht verändert hat.

Dein Stichwort last_update hat mich aber auf eine Idee gebracht. Ich habe damit noch nie gearbeitet. Kann man diese Info vllt gut auslesen und verarbeiten.

Ach so … du willst das Rad neu erfinden :slight_smile:
Dafür gibt’s ja dutzend fertige Lösungen samt Deep Sleep für den ESP, z.B.

https://smartsolutions4home.com/ss4h-rg-rain-gauge/

1 „Gefällt mir“

Nein, will das Rad nicht neu erfinden, nur habe ich keine SW besser HA SW Lösung gefunden.
Ist außerdem immer eine Frage des Geldes.
Die Wippe hat bei AliExpress 15€ gekostet und ESP8266 habe ich etliche gekauft, als sie noch fast nichts gekostet haben. Rest wäre eigenes Hirn oder besser noch Google und dann copy und Paste.

Dennoch, vielen Dank dafür, dass du mich mit einer kleinen Bemerkung auf den richtigen Pfad gebracht hast.
Ich war einfach nur zu verkopft mit Differential und Statistik.
Ich habe jetzt den Punkt von Dir aufgegriffen, nutze in der Automation als zusätzlichen Trigger einen Timer, der, wenn Regen erkannt wurde den Wert zwischen jetzt und last_change errenet. Ist dieser größer als x Minuten, erkenne ich, dass es wohl nicht mehr regnet oder halt so wenig, dass es nicht relevant ist.

Für mich war die Community somit schon ein echter Mehrwert
Danke