Seite 1 von 1

Gaszähler Mqtt Bausatz

Verfasst: 14. Okt 2023 13:42
von PeterA
Hallo Zusammen.

Hier ein kleines Projekt welches ich euch vorstellen möchte:

Gaszähler mittels D1 Wemos Mini.
Das ganze gibt es als Bausatz inkl. ausführlicher Anleitung und Wiki hier:
https://wiki.gorjup.de/doku.php?id=public:gaszaehler

Hier die mqtt-gascounter.things:

Code: Alles auswählen

Bridge mqtt:broker:3448a27a [ host="localhost", secure=false ]
{
    // D1 Wemos Mini @ B4-G4-MT Gaszähler, IP: 192.168.2.113 
    Thing topic gascounter "D1 Wemos Mini" @ "Gaszähler" {
    Channels:

        Type number   : Gastotal         "Zählerstand"                      [ stateTopic="tele/tasmota_504CD2/main/gastotal" ]
        Type number   : value            "Zählung seit Nullung"             [ stateTopic="tele/tasmota_504CD2/main/value" ]
        Type number   : today_m3         "Verbrauch Volumen heute"          [ stateTopic="tele/tasmota_504CD2/main/td_m3" ]
        Type number   : today_kwh        "Verbrauch Energie heute"          [ stateTopic="tele/tasmota_504CD2/main/td_kwh" ]
        Type number   : yesterday_m3     "Verbrauch Volumen gestern"        [ stateTopic="tele/tasmota_504CD2/main/yd_m3" ]
        Type number   : yesterday_kwh    "Verbrauch Energie gestern"        [ stateTopic="tele/tasmota_504CD2/main/yd_kwh" ]
        Type number   : db_yesterday_m3  "Verbrauch Volumen vorgestern"     [ stateTopic="tele/tasmota_504CD2/main/dbyd_m3" ]
        Type number   : db_yesterday_kwh "Verbrauch Energie vorgestern"     [ stateTopic="tele/tasmota_504CD2/main/dbyd_kwh" ]
    }
}
Die entsprechenden Items dazu mqtt-gascounter.items:

Code: Alles auswählen

