Inhalt
TMP36 - Anzeige mit automatischer Aktualisierung
// benötigte Bibliothek
#include "ESP8266WebServer.h"
// Pin des TMP36
int TMP36 = A0;
// SSID und Passwort des Routers anpassen
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
WiFiServer Server(80);
WiFiClient Client;
void setup()
{
Serial.begin(9600);
delay(1000);
WiFi.begin(Router, Passwort);
// Verbindung herstellen
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
Server.begin();
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
// IP anzeigen
Serial.println(WiFi.localIP());
}
void loop()
{
// Variable für Temperatur und Luftfeuchtigkeit
float Temperatur;
String AnzeigeTemperatur;
Client = Server.available();
if (Client)
{
// Seite aufbauen wenn SeiteAufbauen true ist
boolean SeiteAufbauen = true;
while (Client.connected())
{
if (Client.available())
{
char Zeichen = Client.read();
if (Zeichen == '\n')
{
// wenn SeiteAufbauen den Wert true hat
if (SeiteAufbauen)
{
// HTTP-Anforderung senden
Client.println("HTTP/1.1 200 OK");
Client.println("Content-Type: text/html");
// Leerzeile zwingend erforderlich
Client.println();
/*
HTML-Seite aufbauen
die folgenden Anweisungen müssen mit print oder println gesendet werden
println "verschönert" den Quelltext
*/
Client.println("<!doctype html>");
Client.println("<html>");
Client.println("<body>");
// alle 60 Sekunden aktualisieren mit meta-Tag
Client.println("<meta http-equiv=\"refresh\" content=\"60\">");
Client.println("<h1> Temperatur mit TMP36 messen</h1>");
Client.println("<hr />");
// Temperatur lesen
float Sensorwert= analogRead(TMP36);
/*
richtiges Verhältnis zwischen
3,3 V = 3300 mV (Eingangsspannung NodeMCU)
und 1024 (maximaler Wert (nach analog-digitaler Umwandlung)
-> gemessenen Wert mit 3300 malnehmen und dann durch 1024 teilen
*/
float gemesseneSpannung = Sensorwert * 3300 / 1024;
/*
1 Grad = 10 mV
Versatz von 500 mV von der gemessenen Spannung abziehen
und durch 10 = 1 Grad teilen
*/
AnzeigeTemperatur = String((gemesseneSpannung - 500.0) / 10.0);
// . durch , ersetzen
AnzeigeTemperatur.replace(".", ",");
// Daten im Browser anzeigen
Client.println("<b>Temperatur:</b><blockquote>");
Client.println(AnzeigeTemperatur + " °C</blockquote>");
Client.println("<hr>");
// IPs anzeigen
Client.print("<b>Eigene IP: ");
Client.print(Client.remoteIP());
Client.print("</b>");
Client.print("<br><b>IP Klient: ");
Client.print(WiFi.localIP());
Client.print("</b>");
Client.println("</b>");
Client.println("</body>");
Client.print("</html>");
// HTTP-Antwort endet mit neuer Zeile
Client.println();
// Seite vollständig geladen -> loop verlassen
break;
}
// wenn new line (\n) gesendet wurde -> Seite aufbauen
if (Zeichen == '\n') SeiteAufbauen = true;
else if (Zeichen != '\r') SeiteAufbauen = false;
Client.stop();
}
}
}
}
}
TMP36 - Anzeige mit Datum/Zeit, automatischer und manueller Aktualisierung
// benötigte Bibliotheken
#include "ESP8266WebServer.h"
#include "time.h"
// SSID und Passwort des Routers
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
int TMP36 = A0;
/*
NTP-Server aus Pool
#define Zeitserver "de.pool.ntp.org"
https://www.pool.ntp.org/zone/de
oder z.B. Zeitserver der Physikalisch-technische Bundesanstalt
#define Zeitserver "ptbtime1.ptb.de"
wenn eine statische IP-Adresse verwendet kann der Eintrag auch direkt erfolgen
NTP-Server als IP-Adresse angeben
192.53.103.108 -> Physikalisch-technische Bundesanstalt
*/
#define Zeitserver "de.pool.ntp.org"
/*
Liste der Zeitzonen
https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
CEST = Central European Summer Time von
M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"
// festeIP = true -> IP Gateway und Subnetz festlegen
// festeIP = false -> IP-Adresse über DHCP beziehen
bool festeIP = true;
/*
IP, Gateway, Subnetz und DNS-Server festlegen
Liste frei verfügbarer DNS-Server:
https://de.wizcase.com/blog/besten-kostenlosen-und-oeffentlichen-dns-server/
verwendeter DNS-Server OpenDNS
*/
IPAddress ip(192,168,1,200);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress dns1(208,67,222,222);
IPAddress dns2(208,67,220,220);
// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;
/*
Struktur tm wandelt die ermittelte Zeit in ein "lesbares" Format um:
tm_hour -> Stunde: 0 bis 23
tm_min -> Minuten: 0 bis 59
tm_sec -> Sekunden 0 bis 59
tm_mday -> Tag 1 bis 31
tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
tm_year -> Jahre seit 1900
tm_yday -> vergangene Tage seit 1. Januar des Jahres
tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;
WiFiServer Server(80);
WiFiClient Client;
void setup()
{
Serial.begin(9600);
delay(1000);
// Parameter für die zu ermittelnde Zeit
configTime(Zeitzone, Zeitserver);
WiFi.begin(Router, Passwort);
// wenn eine statische IP verwendet werden soll
if (festeIP) WiFi.config(ip, gateway, subnet, dns1, dns2);
// Verbindung herstellen
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
Server.begin();
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
// IP anzeigen
Serial.println(WiFi.localIP());
}
void loop()
{
// aktuelle Zeit lesen
time(&aktuelleZeit);
// localtime_r -> ermittelte Zeit in die lokale Zeitzone setzen
localtime_r(&aktuelleZeit, &Zeit);
// Variable für Temperatur und Luftfeuchtigkeit
float Temperatur;
float Luftfeuchtigkeit;
String AnzeigeTemperatur;
String AnzeigeLuftfeuchtigkeit;
Client = Server.available();
if (Client)
{
// Seite aufbauen wenn SeiteAufbauen true ist
boolean SeiteAufbauen = true;
while (Client.connected())
{
if (Client.available())
{
char Zeichen = Client.read();
if (Zeichen == '\n')
{
// wenn SeiteAufbauen den Wert true hat
if (SeiteAufbauen)
{
// HTTP-Anforderung senden
Client.println("HTTP/1.1 200 OK");
Client.println("Content-Type: text/html");
// Leerzeile zwingend erforderlich
Client.println();
/*
HTML-Seite aufbauen
die folgenden Anweisungen müssen mit print oder println gesendet werden
println "verschönert" den Quelltext
" muss mit \" maskiert werden
*/
Client.println("<!doctype html>");
Client.println("<html>");
Client.println("<body>");
// alle 60 Sekunden aktualisieren mit meta-Tag
Client.println("<meta http-equiv=\"refresh\" content=\"60\">");
Client.println("<h1> Temperatur mit TMP36 messen</h1>");
Client.println("<hr />");
Client.print("<h2>Letzte Messung: ");
// tm_mday -> Wochentag anzeigen
switch (Zeit.tm_wday)
{
case 0:
Client.print("Sonntag");
break;
case 1:
Client.print("Montag");
break;
case 2:
Client.print("Dienstag");
break;
case 3:
Client.print("Mittwoch");
break;
case 4:
Client.print("Donnerstag");
break;
case 5:
Client.print("Freitag");
break;
case 6:
Client.print("Samstag");
break;
}
Client.print(", ");
// Tag: führende 0 ergänzen
if (Zeit.tm_mday < 10) Client.print("0");
Client.print(Zeit.tm_mday);
Client.print(".");
// Monat: führende 0 ergänzen
if (Zeit.tm_mon < 10) Client.print("0");
Client.print(Zeit.tm_mon + 1);
Client.print(".");
// tm_year + 1900
Client.print(Zeit.tm_year + 1900);
// Uhrzeit
Client.print(" Uhrzeit: ");
// Stunden
if (Zeit.tm_hour < 10) Client.print("0");
Client.print(Zeit.tm_hour);
Client.print(":");
// Minuten
if (Zeit.tm_min < 10) Client.print("0");
Client.print(Zeit.tm_min);
Client.print(":");
// Sekunden
if (Zeit.tm_sec < 10) Client.print("0");
Client.print(Zeit.tm_sec);
Client.println("</h2>");
Client.println("<hr />");
// Temperatur lesen
float Sensorwert= analogRead(TMP36);
/*
richtiges Verhältnis zwischen
3,3 V = 3300 mV (Eingangsspannung NodeMCU)
und 1024 (maximaler Wert (nach analog-digitaler Umwandlung)
-> gemessenen Wert mit 3300 malnehmen und dann durch 1024 teilen
*/
float gemesseneSpannung = Sensorwert * 3300 / 1024;
/*
1 Grad = 10 mV
Versatz von 500 mV von der gemessenen Spannung abziehen
und durch 10 = 1 Grad teilen
*/
AnzeigeTemperatur = String((gemesseneSpannung - 500.0) / 10.0);
// . durch , ersetzen
AnzeigeTemperatur.replace(".", ",");
// Daten im Browser anzeigen
Client.print("<b>Temperatur:</b><blockquote>");
Client.println(AnzeigeTemperatur + " °C</blockquote>");
Client.println("<form>");
// Button formatieren
Client.print("<input style=\"font-size:16pt; font-weight:bold;");
Client.print("background-color:#55A96B;");
Client.print("display:block; cursor:pointer;\"type=\"button\"");
Client.println(" onClick=\"location.href='WiFi.localIP()'\" value=\"aktualisieren\">");
Client.println("</form>");
Client.println("<hr />");
// IPs anzeigen
Client.print("<b>Eigene IP: ");
Client.print(Client.remoteIP());
Client.print("</b>");
Client.print("<br><b>IP Klient: ");
Client.print(WiFi.localIP());
Client.print("</b>");
Client.println("</b>");
Client.println("</body>");
Client.print("</html>");
// HTTP-Antwort endet mit neuer Zeile
Client.println();
// Seite vollständig geladen -> loop verlassen
break;
}
// wenn new line (\n) gesendet wurde -> Seite aufbauen
if (Zeichen == '\n') SeiteAufbauen = true;
else if (Zeichen != '\r') SeiteAufbauen = false;
delay(1);
Client.stop();
}
}
}
}
}
DHT11/DHT22 - Anzeige mit Datum/Zeit, automatischer und manueller Aktualisierung
// benötigte Bibliotheken
#include "ESP8266WebServer.h"
#include "time.h"
#include "DHT.h"
// SSID und Passwort des Routers anpassen
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
// Pin des Sensors
int SENSOR_DHT = D7;
// #define SensorTyp DHT11
// oder DHT22
#define SensorTyp DHT22
// Sensor einen Namen zuweisen
DHT dht(SENSOR_DHT, SensorTyp);
/*
NTP-Server aus Pool
#define Zeitserver "de.pool.ntp.org"
https://www.pool.ntp.org/zone/de
oder z.B. Zeitserver der Physikalisch-technische Bundesanstalt
#define Zeitserver "ptbtime1.ptb.de"
wenn eine statische IP-Adresse verwendet kann der Eintrag auch direkt erfolgen
NTP-Server als IP-Adresse angeben
192.53.103.108 -> Physikalisch-technische Bundesanstalt
*/
#define Zeitserver "de.pool.ntp.org"
/*
Liste der Zeitzonen
https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
CEST = Central European Summer Time von
M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"
// festeIP = true -> IP Gateway und Subnetz festlegen
// festeIP = false -> IP-Adresse über DHCP beziehen
bool festeIP = true;
/*
IP, Gateway, Subnetz und DNS-Server festlegen
Liste frei verfügbarer DNS-Server:
https://de.wizcase.com/blog/besten-kostenlosen-und-oeffentlichen-dns-server/
verwendeter DNS-Server OpenDNS
*/
IPAddress ip(192,168,1,200);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress dns1(208,67,222,222);
IPAddress dns2(208,67,220,220);
// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;
/*
Struktur tm wandelt die ermittelte Zeit in ein "lesbares" Format um:
tm_hour -> Stunde: 0 bis 23
tm_min -> Minuten: 0 bis 59
tm_sec -> Sekunden 0 bis 59
tm_mday -> Tag 1 bis 31
tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
tm_year -> Jahre seit 1900
tm_yday -> vergangene Tage seit 1. Januar des Jahres
tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;
WiFiServer Server(80);
WiFiClient Client;
void setup()
{
Serial.begin(9600);
delay(1000);
// Parameter für die zu ermittelnde Zeit
configTime(Zeitzone, Zeitserver);
WiFi.begin(Router, Passwort);
// wenn eine statische IP verwendet werden soll
if (festeIP) WiFi.config(ip, gateway, subnet, dns1, dns2);
// Verbindung herstellen
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
Server.begin();
// Temperatursensor starten
dht.begin();
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
// IP anzeigen
Serial.println(WiFi.localIP());
}
void loop()
{
// aktuelle Zeit lesen
time(&aktuelleZeit);
// localtime_r -> ermittelte Zeit in die lokale Zeitzone setzen
localtime_r(&aktuelleZeit, &Zeit);
// Variable für Temperatur und Luftfeuchtigkeit
float Temperatur;
float Luftfeuchtigkeit;
String AnzeigeTemperatur;
String AnzeigeLuftfeuchtigkeit;
Client = Server.available();
if (Client)
{
// Seite aufbauen wenn SeiteAufbauen true ist
boolean SeiteAufbauen = true;
while (Client.connected())
{
if (Client.available())
{
char Zeichen = Client.read();
if (Zeichen == '\n')
{
// wenn SeiteAufbauen den Wert true hat
if (SeiteAufbauen)
{
// HTTP-Anforderung senden
Client.println("HTTP/1.1 200 OK");
Client.println("Content-Type: text/html");
// Leerzeile zwingend erforderlich
Client.println();
/*
HTML-Seite aufbauen
die folgenden Anweisungen müssen mit print oder println gesendet werden
println "verschönert" den Quelltext
" muss mit \" maskiert werden
*/
Client.println("<!doctype html>");
Client.println("<html>");
Client.println("<body>");
// alle 60 Sekunden aktualisieren mit meta-Tag
Client.println("<meta http-equiv=\"refresh\" content=\"60\">");
Client.println("<h1> Temperatur mit TMP36 messen</h1>");
Client.println("<hr />");
Client.print("<h2>Letzte Messung: ");
// tm_mday -> Wochentag anzeigen
switch (Zeit.tm_wday)
{
case 0:
Client.print("Sonntag");
break;
case 1:
Client.print("Montag");
break;
case 2:
Client.print("Dienstag");
break;
case 3:
Client.print("Mittwoch");
break;
case 4:
Client.print("Donnerstag");
break;
case 5:
Client.print("Freitag");
break;
case 6:
Client.print("Samstag");
break;
}
Client.print(", ");
// Tag: führende 0 ergänzen
if (Zeit.tm_mday < 10) Client.print("0");
Client.print(Zeit.tm_mday);
Client.print(".");
// Monat: führende 0 ergänzen
if (Zeit.tm_mon < 10) Client.print("0");
Client.print(Zeit.tm_mon + 1);
Client.print(".");
// tm_year + 1900
Client.print(Zeit.tm_year + 1900);
// Uhrzeit
Client.print(" Uhrzeit: ");
// Stunden
if (Zeit.tm_hour < 10) Client.print("0");
Client.print(Zeit.tm_hour);
Client.print(":");
// Minuten
if (Zeit.tm_min < 10) Client.print("0");
Client.print(Zeit.tm_min);
Client.print(":");
// Sekunden
if (Zeit.tm_sec < 10) Client.print("0");
Client.print(Zeit.tm_sec);
Client.println("</h2>");
Client.println("<hr />");
// Temperatur lesen
Temperatur = dht.readTemperature();
AnzeigeTemperatur = String(Temperatur);
// . durch , ersetzen
AnzeigeTemperatur.replace(".", ",");
// Luftfeuchtigkeit lesen
Luftfeuchtigkeit = dht.readHumidity();
String AnzeigeLuftfeuchtigkeit = String(Luftfeuchtigkeit);
AnzeigeLuftfeuchtigkeit.replace(".", ",");
// Daten im Browser anzeigen
Client.print("<b>Temperatur:</b><blockquote>");
Client.println(AnzeigeTemperatur + " °C</blockquote>");
Client.println("<br>");
Client.print("<b>Luftfeuchtigkeit:</b><blockquote>");
Client.println(AnzeigeLuftfeuchtigkeit + " %</blockquote><hr>");
Client.println("<form>");
// Button formatieren
Client.print("<input style=\"font-size:16pt; font-weight:bold;");
Client.print("background-color:#55A96B;");
Client.print("display:block; cursor:pointer;\"type=\"button\"");
Client.println(" onClick=\"location.href='WiFi.localIP()'\" value=\"aktualisieren\">");
Client.println("</form>");
Client.println("<hr />");
// IPs anzeigen
Client.print("<b>Eigene IP: ");
Client.print(Client.remoteIP());
Client.print("</b>");
Client.print("<br><b>IP Klient: ");
Client.print(WiFi.localIP());
Client.print("</b>");
Client.println("</body>");
Client.print("</html>");
// HTTP-Antwort endet mit neuer Zeile
Client.println();
// Seite vollständig geladen -> loop verlassen
break;
}
// wenn new line (\n) gesendet wurde -> Seite aufbauen
if (Zeichen == '\n') SeiteAufbauen = true;
else if (Zeichen != '\r') SeiteAufbauen = false;
delay(1);
Client.stop();
}
}
}
}
}
Letzte Aktualisierung: