<?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>SR04 &#8211; bubuxblog</title>
	<atom:link href="https://www.bubuxblog.de/tag/sr04/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bubuxblog.de</link>
	<description></description>
	<lastBuildDate>Sun, 14 Jun 2020 16:34:15 +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>Füllstandsmessung der Zisterne mittels ESP8266 (NodeMCU) und Ultraschallsensor</title>
		<link>https://www.bubuxblog.de/fuellstandmessung-der-zisterne-mittels-esp8266-nodemcu-und-ultraschallsensor/</link>
					<comments>https://www.bubuxblog.de/fuellstandmessung-der-zisterne-mittels-esp8266-nodemcu-und-ultraschallsensor/#comments</comments>
		
		<dc:creator><![CDATA[diefenbecker]]></dc:creator>
		<pubDate>Fri, 28 Dec 2018 13:55:13 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Eigenbau]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Haustechnik]]></category>
		<category><![CDATA[Heimautomatisierung]]></category>
		<category><![CDATA[Füllstand]]></category>
		<category><![CDATA[Messung]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[SR04]]></category>
		<category><![CDATA[Ultraschall]]></category>
		<category><![CDATA[Zisterne]]></category>
		<guid isPermaLink="false">http://blog.bubux.de/?p=1699</guid>

					<description><![CDATA[Update vom 14.06.2020 hier Heute nochmal ein Update bzw. eine vollständige Zusammenfassung zur Messung des Füllstands der Zisterne mittels Ultraschall. Ich habe den Sketch für den ESP8266 (den ich immer noch in Form eines NodeMCU betreibe) mal etwas aufgebohrt. Zu den alten Artikeln geht es hier und hier. Im folgenden werden alle notwendigen Schritte beschrieben [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><span class="has-inline-color has-luminous-vivid-orange-color">Update vom 14.06.2020 <a href="http://blog.bubux.de/neue-version-der-fuellstandsanzeige-zisterne/">hier</a></span></p>



<p>Heute nochmal ein Update bzw. eine vollständige Zusammenfassung zur Messung des Füllstands der Zisterne mittels Ultraschall. Ich habe den Sketch für den ESP8266 (den ich immer noch in Form eines NodeMCU betreibe) mal etwas aufgebohrt.</p>



<p>Zu den alten Artikeln geht es <a rel="noreferrer noopener" aria-label="hier  (opens in a new tab)" href="http://blog.bubux.de/homematik-zisterne/" target="_blank">hier </a>und <a rel="noreferrer noopener" aria-label="hier (opens in a new tab)" href="http://blog.bubux.de/fuellstandmessung-der-zisterne-2ter-ansatz/" target="_blank">hier</a>.</p>



<p>Im folgenden werden alle notwendigen Schritte beschrieben um die Firmware auf den ESP8266 zu flashen und den Sensor in Betrieb zu nehmen.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Benötigte Hardware</h2>



<p>Die benötigte Hardware besteht aus einem NodeMCU mit ESP8266 und einem HC-SR04 Ultraschallsensor. Die Beschaltung folgt weiter unten.</p>



<div class="wp-block-image"><figure class="alignleft is-resized"><img decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/20181228_125117-2-1024x643.jpg" alt="NodeMCU" class="wp-image-1755" width="256" height="161"/></figure></div>



<figure class="wp-block-image is-resized"><img decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/20181228_125052-1-1024x733.jpg" alt="HC-SR04 Ultraschallsensor" class="wp-image-1753" width="256" height="183"/></figure>



<p>Dann noch ein mindestens vieradriges Kabel und ein Gehäuse zur Unterbringung des Ultraschallsensors in der Zisterne z.B. eine kleine Aufputzdose aus dem Baumarkt.</p>



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



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Firmware installieren</h2>



<p>Zur Installation der Firmware auf dem ESP8266 muss zuerst die Arduino Software auf einem PC installiert werden. Diese ist für Linux, Windows und MAC unter <a href="https://www.arduino.cc/en/main/software">https://www.arduino.cc/en/main/software</a> verfügbar.</p>



<hr class="wp-block-separator"/>



<p>Um in der Arduino IDE den ESP8266 nutzen zu können, muss in den Einstellungen (Datei -&gt; Voreinstellungen) in das Feld „Zusätzliche Boardverwalter URLs“ folgende URL eingetragen werden: <em>http://arduino.esp8266.com/stable/package_esp8266com_index.json</em><br></p>



<hr class="wp-block-separator"/>



<p>Dann unter  „Werkzeuge -&gt; Board … -&gt; Boardverwalter&#8230;“ nach „esp8266“ suchen und „esp8266 by ESP8266 Community“ installieren. Hiermit werden u.a. die Tools zum flashen der Firmware auf den ESP8266 installiert.</p>



<hr class="wp-block-separator"/>



<p>Herunterladen der aktuellsten Firmware für die Füllstandmessung der Zisterne <a href="http://www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin">www.bubux.de/heimautomatisierung/ota/zisterne_aktuell.bin</a>.</p>



<hr class="wp-block-separator"/>



<p>Den NodeMCU mit dem Rechner verbinden. In der Arduino IDE unter  „<em>Werkzeuge -&gt; Port&#8220;</em> den COM-Port des NodeMCU ermitteln. Das Flashen der Firmware funktioniert leider nicht direkt aus der Arduino IDE heraus. Hierfür muss die Kommandozeile bemüht werden:</p>



<p><strong>Flashen des ESP8266 unter Windows</strong></p>



<p>Unter Windows dazu die Kommandozeile öffnen (cmd.exe) und dort den folgenden Befehl eingeben:</p>



<p> %USERPROFILE%\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.8\esptool.exe  -vv -cd nodemcu -cb 57600 -ca 0x00000 -cp <em>COMXY</em> -cf <em>Pfad_zur_Firmwaredatei</em></p>



<p>Wichtig: Die Versionsnummer des <em>esptool </em>kann ggf. abweichen, das Device hinter <em>-cp</em> (<em>COMxy</em>) muss entsprechend angepasst werden sowie der Pfad zur Firmwaredatei muss entsprechend angepasst werden.</p>



<p><strong>Flashen des ESP8266 unter Linux</strong></p>



<p>Auf der Kommandozeile folgenden Befehl ausführen:</p>



<p>~/.arduino15/packages/esp8266/tools/esptool/0.4.9/esptool -vv -cd nodemcu -cb 57600 -ca 0x00000 -cp <em>/dev/ttyxxxx</em> -cf&nbsp;<em>Pfad_zur_Firmwaredatei</em></p>



<p>Wichtig: Die Versionsnummer des esptool kann ggf. abweichen, das Device hinter <em>-cp</em> muss entsprechend angepasst werden sowie der Pfad zur Firmwaredatei muss entsprechend  angepasst  werden.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Anschluss des Sensors</h2>



<div class="wp-block-image"><figure class="alignleft is-resized"><img decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/08/zisterne_nodemcu.jpg" alt="" class="wp-image-1659" width="241" height="186" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/08/zisterne_nodemcu.jpg 963w, https://www.bubuxblog.de/wp-content/uploads/2018/08/zisterne_nodemcu-300x232.jpg 300w, https://www.bubuxblog.de/wp-content/uploads/2018/08/zisterne_nodemcu-768x593.jpg 768w" sizes="(max-width: 241px) 100vw, 241px" /></figure></div>



<p>Von HC-SR04 an NodeMCU:</p>



<p>Vcc an VU<br>Gnd an GND<br>Trig an D2<br>Echo an D1</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Inbetriebnahme</h2>



<p>Ist die Firmware auf den NodeMCU geflasht und der SR04-Ultraschallsensor angeschlossen, kann die Inbetriebnahme erfolgen. Dazu den Sensor mit Strom versorgen.</p>



<hr class="wp-block-separator"/>



<p>Der Sensor versucht sich mit einem konfigurierten WLAN zu verbinden. Funktioniert dies nicht (was bei der ersten Inbetriebnahme der Fall ist), erstellt der Sensor einen WLAN Accesspoint mit dem Namen  „<em>WLAN-Zisterne</em>&#8220; der z.B. im Smartphone gefunden werden sollte. Mit diesem WLAN verbinden.</p>



<hr class="wp-block-separator"/>



<p>Nun im Browser des verbundenen Gerätes die Adresse <em>http://192.168.4.1</em> aufrufen. Diese Adresse wird in der Regel auch in den Verbindungseinstellungen des verbundenen WLAN angezeigt und verlinkt. Es öffnet sich nun die Konfigurationsseite des Sensors.</p>



<hr class="wp-block-separator"/>



<p>Dort die SSID und das Passwort des Heim-WLAN eingeben und auf &#8222;Konfiguration speichern&#8220; klicken. Die weiteren Einstellungen können später erfolgen.</p>



<hr class="wp-block-separator"/>



<p>Der Sensor startet daraufhin neu und versucht sich mit dem Heim-WLAN zu verbinden. War dies erfolgreich ist der Accesspoint nicht mehr erreichbar und des Sensor sollte eine IP-Adresse im Netzwerk zugewiesen bekommen haben. Diese kann im Router nachgeschaut werden )in der Friztbox z.B. unter &#8222;<em>Heimnetz -&gt; Netzwerk</em>&#8222;).</p>



<hr class="wp-block-separator"/>



<p>Ist der Accespoint „<em>WLAN-Zisterne</em>&#8220; weiterhin sichbar, war die Verbindung mit den Heim-WLAN nicht erfolgreich. Dann die obigen Schritte erneut ausführen.<br></p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Betrieb</h2>



<p>Die Oberfläche des Sensor ist nun im Browser nach Eingabe der IP-Adresse verfügbar. Für den weiteren Betrieb müssen zuerst weitere Einstellungen vorgenommen werden. Dazu den Bereich &#8222;<em>Sonstiges</em>&#8220; aufklappen und auf &#8222;<em>Konfiguration&#8220;&nbsp;</em>klicken.</p>



<div class="wp-block-image"><figure class="alignleft is-resized"><img loading="lazy" decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/fuellstand_sensor_all.png" alt="" class="wp-image-1703" width="260" height="443" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_sensor_all.png 519w, https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_sensor_all-176x300.png 176w" sizes="auto, (max-width: 260px) 100vw, 260px" /></figure></div>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/konfig_sensor.png" alt="" class="wp-image-1705" width="260" height="443" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/12/konfig_sensor.png 519w, https://www.bubuxblog.de/wp-content/uploads/2018/12/konfig_sensor-176x300.png 176w" sizes="auto, (max-width: 260px) 100vw, 260px" /></figure>



<p><strong>Einstellungen des Sensors</strong></p>



<p>Unter <em>&#8222;Abstand Sensor/Boden&#8220;</em> muss der Abstand in Zentimeter zwischen Sensor und Boden der Zisterne angegeben werden. Unter <em>&#8222;Abstand Sensor/Max. Höhe&#8220;</em> muss der Abstand zwischen Sensor und Wasseroberfläche bei maximalen Wasserstand angebenen werden. Ist die Zisterne nicht voll, kann der Wert auch jederzeit korrigiert werden</p>



<hr class="wp-block-separator"/>



<p><strong>Daten an eigene API übergeben</strong></p>



<p>Die Daten des Sensors können an eine eigene Schnittstelle übergeben werden. Hierzu kann ein Server, Port und der Pfad angegeben werden. Die Sensordaten werden als Argumente in der URL angehangen. So kann z.B. ein PHP-Script auf dem Server aufgerufen werden welches die angehangenen Argumente empfängt und weiter verarbeitet (z.B. an FHEM übergibt oder in eine Datenbank schreibt.</p>



<p>Update 20.07.2019</p>



<p>Die URL für die eigene API kann mit zwei Variablen frei definiert werden. Dazu die Variablen &#8222;_abstand&#8220; und &#8222;_fuellstand&#8220; in einer beliebigen URL nutzen. Im NodeMCU werden die beiden Platzhalter durch die echten Werte ersetzt.</p>



<p>Zum Beispiel wird aus der konfigurierten URL:<br><em>/umwelt/zisterne_neu.php?abstand=_abstand&amp;fuellstand=_fuellstand</em><br>beim Aufruf der eigenen API dann:<br><em>/umwelt/zisterne_neu.php?abstand=29&amp;fuellstand=100.00&amp;vcc=2.75 </em></p>



<p>Hier ein Beispielscript welches das Schreiben der Werte in eine Textdatei und in eine MySQL-Datenbank vornimmt sowie die Übergabe der Werte an eine FHEM-Installation:</p>



<pre class="wp-block-code"><code>&lt;?php

$fuellstand=$_GET&#91;"fuellstand"];
$abstand=$_GET&#91;"abstand"];
$vcc=$_GET&#91;"vcc"];

//*************************
// Werte in Datei schreiben
//*************************
$datum = date("d.m.Y H:i");
$handle = fopen ('zisterne.txt', 'a');
fwrite ($handle, $datum.",".$fuellstand.",".$abstand."\n");
fclose ($handle);

//****************************
//Werte in Datenbank schreiben
//****************************
$servername = "localhost";
$username = "benutzer";
$password = "passwort";
$dbname = "dbname";

$connection = new mysqli($servername, $username, $password, $dbname);
if ($connection->connect_error) {
        die("Connection failed: " . $connection->connect_error);
}
$sql = "INSERT INTO zisterne (timestamp,fuellstand,spannung) VALUES (CURRENT_TIMESTAMP,$fuellstand,$vcc)";
if ($connection->query($sql) === TRUE) {
        //echo "INSERT war erfolgreich";
} else {
        echo "Error: " . $sql . "&lt;br>" . $connection->error;
}

//***********************
//Werte an FHEM übergeben
//***********************
$fhemhost = "192.168.178.1";
$fhemport = 7072;
$fhemsock = fsockopen($fhemhost, $fhemport, $errno, $errstr, 30);
$fhemcmd = "set ZisterneFuellstand ".$fuellstand."\r\nquit\r\n";
fwrite($fhemsock, $fhemcmd);
fclose($fhemsock);

$fhemsock = fsockopen($fhemhost, $fhemport, $errno, $errstr, 30);
$fhemcmd = "set ZisterneSpannung ".$vcc."\r\nquit\r\n";
fwrite($fhemsock, $fhemcmd);
fclose($fhemsock);
?></code></pre>



<hr class="wp-block-separator"/>



<p><strong>Daten an bubux.de übergeben</strong></p>



<p>Steht kein eigener Server zur Historisierung der Daten zur Verfügung, können die gemessenen Werte an bubux.de gesendet werden. Dort ist (aktuell) eine Auswertung des letzten 30 Tage verfügbar und wird graphisch dargestellt. Nach der Aktivierung mittels der Checkbox ist ein entsprechender Link auf der Startseite des Sensors verfügbar.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/fuellstand_web-e1546004129378.png" alt="" class="wp-image-1704" width="389" height="422" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_web-e1546004129378.png 518w, https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_web-e1546004129378-277x300.png 277w" sizes="auto, (max-width: 389px) 100vw, 389px" /></figure>



<p>Es werden der prozentuale Füllstand, die MAC-Adresse zur Zuordnung der Daten, die lokale IP des Sensors zur Verlinkung von der Webseite auf bubux.de zur Webseite des Sensors und die Version der Firmware übergeben.</p>



<hr class="wp-block-separator"/>



<p><strong>Startseite des Sensors</strong></p>



<p>Sind alle Einstellungen vorgenommen kann der Sensor genutzt werden. Auf der Startseite werden der prozentuale Füllstand und der aktuelle Abstand zwischen Sensor und Wasseroberfläche angezeigt.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="http://blog.bubux.de/wp-content/uploads/2018/12/fuellstand_sensor-e1546004197286.png" alt="" class="wp-image-1702" width="389" height="463" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_sensor-e1546004197286.png 518w, https://www.bubuxblog.de/wp-content/uploads/2018/12/fuellstand_sensor-e1546004197286-252x300.png 252w" sizes="auto, (max-width: 389px) 100vw, 389px" /></figure>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Einbau</h2>



<p>Da der Einbau je nach Zisterne individuell ist, will ich nicht viel Worte darüber verlieren. Nur soviel, das ich den Sensor in ein Baumarkt-Aufputzdose gepackt habe und mit Heißkleber &#8222;vergossen&#8220; haben. Harz wäre wahrscheinlich besser gewesen, aber der Sensor funktioniert bisher einwandfrei. Der Sensor hängt nach unten an einem Brett in der Zisterne. Der NodeMCU ist an ein etwa 6m langes Kabel angeschlossen und ist in einem Lagerräumchen untergebracht.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="http://blog.bubux.de/wp-content/uploads/2018/08/20180811_103325-1024x768.jpg" alt="" data-id="1653" data-link="http://blog.bubux.de/fuellstandmessung-der-zisterne-2ter-ansatz/20180811_103325/" class="wp-image-1653" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103325-1024x768.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103325-300x225.jpg 300w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103325-768x576.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="http://blog.bubux.de/wp-content/uploads/2018/08/20180811_103233-1024x768.jpg" alt="" data-id="1652" data-link="http://blog.bubux.de/fuellstandmessung-der-zisterne-2ter-ansatz/20180811_103233/" class="wp-image-1652" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103233-1024x768.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103233-300x225.jpg 300w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103233-768x576.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="768" src="http://blog.bubux.de/wp-content/uploads/2018/08/20180811_103143-1024x768.jpg" alt="" data-id="1651" data-link="http://blog.bubux.de/fuellstandmessung-der-zisterne-2ter-ansatz/20180811_103143/" class="wp-image-1651" srcset="https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103143-1024x768.jpg 1024w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103143-300x225.jpg 300w, https://www.bubuxblog.de/wp-content/uploads/2018/08/20180811_103143-768x576.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></li></ul></figure>



<p>Ich würde mich über Rückmeldungen (Fehler, Verbesserungswünsche, &#8230;) bzgl. der neuen Firmwareversion freuen. Todo wäre noch die Daten per JSON abrufbar zu machen und z.B. ein Plugin für FHEM zu bauen.</p>



<p>Viel Spaß beim basteln!</p>



<p>Chris<br></p>



<p><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bubuxblog.de/fuellstandmessung-der-zisterne-mittels-esp8266-nodemcu-und-ultraschallsensor/feed/</wfw:commentRss>
			<slash:comments>118</slash:comments>
		
		
			</item>
	</channel>
</rss>
