Gaszähler mit Tasmota und mqtt auslesen und in HA integrieren

Hallo,

vielleicht hat jemand eine Lösung für mich: Lese den Gaszähler mit reedkontakt aus , im Tasmota werden Alle werte korrekt angezeigt.
Aber im HA werden aus 0,13 m3
13,00 m3
wo liegt der Fehler??

Eintrag config.yaml:

template:
  - sensor:
      - name: "Gaszähler OG"
        unique_id: Gaszähler OG
        state: "{{ states ('sensor.gaszahler_og_counter_c1') | float * 0.001 }}"
        unit_of_measurement: "m³"
        accuracy_decimals: 3
        icon: "mdi:gas-station"
        device_class: gas
        state_class: total_increasing
  - sensor:
      - name: "Gaszähler OG kwh"
        unique_id: gaszahler_kwh
        state: "{{ (states ('sensor.gaszaehler_keller_m3') | float(0) * 0.959900 * 11.535) | round(1) }}"
        unit_of_measurement: "kWh"
        icon: "mdi:gas-station"
        device_class: energy
        state_class: total_increasing

Eintrag customize.yaml:

sensor.gaszahler_og_counter_c1:
  device_class: gas
  unit_of_measurement: m³
  state_class: total_increasing
  last_reset: 1970-01-01T00:00:00+00:00

Hilfe wäre super…

Dann sind wohl bei deinem Multiplikator noch zwei Nullen zu wenig?

Andere Sache:

  • Wieso hast du device_class, unit_of_measurement und state_class noch mal in der customize und wofür ist last_reset?

OK, bin Neuling / Anfänger

dachte das muss so,

vielleicht falsch angelesen und interpretiert,

Ich lerne :wink:

hab es jetzt so gelöst:

mqtt:
  sensor:
    - name: "Zählerstand"
      unique_id: sensor.gaszaehler_zaehlerstand
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Zählung seit Nullung"
      unique_id: sensor.gaszaehler_zarhlung_seit_nullung 
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.value }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Volumen heute"
      unique_id: sensor.gaszaehler_verbrauch_volumen_heute
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.today_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie heute"
      unique_id: sensor.gaszaehler_verbrauch_energie_heute
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.today_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: energy
      state_class: "total_increasing"
    - name: "Verbrauch Volumen gestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_gestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.yesterday_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie gestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_gestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: energy
      state_class: "total_increasing"
    - name: "Verbrauch Volumen vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_vorgestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.db_yesterday_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_vorgestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.db_yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: energy
      state_class: "total_increasing"

muss ich noch teilweise anpassen, aber morgen dann

von hier übernommen: Wiki Gaszähler

Ok, also direkt auf MQTT umgestiegen :+1:
Anmerkung:

  • Die unique_id hat nichts mit der Entitäts-ID zu tun.
  • Die beiden Payload-Zeilen kannst du weglassen, da du eh kein availability topic hast.
  • Wenn du jetzt noch möchtest, dass diese Entitäten in einem Gerät ‘Gaszähler’ zusammengefasst werden?

Ja, sollen zusammengefasst werden.
Muss ich am WE schauen wie.
Und was ich in der yaml noch löschen muss.

Gruß Det

Kommt gut ins Wochenende :sunglasses:

Dafür musst die für jeden Sensor einen identischen device-Block hinzufügen.

bedeutet Was???

Hab ich gelöscht, … :+1:

Wie mache ich das?? Gibt es eine Anleitung dafür??

Gruss Det

Hast Du ein Beispiel für mich, finde es so nicht heraus :roll_eyes:

so sieht der Eintrag in der configuration.yaml jetzt aus.

mqtt:
  - sensor:
    - name: "Zählerstand"
      unique_id: sensor.zahlerstand_2
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
    - name: "Zählung seit Nullung"
      unique_id: sensor.gaszaehler_zarhlung_seit_nullung 
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.value }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Volumen heute"
      unique_id: sensor.gaszaehler_verbrauch_volumen_heute
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.today_m3 }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie heute"
      unique_id: sensor.gaszaehler_verbrauch_energie_heute
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.today_kwh }}'
      unit_of_measurement: 'kWh'
      device_class: energy
      state_class: "total_increasing"
    - name: "Verbrauch Volumen gestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_gestern
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.yesterday_m3 }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie gestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_gestern
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      device_class: energy
      state_class: "total_increasing"
    - name: "Verbrauch Volumen vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_vorgestern
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.db_yesterday_m3 }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
    - name: "Verbrauch Energie vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_vorgestern
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.db_yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      device_class: energy
      state_class: "total_increasing"

Das bedeutet, dass du als unique_id alles mögliche nehmen kannst, solange es nur eindeutig und einmalig ist, darüber legst du nicht fest, wie die Entität “intern” heißt (falls das die Intention war).

Füge bei jedem deiner Sensoren hinzu:

      device: 
        name: "Gaszähler OG"
        identifiers: "<etwas eindeutiges>"
        manufacturer: "<Hersteller>"
        model: "<Modell>"

device ist dabei auf gleicher Höhe wie deine schon vorhandenen Einträge (name, state_topic, etc)
Was du da für Namen und so festlegst, ist völlig dir überlassen, Hauptsache es steht bei allen das gleiche.

Hat funktioniert. :innocent: :+1:
Wird nun ein Gerät angezeigt unter der mqtt integration,

Vielen Dank

hi Grüße dich
kannst du mir mall dein Tasmota Skript zu kommen lassen ich bekomme das nicht hin mit den Berechnungen (verbrauch )

mfg Dennes

Hab es Dir per PM geschickt.
steht aber auch hier:
https://wiki.gorjup.de/doku.php?id=public:gaszaehler

vielen lieben dank =) :slightly_smiling_face:

Hallo,

hab nun noch einen 2ten Gaszähler mit dem Zähler ausgerüstet.
Hab auch ein 2tes Gerät unter mqtt,
aber keine Werte!!

  - sensor:
    - name: "Zählerstand"
      unique_id: sensor.zahlerstand_2
      state_topic: "tele/Gaszähler_OG/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
      device: 
        name: "Gaszähler OG"
        identifiers: "<DetsGas>"
        manufacturer: "<gorjup>"
        model: "<BK4>"

    - name: "Zählerstand"
      unique_id: sensor.Gaszähler EG
      state_topic: "tele/Gaszähler_EG/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
      device: 
        name: "Gaszähler EG"
        identifiers: "<EG_Gas>"
        manufacturer: "<gorjup2>"
        model: "<BK4EG>"

Wo liegt der Fehler??
Im Moment weiss ich nicht wo ich ansetzen soll.
Hat jemand einen Tip??
Gaszähler OG liefert Werte, nur Gaszähler EG nicht. (Neu dazu gekommen)
liegt der Fehler in den mqtt sensoren??

Nachtrag:
Werden die beiden Geräte nicht richtig unterschieden??

FEHLER gefunden:
so funktioniert es:

    - name: "Zählerstand"
      unique_id: sensor.Gaszähler EG
      state_topic: "tele/Gaszaehler_EG/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      device_class: gas
      state_class: "total_increasing"
      device: 
        name: "Gaszähler EG"
        identifiers: "<EG_Gas>"
        manufacturer: "<gorjup2>"
        model: "<BK4EG>"

musste den state topic eintrag ändern und aus Gaszähler Gaszaehler machen.
komisch bei dem anderen Gerät vom OG funktioniert es mit dem Ä.

:crayon:by HarryP: Zusammenführung Doppelpost.

Ich würde mal noch den Umlaut und das Leerzeichen aus der unique_id nehmen.

Moin, dass savedata 60 bedeutet, dass Tasmota dann grundsätzlich “alle” Werte speichert?

Ich habe einen ESP 8266 der als Adapter 4xS0 (0) unter configure Module konfiguriert ist.

hätte jetzt gedacht, dass wenn man das in der Konsole eingibt, dann auch die einzelnen Counter alle 60 gespeichert werden. Ziehe ich den Stromstecker, dann nimmt er die Werte vom letzten boot.

Danke!

Hallo,
ist zwar schon etwas älter aber ich hätte da dennoch eine Frage dazu. Ich hab mir das auch Nachgebaut und angepass… sehr interessant…
Ich bin noch am lernen und noch relativ neu in dem Thema.
Was ich nicht ganz verstehe, warum die Werte wie Zählerstand, Zählung seit Nullung… nicht als Entitäten von dem Tasmota-Gerät auftauchen, ich dacht erst ich hätte da einen Fehler gemacht.

Hallo,
hab erst jetzt die Zeit hier mal zu antworten.
Auch bei mir sind die beiden Gaszähler als Gerät in MQTT hinterlegt.
die Stromzähler hingegen stehen unter den Tasmota Geräten.
Ist halt so. :man_shrugging:
Die Entitäten erscheinen erst wenn man die mqtt.yaml anpasst und die Sensoren hinterlegt. Oder was meinst Du genau.
so zum Beispiel:

    - name: "Verbrauch Energie gestern"
      unique_id: sensor.gaszaehler_EG_verbrauch_energie_gestern
      state_topic: "tele/Gas_EG/json"
      value_template: '{{ value_json.yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      device_class: energy
      state_class: "total_increasing"
      device: 
        name: "Gaszaehler EG"
        identifiers: "<Gaszaehler_EG>"
        manufacturer: "<gorjup>"
        model: "<BK4>"
1 „Gefällt mir“

