Gaszähler smart machen

Vielen Dank für die ganzen Tipps hier. Das ist ja echt sensationell.

ich bin absoluter HA Neuling und bin mit Programmiersprachen nicht so wirklich vertraut.

Bis zum Zähler bin ich gekommen. Ich habe also einen Sensor und der zählt jetzt einen Counter hoch.

Was ich nicht ganz verstehe: Wenn ich das Script

template:
unique_id: gaszahler_m3
  sensor:
    - name: "Gaszähler m³"
      state: "{{ states('counter.gaszahler_h') | float * 0.01 }}"
      unit_of_measurement: m³
      icon: mdi:meter-gas-outline
      device_class: gas
      state_class: total_increasing

in die configuration.yaml einbinde und dann die yaml Konfigurationen neu lade passiert bei mir nichts. Wobei ich da auch nicht ganz verstehe, was passieren sollte. Taucht dann eine neue Entität auf die Gaszähler m³ heisst? wenn ja, dann klappt das bei mir nicht. obwohl es keine Fehlermeldungen gibt.

Oder missverstehe ich da was?

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Ja. Du missverstehst komplett den Aufbau der .yaml-Datei.

Korrekterweise muss es so aussehen:

template:
  - sensor:
      - name: Gaszähler m³
        unique_id: gaszaehler_m3
        state: "{{ states ('counter.gaszahler_h') | float * 0.1}}"
        unit_of_measurement: m³
        icon: mdi:meter-gas
        device_class: gas
        state_class: total_increasing

Du musst auf die Reihenfolge und vor allem auf die Einrückungen achten.

Hier kommt mal meine komplette Gasberechnung:

# Hier fängt der Bereich der Gasverbrauchsermittlung an
# Jetzt kommt der Gassensor, der die Umdrehungen des Zählers in m3 umrechnet
 
template:
  - sensor: 
      - name: Gaszähler2 m³
        unique_id: gaszaehler2_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.gaszahler2_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.gaszahler2_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) }}
          

Danke für den Tipp. Habe das nun geändert. Anbei ein paar Screenshots.

Und sollte das dann als Entität auftauchen, wenn ich auf “Konfiguration prüfen” geklickt habe (da steht dann, dass die Konfiguration nicht den Start von HA verhindert) und dann auf “Alle YAML Konfigurationen neu starten” geklickt habe und dann ein grüner Haken erschienen ist?

Mir ist leider das ganze Thema der Programmierung in YAML noch etwas schleierhaft. Fehlt mir da irgendwie ein Arbeitsschritt? Bei mir taucht auf jeden Fall leider keine neue Entität auf :frowning:

Oder missverstehe ich das generell? Ich dachte, dass ich mit diesem Script quasi eine neue Entität “baue”, die dann auch in den Entitäten sichtbar ist. Oder denke ich generell falsch?

Es ist natürlich sehr geil, wenn du - während ich gerade antworte - deinen Text wieder änderst und meine Antwort dadurch unsinnig wird, sodass ich wieder von vorn anfangen kann.

Du sollst nicht einfach einen Teil meines Codes stumpf kopieren, zumindest nicht den unteren Teil, weil er auf MEINE Sensoren angepasst ist.

Wenn dein Zähler counter.gaszahler_h heißt, macht es wenig Sinn, in deinem Code auf einen bei dir nicht vorhandenen counter.gaszahler_umdrehung Bezug zu nehmen, den es nicht bei dir, sondern nur bei mir gibt.

Wenn dein Zähler der counter.gaszahler_h ist, dann muss der Code wie ganz oben von mir bereits gezeigt heißen:

template:
  - sensor:
      - name: Gaszähler m³
        unique_id: gaszaehler_m3
        state: "{{ states ('counter.gaszahler_h') | float * 0.1}}"
        unit_of_measurement: m³
        icon: mdi:meter-gas
        device_class: gas
        state_class: total_increasing

Der untere Teil meines in meinem vorigen Kommentar geposteten Codes sollte lediglich zeigen, dass man darauf aufbauend noch weitere (in meinen Augen nützliche) Erweiterungen vornehmen kann. Hat aber wahrscheinlich eher zu Verwirrung beigetragen.

