Forum: Mikrocontroller und Digitale Elektronik ESP8266 fw mit web basierter WiFi config


von Marco W. (watz)


Lesenswert?

Hi,

nun hab ich schon eine Weile nach ESP8266 FWs für remote sensor 
Anwendungen gesucht, welche die WiFi Konfiguration über ein Webinterface 
abwickeln (d.h. initial open AP Modus mit Konfiguratinsinterface, danach 
Station Modus wie üblich).

Praktisch alle ESP8266 Beispiele hardcoden AP/Kennwort oder setzen es 
via serieller Konsole - an sich doch enorm unpraktisch.

Gefunden hab ich lediglich das hier:

http://www.instructables.com/id/ESP8266-based-web-configurable-wifi-general-purpos-1/2/

Damit werde ich mal spielen. Aber wie löst ihr das Problem auf euren IoT 
Geräten ?

Gruß,
Marco

von Stefan F. (Gast)


Lesenswert?

Über dieses Thema habe ich auch schonmal nachgedacht. Wie stelle ich ein 
Web-Formular zur initalen Konfiguration bereit?

Ich würde es auch so lösen. In unkonfiguriertem Zustand ist das Gerät 
ein AP und stellt die initiale Konfigurations-Seite bereit. Danach ist 
es kein AP mehr, sondern verbindet sich mit dem vorhandenen WLAN/DSL 
Router.

Über einen Rückstell-Schalter kann man die Konfiguration notfalls wieder 
zurück setzen.

Ich stelle mir vor, dass dies praktikabel ist. Aber ich hab's noch nicht 
ausprobiert.

von Marco W. (watz)


Lesenswert?

Genau so. Schön stelle ich mir das noch in Kombination mit einem 
generischen Datentransfer Framework für per UART angebundene MCUs vor. 
Dann müßte man sich praktisch nicht um den ESP8266 oder dessen WiFi 
Konfiguration kümmern, sondern lediglich in der MCU den UART Transfer 
implementieren. Nur das nötigste. Um die Umsetzung auf http/tcp/udp etc. 
kümmert sich die FW des ESP8266 in irgendeiner generischen Art und 
Weise.

Hmm dabei Frage ich mich jetzt, ob es da nicht sogar schon definierte 
Protokolle (z.B. für Home Automation) gibt, deren Nutzung dann 
entsprechend noch einen Mehrwert bringen könnte.

von Fabian T. (fthunert)


Lesenswert?

Hi,
folgendes Beispiel habe ich gestern mal getestet.  Zumindest die wifi 
configuration ist da drin.


http://harizanov.com/2014/11/esp8266-powered-web-server-led-control-dht22-temperaturehumidity-sensor-reading/

von Marco W. (watz)


Lesenswert?

Ja, esphttpd hat diese Funktionalität. Nehm ich gern. Mittlerweile denke 
ich, daß ich versuchen werde, den ESP uPnP anbieten zu lassen. D.h die 
MCU würde mit einem möglichst einfachem Protokoll von mir am UART 
effektiv ihre Daten per uPnP ins Netz stellen. Ich muß mich mal durch 
die DCPs dort wühlen - vieleicht gibt es ja schon passende Definitionen.

Ein offenes, dediziertes Home Automation Protokoll, welches per WiFi/IP 
funktioniert, hab ich noch nicht nicht gefunden. Entweder kochen sie bei 
der HW schon ihr eigenes Süppchen, oder sie können WiFi aber treiben 
dort eigene Protokolle.

Die Belkin WeMo nutzen uPnP.

von Marco W. (watz)


Lesenswert?

Das müßte sich in einer ESP fw doch vergleichsweise generisch machen 
lassen:

http://upnp.org/specs/smgt/smgt1/

Ich plane ein 3p Energiemeßgerät und Temp-/Luftfeuchtesensoren - deren 
Daten könnte man prima mit den offiziellen uPnP Schemas ins LAN bringen. 
Ein Framework in der fw könnte das übernehmen, und auch generisch die 
uPnP Gerätewebseiten zur Anzeige der jeweiligen Sensoren bzw. Kontrolle 
der Funktionen generieren.

