Emissione di dati del sensore ESP8266 su una pagina Web

 

Ieri abbiamo dimostrato quanto sia facile il nostro ESP8266 funziona con il sensore temperatore MAX6675.

Oggi vogliamo estendere un po'lo Sketch per sfruttare la capacità WiFi del modulo.

A tale scopo, includiamo la libreria "ESP8266WiFi". Questo prende il controllo dell'account di accesso a una rete WLAN esistente e assume l'invio e la ricezione dei dati al client.

Utilizzando "WiFiServer server(80);" si avvia un server che viene eseguito sulla porta 80.

 

 

#include <ESP8266WiFi.H>
#include <max6675 (informazioni in inglese).H>
Const Char* Ssid = "Nome Wlan (SSID)";
Const Char* Password = "Wlan Key";

Int thermoDO = 12;
Int thermoCS = 13;
Int thermoCLK = 14;

Server WiFi Server(80); Abbiamo configurato il server web sulla porta 80

Valore di MAX6675 Termocoppia(thermoCLK, thermoCS, thermoDO); Abbiamo impostato il sensore di temperatura 

Vuoto Installazione()
{   Seriale.Iniziare(115200);   Seriale.println();   Seriale.Printf("Connetti a %s", Ssid);   Wifi.Iniziare(Ssid, Password); Tentativi di connessione di nome e chiave con Wi-Fi   Mentre (Wifi.Stato() != WL_CONNECTED)   {     Ritardo(500);     Seriale.Stampare(".");   }   Seriale.println("Connesso");   Server.Iniziare();   Seriale.Printf("Server Web avviato, aperto %s in un browser Web", Wifi.localIP (informazioni in locale)().Stringa a().c_str());
}

Generare il contenuto della pagina femminile
Stringa prepareHtmlPage (preparazione)()
{   Stringa Pagina html =      Stringa("HTTP/1.1 200 OK"") +             "Content-Type: text/html +             "Connessione: close-r-n" +  La connessione viene chiusa dopo il trasferimento             "Aggiorna: 5-r"n" +  Ricarica automaticamente ogni 5 secondi             "A.R." +             "<! HTML DOCTYPE>" +             "<html>" +             "Temperatura in &deg; C: " + Stringa(Termocoppia.readCelsius()) + Uscita della temperatura             "</html>" +             "A.R.";   Ritorno Pagina html;
}

Vuoto Ciclo()
{   WiFiClient (Client WiFi) Client = Server.Disponibile();   in attesa di connessione dal client (browser web)   Se (Client)   {     Seriale.println("[Il client ha connesso]");     Mentre (Client.Collegato())     {       Leggere in linea ciò che il client (browser web) richiede       Se (Client.Disponibile())       {         Stringa Linea = Client.ReadStringUntil (finestra in lettura)('A'r');         Seriale.Stampare(Linea);         attendere fino alla fine della richiesta (riga vuota)         Se (Linea.Lunghezza() == 1 && Linea[0] == 'n')         {           Client.println(prepareHtmlPage (preparazione)()); Risposta all'uscita           Pausa;         }       }     }     Ritardo(1000); dare al browser il tempo di ricevere la risposta     Chiudere la connessione:     Client.Fermare();     Seriale.println("[Client disconnesso]");     Seriale.Stampare("C ");      Seriale.println(Termocoppia.readCelsius());     Ritardo(10);   }
}

 

L'uscita della temperatura nel monitor seriale è solo per la risoluzione dei problemi. Sul Monitor seriale ora vediamo:

Uscita seriale

 

L'output nel browser sarà quindi simile al seguente:

 Visualizzazione Browser

 

Se siete un po 'preoccupati delle nozioni di base di HTML (vi consiglio di guardare https://selfhtml.org/), è possibile personalizzare l'aspetto e il contenuto della pagina nella sezione prepareHtmlPage(). 

Quindi più dati del sensore possono anche essere emessi su una pagina.

L'ESP8266 può fungere da server Web e da un client. Il microcontrollore offre così molte nuove soluzioni e consente nuovi progetti interessanti a un prezzo ragionevole.

 

 

Esp-8266Projekte für fortgeschritteneSensorenSmart home

10 Kommentare

Dimitrj Dirkes

Dimitrj Dirkes

Wie kann ich die temperatrur in einer anderen farbe und Größe ausgeben auf meinem webserver

rolf

rolf

Wie lege ich die IP Adresse des Webservers fest?

Weblint

Weblint

Gibt es eine reconnect Prozedur? Wenn ich den esp32 in einer anderen WiFi Umgebung einsetzen möchte soll sich der Bereich des neuen WLAN neu einrichten lassen. Gibt es schon so eine Routine?

Vielen Dank und frohes Fest

albin

albin

Sie schreiben “Gestern haben wir gezeigt wie einfach unser ESP8266 mit dem MAX6675-Temperatorsensor zusammenarbeitet.” Finde leider den ersten Teil von Gestern nicht auf Ihrer Page. Bitte um Link.

Ulrich Klaas

Ulrich Klaas

Hallo,
das ist doch echt nett hier das in diesem Block Programmierbeispiele gezeigt werden.
Aber programmieren Lernen sollte man schon selber oder sich in einschlägigen
Foren Rat holen.

C oder C++ lernen ist wirklich keine Zauberei.
Heute muss immer alles vorgekocht werden.
Ulli

4711engel

4711engel

Ich betreibe in Berlin eine von vielen Feinstaub-Sensor-Messstationene des “ESP-OK-LAB”.
Diese Station misst die Feinstaub-Belastung und liefert die Daten ins Internet, wo sie von einem Anbieter statistisch aufbereitet zur Verfügung gestellt wird.
Z.B. URL: http://www.madavi.de/sensor/graph.php?sensor=esp8266-306639-sds011

Da ich nicht immer mein Handy nutzen will, um mir die Auswertung zu laden, würde ich die Daten gerne mittels ESP8266 und einem ILI9341 TFT auf dem TFT automatisch alle Minute anzeigen lassen.
Z.B. die Grafik: http://www.madavi.de/sensor/images/sensor-esp8266-306639-sds011-1-day.png

Wie kann ich dieses realisieren? Ich bin leider kein großer Programmierer.

Bernd

Bernd

Hi,
habe den Quelltext unverändert in die Arduino IDE eingefügt und mit der ESP8266 Einstellung in den ESP geladen. Die Ausgaben im seriellen Monitor sind fast genauso wie oben gezeigt. Nur die Reihung ist verändert. Auch die Temperatur wird angezeigt. Rufe ich aber die im seriellen Monitor aufgeführte Adresse mit einem Explorer auf, erhalte ich eine Fehlermeldung. Die Adresse stimmt, denn im Router sehe ich den ESP genau unter dieser Adresse. Ich habe die Seite mit Firefox, Edge und dem alten Internetexplorer aufgerufen. Alle 3 können die Seite nicht aufbauen. Woran kann das liegen?

Hoschy

Hoschy

In Zeile 28 steht: " öffnen Sie %s in einem Webbrowser\n", WiFi.localIP "
das %s bezieht sich auf das Wifi.localIP, das ist die IP des webservers, des arduinos / mcu oder ähnliches wo die Webseite zum anzeigen drauf läuft.

Klaus

Klaus

Moin,
ein Anfänger sucht in selfhtml.org den Abschnit prepareHtmlPage – wünsche ein wenig mehr Hilfe.

michael

michael

Bin leider noch Anfänger:
Was bedeutet das Zeichen “%s” in der Zeile 28?

Mit was für einer Adresse rufe ich im Broser die Seite auf?

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert