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.



Datum:
08.07.2018, 14:42 Uhr
Autor:
Stefan Kröll
Comments:
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

6 Comments zu "ESP8266: Feste IP-Adresse vergeben"

  1. Coney sagt:

    War hilfreich.
    Danke.

  2. Cetax sagt:

    Top, genau das was ich gesucht habe …
    Daaanke:-)

  3. Hans Richter sagt:

    Wenn jetzt der ESP noch eine Namen im Netz hätte wäre es perfekt !! Wie heisst das Kommando dafür ?

  4. Igge sagt:

    Der Aufruf

    WiFi.config(ip, dns, gateway, subnet);

    ist falsch. Er muss

    WiFi.config(ip, gateway, subnet, dns);

    lauten.

  5. Pr sagt:

    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

  6. Stefan sagt:

    Habe den entsprechenden Code-Absatz nochmal überarbeitet.

* gesponserter Link
Blogverzeichnis - Bloggerei.de