Gaszähler iQ gasGuard in openHAB integrieren

Hinweis: Wir haben in diesem Artikel möglicherweise Provisions-Links verwendet und sie durch (*) gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhält maffert.net eine Provision. Es entstehen für Sie keine Nachteile beim Kauf oder Preis.

Hier zeige ich euch wie ihr den smarten Gaszähler *iQ gasGuard* in openHAB integrieren könnt. Das könnte dann wie folgt aussehen:

 

 

 

 

 

 

 

 

 

 

 

Vorraussetzungen:
Die benötigten Things (.things):
Thing topic gasGuard "gasGuard" @ "MQTT"  {
    Channels:   
    Type number : chipid    "Chip-ID"               [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.chipid"]
    Type string : ggid      "gasGuard-ID"           [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.ggid"]
    Type number : med       "Tagesdurchschnitt"     [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.med"]
    Type number : counter   "Zählerstand"           [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.counter"]
    Type number : cm        "Kubikmeter-Impuls"     [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.cm"]
    Type number : ts        "Verbrauch heute"       [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.ts"]
    Type number : ts_p      "Verbrauch gestern"     [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.ts_p"]
    Type number : ms        "Verbauch akt. Monat"   [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.ms"]
    Type number : ms_p      "Verbrauch Vormonat"    [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.ms_p"]
    Type number : js        "Verbrauch akt. Jahr"   [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.js"]
    Type number : js_p      "Verbrauch Vorjahr"     [ stateTopic="tele/gasGuard/WERTE", transformationPattern="JSONPATH:$.js_p"]
Die benötigten Items (.items):
Number KE_Gaszaehler_chipid         "Chip-ID"                                       <text>      {channel="mqtt:topic:mqttbroker:gasGuard:chipid"}
String KE_Gaszaehler_ggid           "gasGuard-ID"                                   <text>      {channel="mqtt:topic:mqttbroker:gasGuard:ggid"}
Number KE_Gaszaehler_med            "Tagesdurchschnitt [%.2f m³]"                   <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:med"}
Number KE_Gaszaehler_counter        "Zählerstand [%.3f m³]"                         <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:counter"}
Number KE_Gaszaehler_cm             "Kubikmeter-Impuls [%.2f m³]"                   <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:cm"}
Number KE_Gaszaehler_ts             "Verbrauch heute [%.2f m³]"                     <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:ts"}
Number KE_Gaszaehler_ts_p           "Verbrauch gestern [%.2f m³]"                   <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:ts_p"}
Number KE_Gaszaehler_ms             "Verbauch akt. Monat [%.2f m³]"                 <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:ms"}
Number KE_Gaszaehler_ms_p           "Verbrauch Vormonat [%.2f m³]"                  <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:ms_p"}
Number KE_Gaszaehler_js             "Verbrauch akt. Jahr [%.2f m³]"                 <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:js"}
Number KE_Gaszaehler_js_p           "Verbrauch Vorjahr [%.2f m³]"                   <gas>       {channel="mqtt:topic:mqttbroker:gasGuard:js_p"}
Number KE_Gaszaehler_ts_kosten      "Kosten heute [%.2f €]"                         <piggybank>
Number KE_Gaszaehler_ts_p_kosten    "Kosten gestern [%.2f €]"                       <piggybank>
Number KE_Gaszaehler_ms_kosten      "Kosten akt. Monat [%.2f €]"                    <piggybank>
Number KE_Gaszaehler_ms_p_kosten    "Kosten Vormonat [%.2f €]"                      <piggybank>
Number KE_Gaszaehler_js_kosten      "Kosten akt. Jahr [%.2f €]"                     <piggybank>
Number KE_Gaszaehler_js_p_kosten    "Kosten Vorjahr [%.2f €]"                       <piggybank>
Number KE_Gaszaehler_ts_kwh         "Verbrauch heute [%.2f kWh]"                    <gas>
Number KE_Gaszaehler_ts_p_kwh       "Verbrauch gestern [%.2f kWh]"                  <gas>
Number KE_Gaszaehler_ms_kwh         "Verbauch akt. Monat [%.2f kWh]"                <gas>
Number KE_Gaszaehler_ms_p_kwh       "Verbrauch Vormonat [%.2f kWh]"                 <gas>
Number KE_Gaszaehler_js_kwh         "Verbrauch akt. Jahr [%.2f kWh]"                <gas>
Number KE_Gaszaehler_js_p_kwh       "Verbrauch Vorjahr [%.2f kWh]"                  <gas>
DateTime KE_Gaszaehler_LetzteUpdate "Letzte Gasentnahme: [%1$td %1$tb at %1$tR]"    <calendar>
Die Rules (.rules) Datei erstellen – hier bitte die Daten oben mit euren austauchen:
var Number Gaspreis_Tag = 55.38082191780822 // ct pro Tag
var Number Gaspreis_kWh = 12.87 // ct pro kWh
var Number Gaspreis_zZahl = 0.9561 // Zustandszahl
var Number Gaspreis_Brennwert = 10.298 // Brennwert

rule "Gaszaehler Kosten und Verbrauch berechnen"
when
    Item KE_Gaszaehler_ts changed
then
    logInfo("gas.rules", "Berechne Gas Kosten und Verbrauch - Start")
    var Faktor = Gaspreis_zZahl * Gaspreis_Brennwert * Gaspreis_kWh
    KE_Gaszaehler_ts_kosten.postUpdate(((KE_Gaszaehler_ts.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_ts_p_kosten.postUpdate(((KE_Gaszaehler_ts_p.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_ms_kosten.postUpdate(((KE_Gaszaehler_ms.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_ms_p_kosten.postUpdate(((KE_Gaszaehler_ms_p.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_js_kosten.postUpdate(((KE_Gaszaehler_js.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_js_p_kosten.postUpdate(((KE_Gaszaehler_js_p.state as DecimalType * Faktor) + Gaspreis_Tag) / 100)
    KE_Gaszaehler_ts_kwh.postUpdate(KE_Gaszaehler_ts.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    KE_Gaszaehler_ts_p_kwh.postUpdate(KE_Gaszaehler_ts_p.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    KE_Gaszaehler_ms_kwh.postUpdate(KE_Gaszaehler_ms.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    KE_Gaszaehler_ms_p_kwh.postUpdate(KE_Gaszaehler_ms_p.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    KE_Gaszaehler_js_kwh.postUpdate(KE_Gaszaehler_js.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    KE_Gaszaehler_js_p_kwh.postUpdate(KE_Gaszaehler_js_p.state as DecimalType * Gaspreis_Brennwert * Gaspreis_zZahl)
    logInfo("gas.rules", "Berechne Gas Kosten und Verbrauch - Ende")
end

rule "Letztes Update des Gaszaehlers"
when
Item KE_Gaszaehler_counter changed
then 
    logInfo("gas.rules", "Aktualisiere letzte Gasentnahme - Start")
    postUpdate(KE_Gaszaehler_LetzteUpdate, new DateTimeType())
    logInfo("gas.rules", "Aktualisiere letzte Gasentnahme - Ende")
end
Die Sitemap (.sitemap) anpassen bzw. ergänzen:
Text label="Gaszähler" {
	Frame label="Allgemein" {
		Default item=KE_Gaszaehler_LetzteUpdate
		Default item=KE_Gaszaehler_counter
		Default item=KE_Gaszaehler_med
		Default item=KE_Gaszaehler_cm
	}
	Frame label="Verbrauch in m³" {
		Default item=KE_Gaszaehler_ts
		Default item=KE_Gaszaehler_ts_p
		Default item=KE_Gaszaehler_ms
		Default item=KE_Gaszaehler_ms_p
		Default item=KE_Gaszaehler_js
		Default item=KE_Gaszaehler_js_p
	}
	Frame label="Verbrauch in €" {
		Default item=KE_Gaszaehler_ts_kosten
		Default item=KE_Gaszaehler_ts_p_kosten
		Default item=KE_Gaszaehler_ms_kosten
		Default item=KE_Gaszaehler_ms_p_kosten
		Default item=KE_Gaszaehler_js_kosten
		Default item=KE_Gaszaehler_js_p_kosten
	}
	Frame label="Verbrauch in kWh" {
		Default item=KE_Gaszaehler_ts_kwh
		Default item=KE_Gaszaehler_ts_p_kwh
		Default item=KE_Gaszaehler_ms_kwh
		Default item=KE_Gaszaehler_ms_p_kwh
		Default item=KE_Gaszaehler_js_kwh
		Default item=KE_Gaszaehler_js_p_kwh
	}
}
MQTT Einstellungen im iQ gasGuard Webinterface setzen:
  1. Das Webinterface vom iQ gasGuard aufrufen
  2. oben rechts auf „Zugangsdaten“ klicken
  3. bei MQTT die Einstellungen entsperren (orangene Symbol)
  4. und die Felder ausfüllen, z.B. so:

: 192.168.22.68 < euer MQTT Broker (i.d.R. der openHAB Server)
: tele/gasGuard/WERTE
: maffimqtt
: dasgeheimePasswortvomBroker
: 1883
: Nach jeder Messung

und dann oben nur noch auf das grüne Symbol zum speichern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert