ESP8266 als Webserver, Temperaturanzeige mit einem DHT11
Вставка
- Опубліковано 22 сер 2024
- Ich zeige euch eine Temperaturanzeige auf einem ESP8266.
Auf dem ESP läuft dann eine Website mit einem Webserver.
Diese kann dann einfach aus dem lokalem Netzwerk aufgerufen werden.
Wer es bequem mag kann den ESP im Router umbenennen und kann diesen dann über einen Hostname aufrufen statt sich die IP-Adresse merken zu müssen.
Wenn euch das Video gefällt, gebt einen 👍 hoch
und lasst ein 🅰🅱🅾 und 💬 da.
Viel Spaß beim anschauen 😊
🔵══ Downloads:
Sketch:
🔗 drive.google.c...
Bastelplan:
🔗 drive.google.c...
🔵══ Bauteile:
ESP:
🔗 amzn.to/3eQBwqz *
Temperatursensor:
🔗 amzn.to/3w3vV62 *
Netzteil:
🔗 amzn.to/3yf8Gba *
* Als Amazon-Partner verdiene ich an qualifizierten Verkäufen
🔵══ Mein verwendetes Equipment:
📹: Sony Vlog-Kamera ZV-1 / amzn.to/380XrrB *
🎬: DaVinci Resolve 16
Absolut Super und informativ. Weiter so.
... und Danke
Die Videobeschreibung ist für manch anderen Autor ein Vorbild.
Super. Hat sofort funktioniert. Danke.
Das freut mich 👍
Super erklärt und hat auch gut funktioniert. Was jetzt noch super wäre , wenn die Luftfeuchtigkeit auch angezeigt werden würde. Bekomme ich alleine leider noch nicht hin .
Ich habe es noch nicht versucht, aber ich verstehe den Code und was passiert. Ich habe kurz recherchiert und werde es als nächstes testen. Wie funktioniert es?
Wenn Du Dir den Code ansiehst, findest Du eine Angabe dht.readTemperature(). Hier wird der Temperaturwert vom Sensor abgefragt. Wenn Du nun nach dem Text in der Webseite suchst, wirst Du feststellen, dass der Wertabruf und der Webseiten-Code getrennt sind. Eigentlich könnte man den Wert (mehr oder weniger) direkt in die Webseite schreiben. Warum also so umständlich?
Würde man den Wert direkt in die Webseite schreiben, dann müsste man jedes mal die Webseite neu laden, um einen aktuellen Wert zu erhalten. Der Code trennt daher die Webseite und sendet den Temperaturwert extra auf einer eigenen Route /TempWeb (würde ich persönlich einfach nur /temp nennen! Übrigens ist das Format text/plain, nicht text/plane). Diese Route kannst Du im Browser öffnen und nachsehen. Nun muss die Webseite diesen Wert aber auch abfragen! Deshalb gibt es im Webseiten-Code ein eigenes Code-Script (JavaScript), das in einer Schleife (setInterval) ständig den Wert abruft (XHR request in getData-Funktion).
Anmerkend ist hier zu sagen, der Code ist veraltet und unnötig kompliziert UND es sind EINIGE Fehler drin. Nix für ungut. Es ist ein nettes Beispiel und einer Anfängerübung und es funktioniert. Es macht den Job. Aber von Best Practice ist es halt weit weg. Statt innerHTML sollte innerText verwendet werden, Tabellen sollten nicht für die Formatierung und Ausrichtung verwendet werden, für den Body sollte statt margin ein padding verwendet werden, da margin den ganzen Inhaltsbereich und nicht nur den Inhalt versetzt und außerhalb vom Body gibt es ja auch keine Inhalte von denen man Abstand halten müsste, der Inhalt kann aber auch zentriert (und reduziert) werden, dann sieht es noch besser aus, usw. Ich habe den Code auf einem anderen Gerät und der Übertrag ist mir zu mühsam. Aber nur um das klar zu verdeutlichen, die gesamte Funktion getData kann durch folgende Zeile ersetzt werden (Achtung: nicht getestet, also Tippfehler möglich):
fetch('/TempWeb').then(res => res.text()).then(data => TempWert.innerText = data + '°C').catch(() => {});
Diese Zeile ruft /TempWeb ab, extrahiert das Ergebnis als Text und schreibt den Wert dann samt Post-Fix °C in das TempWert-Span. Catch ist theoretisch nicht notwendig, aber fängt Fehler ab. Anmerkung: das ist eine aktuelle Variante. Mit älteren Browsern sind möglicherweise andere Schreibweise oder andere Optionen nötig. Das hier wird aber heute normalerweise von diversen Browsern unterstützt. Das nur als kleine Zwischenangabe. Der ganze Code ist unnötig kompliziert und es sind einige Fehler drin. Wie gesagt, rein sachlich und nicht böse gemeint.
Wie funktioniert das also jetzt mit Feuchtigkeit? Auf dieselbe Art wie Temperatur. Das macht es aber deutlich komplizierter, als einfach nur einen zweiten Wert abzufragen. Zum Beispiel gibt es zwei Optionen, den Wert zu übertragen. Nämlich zusammen mit dem Temperaturwert. In dem Fall würde man möglicherweise auch das Format ändern wollen (JSON statt Text). Nicht unbedingt nötig, aber Geschmackssache, da die Werte irgendwie getrennt werden müssen. Oder alternativ könnte man sich ein Beispiel am Code nehmen, eine zweite Route für die Feuchtigkeit anlegen und eine zweite Abfrage erstellen. Egal wie man es macht, man braucht auch den entsprechenden Code in der Webseite, um den Wert einzutragen. Und auch bei der zweiten Variante gibt es Haken. Zwei Anfragen sind nicht nur aufwendiger und eine höhere Belastung für Geräte und Netzwerk. Anfragen bzw. deren Antworten können auch verzögert sein. Für eine Übung nicht wirklich ein Problem. Aber in Produktion ist die Frage, ob man die Werte nicht lieber zeitgleich aktualisieren möchte.
Der Abruf des Feuchtigkeitswertes selbst funktioniert aber eigentlich ebenfalls so wie der des Temperaturwertes mit:
dht.readHumidity()
Jedenfalls ist es ein wenig komplexer, als einfach nur den Wert abzurufen und einzutragen. Es müssen der Server und der Abruf in der Webseite geändert werden und die Webseite braucht einen Bereich, wo der Wert dann vom Code-Script in der Webseite eingetragen wird. Ich mag eigentlich langsam nicht mehr und habe noch ein paar Sachen zu erledigen. Aber vielleicht probier ich es noch aus und werf den Code auf GitHub und poste den Link oder so. Mal sehen.
Hmm... GitHub-Sachen erstellen hat deutlich länger gedauert als die Code-Modifikation :(
github.com/ArchI3Chris/ESP8266-DHT11-Both-Values
Ist nicht perfekt. Aber beinhaltet Temperatur und Feuchtigkeit, fetch statt XHR und noch ein paar kleine Änderung in HTML und CSS.
@Chris, danke für den Support, scheint ja jemand vom Fach zusein ;)
@@Bastelbruder Danke für die Blumen, aber bin nicht wirklich vom Fach. Das Video ist für Anfänger und als solcher bin ich hier her gekommen. Die Sachen im Video sind nachvollziehbar, einigermaßen einfach umzusetzen und funktionieren. Hatte die Teile rum liegen und Interesse, aber außer in den letzten Tagen eben 2,3x, bisher nie was damit gemacht. Dass ein Fachmann gerade dieses Video öffnet und hier Fragen beantwortet, ist unwahrscheinlich. Aber wenn man einen Stromkreis versteht und zu Hause ein wLAN verwendet, versteht ein Anfänger Web-Entwickler (HTML, CSS, JavaScript) die Code-Logik. Ist nicht wirklich viel dabei. Aus meiner Sicht kann man die Fragen nach wenigen Grundlagen-Videos hier auf UA-cam recht leicht/schnell beantworten. ;) (die richtigen Videos muss man halt finden!)
sehr gut
Diese Videobeschreibung kann ich gut für meine Projekten nutzen. Allerdings werde ich ein DHT 22 verbauen weil er mehr Präzision bietet.
Sehr gut
Sehr interessant 👍
Hallo Video ist ganz gut. Vermisse nur Einbindung Webserver in der FritzBox, da wird einiges vorausgesetzt. Jetzt zu meinem Problem ich erhalte folgende Fehlermeldung: error: 'D1' was not declared in this scope; did you mean 'y1'?
14 | #define DHTPin D1
note: in expansion of macro 'DHTPin'
17 | DHT dht(DHTPin, DHTTYPE);
Was fehlt? Ich habe ein ESP8266 D1mini und als Temperatursensor den DS18B20
Der kann halt mit dem Pin D1 nichts anfangen, hast du > LOLIN(WEMOS) D1 R2 & mini ausgewählt ? Das sollte eigentlich D1 erkennen....
funktioniert das auch mit dem DHT 22
Moin, sehr schönes Video. Was muss denn tun wenn ich die Wert über Wochen speichern möchte und dann später, z.B. als CSV Datei, auf den PC kopieren will?
Ein SD-Card Modul integrieren, dafür muss der Sketch aber angepasst werden. Da wollte ich auch mal einige Projekte umsetzen... wenn das Thema Zeit nicht wäre ...
Sehr gut 👍
Zufällig das Thema interessiert mich sehr! Es ist auch sehr gut erklärt. ABER: Deine Wortzahl pro/Minute überfordert meine Ü60 Ohr-Hirn Verarbeitungsgeschwindigkeit und luftholen muss man doch auch noch. Nur mit Untertiteln für mich nutzbar , die kann man dann anhalten.
Entschuldigung :( Ich glaube ich bin schon zu TikTok geschädigt 😂
Aber eigentlich reicht der Sketch und mein Bastelplan aus zum nachbauen, ist alles zum Download in der Videobeschreibung verlinkt.
Gut erklärtes Video, vielleicht an der ein oder anderen Stelle etwas zu schnell gesprochen.
Dein Video ESP8266 als Webserver ist Super, wie würde der Code aussehen, wenn ich zusätzlich noch einen Wert ausgeben möchte ? Habe deinen Code schon etwas erweitert, bekomme es aber irgentwie nicht hin, habe immer die selben Werte in 2 Feldern ?
Vielen Dank für dieses tolle Video. Würde gerne einen wasserdichten Tempfühler anschließen um die Wassertemleratur zu überwachen. Kannst du einen wasserdichten, mit Deinem Projekt kompatiblen, Tempfühler empfehlen? VG
Hallo Christian,
ich habe noch das hier im Angebot: ua-cam.com/video/tF7w9xnOz3A/v-deo.html
Da habe ich schonmal ein Tutorial hochgeladen mit einem DS18B20 Edelstahl Temperatur Sensor allerdings mit einem Arduino. Ich selbst habe mir daheim eine Temperatur Anzeige mit OLED Display und dem gleichen Sensor gebastelt. Aktuell arbeite ich noch an einem Projekt im Zusammenhang mit meiner bastelei weshalb aktuell kaum Videos von mir kommen. Ich habe aber auch ein Tutorial genau dafür in Planung. Dauert leider nur alles noch da ich das hier nur nebenberuflich machen kann....
Nachdem alles super läuft würde ich gerne 6 weitere Temperaturfühler auslesen und auf der Webpage anzeigen lassen. Ist sowas auch möglich?
Beste Grüße
Torsten
Etweder ein anderes ESP Board oder mit einer Porterweiterung versuchen, möglich ist das sicherlich, aber... wofür braucht man 6 Sensoren ? Darf ich fragen was du vor hast ? ;)
@@Bastelbruder Ich möchte in einem Heiz-Wärmetauscher-Kreislauf an sieben unterschiedlichen Stelle die Temperaturen messen und dann davon abhängig eine Pumpe schalten.
Also bisher habe ich mich mit dem Thema nicht beschäftigt aber es soll wohl so sein das mehrere Sensoren an einer Datenleitung angeschlossen werden können. Ich werde da mal experimentieren und in nächster Zeit mal ein Video zu machen. Leider haben noch 2 vorherige Video vorrang :)
@@Bastelbruder Eine ähnliche Frage hatte ich auch formuliert, aber wieder gelöscht als ich die Frage gesehen hatte...
Ich würde gern die Temperaturen vom Balkon, des Gewächshauses und meiner Garage auf einer Seite anzeigen lassen.
Die 3 ESP´s laufen schon tadellos....
Hallo, ich würde gern die Temperatur im Freien messen. Welchen Sensor sollte ich da verwenden und was muss ich im Sketch anpassen?
Einfach Temperatursensor in eine Wasserdichte durchsichtige Dose packen und kein code verändern.
schönes Projekt.
Allerdings habe ich dieses für meine Gewächshausheizung etwas angepasst und suche nun nach einer Lösung, den Status der Heizung auf dem Webserver anzeigen zu lassen.
Hierzu habe ich in einer IF-Schleife eine ´n String erstellt, welcher, je nach Temperatur, den Wert AN oder AUS erhält.
Leider bin ich nicht in der Lage, diesen String an den Webserver zu senden und in einer weiteren Zeile auszugeben.
Vielleicht kann hier jemand helfen.
Hi Domenico, sende mir deinen Sketch bitte mal als .txt zu an bastelbruder@mail.de. Evtl. kann ich dir was ergänzen.
Siehe Antwort auf Kommentar von Olaf Nolte für die Erklärung wie es funktioniert und Code-Beispiel für Temperatur + Feuchtigkeit im GitHub-Repo.
Danke für das Video. Ich habe mit dem ESP 8266 einen Web-Server realisiert für 2 BME 280. Somit kann ich von überall Temperatur, Luftfeuchte und Luftdruck in meinem Haus kontrollieren. Das klappt sehr gut. Nach dem gleichen Prinzip übertrage ich die Energiewerte eines SDM 630 (Energiezähler mit MOD-Bus-Schnittstelle) wieder an einen ESP 8266 der auch als Web-Server arbeitet. Rufe ich dann allerdings im Heimnetz per IP-Adresse oder über die Ferne mittels Portfreigabe den Web-Server auf, dauert es sehr lange ehe die Werte angezeigt werden 10...15 sek.? Bei BME 280 etwa 1 sek.! Die Quelltexte sind ziemlich ähnlich, ich sehe den Unterschied nicht ... ?
Hallo Holger, die gleich Erfahrung habe ich auch schon gemacht das es teilweise echt lange dauert bis mal eine Website erreicht. Ich habe zu diesem Thema auch schon viele Experimente durchgeführt. Bei mir ist das Problem stärker aufgetreten wenn ich im LOOP zuviel Arbeit hatte. Ist im LOOP nur der Handling teil für den Webserver hat man die Probleme eher weniger....
Super Anleitung - Danke
eine Frage noch.
Ich muss die angezeigte Webseite jetzt von einem anderen PC aus Parsen um an die Temperatur zu kommen.
Leider fehlt in den geladenen Daten genau dieser Wert.
Es wird logischerweise nur -°C\ angezeigt.
Wie muss ich den Sketch ändern?
Idealerweise reicht es wenn nur die Temperatur angezeigt wird ohne irgendwelchen HTML Kram
Danke für jeden Tip
Siehe Antwort auf den Kommentar von Olaf Nolte. Sieh Dir den Code genau an. Der Temperaturwert wird in der Route /TempWeb extra übertragen. Von dort kannst Du Dir den Wert alleine holen. Von einem anderen PC aus kannst Du die Webseite abrufen, sofern sich dieser im selben Netzwerk befindet. Zugriff von diversen Geräten übers Internet ist nicht unmöglich, aber macht die Sache deutlich komplizierter. Die Internet-Verbindung muss Anfragen von außen rein lassen (SICHERHEITSRISIKO!), Port-Forwarding durchs Modem zum Gerät muss eingerichtet werden und dann musst Du von außen wissen, wie Du den Server findest. Sprich, entweder brauchst Du eine statische (fixe) IP-Adresse (SICHERHEITSRISIKO!) oder eine Domain (Webseiten-Name) mit dynamischer Aktualisierung der IP-Adresse. Andere Optionen sind natürlich möglich. Es kommt drauf an, was Du mit dem Temperaturwert machen möchtest. Man könnte in eine Datei speichern. Eine andere Option ist, ein API mit Datenbankanbindung einzurichten und den Wert per API-Abruf in die Datenbank einzutragen... Auf dieselbe Weise kann auch ESP die Daten an den anderen Rechner senden. Ansonsten können Datenbank und API auch bei einem Provider im Internet liegen. Wenn man dort eine Webseite dazu wirft und auf die Daten in der Datenbank zugreift, hat man zwar keine Echtzeitdaten, braucht aber auch den Zugang von Außen aufs Heimnetzwerk nicht. Das Alter des letzten Datensatzes kommt dann natürlich auf die Aktualisierungsrate an. Wenn man jede Stunde den Wert abruft und in die Datenbank einträgt, dann kann der letzte Wert logischerweise bis zu einer Stunde alt sein. Jedenfalls gibt es hier einige Optionen, die Daten dann weiter zu verarbeiten.
Hallo @Bastelbruder ich will mir 2 dieser ESP8266 holen können auch die daten der 2 Module mir auf einer Website angezeigt werden
Jaa das geht. Ich habe schonmal ein ESP verwendet der eine LED einschalten sollte je nachdem welche Werte von einem zweiten ESP geliefert werden an diesem war ein Ultraschall Sensor angeschlossen. Du musst also ein ESP als Webserver einrichten und dort die Daten vom zweiten ESP ausgeben lassen. Ich könnte dir halt nicht mal eben so ein Sketch aus dem Hut zaubern ;) Bin da etwas eingerostet aber möchte bald wieder einsteigen ;)
Siehe Antwort auf Kommentar von Olaf Nolte für eine Erklärung und Code-Beispiel im GitHub-Repo für die Code-Erweiterung. Das Board sendet den Temperaturwert auf der Route /TempWeb. Dasselbe kannst Du mit einem anderen Wert auf einem anderen ESP machen. Der Webseiten-Code ist für den C++ Code ein wenig verändert (in erster Linie diverse \). Wenn Du den raus nimmst, kannst Du die Webseite hin setzen, wo immer Du willst (solange der Zugriff auf die Geräte richtig ausgelegt ist, sprich in der Basisvariante alle Geräte im selben Netzwerk sind). Die Wertabfrage in der Webseite erfolgt durch das Script in der Webseite selbst, also vom BROWSER aus, in dem Du die Webseite öffnest! Mit fetch (siehe GitHub-Repo) kannst Du also die Werte aus verschiedenen Quellen in einer Webseite zusammentragen:
fetch('192.168.4.1/temperature').then(res => res.text()).then(data => TempWert.innerText = data + '°C').catch(() => {});
fetch('192.168.4.2/humidity').then(res => res.text()).then(data => HumWert.innerText = data + '%').catch(() => {});
Du musst also nur den Abruf im Code-Script der Webseite verändern, um die Werte aus verschiedenen Quellen zusammen zu tragen.
dht 11 sensor if is connected to 5v not to 3.3v will be ok? because the esp 8266 operating logic level 3.3, just asking... thanks
5V is wrong
@@geraldwolf7280 I tested it and I have it on 5V. It WORKS with 5V. Can't be that wrong, if it works. The ESP8266 uses 3.3V, but the DHT11 works with 5V. According to a quick Google search specs for the DHT11 say, 3 to 5 and 3.3 to 5.5V.
Hallo Danke für das Video und den Sketch.
Ich versuche gerade den D1 mini mit einem BMP 180 zu betreiben. Im seriellen Monitor wird alles schön angezeigt, auf der Website sieht man nur die Temperatur und den Druck nicht. Ich verstehe das Skript im HTML wohl nicht richtig ... Hilfe?!
Hi, wenn du magst kannst du deinen Sketch mal in eine .txt kopieren und mir per Mail zusenden. Evtl. kann ich da mal einen Blick drauf werfen ;) (bastelbruder@mail.de)
@@Bastelbruder Vielen Dank, Mail ist unterwegs!
Hallo Bastelbruder,
ich kann Ihren Script super verwenden, allerdings brauche ich zwei Eingabefenster, in den ich meine Regelungspunkte eingeben möchte.
Wie kann ich das realisieren und was muss man ändern, damit ich meine ESP8266 als Acces Point nutzen kann?
Danke im Voraus für Ihre Hilfe
Mit freundlichen Grüßen
Ups... Falsche Taste. Leider bekomme ich einen falsche Sketch unter dem angegebenen Link. Wollte genau sowas aufbauen.
Hallo und danke für den Einstieg in die ESP Welt. Bekomme eine Fehlermeldung (siehe unten) Com3 Port ist aber Richtig was mache ich falsch, ich bitte um Hilfe. . Variables and constants in RAM (global, static), used 29828 / 80192 bytes (37%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1504 initialized variables
╠══ RODATA 2220 constants
╚══ BSS 26104 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60439 / 65536 bytes (92%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 27671 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 271360 / 1048576 bytes (25%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 271360 code in flash
"C:\Users\uwpv\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1/python3" -I "C:\Users\uwpv\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/upload.py" --chip esp8266 --port "COM3" --baud "921600" "" --before default_reset --after hard_reset write_flash 0x0 "C:\Users\uwpv\AppData\Local\Temp\arduino\sketches\174C11929D7D1A1B63DA25CDB0A28F66/Bastelbruder_esp8266_dht22.ino.bin"
esptool.py v3.0
Serial port COM3
A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, 'Ein an das System angeschlossenes Ger�t funktioniert nicht.', None, 31)
Das sagt mein Freund dazu: Der Fehler, den du siehst, „Cannot configure port, something went wrong. PermissionError(13, 'Ein an das System angeschlossenes Gerät funktioniert nicht.', None, 31)“, bedeutet, dass es ein Problem mit dem Zugriff auf den COM3-Port gibt. Dies könnte auf mehrere Ursachen zurückzuführen sein:
Port bereits in Verwendung: Ein anderes Programm könnte den COM3-Port bereits benutzen.
Treiberprobleme: Es könnte ein Problem mit den Treibern des USB-Seriell-Adapters oder des Geräts, das du verwendest, geben.
Rechteprobleme: Möglicherweise hat die Software nicht die notwendigen Rechte, um auf den Port zuzugreifen. Dies kann besonders unter Windows auftreten.
Lösungsansätze:
Stelle sicher, dass kein anderes Programm den COM3-Port verwendet.
Überprüfe die Treiber deines USB-zu-Seriell-Adapters und aktualisiere sie gegebenenfalls.
Versuche, die Arduino-IDE mit Administratorrechten zu starten.
Überprüfe, ob das richtige Board und der richtige Port in der Arduino-IDE ausgewählt sind.
Danke, ich glaube ich habe den Fehler gefunden (ESP defekt) Danke für die Hilfe. Hast du den Sketch schon mal erweitert wegen Luftfeuchtigkeit?
Nein, ich nutze aktuell lieber ESP32 S2 Mini :)
Ist es auch möglich ein separates Netzwerk über den ESP aufzubauen?
Es ist möglich den ESP als Access Point (AP) laufen zu lassen. Somit würde der ESP über ein eigenes Netzwerk laufen. Das macht sinn wenn man mehrere ESPs in einem Separatem Netzwerk kommunizieren lassen will. ABER: Wenn du nun mit einem Client (z.B. deinem Handy) auf die Webseite zugreifen möchtest, müsstest du natürlich auch dein Netzwerk wechseln von deinem HeimNetzwerk in das ESP Netzwerk. Das ist halt der Nachteil. Ich denke dein Hintergrund ist der das du dein ESP-Netzwerk komplett vom Internet entkoppeln möchtest oder ?
@@Bastelbruder Ganz genau, bei meinem Projekt geht es um einen Servomotor welcher die vereinzelungsvorrichtung für eine Ballschussmaschine (Torwarttraining) steuert. Auf einem Fußballplatz gibt es leider meist kein WLAN 😅
Hi, tolles Video! Genau sowas suche ich! Ich bin aber absoluter Neuling auf dem Gebiet 🙉 kannst du mir sagen wie ich es hinbekomme, das eine Nachricht(email etc.) an Mich gesendet wird, sobald eine Temperatur überschritten wurde?
Danke im Voraus! Ich baue das Teil mal nach.
Leider Nein, ich bin da momentan nicht mehr im Thema. Beschäftige mich aktuell mit 3D Druck. Vielleicht bekommst du ja hier dennoch eine Antwort von jemanden der sich damit schon beschäftigt hat.
Hallo Bastelbruder, das Projekt ist sehr schön und gut erklärt. Nun möchte ich aber in der Webseite noch in einem 2. Fenster, gleich dem 1. Fenster, die Luftfeuchte anzeigen lassen. Ich habe es geschfft das 2. Fenster zu erstellen. Allerdings bekomme ich dort den Wert der Luftfeuchte nicht angezeigt. Wie muss ich den Sketch und das Script anpassen damit es klappt? Vielleicht kannst du mir da helfen. Danke im Voraus
Siehe Antwort auf Kommentar von Olaf Nolte ;)
Ist mit zwei Seiten ein wenig mühsamer als mit einer Seite. Aber eigentlich ist alle im Code, was Du dazu brauchst. Der Server verwendet von Haus aus bereits 2 Routen. Eine für den Wert und eine für die Webseite.
Selbst für einen Anfänger sollte es also, das entsprechende logische Verständnis vorausgesetzt (wie erwähnt, siehe Antwort auf Kommentar von Olaf Nolte), kein Problem sein, eine Route und den Code für die Webseite zu duplizieren und so anzupassen, dass auf 2 Routen 2 verschiedene Webseiten/Werte ausgegeben werden.
Es ist auch dringend zu empfehlen, diese Übung tatsächlich zu machen und umzusetzen! Das ist eine Sache des Verständnisses für den Code. Wenn man das nicht versteht, ist man auf Dauer nicht fähig, mit diesen Sachen weiter zu arbeiten.
Ich empfehle in diesem Zusammenhang unbedingt die Einarbeitung in die Grundlagen einer beginnerfreundlichen Programmiersprache, wie z.B. Python. Webserver und Webseiten machen die Sache aufwendiger, da HTML, CSS und sinngemäß (wie in diesem Beispiel) JavaScript dazu kommen. Auf lange Sicht wird es damit aber auch deutlich interessanter. JavaScript ist jetzt nicht so weit von Python weg und von der Schreibweise her vor allem C++ recht ähnlich, ansonsten aber für Anfänger mit Vorsicht zu genießen. JavaScript hat einige Tücken, die leicht zu Problemen und Frustration führen. In diesem Zusammenhang sind JavaScript-Grundlagen gut geeignet. Ansonsten ist JavaScript für Anfänger nicht die schlechteste, aber auch nicht die beste Wahl. C++ ist zwar die verwendete Sprache für den Chip, aber als Sprache ist C++ deutlich komplexer als Python oder JavaScript. Außerdem kann MicroPython auch auf dem ESP8266 installiert und verwendet werden.
Da man es hier mit Programmiercode zu tun hat, ist das Wichtigste, dass man die Programmiergrundlagen und somit den Code versteht. Die Grundlagen und Grundprinzipien sind in diversen Sprachen nahezu gleich und werden nur ein wenig unterschiedlich geschrieben. Variablen, Schleifen, Entscheidungen/Verzweigungen, Funktionen... sind wichtige Grundlagen für solche Aktivitäten. Ohne Verständnis für den Code ist es Glücksspiel und man kann kaum davon ausgehen, etwas Funktionstüchtiges selbst auf die Beine zu stellen. Außerdem kann nicht erwarten, dass ständig andere die Arbeit machen und die Probleme lösen. Schon gar nicht gratis.
Wie gesagt, ein Erweiterungsbeispiel ist im Code im GitHub Repository und alles was gewünscht und nötig ist, ist bereits im Code zu finden. Weitere Anhaltspunkte und Optionen sind vor allem in erwähnten und in anderen Kommentaren zu finden, die ich hier abgegeben habe.
auf dem webserver steht aktuelle temperatur: nan°C
Das deutet darauf hin das die Werte aus dem Sensor nicht ausgelesen werden können... defekt ? richtig angeschlossen ?
Hallo Bastelbruder,
Super Video! Leider habe ich nach dem Hochladen immer eine merkwürdige Meldung:
Leaving...
Hard resetting via RTS pin...
Hast du eine Idee, was das sein kann?
Beste Grüße, Torsten
Leider nein, aber vielleicht hilft dir das weiter:
www.turais.de/esp8266-hard-resetting-via-rts-pin/
@@Bastelbruder Besten Dank🙂
Das "Problem" lag am fehlenden Wlan-Zugang.
Super erklärt :-) Ichwürde gerne die Batterie meines Traktors überwachen. Wie würde dann der Sketch aussehen? Leider habe ich noch zu wenig Ahnung von Arduino und Co.
Hast Du eine Lösung gefunden? Ich habe gerade den Kommentar gesehen, ein wenig recherchiert und ein englisches Video gefunden, wo das jemand im Auto implementiert hat, weil sein Auto während Corona viel rum gestanden ist und die Batterie öfter zu schwach war. Ich könnte mir aber vorstellen, dass der Traktor möglicherweise keine 12V sondern eine 24V Batterie hat?
Es gibt ein paar Haken bei der Geschichte. Einer ist, dass scheinbar große Spannungsspitzen mit über 100V entstehen können. Ein anderer ist die Wärme im Motorraum usw. Im Video sucht er sich deshalb in einer Sicherheitsbox im Inneren des Autos eine Leitung, die die volle Stromstärke der Batterie direkt liefert und sinngemäß immer aktiv ist. Dort setzt er einen Adapter. Wird im Prinzip wie eine Stecksicherung im Sicherungskasten eingesteckt. Aber der Adapter ist natürlich größer als eine Stecksicherung und es geht ein Stromkabel weg und die Sicherung sitzt am Adapter, statt direkt im Sockel. Das Stromkabel geht zu einer kleinen Zwischenplatine, welche die Stromstärke (wichtig!) zuverlässig um einen fixen Faktor so runter regelt, dass er niedrig genug für das Board ist. Von der Platine geht er auf einen analogen Pin am Board. Dort holt er sich dann im Code den Spannungswert und rechnet den um den Regelfaktor wieder auf die originale Spannung hoch.
Anmerkung: er sagt dazu, dass er nicht weiß, ob und wie lange das gut geht, wegen Spannungsspitzen. Und für mich stellen sich auch ein paar Fragen. Zum Beispiel, was die Sicherung dann abdeckt. Die ursprüngliche Leitung, die neue Leitung, beides, wenn beides, liefert der Anschluss genug Strom für das vorige Teil + Messung... Jedenfalls ist die Spannung zu messen und so ungefähr könnte man es machen.
Der Sketch besteht also im wesentlichen aus dem Wert vom analogen Pin, multipliziert mit dem Regelfaktor um den die Spannung runter geregelt wird. Dazu kommt die Aufbereitung der Daten. Das kommt natürlich darauf an, welche Daten man gerne hätte und wie man diese abrufen will. Zum Beispiel via wLAN und Webserver, wie im Video. Und man kann natürlich nur die Stromstärke ablesen oder einen Grenzwert setzen und auf den prüfen. Dann kann man das Ganze z.B. auch so auslegen, dass es irgendwie eine Benachrichtigung ans Smartphone sendet... so ungefähr. Kommt also drauf an, wie man es haben möchte und welche Lösungen man findet, um das ganze umzusetzen. Im Video ist sein Grenzwert 12V. Er verwendet (sinnloserweise zwei) zusätzliche Apps. Eine um den Wert zu prüfen, die andere (IFTTT) um eine Benachrichtigung ans Smartphone zu senden, wenn der Wert unter 12V fällt. Vor allem die App für die Wertprüfung ist aus meiner Sicht unnötig. Der Wert muss auch dort hin gesendet werden, sprich eine Anfrage mit Wert dort hin gemacht werden. Einfacher ist es also, den Wert gleich im ESP-Code zu prüfen und direkt die Benachrichtigung zu triggern, wenn der Wert drunter fällt. Wobei... nachträgliche Anpassung des Grenzwertes ist vermutlich einfacher über eine App, statt über den ESP-Code. Aber wie oft passt man den Wert wirklich an?
top Video. Danke dir. In Kombination mit Luftfeuchtigkeit wäre es perfekt. Hast Du hierzu eine Idee?
Hallo Bastelbruder, sehr cooles Video😊
Ich müsste für ein Schulprojekt fast dasselbe machen, nur würde ich gerne eine Anzeige machen, welche die Temperatur zusätzlich auf einer Statistik anzeigt.Und kann man auch einbauen, dass man eine email bekommt wenn die Temperatur einen gewissen Wert unter/über-steigt?
Bei anderen Videos habe ich gesehen das dort nicht DHT.h sondern OneWire.h und DallasTemperatur.h verwendet wird. Wo ist der Unterschied?
Dallas & OneWire wird verwendet für einen DS18B20 (EdelstahlTemp Sensor). Ist geeignet um Temperaturen von Flüssigkeiten zu messen.
@@Bastelbruder OK, Danke, aber warum bekomme ich schon beim compilieren die Fehlermeldungen? Liegt es am ESP8266 D1 mini? Wobei die Libraries sind doch die gleichen oder?