Projekt für ESP Arduino: Temperatur messen mit ESP8266 und aufzeichnen mit Server Nutzbar zum Messen für Außentemperaturen, Raumtemperaturen, Heizungstemperaturen... oder irgendwelche Temperaturen zwischen -55 und 125°C Design für WIFI Kit 8 (es gehen auch andere Module, nach Anpassungen) Futures: - Auslesen von bis zu 4 Temperatursensoren (DS18B20 oder ähnliche 1-wire Typen) - Web-Oberfläche zur Anzeige - Namen für Sendemodul und der bis zu 4 Sensoren einstellbar und speicherbar - Target-Server einstellbar und speicherbar, wohin die Daten gesendet werden - alle Einstellungen sind im internen Dateisystem gespeichert und nach Unterbrechung der Spannung wieder vorhanden - Daten senden an Server, als JSON oder URL-encoded alle 15 Minuten - Senden per HTTP oder HTTPS, allerdings ohne Zertifikatskontrolle - Abfrage vom Server als JSON, z.B. Home-Assistant, ioBroker oder ähnliche Server - Hintergrund Aktuallisierung der Web-Oberfläche per js - WiFi Einstellung per Handy, Tablet durch tzapu (Web-Oberfläche) - OTA Update, Firmware update vom Web-Server (Target-Server/firmware/version.bin) - Interne Uhr mit Zeitsyncronisation per NTP (um 23:05:10 Uhr) - OLED Anzeige bei Nutzung des WIFI Kit 8 Modul (bei Änderungen auch andere Displays möglich) - OLED Anzeige nicht star an einer Stelle, sondern übers Display wandern Nicht hier mit enthalten: - Script des Servers (Target-Server) - grafische Darstellung - script für OTA - Datenbank Speichermodul (mysql) Aufbau: - beim WIFI Kit 8 (oder andere Eingänge ohne pull-up Widerstand) muss zwischen D7 und +3,3V ein Widerstand 4,7k eingebaut werden - Sensor Pluspol (DS18B20) an +3,3V anschließen - Sensor Minuspol an Masse anschließen - 1-wire Leitung an D7 (WIFI Kit 8) anschließen (da wo der Widerstand angeschlossen ist) - Spannungsversorgung an den Stromanschluss (bei WIFI Kit 8 ein USB-Netzteil) ESP-Module sind sehr gut hier beschrieben: http://stefanfrings.de/esp8266/ Tja... ich denke, das war es erstmal ;-) Fragen gerne hier im Forum stellen. Es kann aber ein paar Tage dauern, bis zur Antwort. Gruß Peter
:
Bearbeitet durch User
Haste fein gemacht! Mir gefällt das sehr gut! Auch mal was anderes als die generalitäten Tasmotar oder EspEasy!
Wolle G. schrieb: > Für welche Anwendungen ist das Auslesen von 4x DS18B20 beispielsweise > gedacht? Na, das steht doch in der Beschreibung. Temperaturmessung von irgendetwas. Kann doch jeder selber entscheiden, was gemessen werden soll. Ich nutze das zurzeit für Außentemperaturen, Heizkessel, Heizkörper, Raumtemperatur oder einfach nur für eine Überwachung von irgendwelchen Temperaturen. Na klar kann man sich dafür auch ein fertiges Produkt kaufen... Hier geht es um individuelle Lösungen für Bastler und Nerds! Gruß Peter
Wolle G. schrieb: > Mal eine Frage: > Für welche Anwendungen ist das Auslesen von 4x DS18B20 beispielsweise > gedacht? Bei mir überwintern die empfindlichen Fische im isolierten Großtank im Gartenhaus. Da will ich sicher sein, dass die Temperatur im Wasser, im Gartenhaus, im Filter stimmen und die Heizung (inkl. Verbrauch) auch bei Frost ordnungsgemäß arbeitet. Allerdings baue ich dafür keine „Inseln“ und verwende eine Automatisierungslösung. Und auch die vorgeschlagenen fertigen Teile mit Tasmota und Co.
Nett! Warum nur 4 sensoren? Machst du die graphik im server?
Neumann schrieb: > Warum nur 4 sensoren? > Machst du die graphik im server? Ich denke 4 Sensoren sind erstmal ausreichend. Bei Erweiterung der Software sind bis zu 127 Sensoren möglich. Aber die Verkabelung könnte sich schwierig gestalten ;-) Die Grafik wird im Endgerät per js (Canvas) generiert. Der Server speichert nur die Daten inner SQL-Datenbank und liefert die an das Endgerät. Gruß Peter
so sieht das derzeit aus. Im Schuppen habe ich auch dazu noch ein Relaismodul, welches bei Unterschreitung eines Schwellwertes die Heizung einschaltet, um den Schuppen Frostfrei zu halten. Allerdings kostet das Energie... bei den jetzigen Strompreisen :-O Ich glaube... Videos sind hier nicht darstellbar :-O Grus Peter
:
Bearbeitet durch User
Peter R. schrieb: > Die Grafik wird im Endgerät per js (Canvas) generiert. Ich mach die graphik direkt im esp8266 als .svg. Interessiert mich immer wie andere das machen. Daten länger als 24h kann meins nicht. Das mit mqtt und DB auf einem 24/7 server ist mir zu kompliziert. Peter R. schrieb: > Videos sind hier nicht darstellbar Das rumgehopse soll einbrennen verhindern?
Neumann schrieb: > Das rumgehopse soll einbrennen verhindern? Ja ;-) OLED haben das Problem, das immer die gleiche Stelle zum nachlassen der Helligkeit von einzelnen Pixeln führen. Ob es was bringt, wird die Zukunft zeigen. Wenn man genug wartet, wird das Video auch angezeigt, bzw. kann man sich das runterladen. Gruß Peter
:
Bearbeitet durch User
Neumann schrieb: > Ich mach die graphik direkt im esp8266 als .svg. > Interessiert mich immer wie andere das machen. Daten länger als 24h kann > meins nicht. Das mit mqtt und DB auf einem 24/7 server ist mir zu > kompliziert. Ich mache das extern. Ich rufe mit einem Pico (aber auch über Ardunio programmiert, quasi das gleiche wie beim ESP) eine Webseite meines Servers auf und lasse dort die Daten schreiben:
1 | if ((WiFiMulti.run() == WL_CONNECTED)) { |
2 | HTTPClient http; |
3 | SendSTR = "http://10.10.10.14/todb.php?SenID=1&typ=1&name='humi'&value=" + Humi; |
4 | if (http.begin(SendSTR)) { // HTTP |
5 | int httpCode = http.GET(); |
6 | if (httpCode > 0) { |
7 | Serial.printf("[HTTP] GET... code: %d\n", httpCode); |
8 | if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { |
9 | String payload = http.getString(); |
10 | Serial.println(payload); |
11 | } |
12 | } else { |
13 | Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); |
14 | } |
15 | http.end(); |
16 | } else { |
17 | Serial.printf("[HTTP} Unable to connect\n"); |
18 | } |
19 | } |
auf dem Webserver liegt dann die todb.php
1 | <?php
|
2 | |
3 | $servername = "Jaja"; |
4 | $username = "Jaja"; |
5 | $password = "Jaja"; |
6 | $dbname = "Jaja"; |
7 | $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); |
8 | $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
9 | |
10 | if(isset($_GET['SenID']) && isset($_GET['typ']) && isset($_GET['name']) && isset($_GET['value'])) |
11 | {
|
12 | $stmt = $pdo->prepare(" |
13 | INSERT INTO mqtt_data (SenID, typ, name, value)
|
14 | VALUES (:SenID, :typ, :name, :value)
|
15 | "); |
16 | $stmt->bindParam(':SenID',$_GET['SenID']); |
17 | $stmt->bindParam(':typ',$_GET["typ"]); |
18 | $stmt->bindParam(':name',$_GET["name"]); |
19 | $stmt->bindParam(':value',$_GET["value"]); |
20 | $stmt->execute(); |
21 | echo "OK"; |
22 | } else { |
23 | echo "NOK"; |
24 | }
|
25 | ?>
|
Der Pico bekommt dann entweder OK oder NOK okay zurück, falls etwas mit der DB nicht stimmt. Die Daten kann ich dann mit Grafana oder völlig wurst was auswerten. P.s.: MQTT war mir auch völlig zu hoch und kompliziert für diese Anwendung.
Peter R. schrieb: > Wolle G. schrieb: >> Für welche Anwendungen ist das Auslesen von 4x DS18B20 beispielsweise >> gedacht? > > Na, das steht doch in der Beschreibung. Temperaturmessung von > irgendetwas. > Kann doch jeder selber entscheiden, was gemessen werden soll. Ich nutze > das zurzeit für Außentemperaturen, Heizkessel, Heizkörper, > Raumtemperatur oder einfach nur für eine Überwachung von irgendwelchen > Temperaturen. Na ja, und ich dachte, es wäre eine besondere Anwendung. Da hatte und habe ich vermutlich Probleme bei der Deutung des Textes. Z.b. „Design für WIFI Kit 8“ oder „Target-Server einstellbar..“ oder … Wenn ich es jetzt richtig verstanden habe, dann werden mittels eines ESP8266 4 Temperaturfühler DS18B20 ausgelesen und vermutlich die Werte abgespeichert. Oder was fehlt noch? Bei mir sieht es z.B. so aus (Abtastzeit 8s): (max. Speicherzeitraum beträgt ca. 1 Jahr bei 8 Kanälen, ist noch erweiterbar)
:
Bearbeitet durch User
Peter R. schrieb: > Ja ;-) > OLED haben das Problem, das immer die gleiche Stelle zum nachlassen der > Helligkeit von einzelnen Pixeln führen. Ob es was bringt, wird die > Zukunft zeigen. Man kann das OLED auch einfach ausschalten nun nur auf Knopfdruck kurz aktivieren. Zu 99,9% der Zeit interessiert sich keine Sau dafür. Die Zappelzahlen sind nerdig^3!
Falk B. schrieb: > Zu 99,9% der Zeit interessiert sich keine Sau dafür. Die > Zappelzahlen sind nerdig^3! Ist auch eine Lösung ;-) Es gibt auf dem Board 2 Taster (WiFi Kit 8). Einen für Reset -> der ist nicht geeignet, und einem an GPOI 0 -> der wird zurzeit zum Reset des WiFi genutzt, aber wenn man den länger als 5s gedrückt hält. Also alles darunter Schaltet das Display an. In der Loop-Routine ist die Tasterabfrage schon eingebaut: checkButton(); // set new SSID (WLAN Setup) Ok, kann man so machen. Mich stört das Gezappel aber nicht ;-) Gruß Peter
Neumann schrieb: > Ich mach die graphik direkt im esp8266 als .svg. > Interessiert mich immer wie andere das machen. Daten länger als 24h kann > meins nicht. Das mit mqtt und DB auf einem 24/7 server ist mir zu > kompliziert. Ich musste / durfte schon ein paar mal Daten vom ESP visualisieren. Da es sich meist um längere Messungen handelte und ich mit einfachen Webanwendungen ganz gut klarkomme, war mein weg immer: ESP ruft Webserver mit Messdaten als URL Parameter auf, Webserver speichert Daten (meist in SQLite), die Darstellung dann mittels irgendeiner JavaScript Bibliothek. Vorteile: ESP muss nur Daten senden und kann danach wieder schlafen, wenn vom Server keine Erfolgsmeldung als Antwort kommt, sendet er nochmal (nie implementiert, aber könnte man) Die Daten können vor der Darstellung auf dem Server bearbeitet werden, um zum Beispiel zusammengesetzte Messgrößen (Energie) darzustellen. Datenmenge spielt quasi keine Rolle. Nachteile: Irgenein Server (PHP, Python, Node) mit fester IP (oder Domain) ist von Nöten, genauso, wie ein wenig Erfahrung mit den verwendeten Sprachen. Hab irgendwo noch ein Repo auf github, falls das als Vorlage interessant sein könnte.
Ist das die richtung für meinen openwrt $15 xiaomi 4C router? uHTTPD, SQLite und php? Das ding hat keine sd-karte, müsste alles im ram speichern. NoGo?
:
Bearbeitet durch User
Neumann schrieb: > Ist das die richtung für meinen openwrt $15 xiaomi 4C router? > uHTTPD, SQLite und php? PHP hat einen eigenen kleinen Server und SQLite integriert. Das sollte auch auf deinem Router funktionieren, aber: > Das ding hat keine sd-karte, müsste alles im ram speichern. NoGo? Ja und warum? Domain mit webspace und PHP kostet dich nichts bis 1-2€ im Monat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.