Group     gascounter
Group     gascounterStats
Number    Gastotal            "Zählerstand [%.2f m³]"                      <gas>     (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:Gastotal"}
Number    value               "Zählung seit Nullung [%.2f m³]"             <gas>     (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:value"}
Number    today_m3            "Verbrauch Volumen heute [%.2f m³]"          <gas>     (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:today_m3"}
Number    today_kwh           "Verbrauch Energie heute [%.2f kWh]"         <fire>    (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:today_kwh"}
Number    yesterday_m3        "Verbrauch Volumen gestern [%.2f m³]"        <gas>     (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:yesterday_m3"}
Number    yesterday_kwh       "Verbrauch Energie gestern [%.2f kWh]"       <fire>    (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:yesterday_kwh"}
Number    db_yesterday_m3     "Verbrauch Volumen vorgestern [%.2f m³]"     <gas>     (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:db_yesterday_m3"}
Number    db_yesterday_kwh    "Verbrauch Energie vorgestern [%.2f kWh]"    <fire>    (gascounter)    {channel="mqtt:topic:3448a27a:gascounter:db_yesterday_kwh"}
Und hier noch der relevante Teil für die Sitemap:

Code: Alles auswählen

}
    Frame label="Gaszähler" icon="fire" {
        Text item=Gastotal   label="Aktueller Zählerstand:" icon="fire" {
            Frame label="Gaszähler" {           
            Default item=Gastotal
            Default item=value 
            Default item=today_m3 
            Default item=today_kwh 
            Default item=yesterday_m3
            Default item=yesterday_kwh
            Default item=db_yesterday_m3
            Default item=db_yesterday_kwh
            }
        }
    }
Hinweis:
Die textuelle Konfiguration erfolgte für OpenHab 2.4

Viele Grüße

Peter

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Okt 2023 19:44
von udo1toni
Sehr schön.

Als Ergänzung für OH4 (aber auch in Textform...)
Thing (hier mit dem json Payload):

Code: Alles auswählen

Bridge mqtt:broker:broker "Mosquitto" [ 
    host="localhost", 
    secure=false 
] {
    Thing topic gascounter "D1 Wemos Mini" {     // D1 Wemos Mini am Gaszähler
    Channels:
        Type number   : total            "Zählerstand"                      [ stateTopic="tele/tasmota_504CD2/json", unit="m³",  transformationPattern="JSONPATH:$.gastotal" ]
        Type number   : value            "Zählung seit Nullung"             [ stateTopic="tele/tasmota_504CD2/json", unit="m³",  transformationPattern="JSONPATH:$.value" ]
        Type number   : today_m3         "Verbrauch Volumen heute"          [ stateTopic="tele/tasmota_504CD2/json", unit="m³",  transformationPattern="JSONPATH:$.today_m3" ]
        Type number   : yesterday_m3     "Verbrauch Volumen gestern"        [ stateTopic="tele/tasmota_504CD2/json", unit="m³",  transformationPattern="JSONPATH:$.yesterday_m3" ]
        Type number   : db_yesterday_m3  "Verbrauch Volumen vorgestern"     [ stateTopic="tele/tasmota_504CD2/json", unit="m³",  transformationPattern="JSONPATH:$.db_yesterday_m3" ]
        Type number   : today_kwh        "Verbrauch Energie heute"          [ stateTopic="tele/tasmota_504CD2/json", unit="kWh", transformationPattern="JSONPATH:$.today_kwh" ]
        Type number   : yesterday_kwh    "Verbrauch Energie gestern"        [ stateTopic="tele/tasmota_504CD2/json", unit="kWh", transformationPattern="JSONPATH:$.yesterday_kwh" ]
        Type number   : db_yesterday_kwh "Verbrauch Energie vorgestern"     [ stateTopic="tele/tasmota_504CD2/json", unit="kWh", transformationPattern="JSONPATH:$.db_yesterday_kwh" ]
    }
}
Items:

Code: Alles auswählen

Group         gascounter
Number:Volume gastotal            "Zählerstand"                  <gas>  (gascounter) {channel="mqtt:topic:broker:gascounter:total",           unit="m³",  stateDescription=""[pattern="%.2f m³"]}
Number:Volume gasvalue            "Zählung seit Nullung"         <gas>  (gascounter) {channel="mqtt:topic:broker:gascounter:value",           unit="m³",  stateDescription=""[pattern="%.2f m³"]}
Number:Volume gastoday            "Verbrauch Volumen heute"      <gas>  (gascounter) {channel="mqtt:topic:broker:gascounter:today_m3",        unit="m³",  stateDescription=""[pattern="%.2f m³"]}
Number:Volume gasyesterday        "Verbrauch Volumen gestern"    <gas>  (gascounter) {channel="mqtt:topic:broker:gascounter:yesterday_m3",    unit="m³",  stateDescription=""[pattern="%.2f m³"]}
Number:Volume gasdb_yesterday     "Verbrauch Volumen vorgestern" <gas>  (gascounter) {channel="mqtt:topic:broker:gascounter:db_yesterday_m3", unit="m³",  stateDescription=""[pattern="%.2f m³"]}
Number:Energy gastoday_kwh        "Verbrauch Energie heute"      <fire> (gascounter) {channel="mqtt:topic:broker:gascounter:today_kwh",       unit="kWh", stateDescription=""[pattern="%.2f kWh"]}
Number:Energy gasyesterday_kwh    "Verbrauch Energie gestern"    <fire> (gascounter) {channel="mqtt:topic:broker:gascounter:yesterday_kwh",   unit="kWh", stateDescription=""[pattern="%.2f kWh"]}
Number:Energy gasdb_yesterday_kwh "Verbrauch Energie vorgestern" <fire> (gascounter) {channel="mqtt:topic:broker:gascounter:db_yesterday_kwh",unit="kWh", stateDescription=""[pattern="%.2f kWh"]}

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Okt 2023 21:13
von PeterA
Cool!

Aber müsste das nicht "stateDescription" lauten ?

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Okt 2023 22:53
von udo1toni
Ja, Tippfehler :) schon korrigiert...

Re: Gaszähler Mqtt Bausatz

Verfasst: 13. Nov 2023 21:17
von RoooNY
Hallo!
Vielen Dank für den Link und die Einbindung.
Jetzt wäre ja das Logging in Datenbank und entsprechend verschiedene generierte Diagramme noch interessant.

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Nov 2023 04:43
von udo1toni
Unter openHAB3 ff. ist default rrd4j installiert und auf allen Items aktiv, mit den Strategies everyUpdate (evtl. stattdessen everyChange?), everyMinute.
Ob und wie man sich dann eigene Charts dazu baut, ist dann ja hochgradig Geschmacksache.

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Nov 2023 07:00
von PeterA
Ja richtig.
Das Charting kann so Individuell sein weshalb ich hier keinen Code davon gepostet habe.

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Nov 2023 18:18
von RoooNY
Aber man muss ja dafür eine Art Momentenverbrauch ermitteln um bspw stündlichen oder feineren Verbrauch zu ermitteln.

Re: Gaszähler Mqtt Bausatz

Verfasst: 14. Nov 2023 19:21
von PeterA
Das kann man dann halt alles mit den entsprechenden Abfragen aus der Persistenz ermitteln.

Siehe auch diesen Post in einem anderen Thread der gerade läuft: viewtopic.php?p=58107#p58107

Da ist das sehr schön vom Udo erklärt.