Benötigt wird:
- D1 Mini NodeMcu
- Reed-Kontakt
- Tasmota-Firmware mit freigeschaltetem Script und WebDisplay
- Tasmota-Script zum "Berechnen" und senden der Daten
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) - 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";
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
#
Code: Alles auswählen
;count=5890178 ;auskommentieren zum Setzen der aktuellen Werte
;lastMonth=58668.24
"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)
Code: Alles auswählen
=>Publish solaranzeige/anzeige/1/cm %var1%
=>Publish solaranzeige/anzeige/1/kWh %var2%
.
.
.
=>Publish solaranzeige/anzeige/1/Change 1
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.