ESP8266: Feste IP-Adresse vergeben
Ihr möchtet eurem ESP-8266 Mikrocontroller eine feste IP-Adresse zuweisen? Nichts leichter als das – In dieser Anleitung zeigen wir euch wie ihr sowohl IP-, DNS-, Subnet- wie auch Gateway-Adresse dem kleinen ESP-Chip zuordnen könnt. Dadurch ist euer WLAN-Mikrocontroller immer unter der gleichen URL erreichbar und kann somit leichter für alle möglichen IoT-Dienste verwendet werden.
Aufbau des Programms
Zunächst einmal müssen wir die Standardkonfiguration unseres WLAN-Netzwerkes in unser Programm eintragen. Das machen wir direkt am Anfang mit folgenden Befehlen:
#include <ESP8266WiFi.h>
const char* ssid = "FRITZ!Box XXXX";
const char* password = "GEHEIMES-PASSWORT-123";
WiFiServer server(80);
Nun können wir im Setup-Abschnitt unsere feste IP-, DNS-, Subnet- sowie Gateway-Adresse vergeben:
void setup() {
Serial.begin(115200);
delay(10);
IPAddress ip(192, 168, 178, 220);
IPAddress dns(192, 168, 178, 1);
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, dns, gateway, subnet);
Zu guter letzt kommt nun noch der eigentliche Verbindungsvorgang zu unserem heimischen WLAN-Netzwerk:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("WiFi connected");
server.begin();
Serial.println("Web server running.");
delay(500);
Serial.println(WiFi.localIP());
}
Komplettes Programm
Zur besseren Übersicht gibt es hier noch einmal das komplette Programm um dem ESP-8266 eine feste IP-Adresse zuzuweisen:
#include <ESP8266WiFi.h>
const char* ssid = "FRITZ!Box XXXX";
const char* password = "GEHEIMES-PASSWORT-123";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
IPAddress ip(192, 168, 178, 220);
IPAddress dns(192, 168, 178, 1);
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, dns, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("WiFi connected");
server.begin();
Serial.println("Web server running.");
delay(500);
Serial.println(WiFi.localIP());
}
void loop() {
// put your main code here, to run repeatedly:
}
Info: Über den Seriellen Monitor wird euch die statische IP-Adresse dann ebenfalls angezeigt, achtet dabei auf die richtig eingestellte Baud-Rate von 115200.
Anwendungszwecke
Eine feste IP-Zuweisung macht vor allem bei kleinen Steuerungsaufgaben Sinn, so ist der jeweilige Dienst trotz Router-Neustart immer noch unter der gleichen Adresse für euch erreichbar. Aber auch aus verwaltungstechnischer Sicht kann sich die Zuweisung einer festen IP-Adresse bei IoT-Geräten auszahlen – eventuelle Defekte lassen sich so leichter und schneller dem jeweiligen ESP-Chip zuordnen.
Feste IP-Adresse über den Router zuweisen
Übrigens: Manche WLAN-Router bieten euch zudem die Möglichkeit eine feste IP-Adresse direkt über die Router-Oberfläche für das jeweilige Gerät festzulegen. Damit spart ihr euch das feste anlegen direkt im Programmcode und seid somit flexibler – für kurzfristige Lösungen daher ideal. Zum Nachteil wird diese Methode erst bei einem Routerausfall: Dann sind logischerweise alle IP-Zuordnungen verloren und müssen neu vorgenommen werden.
War hilfreich.
Danke.
Top, genau das was ich gesucht habe …
Daaanke:-)
Wenn jetzt der ESP noch eine Namen im Netz hätte wäre es perfekt !! Wie heisst das Kommando dafür ?
Der Aufruf
WiFi.config(ip, dns, gateway, subnet);
ist falsch. Er muss
WiFi.config(ip, gateway, subnet, dns);
lauten.
Moin moin,
ist bei der Reihenfolge :IPAddress ip(192, 168, 178, 220);
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 178, 1); und dieser Rehenfolge nicht ein signifikanter Fehler???
WiFi.config(ip, dns, gateway, subnet);
Ich bin ein Newbie auf dem Gebiet und meine NodeMCU IP Adresse lässt sich nicht ändern ;-(( Egal was ich im Arduino – Sketch ändere, ist der Node MCU weiterhin unter 192.168.4.1 zu erreichen.
ansonsten funst alles.
Aber die IP -Änderung ;-(((((((((
MfG
Habe den entsprechenden Code-Absatz nochmal überarbeitet.