Hi,
ja das “is halt so” war mein Problem. Warum ! :upside_down_face: Ich hatte den Gaszähler vergeblich unter den Tasmotageräten gesucht und dachte schon einen Fehler gemacht zu haben …

Hallo,

kann mir jemand sagen wie ich einen Sensor erstellen kann, welcher mir den Gesamtverbrauch in kWh berechnet? Würden den dann gern für Utility-Sensoren für wöchentlich, pro Monat und pro Jahr verwenden

Ich nutze das folgende Script

>D
resetb=0
p:m1=0
p:g1=0
p:g2=0
p:month1=0
p:month2=0
p:month3=0
p:gesamt=0
c1=0
s1=0
h1=0
hkw1=0
gkw1=0
gkw2=0
mkw1=0
mkw2=0
mkw3=0
mkwgs=0
skw1=0
hgp=0
g1gp=0
g2gp=0
m1gp=0
m2gp=0
m3gp=0
gsgp=0
hr=0
dy=0
zu=0.96
br=11.23
gp=10.90
gasinit=86677.888
gastotal=0

>B
=>sensor53 l255
=>Teleperiod 60
=>CounterDebounceLow 500
=>CounterDebounceHigh 500

>S
if resetb==1
then
=>counter1 0
=>reset 2
endif
h1=s1-m1
hkw1=h1*br*zu
hgp=(hkw1*gp)/100

gkw1=g1*br*zu
gkw2=g2*br*zu
mkw1=month1*br*zu
mkw2=month2*br*zu
mkw3=month3*br*zu
mkwgs=gesamt*br*zu
g1gp=(gkw1*gp)/100
g2gp=(gkw2*gp)/100
m1gp=(mkw1*gp)/100
m2gp=(mkw2*gp)/100
m3gp=(mkw3*gp)/100
gsgp=(mkwgs*gp)/100

skw1=s1*br*zu
hr=hours
dy=day
if chg[hr]>0
 and hr==0
  then
   m1=s1
   g2=g1
   g1=h1
   month1=month1+h1
   gesamt=gesamt+h1
   if chg[dy]<2
    and dy==1
     then
      month3=month2
      month2=month1
      month1=0
   endif
   svars
endif

if upsecs%tper==0{
=>Publish tasmota/%topic%/main/td_m3 %2h1%
=>Publish tele/%topic%/main/td_kwh %2hkw1%
=>Publish tele/%topic%/main/yd_m3 %2g1%
=>Publish tele/%topic%/main/yd_kwh %2gkw1%
=>Publish tele/%topic%/main/dbyd_m3 %2g2%
=>Publish tele/%topic%/main/dbyd_kwh %2gkw2%
=>Publish tele/%topic%/main/value %2s1%
=>Publish tele/%topic%/main/gastotal %2gastotal%
=>Publish tele/%topic%/main/gasprice %3gp%
=>Publish tele/%topic%/json {"gastotal": "%2gastotal%", "value": "%2s1%", "today_m3": "%2h1%", "today_kwh": "%2hkw1%", "yesterday_m3": "%2g1%", "yesterday_kwh": "%2gkw1%", "db_yesterday_m3": "%2g2%", "db_yesterday_kwh": "%2gkw2%", "gasprice": %3gp%}
}

>T
s1=Counter#C1/100
c1=Counter#C1
gastotal=(c1/100)+gasinit

>W
<br><br>
Smartnetz Smart {m} Gas Reader 3.0 SCE
<a href="https://script.smartnetz.at" target="_blank">Script Configurator</a>
<br><br>

GAS gezählt: {m} %3s1% m³
Zählerstand: {m} %gastotal% m³
<br>
Zustandszahl: {m} %zu%
Brennwert: {m} %br% kWh/m³
Gaspreis: {m} %gp% Cent/kWh
<br>
Verbrauch:
Heute: {m} %2h1% m³ | %2hkw1% kWh
Kosten: {m} %2hgp% €
Gestern: {m} %2g1% m³ | %2gkw1% kWh
Kosten: {m} %2g1gp% €
Vorgestern: {m} %2g2% m³ | %2gkw2% kWh
Kosten: {m} %2g2gp% €
<br>
Aktueller Monat: {m} %2month1% m³ | %2m1gp% €
Letzter Monat: {m} %2month2% m³ | %2m2gp% €
Vorletzter Monat: {m} %2month3% m³ | %2m3gp% €
Gesamt: {m} %2gesamt% m³ | %2gsgp% €
bu(resetb "..." "Zählerreset")
#

Ich habe einen Itron G4 RF1

image

welche Werte muss ich da für manufacturer und model eingeben?

Vielleicht?

        manufacturer: "<itron>"
        model: "<G4>"

Hat funktioniert

