Kleines Update für den Gaszähler-Sensor

Kleines Update für den Gaszähler-Sensor

Mit der Version 1006 gibt es nun ein kleines Update für den ESP 8266 Gaszähler-Sensor. Was ich bis vor ein paar Tagen noch nicht wusste ist, dass die Gaszähler den Magneten nicht alle an der gleichen Nachkommastelle befestigt haben. Unser Zähler zählt die Impulse alle 0,01m³, Es gibt aber auch Geräte, die nur alle 0,1m³ einen Impuls zählen. Am Zähler sieht man das wie folgt im roten Kringel:

In den Einstellungen des Sensors gibt es daher nun die Möglichkeit das entsprechend zu konfigurieren zu können.

Zudem hatte ich noch in geistiger Umnachtung, den Namen/IP des Rechners, den Port und den Endpunkt zum Aufruf der eigenen API hart mit einer internen URL von mir verdrahtet. Immerhin hatte ich mir einen Kommentar im Quellcode geschrieben, dass das noch geändert werden muss. Hat nix geholfen, ist aber jetzt auch korrigiert.


Hier die aktuelle bin-Datei in der Version 1006:

http://www.bubux.de/heimautomatisierung/ota/gaszaehler_aktuell.bin


Für die Installation, weitere Erklärungen etc. gilt noch die Beschreibung aus dem ursprünglichen Artikel. Zudem der Artikel zum Auswerten der Impulse in Grafana.

Gruß Chris

Gasverbrauch graphisch darstellen

Im Artikel Gasverbrauch mit ESP8266 messen habe ich gezeigt, wie man den Gasverbrauch an einem Balgengaszähler mittels ESP8266 (NodeMCU) und Reed-Kontakt einfach ermitteln kann. In der Konfiguration der Software für den Mikrocontroller habe ich vorgesehen, die Daten an eine eigene API übergeben zu können. Die “Daten übergeben” ist hier etwas übertrieben, da eigentlich nichts übergeben wird. Die eigene Schnittstelle wird bei jedem erfassten Impuls aufgerufen, ohne das irgendwelche Werte mitgegeben werden (anders bei der Zisterne). Es werden also hier nur die Impulse gezählt.

Das Zählen der Impulse habe ich bei mir mit einer kleinen PHP-Seite umgesetzt, die bei jedem Aufruf einen neuen Eintrag in eine Datenbank schreibt. Der Mikrocontroller ruft bei mir dazu die Seite “GasMeterImpuls.php” auf, die auf einem Webserver liegt. Das PHP-Script macht dabei nicht anderes, als bei jedem Aufruf eine neue Zeile mit Zeitstempel und einer “1” für den Impuls in eine Tabelle einer MariaDB zu speichern.

<?php
//********************************************
//Impuls vom Gaszaehler in Datenbank schreiben
//********************************************

$servername = "";
$username = "";
$password = "";
$dbname = "";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
}

$sql="INSERT INTO gaszaehler (timestamp,zaehlerstand) VALUES (CURRENT_TIMESTAMP,1)";

if ($conn->query($sql) === TRUE) {
        //echo "Neuer Eintrag erzeugt";
} else {
        echo "Fehler: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

Die Tabelle in der MariaDB ist sehr einfach und besteht nur aus zwei Spalten. Einmal eine Spalte mit einem Zeitstempel und eine weitere Spalte für den Impuls. Der Spaltenname “zaehlerstand” ist evtl. etwas irreführend. Hier werden nur die einzelnen Impulse und kein Gesamtzählerstand gespeichert!

Hier das Create-Table für die Tabelle:

CREATE TABLE `gaszaehler` (
  `timestamp` datetime NOT NULL,
  `zaehlerstand` int(11) NOT NULL
) ENGINE=InnoDB

Heute würde ich anstelle der MariaDB eher eine auf Zeitreihen spezialisierte InfluxDB nehmen. InfluxDB arbeitet auch besser mit Grafana zusammen. Die Nutzung der MariaDB ist bei mir aber “historisch” bedingt ;-).

Die Daten aus der MariaDB stelle ich dann mit Grafana graphisch dar. Diagramm-Typ ist hier ein “Bar Chart”.

Im Grafana verwende ich dazu für die Bar-Charts die drei folgenden SQL-Statements, die über Summen-Funktionen aus den einzelnen Impulsen die entsprechenden Tages-, Monats- und Jahreswerte berechnen:

SELECT
  timestamp as "time",
  sum(zaehlerstand)/100 as 'jährlicher Gasverbrauch'
FROM gaszaehler
GROUP BY year(timestamp)
ORDER BY year(timestamp) ASC;
SELECT 
  timestamp as "time",
  sum(zaehlerstand)/100 as 'monatlicher Gasverbrauch'
FROM gaszaehler
WHERE year(timestamp) >= YEAR(CURRENT_DATE - INTERVAL 7 MONTH)
GROUP BY month(timestamp), year(timestamp)
ORDER BY month(timestamp)
SELECT 
  timestamp as "time",
  sum(zaehlerstand)/100 as 'täglicher Gasverbrauch'
FROM gaszaehler
WHERE timestamp >= DATE_SUB(NOW(),INTERVAL 7 DAY)
GROUP BY day(timestamp),month(timestamp), year(timestamp)
ORDER BY year(timestamp),month(timestamp),day(timestamp) asc

Die Beschriftung der X-Achse erfolgt über einen “Override” im Grafana, da die Beschriftung der X-Achse sonst eher unschön wird. Hier im Bild ist ein solcher Override z.B: für den täglichen Verbrauch dargestellt.

Anzeigen lasse ich mir die Diagramme von Grafana dann in der TabletUI von FHEM mittels iframe. Ja, ich nutze immer noch FHEM obwohl das sooo Old School ist und ich im Home Assistant doch alles per klicki klacki machen kann. Will ich aber nicht…

Mit TabletUI von FHEM schaut dann die Oberfläche mit den eingebundenen Diagrammen aus Grafana auch ganz nett aus.

Viel Spaß mit den Auswertungen.

Gruß Chris

Gasverbrauch mit ESP8266 messen

Gasverbrauch mit ESP8266 messen

Der Sommer ist vorbei und die Tage werden kürzer und ich sitze mal wieder öfter im Büro und habe Zeit und Lust zum Programmieren. Nachdem mein Odroid die Impulse des Reed am Gaszählers von heute auf morgen aus mir bisher unerfindlichen Gründen nicht mehr ausliest (Gaszähler am Odroid), habe ich den Sensor umgebaut auf einen ESP8266 (bei mir wieder in Form eines NodeMCU oder WEMOS D1 mini). Das Grundgerüst der Programmierung hatte ich durch den Zisternensensor ja schon und was den Zisternenfüllstand messen kann, kann auch den Gaszähler auslesen. Es ist ja auch aktuell eine gute Idee zumindest zu wissen was seine Gasheizung so treibt.

Ja, es gibt bereits allerhand Lösungen mit ESP Home, ESP Easy & Co. aber das gefällt mir alles nicht so besonders und bedingt immer eine zentrale Lösung wie FHEM, HA, Grafana etc. in der die Ergebnisse anzeigt und auswertet werden. Meine Lösung stellt die Daten aber, wie auch bei der Zisternenfüllstandsmessung, ohne zentrale Komponente direkt auf einer Webseite dar und bietet eine Anbindung an einen Heimautomatiserungs-Server. Dazu aber gleich mehr.

Mehr lesen
Version 1030 der Zisternenmessung jetzt auf github

Version 1030 der Zisternenmessung jetzt auf github

Ich bin endlich mal dazu gekommen und habe die ganzen Sourcen für die Zisternmessung mit dem ESP8266 mit einer ordentlichen readme auf github gestellt. Die Version 1030 ist dort auch als Release bereits für den NodeMCU und Wemos D1 vorkompiliert verfügbar.

Hier findet ihr das Github-Repository: https://github.com/diefenbecker/zisternenmessung

Aber auch bei den Funktionen gibt es Neuigkeiten. Die Version 1030 unterstützt jetzt einen schaltbaren Ausgang an D4 mit dem z.B. eine Pumpe über eine Relais-Platine angesteuert werden kann. Gesteuert wird das über zwei prozentuale Werte die in der Konfigurationsseite zu finden sind.

Hier die bin-Datei zum direkten Download:

http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin

Viel Spaß damit! Das kommende Wochende verspricht wettertechnisch ja den Einsatz der Zisterne…

Gruß

Chris