Hi, ich würde das ganze etwas anders anfangen. Bei so großen Einträgen in der configuration.yaml wird das schnell unübersichtlich. Am besten in die config einen Eintrag machen zu packages, dann ein Verzeichnis packages anlegen und dort die neuen yaml - codes als eigenständige Dateien ablegen. Ist mir auch empfohlen worden und das funktioniert prima wenn man was ändern will. Mit der Auswertung des Gaszählers gibt es einige gute Tips die man erst mal sich ansehen sollte und dann das ganze einrichten, je nachdem was man möchte. Ich habe nur die Auswertung wieviel Kubikmeter und das andere mit den Kosten und so über eine Excell Tabelle, dann bekomme ich gleich zu sehen wieviel ich noch Guthaben habe. In HA, find ich, wird das irgendwann zu unübersichtlich. Von Tristan gibt es auch ein Video zu dem Gaszähler.
https://www.youtube.com/watch?v=AXGuGgEf6AU

Code-Zeilen solltest Du nur als formatierten Text (s.o.) und nicht als Bild!

Danke für eure Hilfe - so langsam verstehe ich die Logik mit den eingerückten Zeilen :slight_smile:

Das war mir vorher nicht so ganz klar.

Funktioniert es denn nun, oder immer noch nicht?

So, nachdem ich 5 Tage komplett flach lag, habe ich es gestern dann endlich ans Laufen bekommen. Vielen herzlichen Dank noch mal für eure Tipps. Diese Community ist einfach Wahnsinn.

Hallo zusammen,

also ich habe das ganze, wie im Video beschrieben, über einen Impulssensor an einem Gaszähler G4 RF1 c montiert und integriert.

Soweit so gut.

Jedoch habe ich ein Problem damit den Sensor korrekt an meinem Gaszähler G4 RF1 c zu positionieren.
Innerhalb dieser Einkerbung bekomme ich heute ein Signal (anscheinend korrekt positioniert) jedoch am nächsten Tag wieder nicht. Dann muss ich den Sensor wieder innerhalb der Einkerbung verschieben um ein Signal zu erhalten.
Hat das Problem vielleicht noch jemand gehabt?

Vielleicht findest Du hier das richtige Gaszähler
Ich habe einen anderen Zähler der dann mit einem Reedkontakt ausgelesen werden kann.

Vielen Dank, aber so wirklich bringt mich das nicht weiter.
Ich hatte jetzt nicht vor 3 solcher Sensoren dort zu platzieren oder es mit einer Kamera zu machen.
Laut dem Video muss es doch auch so funktionieren oder verstehe ich hier was falsch?

Ich glaube Du brauchst dieses Teil:
Kontakt
damit ist Dein Kontakt genau an der richtigen Stelle und Du kannst das mit einem Tür oder Fensterkontakt als Zähler nutzen. Falls Du das nicht drucken kannst schick mir eine PN und ich druck Dir das.

Vielen Dank für das Angebot, jedoch kann ich, wegen meines Zählers, die Informationen aus dem Gaszähler nicht mit einem Reed-Kontakt auslesen.
Ich muss einen Impulssensor (12mm Durchmesser) in der Einkerbung positionieren.

Dann würde ich Dir ein fertiges Teil vorschlagen, gibt es in verschiedenen Ausführungen. Ich hab hier mal einen Link für das PDF:
Gaszähler
Ist wohl am einfachsten denn alles andere wird nicht so richtig funktionieren.
Vielleicht hilft Dir das weiter:
Pipersberg
ist ein Link zu einem Beitrag hier im Forum. Den Wassersensor hatte ich in Benutzung nur leider wurde die Wasseruhr getauscht so das ich den nicht mehr verwenden kann. Also nicht irritieren lassen, der Sensor wurde für den Gaszähler benutzt.

ich habe meinen von hier Smartnetz Shop | Smartnetz Mini Smart Gas Reader 3.0 SCE für Apator/Metrix G4 Gaszähler mit TASMOTA Scripting vorinst (vorher nachfragen welcher passt) funktioniert sehr geil :slight_smile:

Hallo, meine Gaszähler/Uhr wurde frisch getauscht. Ich bin auf der Suche nach einen Smarten Gaszähler

  • Favorit sollte schon Zigbee sein aber kein muss
  • Homeassistent komptaibel
  • Dieses mal nichts zum selber löten und Gehäuse 3 D Drucker
  • Homematic nur im Notfall

Gasuhr Pipersberg BK-G4

Für Vorschläge sind wir offen

Hi, ich würde mal beim grossen A nachsehen da gibt es fertige Systeme, oder halt selbst bauen.

Hallo Manfred, habe ich schon auch beim Hersteller selbst, ich möchte ja hier auf die Erfahrung und die Kompetenz des Forum zurückgreifen.

Bei mir hab ich es selbst gebaut mit einem Aqara Fenstersensor und einem gedruckten Gehäuse, da ich selbst einen 3D Drucker hab. Den Kontakt vom Fensterkontakt kann man auch durch andere Reedkontakte ersetzen, ist die ienfachste und billigste Methode.