Hallo Community,
ich habe seit Monaten den Gaszähler mittels eines Reedkontaktes an einem WEMOS D1 Mini mit ESPhome angeschlossen.
Die Verbindung zu HA erfolgt über WLAN und funktioniert sehr gut.
Das Problem ist, dass, wenn ich den D1 neu flashe (updates, etc.) er von vorne (entweder bei 0 oder vom eingestellten Wert aus) anfängt zu zählen.
Da die ESP82xx kein SRAM haben (im Gegensatz zu den ESP32-Modellen), will ich den Zählerstand nicht auf dem D1 abspeichern.
Meine aktuell einzige Idee wäre es, den Wemos jede Nacht um 0:00 Uhr zu booten. Dann hätte ich tagesaktuelle Daten und bei nem Flash verliere ich nicht zu viel.
Hat einer eine andere, vielleicht sinnvollere Lösung für das Problem?
Hallo,
schade das keiner hierzu eine Idee hat, ich habe nämlich das gleiche Problem: Auch ich betreibe einen WEMOS als Gaszähler über ESPhome und nach jedem Update fängt der WEMOS wieder am “alten” Startwert an. Z.Zt. lese ich den aktuellen Wert vor dem Update aus, führe das Update durch und ändere nach dem Update den Startwert. Geht alles, ist aber umständlich.
Mein Vorredner schrieb, das man mit einem ESP32 (und dem SRAM) das Problem lösen könnte. Hat das schon mal jemand gemacht und hat einen Code-Schnipsel für mich? Ein Umstieg auf einen ESP32 wäre kein großes Problem und für den WEMOS findet sich schon eine neue Aufgabe.
Ich habe schon darüber nachgedacht ob es nicht die Möglichkeit gibt, den Wert im HA zu speichern und der Gaszähler sendet nur den Impuls und nicht den Zählerstand. Der Zählerstand müsste dann im HA berechnet werden. Sollte aber auch irgendwie zu machen sein.
Mein jetziger Code sieht so aus:
globals:
- id: total_pulses
type: int
restore_value: false
initial_value: '1037710' # mit diesem Wert startet der Gaszählerstand
binary_sensor:
- platform: status
name: "Gaszähler"
- platform: gpio
id: internal_pulse_counter
pin:
number: GPIO5
mode: INPUT_PULLUP
name: "Live-Impuls"
filters:
- delayed_on: 10ms
on_press:
then:
- lambda: id(total_pulses) += 1;
sensor:
# Uptime sensor.
- platform: uptime
name: Uptime
# WiFi Signal sensor.
- platform: wifi_signal
name: WiFi Signal
update_interval: 60s
# Zählerstand
- platform: template
name: "hwr-gasverbrauch"
device_class: gas
unit_of_measurement: "m³"
state_class: "total_increasing"
icon: "mdi:fire"
accuracy_decimals: 2
lambda: |-
return id(total_pulses) * 0.01;
Richte Dir am Besten einen Verbrauchszähler als Helfer an.
Als Eingangssensor verwendest Du dann den Sensor hwr-gasverbrauch, der bereits angelegt ist.
Wenn der Zähler 1:1 den Gaszählerstand wiedergeben soll, muss Kein Zyklus ausgewählt werden.
Desweiteren sollte die Option Regelmässige Rückstellung aktiviert sein.
Anschließend geht man in die Entwicklerwerkzeuge unter Aktion und wählt Verbrauchszähler: Kalibrieren und als Entität den gerade erstellten Verbrauchszähler aus, sowie bei Wert den aktuell abgelesenen Gaszählerstand:
Wichtig für den Wert ist ein Punkt als Trennzeichen (z.B. 3183.13) und kein Komma, ansonsten wird die Eingabe nicht akzeptiert, wenn man mit Aktion ausführen die Daten übermittelt.
Jetzt sollte es eigentlich egal sein, wenn das Update des ESP den Sensor hwr-gasverbrauch wieder zurücksetzt, denn der Verbrauchszähler zählt trotzdem weiter.