Wenn nun zufällig beim Start der Gaszähler im Nulldurchgang ist, der Reed-Kontakt also geschlossen ist, liegt GPIO2 auf Masse. Dann startet der ESP nicht. Sollte das der Fall sein, muss man den Reed-Kontakt zum Start kurz abklemmen und erst nach dem Start wieder anklemmen. Die (rote) LED blinkt während dem WLAN-Verbindungsaufbau schnell. Mit einer ca. 1 sec langen Leuchtdauer wird der erfolgreiche Verbindungsaufbau angezeigt. Im Betrieb signalisiert die blinkende LED, dass der ESP8266 richtig funktioniert. Wärhend einem Zählimpuls (Nulldurchgang Gasuhr) leuchtet die LED dauerhaft. Beispiel einer Auswertung
Der oben dargestellte XML-Code des ESP8266 wird in meinem Fall von einem Raspberry Pi in festen Zeitabständen abgefragt. Analoge Wasseruhr elektrisch auslesen - Fingers elektrische Welt. Diese Abfrage erfolgt über ein Python-Script, das die relevanten Parameter aus dem XML-Code extrahiert und in eine MySQL-Tabellle einträgt. # --- get value with ID from xmldata
def GetxmlValue(root, ID_Name, ID):
value = '0'
for hit in ndall('. //*[@' + ID_Name + '="' + ID + '"]'):
value = ('value')
return value
# --- def GetxmlValue
Mit folgendem Aufruf kann dann zum Beispiel der aktuelle Wert des Gaszählers ausgelesen werden:
GasMeter = float(GetxmlValue(xmlroot, 'name', 'GasMeter'))
In der Variable xmlroot steht in diesem Fall der Inhalt des oben dargestellten XML-Codes, der über einen URL-Request vom ESP8266 abgeholt wird.
- Gaszähler auslesen ─ Niklas Menke
- Analoge Wasseruhr elektrisch auslesen - Fingers elektrische Welt
Gaszähler Auslesen ─ Niklas Menke
Es eignet sich hervorragend für IOT Daten. Bei meinem Flow speicher ich den aktuellen Gaswert und die Temperatur in InfluxDB. InfluxDB berechnet dann selbstständig den Timestamp. Dann kann ich einfach mit dem graphischen Analysetool Grafana mir die Daten aus dem InfluxDB holen und flexibel anzeigen lassen (siehe Diagramme in Titelbild). Unten rechts sehe ich den aktuellen und gestrigen Tagesverbrauch. Man sieht es in dem Bild schlecht da nur gelb angezeigt wird aber ich habe unterschiedliche Farben für Farberreiche eingestellt. Gaszähler auslesen ─ Niklas Menke. Von 0 - 7 qm ist grün. Dann von 7 - 14 qm is gelb und alles über 14 qm ist rot. Für eine dreiköpfige Familie ist der durchschnittliche Tagesverbrauch in etwa 7 qm, was in etwa maximal um den Faktor 2 schwankt im Sommer und Winter. Extrem cool ^^. Ganz unten links wird der Gesamtverbrauch des Gases angezeigt und darüber wie sich der Verbrauch über den Tag relativ ändert. Eine ziemlich coole Funktion von Grafana ist, dass der Zeitbereich komfortabel geändert werden kann.
Analoge Wasseruhr Elektrisch Auslesen - Fingers Elektrische Welt
Schon seit einiger Zeit war ich auf der Suche nach einer Möglichkeit, meine beiden eHZs automatisiert auslesen zu können. Ich wollte sehen, zu welchen Zeiten welche Verbräuche anfallen, wie oft die Wärmepumpe das Wasser erhitzt, wann sie das letzte Mal gelaufen ist und vieles mehr. Nach einer Internetrecherche ist mir sehr schnell das Volkszähler Projekt aufgefallen. Der ist ein freies Smart Meter im Selbstbau. Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Strom-, Wasser- und Gaskosten. Auf der Projektseite findet man Schritt-für-Schritt Anleitungen, die jeden mit ein wenig handwerklichem Geschick ans gewünschte Ziel bringen. Folgende Hardware habe ich bei diesem Projekt verwendet:
2x IR-Kopf
1x Raspberry Pi 3 (inkl. SD-Karte, Gehäuse und Netzteil)
1x Server, der die Daten vom Raspberry Pi entgegennimmt und in eine SQL Datenbank schreibt. Außerdem stellt er die WebUI zur Verfügung. Kleinmaterial (Kabelbinder, Stege etc. )
Die USB-Infrarotköpfe habe ich per eMail über bezogen.
So wird zusätzlich der TXE/! RXE-Pin des RS485-ICs von den Funktionen passend angesteuert. Der vollständige, angepasste Code kann am Ende dieser Seite heruntergeladen werden. Modbus Funktionen
Es werden folgende Funktionen unterstützt:
Read Holding Registers (FC03):
Mit dieser Funktion kann der aktuelle Zählerstand von dem Lesekopf abgefragt werden. Eine entsprechende Anfrage schaut so aus:
0x05 0x03 0x00 0x00 0x00 0x02 0xc5 0x8f
Dabei ist 0x05 die Geräteadresse. Ändert sich die Geräteadresse, dann ändert sich natürlich auch die Checksumme (Die letzten beiden Bytes)! Eine Antwort könnte so aussehen:
0x05 0x03 0x04 0x00 0x0f 0xc8 0x3b 0x99 0xe3
Der Zählerstand entspricht 0x000fc83b ≙ 1034299 *10 -2 m 3 = 10342, 99 m 3. Diagnostics: Return Query Data (FC08, 0x0000):
Hiermit wird die gesendete Anfrage von dem Lesekopf unverändert zurückgeschickt. Diese Funktion soll zum Testen der Verbindung dienen. Beispiel:
0x05 0x08 0x00 0x00 0x12 0x34 0xab 0xcd 0xf3 0xe7
Die Anfrage wird wie erwähnt ohne Änderung zurückgegeben:
Preset Multiple Registers (FC16):
Mit dieser Funktion kann ein Zählerstand voreingestellt werden.