Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
arduino:webserver [2022/05/18 09:46] – [Der NodeMCU] khirling | arduino:webserver [2022/06/27 22:42] (aktuell) – khirling | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Webseiten ====== | ||
+ | Internetseiten werden mit Hilfe von HTML (Hypertext Markup Language (Hypertext-Auszeichnungssprache)) dargestellt. Eine typische HTML ist ein reine Textdatei mit der Dateiendung .html. HTML ist eine Seitenbeschreibungssprache. Neben den Inhalten wird auch die Struktur (Art der Überschrift, | ||
+ | |||
+ | Alle Inhalte (HTML- Seie, CSS -Seite, Javascript - Seite, Bilder, Videos, ...) werden mit Hilfe des Protokolls HTTP (Hypertext Transfer Protokoll) bzw. HTTPS (HyperText Transfer Protocol Secure) | ||
+ | |||
+ | Der Browser fordert die Seite von einem Webserver an, dieser überträgt diese dann an den Client und wird dann nach und nach angezeigt. Datei erfolgt die Darstellung im Browser, abhängig von Voreinstellungen, | ||
+ | |||
+ | Normalerweise sind die Seiten statisch auf der Festplatte des Servers abgelegt. Oftmals sollen die HTML-Seiten aber erst dynamisch erstellt werden, wie z.B. bei einer Suchanfrage. Der Server erkannt an der Dateiendung (.php), dass diese nicht direkt, sondern zusätzlich bearbeitet werden sollen. PHP ist eine Scriptsprache, | ||
+ | |||
+ | PHP kann auch gut auf Datenbanken zugreifen. MySQL ist eine Datenbankverwaltungssystem, | ||
+ | |||
+ | |||
+ | |||
====== Der NodeMCU ====== | ====== Der NodeMCU ====== | ||
- | Das ESP8266 WiFi-Modul kann in 2 verschiedenen Modi betrieben werden: | + | Das ESP8266 WiFi-Modul kann in 2 verschiedenen Modi betrieben werden: |
- | === der STA - Modus === | + | Für den Station-Modus |
- | + | ||
- | der Mikrocontroller kann mit einem bereits bestehenden Wi-Fi-Netzwerk (Access Point) verbunden werden. Man benötigt | + | Oftmals ist es allerdings notwendig, wenn der Mikrocontroller |
- | '' | + | |
- | Außerdem wird die IP - Adresse standardmäßig über DHCP vergeben. Oftmals ist es günstiger, wenn der Mikrocontroller eine feste IP- Adresse und sogar eine fest vorgebenen | + | Mit der Funktion '' |
'' | '' | ||
* local_ip : IP-Adresse, die wir der zuweisen möchten | * local_ip : IP-Adresse, die wir der zuweisen möchten | ||
- | * Gateway | + | * gateway |
- | * Subnet | + | * subnet |
* dns : IP-Adresse des DNS-Servers (Domain Name Server). | * dns : IP-Adresse des DNS-Servers (Domain Name Server). | ||
Mit | Mit | ||
- | '' | + | |
- | wifi_set_macaddr(STATION_IF, | + | '' |
+ | |||
+ | '' | ||
kann man die MAC - Adresse neu definieren. | kann man die MAC - Adresse neu definieren. | ||
+ | |||
+ | Beim Aufruf einer Webseite überprüft der Browser das Sicherheitszertifikat (SSL - Zertifikat) des Servers. Hierzu hat er eine Liste vertrauenswürdiger Zertifizierungsstellen, | ||
+ | |||
- | === der AP - Modus === | ||
- | er arbeitet selbst als Access Point und andere Stationen können miteinander kommunizieren. Es ist dann allerdings kein Zugriff auf das Internet möglich. | ||
Zeile 110: | Zeile 127: | ||
====== Messwerterfassung und Verbindungsaufbau mit einem WEB-Server ====== | ====== Messwerterfassung und Verbindungsaufbau mit einem WEB-Server ====== | ||
- | <code C> | + | <sxh cpp;> |
#include < | #include < | ||
#include < | #include < | ||
Zeile 245: | Zeile 262: | ||
} // ende loop() | } // ende loop() | ||
- | </code> | + | </sxh> |
+ | |||
+ | Nur CO2 | ||
+ | <sxh cpp> | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | |||
+ | HTTPClient sender; | ||
+ | WiFiClientSecure wifiClient; | ||
+ | |||
+ | // WLAN-Daten | ||
+ | const char* ssid = " | ||
+ | const char* password = " | ||
+ | // uint8_t newMACAddress[] = {0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xf2}; | ||
+ | |||
+ | |||
+ | SoftwareSerial softwareSerial(D7, | ||
+ | byte abfrage[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; // Befehl zur Abfrage des CO2 Sensors | ||
+ | char antwort[9]; | ||
+ | |||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | softwareSerial.begin(9600); | ||
+ | |||
+ | // Beginn Netzwerk und WLAN - Konfiguration | ||
+ | // | ||
+ | // | ||
+ | //IPAddress ip(10, 144, 5, 2); | ||
+ | //IPAddress dns(10, 144, 1, 1); | ||
+ | //IPAddress gateway(10, 144, 1, 2); | ||
+ | //IPAddress subnet(255, 255, 0, 0); | ||
+ | // | ||
+ | // ende der Netzwerkkonfiguration | ||
+ | |||
+ | |||
+ | |||
+ | WiFi.begin(ssid, | ||
+ | while (WiFi.status() != WL_CONNECTED) { | ||
+ | delay(200); | ||
+ | Serial.print(" | ||
+ | } | ||
+ | |||
+ | Serial.println(" | ||
+ | Serial.println(); | ||
+ | wifiClient.setInsecure(); | ||
+ | |||
+ | } // ende setup | ||
+ | |||
+ | |||
+ | void loop() { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | int resHigh = (int) antwort[2]; | ||
+ | int resLow | ||
+ | int CO2_ppm = (256*resHigh)+resLow; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | for(int i=0; i<9 ; i++){ | ||
+ | Serial.print((int)antwort[i]); | ||
+ | Serial.print(" | ||
+ | } | ||
+ | Serial.println(" | ||
+ | if(antwort[0]!=255){ | ||
+ | Serial.println(" | ||
+ | delay(500); | ||
+ | ESP.restart(); | ||
+ | } | ||
+ | |||
+ | // Netzwerkverbindung aufbauen | ||
+ | //GET Data + Link | ||
+ | String getData = "? | ||
+ | String Link = " | ||
+ | Link = Link + getData; | ||
+ | | ||
+ | if (sender.begin(wifiClient, | ||
+ | int httpCode = sender.GET(); | ||
+ | if (httpCode > 0) { | ||
+ | if (httpCode == 200) { | ||
+ | String antwort = sender.getString(); | ||
+ | Serial.println(antwort); | ||
+ | }else{ | ||
+ | Serial.print(" | ||
+ | } | ||
+ | } | ||
+ | sender.end(); | ||
+ | }else { | ||
+ | Serial.printf(" | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | } // ende loop | ||
+ | </sxh> |