Offset Gaszähler zu hoch, wie löschen?

Hallo Zusammen,
die Impulse meines Gaszählers lese ich mit ESP Home / ESP8266 und entsprechendem Reedkontakt aus. Dabei habe ich mich an dieser > Anleitung < orientiert. Zu Beginn habe ich einige Fehler gemacht, so dass ich 2 mal den jeweiligen Gaszählerstand komplett als Verbrauch in der Datenbank stehen habe. Wie kann ich diese beiden Werte wieder löschen?

grafik

  name: gaszaehler

esp8266:
  board: esp01_1m
  restore_from_flash: true  # Total Counter im Flash speichern

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxx"

ota:
  password: "yyyyyyyyyyyyyyyyyy"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Gaszaehler Fallback Hotspot"
    password: "zzzzzzzzzzzzzz"

captive_portal:

globals:
  - id: total_pulses
    type: int
    restore_value: yes  # Total Counter im Flash speichern
    initial_value: '0'  # startet mit 0
  - id: imp_ratio
    type: float
    restore_value: false
    initial_value: '0.01'  # vom Gaszaehler
  - id: Zustandszahl
    type: float
    restore_value: false
    initial_value: '0.9655'  # aus der Gasrechnung 14.6.2022
  - id: Brennwert
    type: float
    restore_value: false
    initial_value: '10.361'  # aus der Gasrechnung 14.6.2022
  - id: initial_consumption
    type: float
    restore_value: false
    initial_value: '634153.70'  # hier kann der Gaszählerstand initialisiert werden
  - id: initial_energy_consumption
    type: float
    restore_value: false
    initial_value: id(initial_consumption) * id(Brennwert) * id(Zustandszahl)

binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
    name: "Live-Impuls"
    filters:
      - delayed_on: 10ms
    on_press:
      then:
        - lambda: id(total_pulses) += 1;
#        - output.turn_off: led  # optional: für eine LED, die den Gaszählerpuls visualisiert
#    on_release:
#      then:
#        - output.turn_on: led  # optional: für eine LED, die den Gaszählerpuls visualisiert

sensor:
  - platform: template
    name: "Gaszaehler"
    device_class: gas
    update_interval : 10s
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:fire"
    accuracy_decimals: 2
    lambda: |-
      return id(total_pulses) * 0.01; 

Vielen Dank für einen hinweis und beste Grüße
georgy_boy

Hallo,

versuche evtl. mal Folgendes:

Entwicklerwerkzeuge, dann zu Statistk, Entität auswählen, rechts auf das dreieckige Symbol klicken, den Zeitraum mit den falschen Werten auswählen, Werte korrigieren.

LG Pit

1 „Gefällt mir“

Hi,

  • zuerst hast du nicht deine kopmplette ESP Programierung gepostet, da du Variablen angelegt hast die unten im Sensor garnicht benutzt werden oder du hast nicht zuende programiert.
  • Zweitens wird deine Sensor ‘sensor.gaszähler’ nach dem Neustart deines ESP zurück auf 0 gesetzt.
    Die Grafik welche du eingeblendet hast, was ist das für ein Sensor? Ein extra angelegter Sensor zum Zählen? Ein Helfer?
    Da müssen schon etwas mehr informtionen kommen.

Hi Romka, danke für den Denkanstoß und ja, vermutlich ist es nicht zuende programmiert. Hier noch meine sensor.yaml:

- platform: template
  sensors:
# Gaszähler, kommend von ESPHome, aufbereiten für Energy
    gasincubicmeter:
      value_template:  >
          {% if states('sensor.gaszaehler') | float == 0 %}
           {{ states('sensor.gasincubicmeter') }}
          {% else %}
           {{ states('sensor.gaszaehler') | float }}
          {% endif %}
      unit_of_measurement: m³
      device_class: gas
      attribute_templates:
        state_class: total_increasing

Da ich das ganze aus dem zitierten Beispiel zusammenkopiert hatte bin ich davon ausgegangen, dass die Variablen “irgendwie” mit verrechnet werden. Da muss ich nochmal nachschauen.

Die eingeblendete Grafik ist aus dem Energiedashboard und zeigt den Sensor ‘sensor.gaszähler’

Danke und Gruß
georgy_boy

Wieso wird es so kompliziert gemacht?
Ich würde folgendes machen: Da aus meinen Erfahrungen der Wert der Variablen beim Neustart des ESP resettet werden, brauchst due eine Entität die es hochzählt und nicht resettet wird.

globals:
  - id: total_pulses
    type: int
    restore_value: yes  # Total Counter im Flash speichern
    initial_value: '0'  # startet mit 0
  - id: imp_ratio
    type: float
    restore_value: false
    initial_value: '0.01'  # vom Gaszaehler
  - id: Zustandszahl
    type: float
    restore_value: false
    initial_value: '0.9655'  # aus der Gasrechnung 14.6.2022
  - id: Brennwert
    type: float
    restore_value: false
    initial_value: '10.361'  # aus der Gasrechnung 14.6.2022
 

binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
    name: "Live-Impuls"
    filters:
      - delayed_on: 10ms
    on_press:
      then:
        - lambda: id(total_pulses) += 1;
#        - output.turn_off: led  # optional: für eine LED, die den Gaszählerpuls visualisiert
#    on_release:
#      then:
#        - output.turn_on: led  # optional: für eine LED, die den Gaszählerpuls visualisiert

sensor:
  - platform: template
    name: "Gaszaehler"
    device_class: gas
    update_interval : 10s
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:fire"
    accuracy_decimals: 2
    lambda: |-
      return id(total_pulses) * id(imp_ratio) * id(Brennwert) * id(Zustandszahl); 

zusätzlich würde ich einen Verbrauchszähler Helfer anlegen, diesen mit dem aktuellen Stand des Zählers mit dem Dienst Verbrauchszähler: Calibrate beschreiben. Dann hast du nach dem Neustart des ESP immer noch den Verbrauch, welcher nicht resettet wird und dann weitergezählt.

Was mir noch einfällt: Nachder Erzeugung des Helfer, kann es sein, dass dieser in das Energy Dashboard nicht eingefügt wird, weil das Attribut “device_class: gas” fehlt. Diesen muust du dann über customize.yaml hinzufügen.

Hallo zusammen :slight_smile:

ich habe ein ähnliches Problem. Bei meiner Tuya Steckdose hatte ich den Wert für die Entität “Summation deliviered” nicht von kwh auf wh geändert. Somit ist der Wert nun auch unrealistisch hoch. Ich habe die Lösung von Pit umgesetzt und in der Grafik wurde das Problem behoben. Der Wert der Entität ist aber leider weiterhin so hoch.
Gibt es hierzu Erfahrungen oder Lösungen, wie ich den kompletten Wert einer Summen-Entität auf 0 setzen kann?

Liebe Grüße und einen schönen Sonntag noch :slight_smile:

Guten Morgen. Ich habe ein ähnliches Problem. Habe gestern in der Waschküche umgeräumt und musste den ESP ein paar Minuten vom Strom nehmen. Danach ist mir aufgefallen, dass der Zählerstand im HA um etwa 35 m³ verringert wurde.
Ich habe dann über die Entwicklerwerkzeuge unter Statistik tatsächlich einen entsprechenden Eintrag gefunden(-35m³) und diesen auf 0 korrigiert. Der Zählerstand hat danach dennoch nicht gestimmt. Ich habe ihn also über die Entwicklerwerkzeuge / Zustand auf den aktuellen Zählerstand gesetzt. Das wurde auch kurz übernommen, wie im Graph zu erkennen ist, wurde dann aber wieder zurückgesetzt.
Heute morgen habe ich das mit dem Zustand dann noch einmal probiert mit anschließenden Neustart von HA. Selber Effekt, der Zählerstand ändert sich nach kurzer Zeit wieder auf den falschen Wert. Ich bin auch alle Einträge des gestrigen Tages in der Statistik durchgegangen und kann dort keine Ausreißer mehr finden.

Übersehe ich irgendwas? Und wie kann ich so etwas in Zukunft verhindern?

Viele Grüße
Schlozz

esphome:
  name: erdgassensor
  friendly_name: erdgassensor

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "NEIUoidFwPofRdrC+t8wG/U91GmcapmPCNAooyWxaJA="

ota:
  password: "8c371b72573e5ea9389a7b52ec98bfa7"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Heizung Fallback Hotspot"
    password: "nNbeBGyRL7Xh"

captive_portal:

globals:
  - id: total_gas_pulses
    type: int
    restore_value: false
    initial_value: '2807652'  # mit diesem Wert startet der Gaszählerstand
    
binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
    name: "Zaehler-Impuls"
    filters:
      - delayed_on: 10ms
    on_press:
      then:
        - lambda: id(total_gas_pulses) += 1;
        - output.turn_off: led  # für die LED, zur Anzeige des Schaltvorgangs
    on_release:
      then:
        - output.turn_on: led  # für die LED, zur Anzeige des Schaltvorgangs
        
sensor: 
  - platform: template
    name: "erdgasverbrauch_m3"
    device_class: gas
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:fire"
    accuracy_decimals: 3
    lambda: |-
      return id(total_gas_pulses) * 0.01;
      
# Diese LED blinkt, wenn ein Signal vom Reedkontakt erkannt wird
output:
  - platform: gpio # Die interne LED auf dem Board
    pin: GPIO2
    id: 'led'
    inverted: true