<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gaszähler &#8211; bubuxblog</title>
	<atom:link href="https://www.bubuxblog.de/tag/gaszaehler/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bubuxblog.de</link>
	<description></description>
	<lastBuildDate>Sat, 09 Dec 2023 10:27:17 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Gasverbrauch mit ESP8266 messen</title>
		<link>https://www.bubuxblog.de/gasverbrauch-mit-esp8266-messen/</link>
					<comments>https://www.bubuxblog.de/gasverbrauch-mit-esp8266-messen/#comments</comments>
		
		<dc:creator><![CDATA[diefenbecker]]></dc:creator>
		<pubDate>Mon, 05 Dec 2022 16:49:00 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Energieeinsparung]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Heimautomatisierung]]></category>
		<category><![CDATA[Gasverbrauch]]></category>
		<category><![CDATA[Gaszähler]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[WEMOS]]></category>
		<guid isPermaLink="false">http://blog.bubux.de/?p=2070</guid>

					<description><![CDATA[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 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>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 (<a rel="noreferrer noopener" href="http://blog.bubux.de/odroid-c2-update-1-gas-und-wasserzaehler/" data-type="post" data-id="1299" target="_blank">Gaszähler am Odroid</a>), habe ich den Sensor umgebaut auf einen <strong>ESP8266 </strong>(bei mir wieder in Form eines <strong>NodeMCU</strong> oder <strong>WEMOS D1 mini</strong>). Das Grundgerüst der Programmierung hatte ich durch den <a rel="noreferrer noopener" href="http://blog.bubux.de/version-1030-der-zisternenmessung-jetzt-auf-github/" data-type="post" data-id="2045" target="_blank">Zisternensensor</a> 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.</p>



<p>Ja, es gibt bereits allerhand Lösungen mit ESP Home, ESP Easy &amp; 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.</p>



<span id="more-2070"></span>



<p></p>



<p class="has-drop-cap has-medium-font-size">Installation</p>



<p>Zum flashen der bin-Datei auf den Mikrocontroller kann das Programm &#8222;ESPEasy Flasher&#8220; genutzt werden. Dieses ist auf Github unter <a rel="noreferrer noopener" href="https://github.com/BattloXX/ESPEasyFlasher/releases/tag/1.1" target="_blank">https://github.com/BattloXX/ESPEasyFlasher/releases/tag/1.1</a> zu finden. Nach dem Download einfach die ZIP-Datei entpacken, die bin-Datei des Gaszählers in den gleichen Ordner kopieren, Mikrocontroller anschließen und <em>FlashESP8266.exe</em> starten. Nach Auswahl des richtigen COM-Ports und der Firmware startet der Flash-Prozess mit Klick auf &#8222;Flash&#8220;.</p>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/11/espeasy_screenshot.png"><img fetchpriority="high" decoding="async" width="400" height="241" src="http://blog.bubux.de/wp-content/uploads/2022/11/espeasy_screenshot.png" alt="" class="wp-image-2073" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/11/espeasy_screenshot.png 400w, https://www.bubuxblog.de/wp-content/uploads/2022/11/espeasy_screenshot-300x181.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a></figure>



<p>Der Reed-Kontakt muss an GND und D4 angeschlossen werden. Ich spare mir für die zwei Litzen eine Fritzing-Zeichnung. Einen Pull-Down Widerstand habe ich aktuell nicht eingebaut. Bisher war die Messung des Schaltimpuls wenn der Magnet seine Runden machte immer erfolgreich. Falls es ohne Widerstand doch Probleme gibt kann ich ggf. noch eine Zeichnung nachreichen. Als Reed verwende ich immer noch das gleiche Bauteil wie in der vorherigen Lösung am Odroid (<strong>mk 471 b</strong> z.B. von <a rel="noreferrer noopener" href="http://www.reichelt.de/index.html?ACTION=3;ARTICLE=27681;SEARCH=MK%20471B" target="_blank">Reichelt</a>).</p>



<hr class="wp-block-separator has-text-color has-vivid-red-color has-alpha-channel-opacity has-vivid-red-background-color has-background is-style-wide"/>



<p><strong>Hier die bin-Datei zum direkten Download:</strong></p>



<p><a href="http://www.bubux.de/heimautomatisierung/ota/gaszaehler_aktuell.bin" data-type="URL" data-id="http://www.bubux.de/heimautomatisierung/ota/gaszaehler_aktuell.bin" target="_blank" rel="noreferrer noopener">http://www.bubux.de/heimautomatisierung/ota/gaszaehler_aktuell.bin</a></p>



<hr class="wp-block-separator has-text-color has-vivid-red-color has-alpha-channel-opacity has-vivid-red-background-color has-background is-style-wide"/>



<p class="has-drop-cap has-medium-font-size">Ersteinrichtung und Anschluss des Reed-Kontaktes</p>



<p>Nach dem flashen startet der Sensor und baut ein eigenes WLAN-Netz mit dem Namen &#8222;WLAN-Gaszaehler&#8220; auf (Access Point &#8211; AP). Mit diesem muss man sich z.B. mit einem Smartphone verbinden. Bis es gefunden wird kann es einen Moment dauern &#8211; nicht ungeduldig werden. Nach dem Verbinden kann das Smartphone meckern weil kein Internet &#8222;hinter&#8220; diesem AP-WLAN verfügbar ist. Manchmal wechselt das Gerät dann wieder schnell zum &#8222;normalen&#8220; WLAN. Ist man aber schließlich im AP-WLAN des NodeMCUs eingebucht, ruft man in einem Webbrower die Adresse <strong>192.168.4.1</strong> auf. Es sollte eine Konfigurationsseite zur Eingabe der SSID und des WLAN-Passwortes erscheinen. Hier dann die Daten des eigenen WLANs eingeben und speichern. Der NodeMCU muss anschließend neu gestartet werden (Reset oder vom Strom trennen) und sollte sich beim neuen Start mit den eingegebenen Zugangsdaten in das WLAN einbuchen. Welche IP der NodeMCU bekommen hat, kann man in seinem Router nachschauen. Ab jetzt jetzt ist der Sensor unter der entsprechenden IP im Heimnetz erreichbar. Ist der Sensor nicht in das eingene WLAN eingebucht muss nochmal geprüft werden ob eventuell wieder ein AP aufgemacht wurde.</p>



<p class="has-drop-cap has-medium-font-size">Startseite und weitere Konfiguration</p>



<p>Auf der Startseite des Sensors werden der bisher gemessene Gesamtverbrauch im Kubikmeter (m³) und Kilowattstunden (kWh) angezeigt und eine Kachel die zu einer Seite mit Auswertungen führt. Die Berechnung des Verbrauchs in kWh erfolgt erst nach mindestens einem Impuls. Zudem werden einige technische Daten angezeigt die mit Klick auf den blauen Balken &#8222;Technische Daten&#8220; ausklappen. Unter &#8222;Sonstiges&#8220; klappt der Link zu der Konfigurationsseite und einem Button zum Restart des Sensors auf. Bei Impuls blinkt die eingebaute LED des NodeMCUs kurz auf.</p>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot1.png"><img decoding="async" width="939" height="784" src="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot1.png" alt="" class="wp-image-2074" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot1.png 939w, https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot1-300x250.png 300w, https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot1-768x641.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></a></figure>



<p>In der Konfiguration unter &#8222;Sensordaten&#8220; kann der auf der Startseite oben angezeigte Name definiert werden. Der Startwert muss vom Gaszähler abgelesen werden wobei hier die Angabe mit zwei Nachkommastellen erforderlich ist. An der dritten Nachkommastelle des Zählers ist in der Regel der Magnet befestigt dessen Impulse mit dem Reed erfasst werden.</p>



<p>Mithilfe der Werte &#8222;Brennwert&#8220; und &#8222;Zustandszahl&#8220; wird der Verbrauch in kWh berechnet. Diese Werte sind abhängig vom Gaslieferanten und in der Regel auf der Gasrechnung zu finden. Auch hier sind jeweils zwei Stellen hinter dem Komma einzugeben. Die Werte für Brennwert und Zustandszahl können sich mit der Zeit ändern und können in der Konfiguration entsprechend angepasst werden.</p>



<p>Der Wert Impulszähler sollte zu Beginn auf &#8222;0&#8220; gesetzt werden. Hier werden alle gemessenen Impulse hochgezählt, so das bei einem Neustart des Mikrocontrollers, nicht wieder der Startwert angepasst werden muss. Bei Bedarf kann dieser Wert aber auch im Betrieb geändert werden.</p>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot2.png"><img decoding="async" width="914" height="205" src="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot2.png" alt="" class="wp-image-2076" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot2.png 914w, https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot2-300x67.png 300w, https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot2-768x172.png 768w" sizes="(max-width: 914px) 100vw, 914px" /></a></figure>



<p>Wie auch bei der Messung des Zisternenfüllstandes sind auch hier die aktuellen Werte auch per JSON abrufbar:</p>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot3.png"><img loading="lazy" decoding="async" width="471" height="165" src="http://blog.bubux.de/wp-content/uploads/2022/11/gaszaehler_screenshot3.png" alt="" class="wp-image-2078" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot3.png 471w, https://www.bubuxblog.de/wp-content/uploads/2022/11/gaszaehler_screenshot3-300x105.png 300w" sizes="auto, (max-width: 471px) 100vw, 471px" /></a></figure>



<p>Auch können die Daten an einen MQTT-Broker gesendet und/oder an eine eigene API welche die Daten per HTTP-Post entgegen nimmt übermittelt werden.</p>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_mqtt.png"><img loading="lazy" decoding="async" width="732" height="220" src="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_mqtt.png" alt="" class="wp-image-2087" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_mqtt.png 732w, https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_mqtt-300x90.png 300w" sizes="auto, (max-width: 732px) 100vw, 732px" /></a></figure>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_eigenapi.png"><img loading="lazy" decoding="async" width="733" height="175" src="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_eigenapi.png" alt="" class="wp-image-2088" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_eigenapi.png 733w, https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_eigenapi-300x72.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></a></figure>



<p class="has-drop-cap">Auswertung auf bubux.de</p>



<p>Falls eine Datenübermittlung an die bubux-WebAPI aktiviert wurde, erscheint auf der Startseite eine Kachel mit einem Graphensymbol. Bei Klick auf diese Kachel öffnet sich eine weitere Webseite welche die übermittelten Daten darstellt. Eine Kachel für den Tagesverbrauch, eine Kachel für den Monatsverbrauch und eine graphische Darstellung der letzten 7 Wochentage. Diese Seite ist noch im Aufbau. Hier werden mindestens noch ein Graph für den Monatlichen- und den Jahresverbrauch dazu kommen. Die dafür gespeicherten Daten sind die lokale IP-Adresse des Sensors (damit der Klick auf den Link für den Rückweg zur lokalen Sensorseite funktioniert), die MAC-Adresse des Sensors zur Zuordnung der Daten sowie die Impulse. Beim Aufruf der Seite werden Brennwert, Zustandszahl und aktueller Zählerstand übermittelt. Diese Daten werden aber nicht gespeichert.</p>



<figure class="wp-block-image size-large"><a href="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_api.png"><img loading="lazy" decoding="async" width="1024" height="55" src="http://blog.bubux.de/wp-content/uploads/2022/12/gaszaehler_api-1024x55.png" alt="" class="wp-image-2089" srcset="https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_api-1024x55.png 1024w, https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_api-300x16.png 300w, https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_api-768x41.png 768w, https://www.bubuxblog.de/wp-content/uploads/2022/12/gaszaehler_api.png 1444w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-full"><a href="http://blog.bubux.de/wp-content/uploads/2023/01/gas_auswertung.png"><img loading="lazy" decoding="async" width="532" height="705" src="http://blog.bubux.de/wp-content/uploads/2023/01/gas_auswertung.png" alt="" class="wp-image-2097" srcset="https://www.bubuxblog.de/wp-content/uploads/2023/01/gas_auswertung.png 532w, https://www.bubuxblog.de/wp-content/uploads/2023/01/gas_auswertung-226x300.png 226w" sizes="auto, (max-width: 532px) 100vw, 532px" /></a></figure>



<p>So, bleibt mir nur noch viel Spaß zu wünschen mit dem neuen Sensor. Kommentare sind gerne willkommen.</p>



<p>Eine Möglichkeit zum Logging der Daten mittels MariaDB und Darstellung mittels Grafana habe ich in einem <a href="http://blog.bubux.de/gasverbrauch-graphisch-darstellen/" data-type="post" data-id="2162">weiteren Artikel </a>beschrieben.</p>



<p>Gruß Chris</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bubuxblog.de/gasverbrauch-mit-esp8266-messen/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Webseite zur Darstellung der Sensordaten</title>
		<link>https://www.bubuxblog.de/webseite-zur-darstellung-der-sensordaten/</link>
					<comments>https://www.bubuxblog.de/webseite-zur-darstellung-der-sensordaten/#respond</comments>
		
		<dc:creator><![CDATA[diefenbecker]]></dc:creator>
		<pubDate>Mon, 09 Apr 2018 18:08:04 +0000</pubDate>
				<category><![CDATA[Haustechnik]]></category>
		<category><![CDATA[Heimautomatisierung]]></category>
		<category><![CDATA[Odroid]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Gaszähler]]></category>
		<category><![CDATA[Hausautomatisierung]]></category>
		<category><![CDATA[Homeautomation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sensordaten anzeigen]]></category>
		<category><![CDATA[Webseite]]></category>
		<guid isPermaLink="false">http://blog.bubux.de/?p=1526</guid>

					<description><![CDATA[Da ich in der letzten Zeit sehr oft bezüglich der Erstellung einer Webseite zur Darstellung der Sensordaten (Heizung, Strom, Wasser, Gas, &#8230;) angesprochen wurde, habe ich mich entschlossen eine abgespeckte Variante meiner internen Webseite zu veröffentlichen. Die Webseite nutzt eine ältere Version der Metro UI-Oberfläche als &#8222;Framework&#8220; zur Darstellung der HTML-Seiten, sowie pChart zum Zeichnen [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Da ich in der letzten Zeit sehr oft bezüglich der Erstellung einer Webseite zur Darstellung der Sensordaten (Heizung, Strom, Wasser, Gas, &#8230;) angesprochen wurde, habe ich mich entschlossen eine abgespeckte Variante meiner internen Webseite zu veröffentlichen. Die Webseite nutzt eine ältere Version der <a href="https://metroui.org.ua/" target="_blank" rel="noopener">Metro UI-Oberfläche</a> als &#8222;Framework&#8220; zur Darstellung der HTML-Seiten, sowie <a href="http://www.pchart.net/" target="_blank" rel="noopener">pChart</a> zum Zeichnen der Graphen in den Detailansichten.</p>
<p>Meine Implementierung ist schon etwas älter und auch mit der Zeit gewachsen. Da es sich bei dieser Webseite um ein recht überschaubares Projekt handelt und ich mit dem Ergebnis zufrieden bin, habe ich mir nie die Mühe gemacht die Seite generischer zu gestalten. Daher muss bei nötigen Anpassungen der Code direkt geändert werden und es gibt auch keine Trennung von HTML und PHP, keine durchgehende allumfassende Fehlerbehandlung, evtl. &#8222;unschönes&#8220; HTML usw.</p>
<p>Der Code soll als <strong>Anregung und Grundlage</strong> für eine eigene Seite dienen&#8230;nicht mehr, nicht weniger. Wem´s ausreicht kann es natürlich auch 1:1 übernehmen. Positiv an meiner Lösung finde ich immer noch die Flexibilität in den Auswertungen die direkt auf der Datenbank mittels SQL ausgeführt werden können.</p>
<h3>Die Startseite</h3>
<p><a href="http://blog.bubux.de/wp-content/uploads/2018/04/index.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1537 size-large" src="http://blog.bubux.de/wp-content/uploads/2018/04/index-1024x538.png" alt="Übersicht Webseite Sensordaten" width="768" height="404" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/04/index-1024x538.png 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/04/index-300x158.png 300w, https://www.bubuxblog.de/wp-content/uploads/2018/04/index-768x404.png 768w, https://www.bubuxblog.de/wp-content/uploads/2018/04/index.png 1397w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p>Die Startseite wird mittels &#8222;Meta-Refresh&#8220; alle 180 Sekunden neu geladen und dient der Übersicht der wichtigsten Sensordaten. Mit Klick auf die (verlinkten) Boxen gelangt man jeweils zu einer detaillierteren Übersicht der Sensordaten. In der Übersicht werden keine komplizierten Datenbankauswertungen gemacht. Hier werden die Snapshot-Tabellen mit den aktuellen Werten ausgelesen und einige SQL-Aggregat-Funktionen genutzt. Das ging auch auf einem alten Raspi einigermaßen schnell. Das hängt natürlich von den Tabellengrößen in den Datenbanken ab. Da bei mir einige Tabellen mit den Jahren relativ groß geworden sind (~500k Zeilen), bin ich irgendwann auf einen <a href="http://blog.bubux.de/odroid-c2-vs-raspberry-pi-2/">Odroid</a> umgestiegen.</p>
<p><span id="more-1526"></span></p>
<h3>Übersicht der Außentemperaturen</h3>
<p><a href="http://blog.bubux.de/wp-content/uploads/2018/04/aussentemperatur.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1541 size-large" src="http://blog.bubux.de/wp-content/uploads/2018/04/aussentemperatur-1024x606.png" alt="AUssentemperatur Webseite" width="768" height="455" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/04/aussentemperatur-1024x606.png 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/04/aussentemperatur-300x178.png 300w, https://www.bubuxblog.de/wp-content/uploads/2018/04/aussentemperatur-768x455.png 768w, https://www.bubuxblog.de/wp-content/uploads/2018/04/aussentemperatur.png 1395w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p>Die Übersicht der Außentemperatur wird aus den Daten des Außenfühlers der Viessmann-Heizung generiert. Die Übersichten für anderen Sensoren sehen analog dieser Ansicht aus.</p>
<p>&nbsp;</p>
<h3>Die Übersicht der Heizungsdaten</h3>
<p><a href="http://blog.bubux.de/wp-content/uploads/2018/04/heizung.png"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-1543" src="http://blog.bubux.de/wp-content/uploads/2018/04/heizung-1024x610.png" alt="" width="768" height="458" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/04/heizung-1024x610.png 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/04/heizung-300x179.png 300w, https://www.bubuxblog.de/wp-content/uploads/2018/04/heizung-768x458.png 768w, https://www.bubuxblog.de/wp-content/uploads/2018/04/heizung.png 1393w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p>Die Übersicht der Heizungsdaten stellt verschiedene Daten dar die mittels <a href="https://github.com/openv/openv/wiki">openv</a> aus der Heizung ausgelesen werden. Aktuell lese ich mit openv nur aus und setze keine Werte (z.B. Sommer-/Winterumschaltung).</p>
<p>&nbsp;</p>
<h3>Voraussetzung und Grundlagen</h3>
<p>Details zum Auslesen der verschiedenen Sensordaten findet ihr in vorangegangenen Artikeln hier im Blog:</p>
<ul>
<li><a href="http://blog.bubux.de/viessmann-heizung-auslesen/">Viessmann Heizung mittels openv auslesen</a></li>
<li><a href="http://blog.bubux.de/m-bus-wasserzaehler/">M-Bus Wasserzähler auslesen</a></li>
<li><a href="http://blog.bubux.de/gaszaehler-auslesen/">Gaszähler mit Reed auslesen</a></li>
<li><a href="http://blog.bubux.de/raspberry-pi-ehz-auslesen/">Stromzähler mit optischem Lesekopf auslesen</a></li>
</ul>
<p>Die Webseite liest die Datenbanken des Wasserzähler, des Gaszählers, der Heizung und des Stromzählers aus. Folgend nochmal eine Übersicht der Tabellenstrukturen welche auch in den Artikel oben zu finden sind. In MySQL (bzw. MariaDB) habe ich zwei Datenbanken angelegt (vito, haus) mit verschiedenen Tabellen.</p>
<h4>Die Tabellen der Datenbank &#8222;vito&#8220;:</h4>
<pre class=""> CREATE TABLE `brenner` (
 `timestamp` datetime NOT NULL,
 `brennerstarts` float NOT NULL,
 `brennerstunden` float NOT NULL,
 `brennerstatus` int(11) NOT NULL,
 KEY `timestamp` (`timestamp`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `snapshot` (
 `timestamp` datetime NOT NULL,
 `brennerstatus` float NOT NULL,
 `brennerstarts` float NOT NULL,
 `brennerstunden` float NOT NULL,
 `solarstunden` float NOT NULL,
 `solarleistung` float NOT NULL,
 `aussentemperatur` float NOT NULL,
 `warmwasser` float NOT NULL,
 `speicher_unten` float NOT NULL,
 `kollektor` float NOT NULL,
 `kesseltemperatur` float NOT NULL,
 `vorlauftemperaturM2` float NOT NULL,
 `vorlaufsolltemperaturM2` float NOT NULL,
 `raumsolltemperaturM1` float NOT NULL,
 `raumsolltemperaturM2` float NOT NULL,
 `raumsolltemperaturredM1` float NOT NULL,
 `raumsolltemperaturredM2` float NOT NULL,
 `warmwassersoll` float NOT NULL,
 `kesseltemperatursoll` float NOT NULL,
 `pumpestatusM1` float NOT NULL,
 `pumpestatusSP` float NOT NULL,
 `pumpestatussolar` float NOT NULL,
 `statusstoerung` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
 `systemzeit` varchar(100) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
 `error0` varchar(500) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
 `BetriebArt` varchar(20) NOT NULL,
 `BetriebArtM2` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `solar` (
 `timestamp` datetime NOT NULL,
 `solarstunden` float NOT NULL,
 `solarleistung` float NOT NULL,
 `solarpumpe` int(11) NOT NULL,
 KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `temperaturen` (
 `timestamp` datetime NOT NULL,
 `aussentemperatur` float NOT NULL,
 `warmwasser` float NOT NULL,
 `speicher_unten` float NOT NULL,
 `kollektor` float NOT NULL,
 `vorlaufsolltemperaturM2` float NOT NULL,
 KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<h3>&nbsp;</h3>
<h4>Die Tabellen der Datenbank &#8222;haus&#8220;:</h4>
<pre class="">CREATE TABLE `gaszaehler` (
 `timestamp` datetime NOT NULL,
 `zaehlerstand` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `stromzaehler` (
 `timestamp` datetime NOT NULL,
 `public_key` varchar(100) NOT NULL,
 `zaehlerstand` float DEFAULT NULL,
 `active_power` float NOT NULL,
 KEY `strom_index` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `strom_snapshot` (
 `zeitstempel` date NOT NULL,
 `zaehlerstand` float NOT NULL,
 `wirkleistung` float NOT NULL,
 `aktuelles_jahr` float NOT NULL,
 `aktueller_monat` float NOT NULL,
 `aktueller_tag` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `wasserzaehler` (
 `timestamp` datetime NOT NULL,
 `zaehlerid` int(11) NOT NULL,
 `zaehlerstand` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<pre class="">CREATE TABLE `wasser_snapshot` (
 `timestamp` date NOT NULL,
 `zaehlerstand` float NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre>
<h3>&nbsp;</h3>
<h3>&#8222;Installation&#8220;</h3>
<p>Einen funktionierenden Webserver (z.B. Apache) mit PHP und eine MySQL oder MariaDB vorausgesetzt, muss das unten verlinkte tar.gz in ein beliebiges Verzeichnis im www-Verzeichnis des Webservers entpackt werden.</p>
<p>Das funktioniert mit&nbsp;</p>
<pre class="toolbar:2 nums:false lang:default decode:true ">tar -xvzf webseite_sensordaten.tar.gz</pre>
<h3>&nbsp;</h3>
<h3>Konfiguration</h3>
<p>In der Datei config.inc müssen ein paar wenige Einstellungen vorgenommen werden. Folgende Einstellungen werden für die Verbindung zur Datenbank benötigt:</p>
<pre class="toolbar:2 nums:false lang:default decode:true">$mysqlhost="&lt;hostname&gt;";
$mysqluser="&lt;username&gt;";
$mysqlpwd="&lt;passwort&gt;";
$mysqldbvito="&lt;name_der_db_mit_den_vito_tabellen&gt;";
$mysqldbhaus="&lt;name_der_db_mit_den_haus_tabellen&gt;";</pre>
<p>Die folgenden Werte dienen der Auswertung des Gaszählers. Da dieser per Reed-Kontakt ausgelesen keinen Gesamtstand ausgibt und nur die einzelnen Impulse zählt, kann hier ein Startwert definiert. Auch die Werte zur Umrechnung von m³ in KW werden hier eingetragen. Diese Informationen gibt es beim Gaslieferanten.</p>
<p>Zudem kann noch definiert werden wie viel Tage in der Übersicht angezeigt werden sollen. Entsprechender Werte gibt es auch für den Wasserzähler und den Stromzähler.</p>
<pre class="toolbar:2 nums:false lang:default decode:true">$gas_startwert="2311650";
$brennwert_gas=10.097;
$zustandszahl_gas=0.9309;
$anz_tage_gas=7;

$anz_tage_wasser=7;

$anz_tage_strom=7;</pre>
<p>&nbsp;</p>
<p><strong>Wichtiger und letzter Schritt:</strong> Das Verzeichnis &#8222;tmp&#8220; muss schreibbar für den Webserver sein. Dort werden die generierten Graphen als PNG gespeichert. Das war es schon!</p>
<p><strong>Fehlt nur noch das Paket mit den PHP-Seiten: <a href="http://blog.bubux.de/wp-content/uploads/2018/04/webseite_sensordaten.tar.gz">webseite_sensordaten.tar.gz</a></strong></p>
<p>&nbsp;</p>
<p>Viel Spaß mit</p>
<p>Chris</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bubuxblog.de/webseite-zur-darstellung-der-sensordaten/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gaszähler auslesen &#8211; Darstellung der Daten</title>
		<link>https://www.bubuxblog.de/gaszaehler/</link>
					<comments>https://www.bubuxblog.de/gaszaehler/#respond</comments>
		
		<dc:creator><![CDATA[diefenbecker]]></dc:creator>
		<pubDate>Tue, 19 Jan 2016 20:46:35 +0000</pubDate>
				<category><![CDATA[Heimautomatisierung]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Gaszähler]]></category>
		<category><![CDATA[Hausautomatisierung]]></category>
		<category><![CDATA[Homeautomation]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://blog.bubux.de/?p=1035</guid>

					<description><![CDATA[Jedes Jahr im Januar ist es wieder soweit &#8211; die Daten des Gaszähler müssen an den Lieferanten übermittelt werden. Dabei ist mir aufgefallen, das meine Darstellung der Daten aus der MySQL-Datenbank noch verbesserungswürdig sind. So hatte ich z.B. nur den Verbrauch der letzten 7 Tage wie im Artikel http://blog.bubux.de/gaszaehler-auslesen/ beschrieben ausgewertet. Da fehlt doch noch [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Jedes Jahr im Januar ist es wieder soweit &#8211; die Daten des Gaszähler müssen an den Lieferanten übermittelt werden. Dabei ist mir aufgefallen, das meine Darstellung der Daten aus der MySQL-Datenbank noch verbesserungswürdig sind. So hatte ich z.B. nur den Verbrauch der letzten 7 Tage wie im Artikel <a href="http://blog.bubux.de/gaszaehler-auslesen/" target="_blank">http://blog.bubux.de/gaszaehler-auslesen/</a> beschrieben ausgewertet. Da fehlt doch noch eine monatliche und jährliche Übersicht!</p>
<p>Nochmal zur Erinnerung: Ich speichere jede gezählte Umdrehung des Gaszählers als separate Zeile in einer MySQL-Datenbank.</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2016/01/gaszaehler_mysql.png" rel="attachment wp-att-1042"><img loading="lazy" decoding="async" class="alignnone wp-image-1042 size-full" src="http://blog.bubux.de/wp-content/uploads/2016/01/gaszaehler_mysql.png" alt="Gaszaehler mySQL Datenbank" width="625" height="161" srcset="https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_mysql.png 625w, https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_mysql-300x77.png 300w" sizes="auto, (max-width: 625px) 100vw, 625px" /></a></p>
<p>Daher müssen die einzelnen Zeilen nach den jeweiligen Kriterien gruppiert und dann das Ergebnis der Spalte &#8222;zaehlerstand&#8220; summiert werden. Beim <a href="http://blog.bubux.de/raspberry-pi-ehz-auslesen/" target="_blank">Stromzähler </a> wird hingegen immer der aktuelle Gesamtverbrauch in die Datenbank geschrieben und aus den Datenbankeinträgen für die Tages-, Monats- und Jahresverbräuche die Differenz gebildet um entsprechende Auswertungen zu erzeugen.</p>
<h3>Auswertung der letzten 12 Monate</h3>
<p>Folgendes SQL-Statement ermittelt aus den einzelnen Datenbankeinträgen die Summe gruppiert nach Jahr und Monat. Dabei werden die letzten 12 Monate mittels &#8222;INTERVAL&#8220; betrachtet.</p>
<pre class="">SELECT
     CASE DATE_FORMAT(timestamp,'%m')
          WHEN 1 THEN 'Jan'
          WHEN 2 THEN 'Feb'
          WHEN 3 THEN 'Mär'
          WHEN 4 THEN 'Apr'
          WHEN 5 THEN 'Mai'
          WHEN 6 THEN 'Jun'
          WHEN 7 THEN 'Jul'
          WHEN 8 THEN 'Aug'
          WHEN 9 THEN 'Sep'
          WHEN 10 THEN 'Okt'
          WHEN 11 THEN 'Nov'
          WHEN 12 THEN 'Dez'
     ELSE 'fehler' END as Monat,
     year(timestamp), sum(zaehlerstand)
FROM gaszaehler WHERE year(timestamp) >= YEAR(CURRENT_DATE - INTERVAL 12 MONTH) AND  month(timestamp) >= month(CURRENT_DATE - INTERVAL 12 MONTH)
GROUP BY month(timestamp), year(timestamp) ORDER BY timestamp;
</pre>
<h3>Auswertung der Jahresverbräuche</h3>
<p>Fehlt noch der jährliche Verbrauch. Das SQL-Statement ist einfacher aufgebaut als vorheriges und summiert den Verbrauch pro Jahr für alle in der Datenbank enthaltenen Daten an.</p>
<pre class="">SELECT 
     year(timestamp), sum(zaehlerstand) 
FROM gaszaehler
GROUP BY year(timestamp) ORDER BY timestamp;
</pre>
<p>Im Ergebnis sieht das Ganze dann wie folgt aus. Die Grafik zur Anzeige der Daten der letzten 12 Monate erstelle ich wie in <a href="http://blog.bubux.de/viessmann-heizung-auslesen/" target="_blank">diesem Artikel</a> beschrieben</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2016/01/gaszaehler_uebersicht.png" rel="attachment wp-att-1036"><img loading="lazy" decoding="async" class="alignnone wp-image-1036 size-large" src="http://blog.bubux.de/wp-content/uploads/2016/01/gaszaehler_uebersicht-1024x661.png" alt="Gaszaehler Uebersicht" width="768" height="496" srcset="https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_uebersicht-1024x661.png 1024w, https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_uebersicht-300x194.png 300w, https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_uebersicht-768x495.png 768w, https://www.bubuxblog.de/wp-content/uploads/2016/01/gaszaehler_uebersicht.png 1217w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p>Viel Spaß bei der Kontrolle des Gasverbrauchs <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Gruß</p>
<p>Chris</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bubuxblog.de/gaszaehler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gaszähler auslesen</title>
		<link>https://www.bubuxblog.de/gaszaehler-auslesen/</link>
					<comments>https://www.bubuxblog.de/gaszaehler-auslesen/#comments</comments>
		
		<dc:creator><![CDATA[diefenbecker]]></dc:creator>
		<pubDate>Wed, 12 Nov 2014 20:48:44 +0000</pubDate>
				<category><![CDATA[Haustechnik]]></category>
		<category><![CDATA[Heimautomatisierung]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Gaszähler]]></category>
		<category><![CDATA[Hausautomatisierung]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Raspberry PI]]></category>
		<category><![CDATA[RaspberryPI]]></category>
		<guid isPermaLink="false">http://blog.bubux.de/?p=600</guid>

					<description><![CDATA[Nachdem meine Versuche den M-BUS Wärmemengen- und Wasserzähler auszulesen vorerst beendet sind und ich auf den bestellten M-BUS-Pegelwandler warte, habe ich mich dem Auslesen des Gaszählers gewidmet. Das sollte erfolgsversprechender sein&#8230; Als ich dann endlich den vor langer Zeit bestellten Reed-Kontakt mk 471 b (z.B. bei Reichelt) wieder gefunden habe, konnte es losgehen. Der Gaszähler [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Nachdem meine Versuche den M-BUS Wärmemengen- und Wasserzähler auszulesen vorerst beendet sind und ich auf den bestellten M-BUS-Pegelwandler warte, habe ich mich dem Auslesen des Gaszählers gewidmet. Das sollte erfolgsversprechender sein&#8230;</p>
<p>Als ich dann endlich den vor langer Zeit bestellten Reed-Kontakt <strong>mk 471 b</strong> (z.B. bei <a title="Reichelt" href="http://www.reichelt.de/index.html?ACTION=3;ARTICLE=27681;SEARCH=MK%20471B" target="_blank">Reichelt</a>) wieder gefunden habe, konnte es losgehen.</p>
<p>Der Gaszähler hat an der letzten Stelle des Zählwerkes bei der &#8222;0&#8220; einen Magneten wodurch der Reedkontakt bei jeder vollen Umdrehung einmal geschlossen wird. Diese Impulse gilt es mit einem Raspberry über einen GPIO zu zählen.</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7735.jpg"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-603" src="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7735-1024x707.jpg" alt="IMG_7735" width="604" height="417" srcset="https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7735-1024x707.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7735-300x207.jpg 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></a></p>
<p>Den Reedkontakt habe ich natürlich wieder professionell mit Klebeband fixiert&#8230;hält!</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7734.jpg"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-602" src="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7734-1024x682.jpg" alt="IMG_7734" width="604" height="402" srcset="https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7734-1024x682.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7734-300x200.jpg 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></a></p>
<p>Angeschlossen ist der Reedkontakt über eine Zwillingslitze direkt an einen GPIO und Ground des Raspberry PI. Pull-Up braucht es keinen. Dieser wird per Software aktiviert.</p>
<p>Den GPIO lese ich mit einem Python-Script aus welches in einer Endlosschleife ausgeführt wird und den GPIO (im Beispiel Pin &#8222;21&#8220;) jede Sekunde abfragt. Sekundenweise sollte reichen, da ich nicht hoffe das unser Gaszähler so schnell läuft. Immer wenn der Reed geschlossen wird, wird eine &#8222;1&#8220; und der Zeitstempel in die Spalten &#8222;timestamp&#8220; und &#8222;zaehlerstand&#8220; einer MySQL-Tabelle geschrieben. Das passiert immer nur beim Wechsel des Reed von &#8222;Offen&#8220; nach &#8222;Geschlossen&#8220;. Sollte der Zähler genau mit dem Magnet am Reed stehen bleiben, passiert nichts.</p>
<p>[cc lang=&#8220;python&#8220;]</p>
<p>import RPi.GPIO as GPIO<br />
import time<br />
import MySQLdb</p>
<p>GPIO.setmode(GPIO.BOARD)<br />
GPIO.setwarnings(False)</p>
<p># GPIO definieren<br />
REED_gas = 21<br />
# definierten GPIO als Eingang setzen<br />
GPIO.setup(REED_gas, GPIO.IN, pull_up_down=GPIO.PUD_UP)</p>
<p>status_alt=1<br />
while True:<br />
    status_aktuell = GPIO.input(REED_gas)<br />
    # REEDKONTAKT geoeffnet<br />
    if status_aktuell == 1:<br />
        #print &#8222;Kontakt offen&#8220;<br />
        status_alt=GPIO.input(REED_gas)<br />
        # REEDKONTAKT geschlossen<br />
    elif status_aktuell==0:<br />
        #print &#8222;Kontakt geschlossen&#8220;<br />
        if status_alt!=status_aktuell:<br />
            status_alt=GPIO.input(REED_gas)<br />
            # Datenbankverbindung<br />
            db = MySQLdb.connect(host=&#8220;<host>&#8222;, user=&#8220;<benutzer>&#8222;, passwd=&#8220;<passwort>&#8222;, db=&#8220;<datenbank>&#8222;)<br />
            # Impuls in Datenbank eintragen<br />
            cursor = db.cursor()<br />
            cursor.execute(&#8222;&#8220;&#8220;INSERT INTO gaszaehler (timestamp,zaehlerstand) VALUES (CURRENT_TIMESTAMP,1)&#8220;&#8220;&#8220;)<br />
            db.commit()<br />
            cursor.close()<br />
    time.sleep(1)<br />
[/cc]</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7737.jpg"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-604" src="http://blog.bubux.de/wp-content/uploads/2014/11/IMG_7737-1024x682.jpg" alt="IMG_7737" width="604" height="402" srcset="https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7737-1024x682.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2014/11/IMG_7737-300x200.jpg 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></a></p>
<p>Da das Python-Script sich ab und an mal verabschiedet, starte ich es per Cronjob wieder neu falls der Prozess nicht mehr vorhanden ist. Ich sollte vielleicht lieber das Problem im Python-Script suchen und das ein oder andere Try&#038;Catch einbauen, aber es geht auch erstmal so&#8230;</p>
<pre>#!/bin/sh
if ps -ef | grep -v grep | grep gaszaehler.py ; then
&nbsp;&nbsp;&nbsp; exit 0
else
&nbsp;&nbsp;&nbsp; sudo python /usr/local/bin/gaszaehler.py &
&nbsp;&nbsp; &nbsp;logger "gaszaehler.py neu gestartet"
&nbsp;&nbsp;&nbsp; exit 0
fi</pre>
<p>Zur Auswertung benutze ich dann folgende SQL-Querys:</p>
<pre>
SELECT sum(zaehlerstand) FROM gaszaehler
</pre>
<p>Hiermit werden alle gespeicherten &#8222;Ticks&#8220; summiert. Dazu muss noch ein Startwert addiert werden da der Gaszähler ja schon eine zeitlang lief.<br />
Dieser Startwert muss ggf. ab und an mal korrigiert werden falls der Raspi mal einen Umlauf des Zählers nicht mitbekommt weil z.B. der unwahrscheinliche Fall eintritt, dass das Klebeband nicht gehalten hat oder wahrscheinlicher, das Python-Script bzw. der ganze Raspi nicht mehr läuft. Den Startwert gebe ich als eine Zahl <strong>inkl.</strong> der drei Nachkommastellen an und addiere das Ergebnis der SQL-Query dazu. Um die richtige &#8222;Einheit&#8220; kümmere ich mich in der Ausgabe auf der PHP-Seite mit folgender PHP-Zeile:</p>
<p>[cc lang=&#8220;php&#8220;]<br />
$sql = &#8222;SELECT sum(zaehlerstand) FROM gaszaehler&#8220;;<br />
$query = mysql_query($sql) or die(&#8222;Anfrage nicht erfolgreich&#8220;);<br />
while ($wert = mysql_fetch_array($query)) {<br />
	$gesamtwert=($wert[0]*10)+$gas_startwert;<br />
}<br />
$gesamtwert=substr($gesamtwert,0,-3).&#8220;.&#8220;.substr($gesamtwert,-3,2);<br />
[/cc]</p>
<p>Der Faktor 10 muss hier beachtet werden, da ja nur alle 0,01m&sup3; Impulse gezählt werden und ich den Startwert mit allen drei Nachkommastellen angegeben habe. Die zweite Zeile setzt das Komma in der Ausgabe an die richtige Stelle.</p>
<p>Eine tägliche Auswertung funktioniert z.B. mit folgender SQL-Query:</p>
<pre>
SELECT CASE DATE_FORMAT(timestamp,'%w')
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;    WHEN 0 THEN 'Sonntag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 1 THEN 'Montag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 2 THEN 'Dienstag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 3 THEN 'Mittwoch'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 4 THEN 'Donnerstag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 5 THEN 'Freitag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; WHEN 6 THEN 'Samstag'
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ELSE 'fehler' END,
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sum(zaehlerstand)
FROM gaszaehler
WHERE DATE(timestamp)>=DATE_SUB(NOW(),INTERVAL 7 DAY)
GROUP BY day(timestamp)
ORDER BY timestamp
</pre>
<p>Auch hier bekommt man den korrekten Wert in m&sup3; durch einfache Kommaverschieberei in der Ausgabe. Den Faktor 10 benötigt man bei der täglichen Auswertung nicht:</p>
<p>[cc lang=&#8220;php&#8220;]substr(($wert[1]),0,-2).&#8220;.&#8220;.substr(($wert[1]),-2)[/cc]</p>
<p>In der Webseite sieht das folgendermaßen aus:</p>
<p><a href="http://blog.bubux.de/wp-content/uploads/2014/11/gaszaehler_screenshot.png"><img loading="lazy" decoding="async" src="http://blog.bubux.de/wp-content/uploads/2014/11/gaszaehler_screenshot.png" alt="gaszaehler_screenshot" width="553" height="185" class="alignnone size-full wp-image-623" srcset="https://www.bubuxblog.de/wp-content/uploads/2014/11/gaszaehler_screenshot.png 553w, https://www.bubuxblog.de/wp-content/uploads/2014/11/gaszaehler_screenshot-300x100.png 300w" sizes="auto, (max-width: 553px) 100vw, 553px" /></a></p>
<p>Das alles läuft erst drei Tage und es gibt bestimmt noch Verbesserungspotential aber ein Anfang ist gemacht.</p>
<p>Gruß<br />
Chris</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bubuxblog.de/gaszaehler-auslesen/feed/</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
	</channel>
</rss>