Zisternenfüllstandsmessung mit Time Of Flight-Sensor (die Zweite mit Version 1029)

Zisternenfüllstandsmessung mit Time Of Flight-Sensor (die Zweite mit Version 1029)

Es ist leider mal wieder lange nix passiert hier im Blog. Das letzte Jahr war nicht so prickelnd und ich hab meine Arbeit an meinen Bastelprojekten quasi eingestellt.

Offensichtlich waren aber die dunklen Wintermonate bei einigen Leuten Ansporn, um ihre Heimautomatisierung und Sensorik zu überarbeiten. Es gab viele Einträge im Blog und ich bekam viele Anfragen per Mail bzgl. des Time Of Flight-Sensor VL53L0X als möglicher Ersatz des Ultraschallsensors HC-SR04. Ich hatte ja auch bei der Version 1028 nach fleißigen Testern und Rückmeldungen gefragt. Vielen Dank euch dafür! Das hat mich auch motiviert mal wieder was an dieser Front zu tun.

Auch wenn mein Ultraschallsensor für seine 2,50€ seit 3 Jahren tadellos seine Arbeit in der Zisterne verrichtet und ich bisher keine Notwendigkeit sehe diesen zu ersetzen, habe ich mir einen weiteren Sensor zu Testzwecken beschafft und in die Software implementiert. Ergebnis ist die Version 1029 der Software.

Neben dem ToF VL53L0X kann nun auch der VL53L1X angeschlossen und genutzt werden. Zu den Unterschieden der beiden Sensoren findet man einiges im Internet. Welcher Sensor nun im jeweiligen Anwendungsfall die bessere Wahl ist, muss jeder selber herausfinden bzw. freue ich mich auch wieder auf Rückmeldungen im Blog oder per Mail bzgl. eurer Erfahrungen.

Mehr lesen
Zisternenfüllstandsmessung mit Time Of Flight-Sensor

Zisternenfüllstandsmessung mit Time Of Flight-Sensor

Mit Version 1028 der Software zur Messung des Zisternenfüllstandes, kommt neben dem HC-SR04 Ultraschallsensor noch ein zweiter alternativer zu nutzender Sensor dazu. Diesmal ein Time Of Flight (ToF) Laser-Entfernungsmesser vom Typ VL53L0XV2. Die erste Version der Software ist allerdings noch Beta und ich würde mich auf Rückmeldungen zu dem neuen Sensor freuen!

In der Webseite der Software kann in den Einstellungen zwischen den beiden Sensoren gewählt werden. Neu ist zudem noch der frei wählbare Name für den Sensor welcher auf der Sensor-Webseite oben links angezeigt wird. Hiermit kann man nun beim Einsatz mehrerer Sensoren in verschiedenen Zisternen unterscheiden oder auch einen Öltank-Füllstandssensor korrekt benennen.

Der ToF-Sensor besitzt eine I2C-Schnittstelle und wird an die gleichen PINs wie der Ultraschallsensor angeschlossen. Es geht aber nicht mit beiden Sensoren parallel, sondern nur der eine oder der andere!

Der ToF-Sensor wird wie folgt angeschlossen:

D1SCL
D2SDA
3,3-5VVCC
MasseGND

Die beiden übrigen Anschlüsse bleiben frei.

Hier gibt es die neue Version zum Download:
http://www.bubux.de/heimautomatisierung/ota/zisterne_1028.bin

Hier findet ihr die vorherigen Artikel zur Zisterne mit den grundlegenden Anleitungen und Anschlussschema.

Gruß
Chris

Update Füllstandsanzeige Zisterne v1026

Update Füllstandsanzeige Zisterne v1026

Nachdem ich das letzte Update (v1024) bzgl. der PINs etwas verbaselt hatte, hier nun ein neues Update für die Füllstandsanzeige der Zisterne. Zudem gibt es auf mehrfachen (berechtigten) Wunsch auch nochmal ein komplettes Schaubild für die Verdrahtung aller bisher genutzten Komponenten.

Hier gibt es die aktuelle Version zum Download:
http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin

Zur Installation etc. bitte wieder in die älteren Artikeln schauen!

Das Update enthält unter anderem:

  • DHT22-Temperatur-Sensor an D5 (statt des bereits durch das Display genutzten D6)
  • Darstellung der Werte auf der Webseite nicht mehr als TABLE sondern als DIV-Boxen damit es auf kleinen Displays auch besser passt
  • Bei Erstinstallation und Einrichtung des WLAN per Access Point wird nur die Konfiguration der WLAN-Daten angezeigt was hoffeltnlich das Problem mit dem “fehlenden” Speicher-Button beseitigt. Hier wäre ich über Erfahrungen dankbar!
  • TITLE-Tag eingebaut
  • ein paar Kleinigkeiten…
Mehr lesen

Update Füllstandsanzeige Zisterne v1024

Kurz vor Ende des alten Jahres nochmal ein Update für die Software zum Auslesen des Zisternenfüllstandes mittels ESP8266. Die Neuerungen in dieser Version sind folgende:

  • Eine weitere Zisternenbauform (liegender Zylinder)
  • Temperatur- und Luftfeuchterfassung mittels DHT22
  • Literanzahl, Temperatur und Luftfeuchte mit in die MQTT-Topics aufgenommen

Falls ein Temperatursensor angeschlossen und aktiviert ist, werden dessen Messwerte auf der Startseite angezeigt. Die Anzeige der Temperaturdaten wird alle 60 Sekunden abgefragt und zeigt daher im ersten Moment nach Neustart keine Werte an.

Aktuell kann als Temperatursensor ein DHT22 genutzt werden (weitere Sensoren sind in Arbeit). Aktiviert wird der Sensor in der Konfiguration.

Die neuen MQTT-Topics können ebenfalls in der Konfiguration hinterlegt werden.

Die neue Zisternenbauform ist auch in der Konfiguration zu finden. Die Berechnung funktioniert bei einer runden liegenden Zisterne. Eine ovale Form wird aktuell nicht unterstützt.

Hier gibt es die aktuelle Version zum Download:
http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin

Für den genauen Aufbau (Anschluss Sensor, Anschluss Diplay etc.) bitte die vorherigen Artikel beachten.

Dann euch noch einen guten Rutsch ins neue Jahr!

Gruß

Chris

Neue Version der Füllstandsanzeige Zisterne

Neue Version der Füllstandsanzeige Zisterne

Mal wieder lange nichts passiert hier im Blog…. jetzt fange ich einen Artikel schon wieder so an…

Ich hatte das Glück auch zu Beginn der Corona-Zeit relativ normal Arbeiten gehen zu können was bis heute so geblieben ist. Das mit dem “Glück” ist absolut ernst gemeint wenn ich da so einige gute Bekannte sehe die ganz schön zu knabbern hatten und immer noch haben.

Auffallend war aber, dass es in den letzten Monaten sehr viel mehr Anfragen bzgl. der Füllstandmessung der Zisterne mit dem ESP gab. Daher heute nochmal eine neue Version mit vielen größeren und kleineren Neuerungen.

Screenshot Hauptseite

Neuerungen in dieser Version (1022)

  • Länge des WLAN-Passwortes auf 63 Zeichen verlängert (max. bei WPA2)
  • Unterstützung unterschiedlicher Zisternenformen
  • Integration von Displays
  • Optionale tägliche Info per Pushover
  • Weiterer Topic (Abstand) für MQTT hinzugefügt
  • viele Kleinigkeiten…
Mehr lesen
Die Zisterne lernt MQTT

Die Zisterne lernt MQTT

Update vom 14.06.2020 hier

Mit der Version 1.017 bekommt der NodeMCU mit dem Sensor für die Füllstandsmessung der Zisterne (siehe auch die beiden anderen Artikel hier und hier) das MQTT-Protokoll beigebracht. Was MQTT ist, erfahrt ihr ausführlich hier in der Wikipedia oder hier mit weiterführenden Erklärungen wie das ganze z.B. in FHEM genutzt werden kann. Im Heise-Artikel wird MQTT auch sehr anschaulich erklärt.

Benötigt wird ein MQTT-Server (z.B. Mosquitto) dessen IP in die Konfiguration eingetragen werden muss. Optional kann ein Benutzername und ein Passwort genutzt werden. Dann noch das Topic unter dem der Sensor seinen Wert (Füllstand in %) an den MQTT-Broker veröffentlichen soll. Unter “Intervall” dann noch die Zeit in Sekunden zwischen den Veröffentlichungen angeben.

http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin

Gruß Chris