Auch wenn beispielsweise Windows diese Schemas noch nicht sinnvoll 
out-of-the-box unterstützt, zeigt z.B. Win7 das Gerät im Explorer und 
ein Doppelklick bringt einen auf die (dort generierte) Gerätewebseite. 
Ohne weiteres zutun oder irgendeine Konfiguration.

https://software.intel.com/en-us/articles/intel-tools-for-upnp-technologies

Die Tools sind prima.

von Strubi (Gast)


Lesenswert?

Moin,

mit dem Thema hab ich mich schon länger beschäftigt, und dafür auch ein 
Protokoll parat (netpp). Läuft auch schon auf dem esp8266, aber erst mal 
nur im Slave-Betrieb. Im Prinzip läuft es bei diesen Protokollen immer 
auf ein RemoteProcedureCall-Interface (RPC) hinaus, und da fängt der 
Wildwuchs an, angefangen bei einfachen Protokollen wie SWAP oder andere 
modbus-ähnliche Konstrukte bis zu industriellen Molochen wie EDDL. Als 
offenen Standard würde ich noch am ehesten JSON einsetzen. Ich habe für 
div. uC-Anwendungen damals nur was kompaktes/schnelles (ergo binäres) 
gebraucht, was mit "Zerocopy"-Strategien klarkommt.

Im Prinzip macht mein momentaner Setup das, was schon oben beschrieben 
wurde: Default-Konfig ist AP, dann kann man per WLAN die Eigenschaften 
("Properties") des Knoten (ESP8266) setzen. Das geschieht etwa wie hier:
http://www.section5.ch/doc/netpp/netpp-demo.html

Wenn man sich die Konfig zerschiesst, muss man momentan noch die 
Konfig-Flash-Section neu schreiben, das ist nicht sonderlich schön, 
Abhilfe sollte mal noch ein "Reset to defaults"-GPIO bringen.

Die eigentlichen Probleme am Schluss stellen allerdings nicht Protokolle 
dar, sondern eher Master oder Slave, bzw. Push oder Pull? (Bis hin zur 
Anforderung an Mesh-Networking). Beispiel: Drahtlos und stromsparend 
geht ansich nur im "Push"-Betrieb, z.B. Sensor wacht regelmässig auf, 
und schickt alle paar Intervalle seine Messdaten an einen "Hub" 
(Datenlogger). Der User fragt diese Daten dann am Hub ab ("Pull"). Das 
ist dann typischerweise der WLAN-Knoten mit Webserver und Proxy auf die 
Low-Power-Wireless-Protokolle.

Da leider die geschlossenen SDK-Routinen des espressif-SDK nicht 
sonderlich robust sind, dauert es noch eine Weile, bis ich dem ganzen 
Ding wirklich grünes Licht geben würde. Mal abwarten, ob da in nächster 
Zeit ein paar Routinen offengelegt werden oder die Jungs die Fehler 
ausgebügelt bekommen. Die FreeRTOS-Geschichte sieht schon mal etwas 
besser aus, hat aber auch noch üble Böcke.

Grüsse,

- Strubi

von Dieter R. (dieter_r)


Lesenswert?

Auch wenn der Faden schon steinalt ist, meine Lösung dafür wäre der 
WiFiManager

https://github.com/tzapu/WiFiManager

von Stefan F. (Gast)


Lesenswert?

By the way: Ich habe meinen oben skizzierten Ansatz erfolgreich 
ausprobiert. Doku und Download der Arduino Klasse: 
http://stefanfrings.de/esp8266/index.html#wificonfigservice

von Heiko (Gast)


Lesenswert?

Ich auch :) Noch nicht schön, aber noch verstehe ich den Code: 
https://github.com/newHeiko/wiFred

Wenn das konfigurierte WLAN nicht erreichbar ist, mache ich einen AP 
auf. Ein neuer ESP sucht nach SSID "undef", wird also immer einen AP 
aufmachen.

Captive etc. habe ich nicht eingebaut. Der WiFiManager erschien mir 
recht chaotisch, und da ich noch mehr Konfiguration einbauen wollte als 
nur WiFi, habe ich das neu geschrieben.

MfG, Heiko

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.