Reset von Gasdaten ?!

Hallo zusammen,

ich habe folgendes Problem.

Gestern habe ich einen Tür und Festerkontakt auf meinem Gaszähler installiert welcher die Impulse zählen kann und diese dann an HA weiter gibt.

Den Sensor habe ich so eingestellt, dass die Statusveränderung aufgenommen und in einem Helfer gezählt wird.

image

Dies hat gestern Abend auch super geklappt. Leider hat sich jedoch in der Nacht der Stand zurück gesetzt.

image

Wieso weiß ich nicht … der dort gezählte Wert wird dann an ein Template übergeben welches in m3 überführt:

Da das Fehlerbild bei beiden gleich ist, gehe ich davon aus, dass der Helfer “Gaszähler_H” nicht korrekt eingestellt ist.

edit://
ich habe zudem noch eine Automatisierung welche das Zählen an sich übernimmt:

Könnt ihr helfen? :slight_smile:
Beste Grüße

Es ist ja wahrscheinlich die Vorgehensweise, die Tristan in seinem Video beschrieben hat. Wieso der Zähler wieder auf null zurückgesetzt wird, kann ich dir nicht sagen, zumal wir lediglich Screenshots und keinen Code zu sehen bekommen. Normal ist das jedenfalls nicht. Ich kann dir einmal meine Configuration zeigen, bei der ich bei der Automation nicht auf das Gerät (also den Türsensor) gegangen bin, sondern auf die darunter liegende Entität, weil sich so die Änderung des Zustands besser definieren lässt. Das ist unter anderem wichtig, weil ansonsten bei einem Neustart von HA die Änderung des Zustands des Geräts von “unbekannt” auf einen der abgefragten Zustände mitgezählt wird.

Hier auch noch einmal als yaml-Code:

alias: Gaszähler hochzählen
description: Zählt jede Umdrehung des Gaszählers hoch
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.gaszahler_contact
    from: "on"
    to: "off"
conditions:
  - condition: state
    entity_id: binary_sensor.gaszahler_contact
    state: "off"
    enabled: false
actions:
  - action: counter.increment
    target:
      entity_id: counter.gaszahler_umdrehung
    data: {}
mode: single

Auf diesen Punkt bei deinem Zähler hast du auch geachtet, oder? →

Hier ist mal der Abschnitt aus der configuration.yaml, in dem ich die Gasberechnung umgesetzt habe:

# Hier fängt der Bereich der Gasverbrauchsermittlung an
# Jetzt kommt der Gassensor, der die Umdrehungen des Zählers in m3 umrechnet
  
      - name: Gaszähler m³
        unique_id: gaszaehler_m3
        state: "{{ states ('counter.gaszahler_umdrehung') | float * 0.1}}"
        unit_of_measurement: m³
        icon: mdi:meter-gas
        device_class: gas
        state_class: total_increasing 
        
# Jetzt kommt die Umrechnung der m3 in kWh
  
      - name: Gasverbrauch kWh
        unique_id: gasverbrauch_kwh
        unit_of_measurement: kWh
        device_class: energy
        state_class: total
        state: >
          {% set m3 = states('sensor.gaszahler_m3') | float %}
          {{ (m3 * 0.9654 * 10.312) | round(3) }}
        
# Jetzt kommt der Summensensor aus Zählerstand und aktueller Messung
  
      - name: Gaszähler Gesamtstand
        unique_id: gaszaehler_gesamtstand
        unit_of_measurement: m³
        device_class: gas
        state_class: total
        state: >
          {% set aktuell = states('sensor.gaszahler_m3') | float %}
          {% set stand = states('input_number.aktueller_gaszahlerstand') | float %}
          {{ (aktuell + stand) | round(3) }}
          
# Jetzt kommt der Saisonverbrauch:
  
      - name: Gas Saisonverbrauch m³
        unique_id: gas_saisonverbrauch_m3
        unit_of_measurement: m³
        device_class: gas
        state_class: total
        state: >
         {{ (float(states('sensor.gaszahler_gesamtstand')) - 
         float(states('input_number.anfangsstand_gaszahler'))) | round(2) }}
          
# Jetzt kommt die Berechnung der Gaskosten Gesamt          
  
      - name: Gesamtkosten Gasbezug
        unique_id: gesamtkosten_gasbezug
        unit_of_measurement: €
        state: >
          {% set verbrauch = states('sensor.gasverbrauch_kwh') | float(0) %}
          {% set preis = states('input_number.aktueller_gaspreis') | float(0) %}
          {{ (verbrauch * preis) | round(2) }}
          
# Hier kommt die Berechnung der Gesamtzahl der Tage der aktuellen Heizperiode
  
      - name: Gasverbrauch Tage gesamt
        unique_id: gasverbrauch_tage_gesamt
        state: >
          {% set start = states('input_datetime.heizperiode_beginn') %}
          {% set end = states('input_datetime.heizperiode_ende') %}
          {% if start != 'unavailable' and end != 'unavailable' %}
            {% set start_date = strptime(start, "%Y-%m-%d") %}
            {% set end_date = strptime(end, "%Y-%m-%d") %}
            {{ (end_date - start_date).days + 1 | int }}
          {% else %}
            {{ 0 }}
          {% endif %}

# Hier kommt die Berechnung der seit Beginn der Heizperiode vergangenen Tage:
 
      - name: Gasverbrauch Tage aktuell
        unique_id: gasverbrauch_tage_aktuell
        state: >
          {% set start = states('input_datetime.heizperiode_beginn') %}
          {% if start != 'unavailable' %}
            {% set start_date = strptime(start, "%Y-%m-%d").replace(tzinfo=None) %}
            {% set end_date = now().replace(tzinfo=None) %}
            {{ ((end_date - start_date).days + 1) | int }}
          {% else %}
            {{ 0 }}
          {% endif %}