So mein Tasmato Gaszähler ist jetzt endlich gekommen. Ich habe den hier ja bestellt Smartnetz Smart Gas Reader SCE ENERGYMETER 3.0 Pipersberg / Schlumberger / Itron 0,1m³ / Impuls G4 RF1 Schnittstelle - WiFi mit TASMOTA vorinstalliert | WLAN | MQTT | BK4 Micro USB

Einbinden war super einfach. Auf deren Seite kann man sich auch ein passendes Script generieren lassen

Ich verwende das hier generierte Script

>D
resetb=0
p:m1=0
p:g1=0
p:g2=0
p:month1=0
p:month2=0
p:month3=0
p:gesamt=0
c1=0
s1=0
h1=0
hkw1=0
gkw1=0
gkw2=0
mkw1=0
mkw2=0
mkw3=0
mkwgs=0
skw1=0
hgp=0
g1gp=0
g2gp=0
m1gp=0
m2gp=0
m3gp=0
gsgp=0
hr=0
dy=0
zu=0.96
br=11.23
gp=10.90
gasinit=86677.888
gastotal=0

>B
=>sensor53 l255
=>Teleperiod 60
=>CounterDebounceLow 500
=>CounterDebounceHigh 500

>S
if resetb==1
then
=>counter1 0
=>reset 2
endif
h1=s1-m1
hkw1=h1*br*zu
hgp=(hkw1*gp)/100

gkw1=g1*br*zu
gkw2=g2*br*zu
mkw1=month1*br*zu
mkw2=month2*br*zu
mkw3=month3*br*zu
mkwgs=gesamt*br*zu
g1gp=(gkw1*gp)/100
g2gp=(gkw2*gp)/100
m1gp=(mkw1*gp)/100
m2gp=(mkw2*gp)/100
m3gp=(mkw3*gp)/100
gsgp=(mkwgs*gp)/100

skw1=s1*br*zu
hr=hours
dy=day
if chg[hr]>0
 and hr==0
  then
   m1=s1
   g2=g1
   g1=h1
   month1=month1+h1
   gesamt=gesamt+h1
   if chg[dy]<2
    and dy==1
     then
      month3=month2
      month2=month1
      month1=0
   endif
   svars
endif

if upsecs%tper==0{
=>Publish tasmota/%topic%/main/td_m3 %2h1%
=>Publish tele/%topic%/main/td_kwh %2hkw1%
=>Publish tele/%topic%/main/yd_m3 %2g1%
=>Publish tele/%topic%/main/yd_kwh %2gkw1%
=>Publish tele/%topic%/main/dbyd_m3 %2g2%
=>Publish tele/%topic%/main/dbyd_kwh %2gkw2%
=>Publish tele/%topic%/main/value %2s1%
=>Publish tele/%topic%/main/gastotal %2gastotal%
=>Publish tele/%topic%/main/gasprice %3gp%
=>Publish tele/%topic%/json {"gastotal": "%2gastotal%", "value": "%2s1%", "today_m3": "%2h1%", "today_kwh": "%2hkw1%", "yesterday_m3": "%2g1%", "yesterday_kwh": "%2gkw1%", "db_yesterday_m3": "%2g2%", "db_yesterday_kwh": "%2gkw2%", "gasprice": %3gp%}
}

>T
s1=Counter#C1/100
c1=Counter#C1
gastotal=(c1/100)+gasinit

>W
<br><br>
Smartnetz Smart {m} Gas Reader 3.0 SCE
<a href="https://script.smartnetz.at" target="_blank">Script Configurator</a>
<br><br>

GAS gezählt: {m} %3s1% m³
Zählerstand: {m} %gastotal% m³
<br>
Zustandszahl: {m} %zu%
Brennwert: {m} %br% kWh/m³
Gaspreis: {m} %gp% Cent/kWh
<br>
Verbrauch:
Heute: {m} %2h1% m³ | %2hkw1% kWh
Kosten: {m} %2hgp% €
Gestern: {m} %2g1% m³ | %2gkw1% kWh
Kosten: {m} %2g1gp% €
Vorgestern: {m} %2g2% m³ | %2gkw2% kWh
Kosten: {m} %2g2gp% €
<br>
Aktueller Monat: {m} %2month1% m³ | %2m1gp% €
Letzter Monat: {m} %2month2% m³ | %2m2gp% €
Vorletzter Monat: {m} %2month3% m³ | %2m3gp% €
Gesamt: {m} %2gesamt% m³ | %2gsgp% €
bu(resetb "..." "Zählerreset")
#

Kann mir jemand sagen wie ich einen Sensor erstellen kann, welcher mir den Gesamtverbrauch in kWh berechnet? Würden den gerne für Utility-Sensoren für wöchentlich, pro Monat und pro Jahr verwenden

Und noch eine Verständnisfrage. Müsste bei (1) und (2) nicht zumindest der Wert von (3) stehen ?

Danke :slight_smile: