Entwickelt man Software für den ESP8266, dann müssten die Zugangsdaten zum WLAN (SSID und Passwort) und einige andere Daten über den Sketch programmiert werden. Nach dem Programmieren stehen diese dann zur Verfügung. Doch was ist, wenn man im WLAN SSID und Passwort ändert? Dann müsste der Sketch angepasst und erneut auf den Chip gebrannt werden. Wenn die Sensoren/Aktoren in Unterputzdosen untergebracht sind, ist das ein unbequemes Verfahren. Wenn Ihr den Sketch an Freunde weitergebt, müsstet Ihr Eure geheimen Zugangsdaten vorher entfernen. Oder Eure Freunde verwenden andere Netzwerkklassen - auch dann müsste der Sketch angepasst werden.
Besser ist es, die Parameter nicht im Sketch zu vereinbaren, sondern erst zur Laufzeit in den Sensor/Aktor zu konfigurieren. Das ist einmalig etwas mehr Programmieraufwand, aber es lohnt sich bei mehreren Sensoren/Aktoren sehr schnell. Im Folgenden wird das Verfahren zur Konfiguration beschrieben.
Netzwerkinformationen und ID's
Der ESP8266 ist ein leistungsfähiger Chip mit WLAN. Er bietet folgende Arbeitsmodi:
- WLAN-Client
- WLAN-Access-Point
Hostname
Setzt man einen WLAN-Accesspoint mit Webserver neu auf, dann ist der ESP8266 unter der festen IP-Adresse
192.168.4.1
erreichbar. Er erhält automatisch einen Hostnamen, wie z.B.
ESP_A5C68D
"ESP_" ist ein fester Namensbestandteil aller ESP8266, während sich die Zahlenfolge "A5C68D" aus den letzten drei Byte der MAC-Adresse (weltweit eindeutig) ableitet. Dieser Chip hatte die MAC-Adresse "18:FE:34:A5:C6:8D". Wie erhält man den Hostnamen eines ESP8266 über einen Arduino Sketch?
String id, hostname; uint8_t mac[6];
WiFi.macAddress(mac); id=macToID(mac); hostname = "ESP_" + id;
Hierzu wird diese Funktion aufgerufen:
String macToID(const uint8_t* mac) { String result; for (int i = 3; i < 6; ++i) { result += String(mac[i], 16); } result.toUpperCase(); return result; }
IP-Adresse
Die IP-Adresse kann ebenfalls innerhalb des Sketch ermittelt werden:
String ip; ip = WiFi.localIP();
Flash-ID
Die ESP8266 besitzen eine ID des Flash-Chips, welche ebenfalls zur Unterscheidung verwendet werden kann:
String s; s = ESP.getChipId()