# Hier kommt der hochgerechnete Verbrauch in m³
 
      - name: Hochgerechneter Gasverbrauch
        unique_id: hochgerechneter_gasverbrauch
        unit_of_measurement: m³
        device_class: gas
        state_class: total
        state: >
          {% set gesamttage = float(states('sensor.gasverbrauch_tage_gesamt')) %}
          {% set akt_tage = float(states('sensor.gasverbrauch_tage_aktuell')) %}
          {% set akt_verbrauch = float(states('sensor.gas_saisonverbrauch_m3')) %}
          {{ (akt_verbrauch / akt_tage * gesamttage) | round(3) }}

# Hier kommt der hochgerechnete Verbrauch in kWh:
  
      - name: Hochgerechneter Gasverbrauch kWh
        unique_id: hochgerechneter_gasverbrauch_kwh
        unit_of_measurement: kWh
        device_class: energy
        state_class: total
        state: >
          {% set m3 = float(states('sensor.hochgerechneter_gasverbrauch')) %}
          {{ (m3 * 0.9654 * 10.312) | round(3) }}  
          
# Hier kommen die hochgerechneten Kosten inkl. Grundbetrag
  
      - name: Hochgerechnete Jahreskosten Gasbezug
        unique_id: hochgerechnete_jahreskosten_gasbezug
        unit_of_measurement: €
        state: >
          {% set verbrauch = states('sensor.hochgerechneter_gasverbrauch_kwh') | float(0) %}
          {% set preis = states('input_number.aktueller_gaspreis') | float(0) %}
          {% set grundpreis = states('input_number.gaspreis_gundbetrag_p_a') | float(0) %}
          {{ ((verbrauch * preis) + grundpreis)| round(2) }}
          

Die darin genannten Eingabe-Helfer müsstest du natürlich noch anlegen und die Bezeichnung der Sensoren dürfte auch nicht zu deinen passen. Soll auch mehr eine Anregung sein. Das läuft bei mir seit dem 1.10. dieses Jahres störungsfrei.

1 „Gefällt mir“

Um ehrlich zu sein bin ich gerade etwas überfordert und weiß nicht wo ich anfangen soll.

Im Grunde würde es ja helfen wenn der Helfer welcher die Zustandsänderungen zählt nur steigen kann. Aber dieser setzt sich aus mir unerklärlichen Gründen zurück …

Was die yaml codes angeht, ich nutze überwiegend die grafische Oberfläche.
Ich poste euch mal das, was ich finden konnte. Wenn ihr bessere Wege kennt gerne sagen.

Helfer welcher den Zählerstand aufnehmen soll:

Code von meiner Automatisierung (welcher eine Umdrehung auf dem Gaszähler trackt und an den Helfer weitergibt:

 alias: Gaszähler_Umdrehung_Neu
 description: ""
 triggers:
   - trigger: state
     entity_id:
       - binary_sensor.gas_sensor_tur
     from: "on"
     to: "off"
 conditions: []
 actions:
   - action: counter.increment
     metadata: {}
     data: {}
     target:
       entity_id: counter.gaszahler_h
 mode: single

Entität welche im Energie-Dashboard eingebunden wird. (Nimmt wert aus dem Helfer und wandelt diesen passend um

({{ states ('counter.gaszahler_h') | float * 0.01}}))


{{ states ('counter.gaszahler_h') | float * 0.01}}

Könnt ihr etwas erkennen woran es liegen kann?

edit:

ich habe soeben den Zählerstand nochmal über die Entwicklereinstellungen > Zustände vom Helfer auf 400000 gesetzt, welcher dann vom Übergabepunkt an das Energie-Dashboard auf 4000,00m3 umwandelt. Mal sehen was in einer Stunde passiert.


image

Update:

Er hat es nun wieder resetet … hier alles was ich finden konnte:
image
image

Log von Helfer:

Log von der Automation (welcher eine Umdrehung feststellt und den Helfer +1 geben sollte):

Log vom Sensor welcher am Gaszähler hängt:

… ich weiß nciht weiter …

:crayon:by HarryP:
. Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Ich hatte das hier ehrlicherweise nicht mehr weiterverfolgt und bin gerade erst wieder darüber gestolpert. Das Zurücksetzen des Sensors muss eine Ursache habe. Hast du den Punkt, den ich oben mit dem Pfeil gekennzeichnet habe, geprüft? Hast du irgendwelche anderen/neuen Erkenntnisse?

edit: Oder ist das einzige Problem, dass dein vorgegebener Wert (also hier 4000) nach einer gewissen Zeit wieder vergessen wird? Denn der eigentliche Wert, also die 0,27 m³, bleibt ja offensichtlich vorhanden. Dazu habe ich dir oben in meinen Sensoren gezeigt, dass ich dazu einen Sensor gebaut habe, der aus einem einzugebendem Wert (z. B. der Startwert des Gaszählers) und dem errechneten Verbrauch durch Summenbildung einen aktuellen Zählerstand ermittelt.

Zur Einbindung in das Energie-Dashboard ist das aber nicht notwendig, da dort eh erst ab Einbindung des Sensors gezählt wird und die Höhe des Startwerts irrelevant ist.

Ja lag an der Art mit der ich es überschrieben habe. Als ich es händisch hochgezählt habe hat er es dauerhaft übernommen also hätte ich es mit dem Punkt Aktion statt Zustand in den Entwickleroptionen gemacht wäre es wohl auch gegangen :slight_smile: