Zähler durch eine Pulse (ESP) erhöhen

schlozzepino

New member
Hallo.
Ich habe mir mit ESPHome einen Sensor gebaut, der mir den Gasverbrauch am Zähler misst. Das klappt soweit gut. Das Problem bei der Sache ist, dass der Gesamtverbrauch immer dann zurückgesetzt wird, wenn der ESP neu gestartet wird.
Auszug aus meinem ESP
YAML:
globals:
  - id: total_gas_pulses
    type: int
    restore_value: false
    initial_value: '2807652'
Erste Idee war, restore_value auf true zu setzen. Habe allerdings in verschiedenen Foren gelesen, dass man den Wert nicht auf dem ESP speichern sollte und die Speicherung in HA auslagern soll.

Ich möchte also bei Änderung des Zustands auf on einen Counter immer weiter hochzählen. Diesen Counter würde ich dann für alle meine weiteren Berechnungen des Verbrauchs als Grundlage nutzen.
Nur wie stelle ich das an? Ich hatte mir einen Helfer "Zähler" erstellt und wollte diesen mit einer Automation immer um 1 hochzählen, sobald sich der Zustand meiner Enität "gasimpuls" auf on ändert. In der Automation kann ich diesen Helfer aber nicht finden, nur einen eigenen Zähler in der Automation hinzufügen, den ich dann aber auch wieder nicht gefunden habe.

Wie geht man da am besten vor?
Viele Grüße
Schlozz
 
In der Automation kann ich diesen Helfer aber nicht finden
Versuch es mal mit Aktion "Aufruf eines Dienstes" und dort dann input_number.set_value auswählen.

Ggf. musst Du dann auf YAML wechseln anstelle des visuellen Editors, um "value" wunschgemäß anzupassen. Alternativ, das könnte in Deinem Fall sogar genügen wenn Du stur hochzählen möchtest, den Dienst input_number.increment wählen.
 
So ähnlich hab ich es (glaub ich) gemacht:
YAML:
alias: Pulsecounter
description: Zählt den Pulse am Gaszähler
trigger:
  - type: turned_on
    platform: device
    device_id: f936105b2042fea3e41ccc02735751b8
    entity_id: 3da9e080b88969f5562b9a30a2259b86
    domain: binary_sensor
condition: []
action:
  - service: counter.increment
    metadata: {}
    data: {}
mode: single

Wie komme ich dann aber an diesen Counter ran? Ich finde den nicht, um ihn dann beispielsweise in einem Template Sensor verwenden zu können.
 
da brauchst für den esp sensor nur die richtigen Einstellungen
YAML:
    device_class: gas
    state_class: total_increasing
 
da brauchst für den esp sensor nur die richtigen Einstellungen
YAML:
    device_class: gas
    state_class: total_increasing
Wo meinst du, soll ich das machen? Mein Code auf dem Sensor sieht so aus:
YAML:
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

Mein Problem ist, dass der Zählerstand immer auf initial_value: '2807652' zurückgesetzt wird, sobald der Sensor neu starten. Das möchte ich gerne verhindern.
 
Wie komme ich dann aber an diesen Counter ran?
Ah sorry, counter, nicht input_number - falsch gelesen.

Der sollte doch bei dem entsprechenden Dienst als Entität zur Auswahl stehen?
1705484310024.png1705484347845.png
Sieht als YAML dann so aus:
YAML:
service: counter.increment
data: {}
target:
  entity_id: counter.xyz
Und der Wert lässt sich in einem Template dann mittels {{ states('counter.xyz') }} abrufen.
 
Kommentiere die Zeile 'initial_value: einfach aus. Die falsche Werte in der Statistik kannst du bei den Entwicklerwerkzeugen korrigieren.

@Nival das ist alles gar nicht nötig, der ESP zählt ja.
 
Kommentiere die Zeile 'initial_value: einfach aus. Die falsche Werte in der Statistik kannst du bei den Entwicklerwerkzeugen korrigieren.

@Nival das ist alles gar nicht nötig, der ESP zählt ja.
Das bedeutet, dass der Zähler dann bei 0m³ startet und ich einmal zu Beginn korrigiere. Sollte der Wert dann nach einem Neustart erhalten bleiben?
 
Das funktioniert nicht erwartet. Ich habe die Zeile auskommentiert und den ESP neu geflasht. Danach war der Zählerstand auf 0 und ich habe ihn über die Entwicklerwerkzeuge / Zustand auf den aktuellen Stand korrigiert. Nach dem nächsten Impuls war der Zählerstand wieder weg. Siehe Screenshot.

Bildschirmfoto 2024-01-17 um 11.22.08.png
 
bei mir steht das ohne ""
YAML:
state_class: total_increasing
total_increasing zählt nicht rückwärts, nur vorwärts.
 
Ich habe die Anführungszeichen mal rausgenommen und neu geflasht. Zählerstand (Zustand über Entwicklerwerkzeuge) steht jetzt wieder bei 0. Wie trage ich jetzt den aktuellen Stand ein, ab dem weiter gezählt werden soll? Über Zustand oder Statistik?
 
ich würde es mit der Statistik probieren, gabs noch nicht, als ich das eingerichtet habe.
Ich habe den initial_value im ESP auf den aktuellen Wert gesetzt und dann wieder geändert.

Ich stelle gerade fest, dass ich tatsächlich keine Stelle habe, wo der Gaszählerwert steht, zwecks Vergleich mit diesem.
Ich habe Verbrauchszähler pro Stunde und Tag und im Dashboard diverse Diagramme und das Energiedashboard sagt mir den Jahresverbrauch, aber kein Zählerequivalent.

Dann muss man wohl restore_value: yes verwenden oder einen Templatesensor erstellen.

restore habe ich auf no, weil mal wer meinte, dass man damit den flash vom ESP schont. Solange HA läuft, weiß der den Wert und wenn er Updates macht, zählt der ESP weiter. Wenn also der ESP nicht länger ohne HA läuft und dann neu startet, sollten keine Werte verloren gehen.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.151
Beiträge
59.861
Mitglieder
6.221
Neuestes Mitglied
Rapha
Zurück
Oben