Einleitung
Seit einigen Monaten steht das Thema Gaszähler und Home Assistant auf meiner To-do-Liste. Es wäre schön, wenn ich neben dem Stromverbrauch und der Photovoltaikanlage auch noch den Gasverbrauch im Energie-Dashboard sehen würde. Ursprünglich war eine Lösung über einen Mikrocontroller und ESPHome angedacht. Nun bin ich auf den Blogs von 107er.net und affengriff.net (leider ursprüngliche Webseite nicht mehr verfügbar) auf eine kreative und unkonventionelle Methode aufmerksam geworden. Diese verwendet den Kontakt eines Zigbee Fenster- und Türsensors von Aqara oder Xiaomi. Beide Versionen (kantig = Aqara; rund = Xiaomi) sind nach dem Ausbau der Platine von der Elektronik und dem Formfaktor kaum zu unterscheiden. Diese funktionieren technisch identisch.
Theorie & Gaszähler
Ich habe bei mir im Haus einen Gaszähler von Pipersberg namens G4 RF1 verbaut. Einen baugleichen Zähler gibt es auch von den Firmen Arktis, Actaris, Schlumberger oder Itron. Dabei ist die Aufzählung sicherlich nicht vollständig. Gerne Bescheid geben, wenn ich einen Hersteller nachtragen kann.
Am Zähler ist abzulesen, dass ein Impuls mit 0,1 m3 gemessen wird. Diesen Impuls kann man im oberen Bereich des Zählers anhand mit einem Reed-Kontakt ablesen. Hierbei ist es wichtig, dass die korrekte Nachkommerstelle, die ein Metallplättchen verbaut hat abgelesen werden kann. In unserem Fall ist dies die zweite rote Stelle. Eine Dokumentation des Zählers ist hier zu finden.
Anlernen an Home Assistant
Bevor wir die Elektronik eines der beiden Sensoren ausbauen, lernen wir den Sensor über ein langes Drücken der Taste an Zigbee2MQTT an. In unserem Beispiel wird die Aqara Version verwendet. Wir benennen den Sensor in eg_har_gaszaehler um, damit wir diesen auch gut wiederfinden. Die Namenskonvention bedeutet Erdgeschoss (eg), Hausanschlussraum (har) und Name (gaszaehler).
Ausbau der Elektroplatine
Nach dem Anlernen bauen wir die Elektronikplatine aus. Den Aqara Sensor müssen wir nach dem Öffnen des Batteriefachs noch mit einem Schraubenzieher aufhebeln, um an die elektronische Platine zu kommen. Beim Xiaomi Sensor liegt die Platine nach dem Öffnen schon frei im Kunststoffgehäuse.
Einbau am Gaszähler
Die Elektronikplatine wird nun mit der Batterie nach oben und links in die Öffnung des Gaszählers gesteckt. Laut 107er.net muss die Positionierung ungefähr 0,5 cm vom rechten Rand entfernt sein.
Zur Prüfung könnt ihr den Sensor einfach mal ein paar Stunden in Home Assistant analysieren. Hierbei solltet ihr prüfen, ob der Sensor immer mal wieder ein Öffnen und Schließen registriert.
3D Druck Gehäuse
Die Lösung mit der nackten Platine ist zwar voll funktionsfähig, gefällt aber optisch nicht. Auch kann sich die Positionierung schnell verschieben, was die Funktion der Lösung beeinträchtigen kann.
Bei Tinkercard ist für unseren Use Case ein 3D Modell erstellt worden. Das gedruckte Modell ist optisch und von den Maßen ideal, doch leider passt die Positionierung des Sensors nicht. Ich erhalte leider keine Signale.
Daher muss ich erst einmal mit der einfachen Lösung leben. Ein eigenes funktionierendes 3D Modell werde ich aber zu gegebener Zeit erstellen und anschließend veröffentlichen.
Einrichtung als Gaszähler
An dieser Stelle realisieren wir in Home Assistant die Rechnungen als Gaszähler. Hierfür benötigen wir Helfer vom Typ Zähler (counter) und Nummer (input_number). Helfer können wir unter „Einstellungen / Geräte & Dienste / Helfer“ anlegen.
Zähler (counter)
Der Zähler ist für das Speichern der Impulse pro Tag verantwortlich. Wir legen diese wie folgt an:
Nummer (input_number)
Die Nummer stellt den tatsächlichen Gasverbrauch des Gaszähler dar. Initial sollte hier nach der Erstellung der Wert des eigenen Gaszählers eingetragen werden. Dieser wird anschließend automatisch durch Home Assistant erhöht.
Diesen legen wir wie folgt an:
Automatisierungen
Wir benötigen nun zwei Automatisierungen, damit die beiden Helfer erhöht bzw. zurückgesetzt werden. Automationen lassen sich unter „Einstellungen / Automatisierungen & Szenen“ anlegen.
EG_HAR: Gaszähler erhöhen
In dieser Automatisierung werden der Zähler sowie die Nummer beim Öffnen des Fensterkontaktes um eins erhöht.
alias: "EG_HAR: Gaszähler erhöhen"
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.eg_har_gaszaehler_contact
to: "on"
condition: []
action:
- service: counter.increment
data: {}
target:
entity_id: counter.eg_har_gaszaehler
- service: input_number.increment
data: {}
target:
entity_id: input_number.eg_har_gaszaehler
mode: single
EG_HAR: Gaszähler zurücksetzen
Hier wird jeden Tag um Mitternacht der Zähler zurückgesetzt.
alias: "EG_HAR: Gaszähler zurücksetzen"
description: ""
trigger:
- platform: time
at: "00:00:00"
condition: []
action:
- service: counter.reset
data: {}
target:
entity_id:
- counter.eg_har_gaszaehler
mode: single
Prüfung
Beiden Helfer sollten sich nun automatisiert erhöhen und beispielsweise wie folgt aussehen:
Einbau in das Energie Dashboard
Wir erhalten zwar die aktuellen Werte unseres Gaszählers, diese sind leider nicht mit dem Energie-Dashboard in Home Assistant kompatibel. Das Dashboard erwartet bei der Gaszählung Verbrauchswerte in den Formaten Kilowattstunden (kWh) oder Kubikmeter (m³). Hierfür erstellen wir uns zwei Templatesensoren im Helferbereich. Als Erstes wird der Sensor m³ erstellt, da dieser für die kWh Berechnung als Basis dient.
Kubikmeter (m³)
{% set gas = states('counter.eg_har_gaszaehler') | int %}
{{ ((gas) * 0.1) | round(1, default=0) }}
Kilowattstunden (kWh)
Wir erstellen erneut einen Templatesensor. Den Multiplitzierfaktor können wir unserer Gasrechnung entnehmen. Bei mir sieht die Rechnung wie folgt aus:
{% set kwh = states('sensor.gasverbrauch_m3') | float %}
{{ ((kwh) * 11.494) | round(1, default=0) }}
Energie Dashboard
Nun können wir unter „Einstellungen / Dashboards / Energie“ einen der beiden Sensoren verwenden. Diese fügen wir mit „Gasquelle hinzufügen“ ein. Ich habe mich für die Verwendung von kWh entschieden.
Nach spätestens zwei Stunden werden die ersten Messwerte im Energie-Dashboard angezeigt und wir haben unser Ziel erreicht.
Zusammenfassung & Fazit
Nach mehreren Wochen Nutzung des Fensterkontaktes kann ich für mich sagen, dass die berechneten Messwerte zum aktuellen Gaszählerstand passen. Mögliche Abweichungen im Nachkommabereich kann man leicht durch die Anpassung der input_number korrigieren. Für meine Ansprüche ist die Lösung mehr als ausreichend. Zugegebenermaßen hätte ich diese unkonventionelle Art des Auslesens nicht auf dem Zettel gehabt, wäre ich nicht über ähnliche Blogartikel gestolpert.
11 Antworten
hey, Super Artikel, bin auch schon über die anderen gestossen. Mit dem 3D gedruckten Gehäuse hat es bei mir auch noch nicht funktioniert. Werde das mal ohne reinlegen, wäre aber super interessiert an einem Modell falls du eins bereitstellen würdest.
wieso muss der Zähler jeden Tag zurück gesetzt werden? Nur um den Täglichen Verbraucht anzuzeigen?
Ja genau, der Counter wird für das Energie Dashboard verwendet.
Hallo Chris,
erstmal danke für die Anleitung. Ich habe trotzem Fragen :
1) Warum braucht man 2 unterschiedliche Typen von Helpern : Zähler (counter) und Nummer (input_number)
Nachvollziehbarer wäre doch 2x der gleiche Typ:
Nummer (input_number) daily
Nummer (input_number) total
2) Warum haben die beiden bei Dir unterschiedliche Schrittgrößen ? Warum nicht gleich 0,1 als Schrittgröße und dann spart man sich nachher die Multiplikation mit 0,01
3)
oder verstehe ich da etwas falsch?
Auch die Umrechnung in kWh kann doch in einem Schritt erfolgen.
Sicherlich kann man die Logiken auf unterschiedlicher Weise umsetzen und bestimmt auch smarter. Ich habe mich auf die verlinkten Quellen bezogen und diese als Basis genommen.
Gibt es mittlerweile eine brauchbares 3D Druck Gehäuse?
Leider nein. Kann im Moment auch nicht sagen, wann ich dazu komme.
hallo chris!
super Artikel, danke dafür.
Ich verwende einen Tür/Fensterkontakt, lag nahe diesen zu benutzen, da bei jedem ein Reed-Sensor verbait ist (bei einigen modellen stärkere/andere wiederum schwächer). ich bekomme nun excellente Signale, allerding ist mein Sensor noch immer als Türsensor deklariert. Zudem habe ich noch eine Besonderheit, denn mein Gaszähler sendet einen Impuls sobald er sich auf die Ziffer „9“ gedreht hat und ein weiteres, kurz danach, sobald er sich auf die Ziffer „0“ gedreht hat.
Wie gehe ich denn da genau vor? Wie wäre die Automation bzw. der Helfer denn dann zu bestimmen/definieren? Kann ich ein Signal irgendwie ignorieren?
lg
Du kannst die device_class auf etwas anpassen, was dir besser gefällt. Siehe https://www.home-assistant.io/integrations/binary_sensor/.
Für dein Problem mit dem doppelten Zählen würde ich einen binären Helfer erstellen und in der Automation verwenden. Diesen kannst du dann abfragen, setzen und wieder zurücksetzen, damit nur jedes zweites Mal gezählt wird.
Hallo Chris,
vielen Dank für deine super Erklärung.
Funktioniert bei mir jetzt seit einer Woche problemlos.
Ich habe mal ein funktionierendes Gehäuse konstruiert und zum download bereit gestellt.
Bei Interesse findet Ihr es hier:
https://cults3d.com/:1746897
Sehr schön, werde ich mal testen! Danke