Gaszähler mit HA via MQTT auslesen - Ich brauche Tipps für meine letzten Hürden.

buzztee

New member
Hallo zusammen,

ich bin neu hier und hoffe hier mit Eurer Hilfe den Knoten in meinem HA zu lösen.

Aktuell habe ich vor, meinen Gaszähler in HA einzubinden. Dazu habe ich einen mit einem Reed-Kontakt bestückten ESP (NICHT per ESP-Home installiert) von einem Bekannten zur Verfügung gestellt bekommen. Dieser ESP erfasst die Impulse am Gaszähler im Keller und stellt Sie via WiFi dem MQTT-Broker in HA zur Verfügung. Die erkannten Impulse (1 Impuls = 0,01m3) werden als Count Topic in HA sichtbar.
2022-11-20 17_16_10-MQTT Explorer.png

Ich habe dann in HA ein Helper vom Typ Counter ("Gaszaehler_helper") erzeugt und eine Automatisierung, die den Helper-Counter hochzählt, wenn als Trigger der MQTT-Count auf 1 erkannt wird (sprich: die Rolle am Gaszähler eine Runde gedreht hat)
2022-11-20 17_19_30-Settings – Home Assistant — Mozilla Firefox.png

Das klappt auch alles wunderbar, allerdings habe ich zwei letzte und vermutlich eigentlich ganz einfache Wünsche, an denen ich aber partout nicht weiter komme.

  1. Der Counter zählt ja die Pulse hoch, ein Impuls soll dabei den Counter um 0,01 hochzählen, nicht um 1. Ich habe Anleitungen hierzu im Internet gefunden, wie ich mit Templates die Umrechnung machen kann, bekomme es aber nicht hin. Kurz: Die Umrechnung der Dezimalstellen funktioniert noch nciht.
  2. Ich möchte außerdem im idealfall den Basiswert des Counter identisch zum eigentlichen Gaszähler im Keller halten - ich vermute, dass ich einmalig den Counter_helper von Hand setzen muss. Leider scheint das mit "Set State" in den Develper Tools keinen Bestand zu haben, denn sobald wieder ein Count dazu kommt wird der vorrige falsche Wert des Helpers angezeigt.
2022-11-20 17_14_32.png

Wer hat hier Tipps für mich die mir helfen, den Knoten in meinem Kopf zu lösen?
 

IvoryBalboa90

Active member
Einfachster weg, der beide deiner Probleme löst:
Benutzt nicht den Counter, sondern bei den Helfern "Nummer". Den stellst du auf Schrittgröße 0.01 und nicht auf Schieberegler, sondern auf Eingabe.
Dann gibst du erstmal deinen entsprechenden Zählerstand ein (Problem 2 gelöst). In deiner Automation kannst du den Helfer mit dem Dienst input_number.increment (Numerische Eingabe: Increment) erhöhen um jeweils einen Schritt, also 0.01 (Problem 1 gelöst)
 

buzztee

New member
Hey, Super danke - das hat soweit geklappt, es kann so einfach sein.... Die Anleitung war prima!
Die Zahl wird korrekt um 0,01 bei Eingang eines Pulses erhöht. Ich nehme an, dass man das Feld nicht rückwirkend "nicht änderbar" machen kann? Ich würde außerdem gerne weitere Werte für Tages-/Wochen/Monats/Jahresverbrauch hieraus generieren. Ich hatte mal ne Anleitung dazu, mal schauen ob ich die noch finde.
1669019059963.png
 

alexamend

Active member
Du könntest dir in der configuration.yaml ähnlich wie ich es bei meinem Stromzähler gemacht habe einen Sensor erstellen
Täglich = daily
Wöchentlich = weekly
Monatlich = monthly
Jährlich = yearly

Hier im bsp. anhand meines aktuellem Stromverbrauch

YAML:
utility_meter:
  stromverbrauch_aktuell_daily:                             # IR Stromzähler aktuell
    source: sensor.stromnetz_mt681_aktuelle_last
    cycle: daily
  stromverbrauch_aktuell_weekly: 
    source: sensor.stromnetz_mt681_aktuelle_last
    cycle: weekly
  stromverbrauch_aktuell_monthly:
    source: sensor.stromnetz_mt681_aktuelle_last
    cycle: monthly
  stromverbrauch_aktuell_yearly:
    source: sensor.stromnetz_mt681_aktuelle_last
    cycle: yearly
 

buzztee

New member
Sorry, ich muss nochmal nachhaken. Erstmal danke für Deine Hilfe und Deine Geduld.
Den Utility Meter habe ich in den Helpern gefunden, aber ich muss dort einen Input Sensor verwenden, während mein Number Helper kein Sensor ist? Ist hier ein zwischenschritt noch nötig?
 

IvoryBalboa90

Active member
Ah, hatte ich nicht auf dem Schirm. Utility Meter braucht sensor.xxx

Dann musst noch sowas hier anlegen:
Code:
template:
  - sensor:
      - name: "Verbrauch"
        state: "{{ states('input_number.XXXX')}}"
        unit_of_measurement: "m³"
        state_class: total
        device_class: energy

Selbes Spielchen, XXXX wieder einfügen, Config prüfen, Neustarten. Danach solltest du die Utility Meters anlegen können
 

buzztee

New member
Danke für Deine Hinweise - ich habe rumprobiert, umkonfiguriert und was weiss ich nicht alles - aber am Ende bin ich jetzt am Ende da, wo ich sein wollte: Gas und Strom sind im Energy-Dashbaord mit plausiblen Daten.
Jetzt heißt es noch:
- Aufräumen (Durchs Testen habe ich viel zu viele Helper, Sensoren, Entitys die nciht benötigt werden
- Wasserzähler einbinden...
Nochmal vielen Dank für Deine Geduld @IvoryBalboa90 und auch Danke an @alexamend
 

u5zzug

Active member
Wenn du die Werte nur optisch brauchst, ist da auch die mini-graph-card (HACS) ganz hilfreich.
Gasverbrauch.png
Die Schnipsel kann man z.B. in die Grid oder Stack Karten kopieren
YAML:
# die letzten 6 Stunden in 10min Blöcken        
          - type: custom:mini-graph-card
            entities:
              - entity: sensor.esp_waschhaus_gas_durchfluss
            name: Rhytmus 6h/10min
            show:
              graph: bar
              icon: true
              name: true
              state: true
            hour24: true
            aggregate_func: sum
            group_by: interval
            hours_to_show: 6
            points_per_hour: 6
            card_mod:
              style: |
                rect.bar:last-of-type {
                   fill: red;
                }
                rect.bar:nth-of-type(6n) {
                   fill: yellow;
                }
               
# der letzte Tag in 24 Stunden              
          - type: custom:mini-graph-card
            entities:
              - entity: sensor.gas_d
            name: Gasverbrauch d/h
            show:
              graph: bar
            hours_to_show: 24
            points_per_hour: 1
            aggregate_func: delta
            group_by: hour
            hour24: true
            card_mod:
              style: |
                rect.bar:last-of-type {
                   fill: red;
                }
               
# die letzte Woche in Tagen  
          - type: custom:mini-graph-card
            entities:
              - entity: sensor.gas_m
            name: Gas 7 Tage
            show:
              graph: bar
            hours_to_show: 168
            hour24: true
            aggregate_func: delta
            group_by: date
            card_mod:
              style: |
                rect.bar:last-of-type {
                   fill: red;
                }
 
Zuletzt bearbeitet:

Letzte Anleitungen

Statistik des Forums

Themen
1.334
Beiträge
17.778
Mitglieder
843
Neuestes Mitglied
smartloftnrw
Oben