Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbank schreiben

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

TeamO
Beiträge: 1166
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 26 Mal
Danksagung erhalten: 228 Mal

Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbank schreiben

Beitrag von TeamO »

Wer seinen Gaszähler auslesen möchte und die Daten direkt in eine bestehende Datenbank der Solaranzeige speichern möchte, für den habe ich hier eine Möglichkeit.

Benötigt wird:
  • D1 Mini NodeMcu
  • Reed-Kontakt
  • Tasmota-Firmware mit freigeschaltetem Script und WebDisplay
  • Tasmota-Script zum "Berechnen" und senden der Daten
Die benötigte Hardware kann ich auch fertig verlötet und mit entsprechend angepasstem Tasmota bespielt anbieten.

Vorbereitung:
- Am D1 mini muss eine achtpolige Stiftleiste auf der Seite mit "G" aufgelötet werden (Pins USB, 15, 17-22)
- Anschließen des Reed-Kontaktes an Pin 15 (G/GND) und Pin 17 (IO2/TXD1/4/2)
D1 Mini Pinout.jpg
D1 Mini Pinout.jpg (33.2 KiB) 1766 mal betrachtet
- Die angehängte Tasmota-Firmware muss auf dem D1 mini geflasht werden. Dazu am besten Tasmotizer verwenden Gaszähler_tasmota.zip Passwort lautet Gaszähler
- Nach dem flashen muss man sich mit dem W-Lan von Tasmota verbinden und die Verbindung mit seinem eigenen W-Lan herstellen

Konfiguration der (1.)user.config.php: Bei einer Multi-Regler-Version muss diese Einstellung an der 1.user.config.php erfolgen!

Code: Alles auswählen

$MQTT = true;
.
.
.
$MQTTTopic[1] = "solaranzeige/anzeige/1/cm";
$MQTTTopic[2] = "solaranzeige/anzeige/1/kWh";
$MQTTTopic[3] = "solaranzeige/anzeige/1/Change";
Bei einer Multi-Regler-Version kann hier anstatt der '1' die entsprechende Gerätenummer eintragen werden. Dadurch werden die Daten in der Datenbank der entsprechenden x.user.config.php gespeichert.

Verbinden mit dem Di mini über seine IP-Adresse -> Consoles -> Edit Script -> Haken bei "Script enable" setzen und folgendes Script einfügen:

Code: Alles auswählen

>D
p:count=0
p:lastMonth=0
var1=0
var2=0
sw=0
p:m:arr=0 4
p1=0
p2=0
p3=0
vMonth=0

>B
;count=5890178 ;auskommentieren zum Setzen der aktuellen Werte
;lastMonth=58668.24
var1=count/100
var2=var1*0.9579*11.31
arr[4] =var2-(lastMonth*0.9579*11.31)
vMonth=month

; script>=#reset
; update Zählerstand Vormonat 
#lmonth(p1)
lastMonth=p1
print %lastMonth%
svars

; Verbrauch Vormonate anpassen
#lmonths(p1 p2 p3)
arr[1]=p3
arr[2]=p2
arr[3]=p1
print Done
svars

>F
sw=sw[0]
if chg[sw]==1
then 
	;Switch1 wechselt zu OFF
	if sw==0
	then
		;erhöhe Zählerstand um 1
		count+=1
	endif
endif

if upd[count]>0
then
	;Berechne Wert in m³ mit 2 Nachkommastellen
	var1=count/100

	;Berechne Wert in kWh
	var2=var1*0.9579*11.31

arr[4] =var2-(lastMonth*0.9579*11.31)

	;versende beide Werte per MQTT
	=>Publish solaranzeige/anzeige/1/cm %var1%
	=>Publish solaranzeige/anzeige/1/kWh %var2%
endif

>S

if vMonth!=month
then
	;print hier
	arr[1] = arr[2]
	arr[2] = arr[3]
	arr[3] =var1-lastMonth
	lastMonth=var1
	vMonth=month
	=>Publish solaranzeige/anzeige/1/Change 1
endif


>W
Zählerstand: {m} %var1% m³
--------------
seit Monatsbeginn: {m} %(var1-lastMonth)% m³
{m} %arr[4]% kWh
--------------
Vormonate: {m} %arr[3]% kWh
{m} %arr[2]% kWh
{m} %arr[1]% kWh
#
Dieses Script muss vor dem speichern noch für Eure Situation entsprechend angepasst werden.

Code: Alles auswählen

;count=5890178 ;auskommentieren zum Setzen der aktuellen Werte
;lastMonth=58668.24
Hier eure entsprechenden Werte eintragen, das ';' entfernen und speichern. Danach das ';' wieder setzen. "count" ist der aktuelle Wert mit zwei Stellen nach dem Komma (ohne dasselbige einzutragen), wenn der Reed-Kontakt an dieser Stelle eingesetzt wird. Hier müsst ihr natürlich anhand eurem Zähler schauen, an welcher Stelle der Kontakt befestigt wird.
"lastMonth" ist, falls bekannt der letzte Wert vom Vormonat.

