Skip to content
This repository has been archived by the owner on Dec 7, 2019. It is now read-only.

Gesamtverbrauch wird beim POW bei Stromausfall auf 0 gesetzt #65

Open
ralfkaminski opened this issue Jul 13, 2018 · 21 comments
Open

Gesamtverbrauch wird beim POW bei Stromausfall auf 0 gesetzt #65

ralfkaminski opened this issue Jul 13, 2018 · 21 comments

Comments

@ralfkaminski
Copy link

Hallo
Gibt es eine Möglichkeit, dass der Zähler des Gesamtverbrauchs beim POW nach einem Stromausfall nicht zurück gesetzt wird?
Mit freundlichen Grüßen
Ralf

@jp112sdl
Copy link
Owner

Hallo Ralf,

nein, das ist nicht vorgesehen.
Bei den Homematic Zwischensteckern mit Leistungsmessung ist es auch so.

Es müsste sonst sekündlich bzw. in sehr kurzen Intervallen der Verbrauchswert im EEPROM abgelegt werden, was sich negativ auf die max. Schreibzyklen des Flash Speichers auswirkt.

@PaulMerk
Copy link

PaulMerk commented Jul 13, 2018

Ich habe in anderer Konstellation ein weiteres CUxD Gerät eingerichtet, dessen Daten überleben. Ob das hier mit einer Systemvariablen auch machbar wäre, habe ich nicht probiert.

@jp112sdl
Copy link
Owner

Ja, das geht natürlich.
So funktionieren auch die Energiezähler in der CCU.
Es gibt einen Zähler Gerät und einen Zähler CCU2.
Der Zähler CCU2 kumuliert nur die Werte vom Gerät.
Das kann man auch mit einem kleinen Programm erledigen.
Wenn man die systeminternen Programme einblendet, sieht man sogar die internen Rechenprozeduren und kann sich dort Anregungen holen.

@ralfkaminski
Copy link
Author

Hallo zusammen.
Vielen Dank für die schnellen Rückmeldungen.
Mir kam dabei noch folgende Idee, um den Flashspeicher zu schonen.
Kann der POW auch den zuletzt gespeicherten Wert der Systemvariable abfragen. Wenn dieser größer als der des POW ist, könnte er dem Wert der ccu verwenden.
Wäre das noch ein denkbarer Ansatz für die Zukunft?
Viele Grüße
Ralf

@jp112sdl
Copy link
Owner

Ein Ansatz ist es wohl, aber ich denke nicht, dass ich vorläufig an der Firmware programmieren werde.

@jp112sdl
Copy link
Owner

Mal nebenbei noch gefragt: Welche FW Version setzt du ein? Die 1.0.27?

Zu der Idee mit dem Auslesen der Systemvariable:
Was ist nach einem Stromausfall?
Sonoff POW und WLAN sind definitiv eher wieder da, als die CCU/RaspberryMatic.
Dann könnte die Variable beim Booten nicht abgefragt werden und die ganze Geschichte beginnt ja doch wieder bei 0 😃
Vorschläge, wie man es umgehen sollte/könnte?

@ralfkaminski
Copy link
Author

Hi,
Da hast du natürlich recht :-)
Gibt es die Möglichkeit, dass die CCU DIE Variable im POW verändern kann? Dann könnte dies nach einem Stromausfall geschehen.
Ich setzt die FW 1.0.27 ein

@jp112sdl
Copy link
Owner

So... hier mal fix ein Versuch.

1.) Beim Booten wird der letzte Wert aus der CCU-Variable geholt und dann auf diesen weiter kumuliert. Schlägt die Abfrage fehl, bleibt es dabei, dass bei 0 begonnen wird.

2.) Du kannst den Energiezählerwert des POW mit einem Wert addieren:
http://<ip>/addEnergyCounter?value=123.5
Szenario:
Angenommen der POW läuft schon eine Weile, hat bei 0 begonnen (weil die CCU nicht erreichbar war) und hat bereits einen Wert auf dem Energiezähler.
Dann kannst du mit addEnergyCounter den letzten in der CCU bekannten Wert draufaddieren und erhältst bei der nächsten Übertragung den bereits erfassten Energiezählerwert+CCU-Wert.
Auf dieser Summer wird anschließend weiter kumuliert.

Einziges Problem, für das ich noch keinen Workaround habe:

  • CCU fährt hoch.
  • noch bevor dein Programm dem POW den alten Energiezählerwert untergeschoben hat, hat der POW schon seinen neuen (von 0 begonnenen) Energiezählerwert an die CCU gesendet und überschrieben.

3.) Du kannst den Energiezähler des POW auf 0 zurücksetzen mit http://<ip>/resetEnergyCounter

Versionsnummer ist immer noch 1.0.27 in der angehängten Firmware.

SonoffHMLOX.ino.generic.bin.zip

@jenshavelberg
Copy link
Collaborator

@jp112sdl Kann die CCU nicht validieren, ob der neue Wert welcher vom POW empfangen wurde, kleiner als der bisher bekannte Wert ist? In diesem Fall muss die CCU so clever sein und den Wert ignorieren. Geht das nicht?

@jp112sdl
Copy link
Owner

Doch das geht.
Das wäre die Möglichkeit.
THX.

Btw.: hier is grad Strom weg -.-

@jp112sdl
Copy link
Owner

Ach so. Nee. Falscher Ansatz.
Der POW setzt eine Variable in der ccu. Völlig ungeachtet von irgendwas.

@jenshavelberg
Copy link
Collaborator

ok, dann andere Logik: der POW bekommt einen einstellbaren Schwellwert, ab welchem er der CCU Werte senden darf. Also alles unter in Summe verbrauchten 0,5 kW/h oder was auch immer wird noch nicht in die CCU geschrieben. Somit ist die Phase nach einem Reboot für ne weile "geschützt". Bis dahin wird die CCU geschafft haben, die bisherige Energiesumme an den POW gesendet zu haben. Oder noch eins weiter: bevor der POW keinen Verbrauch durch addEnergyCounter erhalten hat, darf er der CCU keine Werte zurückgeben...

welcher Vorschlag passt dir?

@jp112sdl
Copy link
Owner

Der 2.
Ergänzung zu dem 2. Vorschlag:

  • POW bootet, erreicht CCU nicht und merkt sich ein unreach-Flag.
  • bei unreach wird gar nicht erst weiter versucht, Werte zu senden, bis die CCU enableTransmission an den POW geschickt hat.

Finde ich logisch sinnvoller, da man evtl. gar nichts aufaddieren und nur die Übertragung wieder aktivieren möchte.
Ginge nach deinem Vorschlag zwar mit addEnergyCounter?value=0 auch, ist optisch aber etwas unschön.

@jp112sdl
Copy link
Owner

So - hier der nächste Versuch.

  1. Es gibt jetzt in der Weboberfläche die Möglichkeit, auszuwählen, ob beim Booten der letzte Werte von der CCU geholt werden soll oder nicht. Ich werd mal noch "Energiezähler" in "Energiezählerwert" umbenennen.

bildschirmfoto 2018-07-15 um 07 53 23

  1. Ist die Energiezähler-Variable beim Starten des POW nicht erreichbar, wird die Übertragung deaktiviert.

  2. Sie kann wieder aktiviert werden mit
    http://192.168.1.35/enableEnergyCounterTransmission?load=0 oder load=1

  • wenn load=0 wird nur die Übertragung (nach vorheriger erneuter Prüfung auf Erreichbarkeit) aktiviert (mit dem Energiezählerwert der bei 0 begann)
  • wenn load=1 wird die Übertragung (nach vorheriger erneuter Prüfung auf Erreichbarkeit) aktiviert und der Wert der Energiezähler-Variable auf den bisher angefallenen Stand aufaddiert (wie bei der Option "Lade Energiezähler von CCU beim Starten")

SonoffHMLOX.ino.generic.bin.zip

@ralfkaminski
Copy link
Author

Hallo,
habe gerade die letzte Firmware getestet.
Dabei ist mir aufgefallen, dass die Variable für den Energiezähler in der CCU nicht beschrieben wird.
Daraufhin habe ich das "Original Release 1.0.27" wieder geflasht und danach wurde die Variable wieder beschrieben.
Könntest Du das noch einmal prüfen.
Denn der Ansatz in der überarbeiteten Firmware ist super.
Wenn die CCU per Skript dann noch überprüft, ob der gemeldete Wert vom POW kleiner ist als der in der Systemvariable gespeicherte, kann die CCU dann auch den gemeldeten Zählerstand auf den letzten Wert aufaddieren und an den POW zurücksenden. Dann sind wirklich alle Szenarien für eine kontinuierliche Verbrauchszählung abgefangen.
Schönen Abend noch.
Gruß Ralf

@jp112sdl
Copy link
Owner

Dabei ist mir aufgefallen, dass die Variable für den Energiezähler in der CCU nicht beschrieben wird.

Evtl. hat der Variablen-Check nicht funktioniert.
Probier es mal mit http://192.168.1.35/enableEnergyCounterTransmission?load=0 oder load=1 wie vorher beschrieben. Und schau mal, welche Ausgabe kommt.

@ralfkaminski
Copy link
Author

ralfkaminski commented Jul 17, 2018

Hallo,
Habe die Firmware noch einmal neu geflasht. Und jetzt funktioniert alles einwandfrei. Die Variablen werden von der CCU sowohl gelesen, als auch beschrieben.
Vielen Dank für die schnelle Umsetzung. Bei dem nächsten offiziellen Release sollte das Feature auf jeden Fall enthalten bleiben.
Schönen Abend noch.
Soll ich den Issue nun schließen, oder machst Du das?
Gruß Ralf

@jp112sdl
Copy link
Owner

Vielen Dank für das positive Feedback!

Ja, dann pack ich das so ins nächste Release 😄

@PaulMerk
Copy link

PaulMerk commented Oct 7, 2018

bitte Release Release 1.0.28 (o.ä.) inkl. dieser Funktionalität zur Verfügung stellen.
Danke
Paul

@jp112sdl
Copy link
Owner

jp112sdl commented Oct 8, 2018

SonoffHMLOX.ino.esp8285.bin.zip
@PaulMerk Ich habe die Binary noch mal mit der neuesten esp8266/Arduino Unterstützung kompiliert.

Bitte mal 2-3 Tage testen, dann mach ich ein Release.
Kann es leider nicht selbst machen, da ich nur noch 2 Sonoff Basic im Einsatz hab.

@PaulMerk
Copy link

PaulMerk commented Oct 8, 2018 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants