Zähler-Reset und Überlauf
Was bedeutet "Device reset detected" und wie funktioniert die Reset-Erkennung?
Kurz: „Device reset detected" ist eine Warnung, kein Fehler. SourceAnalytix hat bemerkt, dass der Zählerstand deiner Quelle deutlich gefallen ist (Neustart, Stromausfall, Überlauf oder Zählertausch), und zählt ab jetzt auf den bisherigen Gesamtstand weiter. Es geht kein Verbrauch verloren und es entstehen keine negativen Werte.
Die Begriffe
Diese Begriffe gelten in der ganzen Doku.
| Begriff | Bedeutung |
|---|---|
| Zieleinheit | Die Einheit der Preisdefinition, die du der Quelle zugeordnet hast, z. B. kWh. In ihr rechnet SourceAnalytix alles: Gesamtstand, Startwerte und Schwelle. |
| Gerätewert | Der Wert deines Quell-Datenpunkts, umgerechnet in die Zieleinheit. Er kann zurückfallen, z. B. nach einem Neustart des Geräts. |
| Gesamtstand | Der eigene Zählerstand von SourceAnalytix im State sourceanalytix.0.<Gerät>.cumulativeReading. Er fällt bei eingeschalteter Reset-Erkennung nie von selbst. |
| Offset | Der Wert valueAtDeviceReset in den SourceAnalytix-Einstellungen der Quelle. Es gilt: Gesamtstand = Gerätewert + Offset. Ohne Reset ist er 0. Bis v0.6.x zeigt ihn kein Dialog an, ab v0.7.0 steht er bei der Quelle unter „Für Experten". |
| Startwert | Der Gesamtstand zu Beginn einer Periode („Tag", „Woche", „Monat", „Quartal", „Jahr"). Verbrauch der Periode = Gesamtstand − Startwert. |
| Schwelle | Das Feld „Schwelle" in den Einstellungen der Quelle. Der größte Rückgang, der noch als Messschwankung gilt. In der Zieleinheit, Standard 1. |
| Reset | Der Gerätewert fällt um mehr als die Schwelle. Ursache kann ein Neustart, ein Überlauf oder ein neuer Zähler sein. |
So läuft die Erkennung ab
Mit jedem neuen Gerätewert rechnet SourceAnalytix Gerätewert + Offset und vergleicht das Ergebnis mit dem letzten Gesamtstand:
- Gleich oder höher: Der Wert wird übernommen.
- Niedriger, aber höchstens um die Schwelle: Das gilt als Messschwankung. Der Gesamtstand bleibt stehen, der Wert wird ignoriert.
- Niedriger um mehr als die Schwelle: Das ist ein möglicher Reset. SourceAnalytix behält den Gesamtstand, schreibt „Waiting for another reading before confirming a possible device reset" ins Log und wartet auf den nächsten Wert.
- Der nächste Wert entscheidet:
- Liegt er wieder nahe am alten Wert (innerhalb der Schwelle) oder ist er mehr als die Hälfte des Weges zurückgestiegen, war der niedrige Wert ein Ausreißer. Er wird verworfen, im Log steht „Rejected a possible device reset".
- Liegt er gleich hoch oder höher als der niedrige Wert, aber noch unten, ist der Reset bestätigt. SourceAnalytix setzt den Offset auf alten Gesamtstand − niedrigen Gerätewert und meldet „Device reset detected for … preserving cumulative value … with new offset …". Ab jetzt zählt der Gerätewert auf den alten Gesamtstand weiter.
- Liegt er noch tiefer, wartet SourceAnalytix weiter.
Ein Beispiel mit Schwelle 1 kWh: Der Zähler steht bei 1.000 kWh und startet nach einem Stromausfall bei 0.
| Gerätewert | Offset | Gesamtstand | Log |
|---|---|---|---|
| 1.000 kWh | 0 | 1.000 kWh | – |
| 0 kWh | 0 | 1.000 kWh | „Waiting for another reading …" |
| 0,4 kWh | 1.000 | 1.000,4 kWh | „Device reset detected …" |
| 1,0 kWh | 1.000 | 1.001 kWh | – |
Verloren geht nur, was das Gerät zwischen seinem letzten Wert vor dem Reset und dem ersten Wert danach gezählt hat, denn diesen Teil hat das Gerät selbst nicht mehr gemeldet.
NOTE
Steigt der erste Wert nach einem echten Reset schon mehr als die Hälfte des Weges zurück, hält SourceAnalytix ihn für einen Ausreißer. Der Verbrauch seit dem Reset wird dann nicht gezählt, und das Log sagt das mit „Rejected a possible device reset … If the device was really reset, consumption since the reset was not counted". Korrigieren kannst du das wie unter Falsche Werte korrigieren beschrieben.
Überlauf, Stromausfall und Neustart von SourceAnalytix
- Überlauf: Ein Zähler, der nach seinem Höchstwert wieder bei 0 beginnt, ist für SourceAnalytix ein gewöhnlicher Reset.
- Stromausfall am Gerät: Startet das Gerät bei 0 oder einem kleineren Wert, ist das ebenfalls ein Reset.
- SourceAnalytix war gestoppt: Der Gesamtstand ist im State
cumulativeReadinggespeichert. Ein Reset, der in dieser Zeit passiert ist, wird beim ersten Wert nach dem Start erkannt, solange Gerätewert + Offset dann noch um mehr als die Schwelle unter dem gespeicherten Gesamtstand liegt. - Leistungsquellen (W): Für sie gibt es keine Reset-Erkennung. Sie liefern keinen Zählerstand, den SourceAnalytix vergleichen könnte.
Wenn die Reset-Erkennung aus ist
Ohne das Häkchen „Erkennung der Zurücksetzung des Gerätewerts Aktiviert" übernimmt SourceAnalytix jeden Rückgang. Gesamtstand und Periodenwerte fallen dann mit, und der Verbrauch kann negativ werden. Das ist nur für Quellen gedacht, die bewusst fallen dürfen. Im Log steht bei jedem Rückgang „Cumulative reading for … decreased while reset detection is disabled".
Bis v0.6.1: Diese Meldung steht auf Stufe Info und kann bei fallenden Quellen das Log füllen. Ab v0.6.2 steht sie nur noch im Debug-Log (#1262).
Die ältere Meldung „Device reset detected … feature disabled (or below threshold)" gibt es nur bis v0.4.x. Seit v0.5.0 ist sie durch die Meldungen oben ersetzt. Siehst du sie noch, aktualisiere SourceAnalytix.
Was sich ab v0.6.2 ändert
Ab v0.6.2: Ein bestätigter Reset wird zurückgenommen, wenn der alte Gerätewert in einem Schritt zurückkommt. Beispiel: Ein Gerät meldet 1.000, dann zweimal 0, dann wieder 1.000. Bis v0.6.1 verdoppelte sich dabei der Gesamtstand auf 2.000. Ab v0.6.2 stellt SourceAnalytix den alten Offset wieder her, der Gesamtstand bleibt bei 1.000, und im Log steht „Rolled back the device reset of …" (#1258).
Ab v0.6.2: Ist der Offset größer als der Gesamtstand (meist nach einer Korrektur von Hand oder einem Zählertausch), läuft die Quelle weiter. SourceAnalytix warnt „Known valueAtDeviceReset … is larger than the known cumulative value …" und setzt den Offset beim nächsten Wert auf Gesamtstand − Gerätewert. Bis v0.6.1 stoppte die Quelle stattdessen mit dem Fehler „Check settings for … Known valueAtDeviceReset … > known cumulative value … cannot proceed" (#1257).
Siehe auch: Schwelle und Abschalten der Reset-Erkennung · Zähler startet nach Stromausfall bei 0 · Fehler „Known valueAtDeviceReset > known cumulative value"
Zähler, der täglich auf 0 zurückgesetzt wird – was passiert intern?
Kurz: Mit eingeschalteter Reset-Erkennung behandelt SourceAnalytix den nächtlichen Sprung auf 0 wie jeden anderen Reset: Es wartet auf den nächsten Wert, setzt dann den Offset und zählt den Gesamtstand weiter. Pro Nacht fehlt nur ein kleiner Rest. Ist die Reset-Erkennung aus, übernimmt SourceAnalytix den Rückgang, und der Verbrauch des Vortags wird am nächsten Tag wieder abgezogen.
Was in der Nacht passiert
Ein Beispiel mit Schwelle 0,1 kWh. Der Tageszähler stand am Abend bei 4,2 kWh, aus früheren Nächten ist der Offset 1.000 kWh.
| Zeit | Gerätewert | Offset | Gesamtstand | Was passiert |
|---|---|---|---|---|
| 23:58 | 4,2 kWh | 1.000 | 1.004,2 kWh | – |
| 0:00 | – | 1.000 | 1.004,2 kWh | Periodenwechsel: Startwert „Tag" wird 1.004,2 kWh |
| 0:01 | 0 kWh | 1.000 | 1.004,2 kWh | Log „Waiting for another reading …" |
| 0:10 | 0,05 kWh | 1.004,2 | 1.004,25 kWh | Log „Device reset detected …", heute 0,05 kWh |
Der Periodenwechsel um 0:00 Uhr Systemzeit hängt nicht am Gerät. Er setzt die Startwerte auf den Gesamtstand, und weil der Gesamtstand nicht fällt, beginnt der neue Tag sauber bei 0. Ob das Gerät kurz vor oder kurz nach Mitternacht zurückspringt, spielt deshalb keine Rolle. Es fehlt nur, was das Gerät zwischen seinem letzten Wert vor dem Zurücksetzen und dem Zurücksetzen selbst gezählt hat.
Wenn es schiefgeht
| Einstellung | Was passiert | Folge |
|---|---|---|
| Reset-Erkennung aus | Der Gesamtstand fällt um den Tageswert des Geräts | Tageswert negativ, Monat und Jahr verlieren den Verbrauch des Vortags |
| Schwelle größer als der Tagesverbrauch, z. B. 1 kWh bei 0,6 kWh am Vortag | Der Rückgang gilt als Messschwankung, neue Werte werden ignoriert, bis sie den alten Stand übersteigen | Der Anfang des neuen Tages fehlt |
Die passende Einstellung steht unter Mein Zähler startet täglich bei 0.
Ab v0.7.0: Der Assistent „Quelle hinzufügen" markiert Datenpunkte, deren ID oder Name nach einem Tageswert aussieht, mit „Tageszähler". Wählst du trotzdem einen, rät er, die Frage „Springt der Wert manchmal auf 0?" mit „Ja" zu beantworten. Das schaltet die Reset-Erkennung ein. Ist sie bei einer Quelle aus, die fällt, meldet der Tab „Probleme" „Zähler springt auf 0, Reset-Erkennung ist aus".
Besser: ein Zähler, der nicht zurückspringt
Ein Tageszähler funktioniert, ein Gesamtzähler ist aber genauer. Gibt es keinen, kannst du die Leistung des Geräts als Quelle nehmen oder per Skript einen eigenen, fortlaufend steigenden Datenpunkt schreiben und diesen auswerten.
Siehe auch: Was bedeutet „Device reset detected"? · Zähler (kWh) oder Leistung (W)? · Skript-Datenpunkte für unzuverlässige Quellen