Code: Alles auswählen

var2=var1*0.9579*11.31
arr[4] =var2-(lastMonth*0.9579*11.31)
.
.
.
	var2=var1*0.9579*11.31

arr[4] =var2-(lastMonth*0.9579*11.31)
Hier müsst ihr die Formeln zur Umrechnung vom Kubikmeter nach kWh anhand der Daten von eurem Lieferanten anpassen. Diese sind nicht überall gleich!

Code: Alles auswählen

	=>Publish solaranzeige/anzeige/1/cm %var1%
	=>Publish solaranzeige/anzeige/1/kWh %var2%
	.
	.
	.
	=>Publish solaranzeige/anzeige/1/Change 1
Hier muss bei einer Multi-Regler-Version entsprechend den Eintragungen in der 1.user.config.php die Reglernummer eventuell angepasst werden.

Speichern.
Ab jetzt wird bei jeder Umdrehung der entsprechenden Stelle Eures Zählers der Reed-Kontakt geschlossen und zählt somit den internen Counter hoch, berechnet die entsprehende kWh und sendet diese Daten dann an eure Solaranzeige.
Da bei jeder Änderung die Werte gesendet werden, bekommt ihr hier auch jede Änderung in die Datenbank und nicht nur jede Minute einen Wert.

Sollten Fragen hierzu sein, versuche ich sie zu beantworten.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

solarfanenrico

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von solarfanenrico »

Hallo Timo,
ich hätte für euch ein bash-script, welches nicht auf eine x.user.config.php angewiesen ist.

Wo ein mqtt-Topic herkommt ist ja nebensächlich. Hierfür php-Abläufe zu nutzen ist resourcenraubend.
Oft ist sogar die Multi_Regler_Konfiguration bereits ausgelastet.
Mein script ist 2,2kB groß, läuft im Hintergrund, und wir beim Start des Pi über /etc/rc.local gestartet.
Falls Interesse besteht, habt ihr ja meine email.

Enrico

TeamO
Beiträge: 1166
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 26 Mal
Danksagung erhalten: 228 Mal

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von TeamO »

Hallo Enrico,

danke für Dein Angebot, aber das muss ich ablehnen. Grund ist, dass Du anscheinend die Funktionsweise hier nicht verstehst.
Eine (1.)user.config.php wird doch so oder so benötigt. Hier wird lediglich angegeben, welche MQTT-Daten zusätzlich empfangen und in die Datenbank geschrieben werden sollen. Dadurch werden wahrscheinlich sogar weniger Resourcen benötigt als wenn man Dein Script noch zusätzlich aufruft.
Der Zähler wurde in diesem Fall extra nicht als eigenständiges Gerät eingebaut, um keine zusätzliche Routine laufen lassen zu müssen und die Gaswerte nur als extra Measurement bei einem bestehenden Gerät zu hinterlegen.

Gruß
Timo
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

solarfanenrico

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von solarfanenrico »

Hallo Timo,
das es nicht als eigenständiges Gerät eingebaut ist, war nicht erkennbar.
Im übrigen liest man sowieso nur das, was man möchte und versteht.
Ich habe ja inzwischen ein gespaltenes Verhältnis zu php-Aufgaben und lagere davon so weit es geht in die shell aus.

Das macht mein System unanfälliger und resourcenschonender.
Deine Meinung, dass ich eine Funktionsweise nicht verstehe, ist eine sehr unbedachte Äußerung.
Falls Du dich kümmerst, wirst Du auch diese Antwort finden.
Es hängt davon ab, welche Anforderungen Sie an das System haben und welche Komponenten bereits verfügbar sind. Ein Cronjob oder ein PHP-Skript können MQTT-Topics abfragen und die Daten in eine Datenbank schreiben, aber ein Shell-Skript kann eine bessere Wahl sein, wenn Sie eine robuste und flexible Lösung benötigen, die in den Hintergrund läuft. Ein Shell-Skript kann auch einfacher zu automatisieren und anzupassen sein, wenn Sie Ihre Anforderungen ändern. Es ist jedoch wichtig, dass Sie die richtigen Werkzeuge für die Aufgabe auswählen, um eine zuverlässige und skalierbare Lösung zu erhalten.
Enrico

TeamO
Beiträge: 1166
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 26 Mal
Danksagung erhalten: 228 Mal

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von TeamO »

Hallo Enrico,
Im übrigen liest man sowieso nur das, was man möchte und versteht.
Das trifft es bei Dir wirklich zu.
Denn
das es nicht als eigenständiges Gerät eingebaut ist, war nicht erkennbar.
stimmt nicht. Die einzige Anpassung an der Solaranzeige ist der Teil in der (1.)user.config.php mit welchem die MQTT-Daten zu empfangen definiert werden.

Du hast nicht nur ein gespaltenes Verhältnis zu php-Aufgaben, sondern auch zur Solaranzeige. Sobald sich für Dich eine Möglichkeit ergibt, musst Du irgendetwas dagegen schreiben und auf Dein tolles System verweisen.
Bitte lass es einfach.
Deine Meinung, dass ich eine Funktionsweise nicht verstehe, ist eine sehr unbedachte Äußerung.
Ist sie anscheinend nicht, sonst hättest Du einfach die Finger still gehalten und nichts geschrieben. Denn Du hast die Funktionionsweise von dem hier beschriebenen nicht verstanden.

Und zu Deinem Zitat:
ein Shell-Skript kann eine bessere Wahl sein
Das muss es aber nicht.
Ein Shell-Skript kann auch einfacher zu automatisieren und anzupassen sein, wenn Sie Ihre Anforderungen ändern. Es ist jedoch wichtig, dass Sie die richtigen Werkzeuge für die Aufgabe auswählen, um eine zuverlässige und skalierbare Lösung zu erhalten.
Rot: Kann sein, muss aber auch wieder nicht
Grün: Das ist hier genau der Fall. Ulrich hat sich für PHP entschieden, da es für Ihn das richtige Werkzeug ist.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

solarfanenrico

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von solarfanenrico »

TeamO hat geschrieben:
Do 2. Feb 2023, 16:33
Hallo Enrico,
I Sobald sich für Dich eine Möglichkeit ergibt, musst Du irgendetwas dagegen schreiben und auf Dein tolles System verweisen.
Bitte lass es einfach.
Du bist wirklich "betriebsblind". Die Diskussion hast Du begonnen, indem Du miese Argumente vorbringst.

Wie kann ich etwas gegen euer Sytem schreiben, wenn ich einfach nur ein Angebot mache.

Bisher hast Du auch nur allgemeines bla,bla in der Diskussion von Dir gegeben. Könntest Du einmal etwas fachlich untermauern.

Ich würde gern begreifen wollen, aus welchem Grund zum Beispiel eine einfache Topic-Abfrage durch ein ganzes Arsenal von php-Abfragen laufen muß
Aufruf der auslesen.php , wr.php , evt. wr_math.php funktionen.inc.php laufen muss.

Der Gaszähler ist doch nur ein Reedkontakt der einen counter hochzählt. Immer nur + 1. und wieder +1.

Auch wenn ihr das so schön in unzählige php-Aufgaben verpackt, bleib es ein einfacher counter.

Dies kann man mit jedem beliebigen System zusätzlich in z.B. eine InfluxDB schreiben, auch am php vorbei, ohne es zu beeinflussen, ohne euch Schadenb zuzufügen.

Frage Dich mal, aus welchem Grund, z.B bei den "eigenenErweiterungen" ein komplettes Measurement in ein array verpackt wird, auch wenn man dort nur einen einelnen Wert für die Weiterverarbeitung benötigt.
Bitte gebrauche nicht das Argument, daß man später auch einen zweiten Wert nutzen kann.
Ich denke, dass Du mich erst verstehen lernst, wenn Du auch den Unsinn, von überflüssigen Aufgaben verstehst.

Andererseits hast Du es vevtl. bereits verstanden, nutzt jedoch die allgemeine Unsicherheit der User, um bezahlte Hilfestellung zu generieren.
Enrico

Benutzeravatar
Ulrich
Administrator
Beiträge: 5659
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 158 Mal
Danksagung erhalten: 897 Mal
Kontaktdaten:

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von Ulrich »

Typisch Enrico, er muss immer das letzte Wort haben. :lol:
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

solarfanenrico

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von solarfanenrico »

Ulrich hat geschrieben:
Do 2. Feb 2023, 17:41
Typisch Enrico, er muss immer das letzte Wort haben. :lol:
Hallo Ulrich,
das letzte Wort sollte eigentlich aus einer Antwort bestehen und nicht aus Fragen.
Lees Dir das mal durch, und antworte, anstelle von sog. Totschlagargumenten.


Enrico

WIMI
Beiträge: 1
Registriert: Mo 24. Okt 2022, 12:54

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von WIMI »

Hallo Timo,

hast du die Tasmota-Firmware hier angehängt?

Gruß
Mirco

TeamO
Beiträge: 1166
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 26 Mal
Danksagung erhalten: 228 Mal

Re: Anleitung: Gaszähler auslesen und Daten per MQTT in eine Datenbakn schreiben

Beitrag von TeamO »

Hallo Mirco,

hatte damals vergessen sie als Link in dem Text einzufügen, da eine ZIP nicht als Anhang funktionierte. ist jetzt im Text angepasst.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

Antworten

Zurück zu „Dokumente, Bauanleitungen und How To's“