Drahtlose Konfiguration von ESP8266 in der Firmware von DeviceHive v 0.3



Gute Nachrichten, Leute! Eine neue Version der DeviceHive-Firmware fĂŒr ESP8266 wurde veröffentlicht. Wir haben UnterstĂŒtzung fĂŒr die beliebtesten Schnittstellen zum Anschließen von GerĂ€ten implementiert: GPIO, ADC, PWM, UART, I2C, SPI, 1-Draht. Jetzt können Sie GerĂ€te mit diesen Schnittstellen einfach mit unserem Cloud-Service verbinden. Und vor allem - die Möglichkeit, die Firmware drahtlos zu konfigurieren, ist erschienen (siehe Abbildung unten). Wir werden heute darĂŒber sprechen.



Triple RESET oder "Lass uns gehen!"


Beim Erstellen von IoT-GerĂ€ten mit einer drahtlosen Verbindung kann hĂ€ufig ein unangenehmes Problem auftreten: Das Einrichten des GerĂ€ts fĂŒr den Endbenutzer ist nicht so einfach, wie es scheint. Solche GerĂ€te sind normalerweise nicht mit einem Bildschirm und einer Tastatur ausgestattet, sodass das Einrichten der Grundeinstellungen (z. B. Wi-Fi-Netzwerkdaten) ohne ein geeignetes Kabel und eine spezielle Software nicht funktioniert. Wir haben versucht, dieses Problem in der neuen Firmware-Version zu lösen.

Jetzt ist alles sehr einfach zu konfigurieren:
‱ Das GerĂ€t wird dreimal neu gestartet (mit einem Intervall von nicht mehr als 3 Sekunden). Danach wird es zu einem Wi-Fi-Zugangspunkt.
‱ Sie stellen eine Verbindung zu diesem Punkt her und geben ĂŒber den Browser alle erforderlichen Einstellungen ein.
‱ Nach dem Anwenden der Einstellungen startet das GerĂ€t automatisch bereits mit den neuen Einstellungen neu.

Auf diese Weise werden beide Probleme gleichzeitig gelöst - Sie benötigen weder Kabel noch spezielle Software. Neben dem Browser ... aber hast du einen Browser? Die RESET-Taste befindet sich meistens direkt am GehĂ€use des GerĂ€ts. Das dreimalige DrĂŒcken sollte recht einfach sein.

DarĂŒber hinaus mĂŒssen Sie in modernen mobilen Betriebssystemen nicht einmal einen Browser öffnen, da die meisten von ihnen die Captive-Portal-Authentifizierung unterstĂŒtzen. Auf Apple-GerĂ€ten wird die Dateneingabeseite automatisch geöffnet. Android zeigt eine Benachrichtigung an, indem Sie darauf klicken. Sie befinden sich auf dieser Seite.

Im Video unten können Sie sehen, wie alles mit der neuen Firmware und dem neuen Android-GerÀt funktioniert.



Mit seinen eigenen HĂ€nden


Mal sehen, wie ein solches Setup-System grundsĂ€tzlich funktioniert, da es fĂŒr jedes andere drahtlose GerĂ€t mit Wi-Fi implementiert werden kann.

Zu Beginn erhöhen wir das ĂŒbliche Wi-Fi-Netzwerk. Darin erstellen wir einen DHCP-Server, der IP-Adressen an verbundene GerĂ€te verteilt. Als DNS-Server ĂŒbergibt er jedoch die IP-Adresse des „gerissenen“ DNS. Der Trick besteht darin, dass dieselbe IP-Adresse des HTTP-Servers, mit dem wir das GerĂ€t konfigurieren können, immer an alle DNS-Abfrage-A-EintrĂ€ge zurĂŒckgegeben wird. Im Fall von ESP8266 arbeiten DHCP-, DNS- und HTTP-Server direkt auf dem Chip. In einer sehr einfachen Version reicht dies aus. Wenn Sie eine Seite im Browser öffnen, wird eine Seite mit den Einstellungen angezeigt. Um schön zu sein, können Sie GerĂ€te, die die Portalauthentifizierung unterstĂŒtzen, zwingen, eine Benachrichtigung ĂŒber die Notwendigkeit der Dateneingabe anzuzeigen.

Die Portalauthentifizierung wird normalerweise verwendet, um Daten einzugeben und / oder eine Nutzungsvereinbarung in Hotels, Hotels und anderen WLAN-Hotspots anzuzeigen. Wir verwenden diese Technik, um unsere Seite anzuzeigen.

Wenn Android eine Verbindung zu einem Wi-Fi-Netzwerk herstellt, wird versucht, zu clients3.google.com/generate_204 zu wechseln .
Apple-GerÀte versuchen, eine Verbindung zu captive.apple.com herzustellen .

Nachdem Sie dort eine Anfrage gesendet haben, erhalten Sie eine Antwort auf das Formular

$ curl http://clients3.google.com/generate_204 -i
HTTP/1.1 204 No Content
Content-Length: 0
Date: Mon, 07 Sep 2015 14:58:21 GMT
Server: GFE/2.0


$ curl http://captive.apple.com -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 68
Date: Mon, 07 Sep 2015 15:00:32 GMT
Connection: keep-alive

<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>


Das heißt, als Antwort auf eine HTTP-Anforderung geben sie eine Antwort mit dem Status 2xx zurĂŒck. Dank dieser Anforderungen bestimmen die GerĂ€te, ob sie mit dem Internet verbunden sind. Um die Portalauthentifizierung zu implementieren, muss eine Antwort mit dem Code 302 TemporĂ€r verschoben als Antwort auf diese Anforderungen (oder nur auf alle fĂŒr uns interessanten Anforderungen) gesendet und das Feld Standort mit unserer Adresse in der Kopfzeile angegeben werden, d. H. Die Antwort sollte ungefĂ€hr so ​​lauten:

HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Location: http://example.com


Nach Erhalt dieser Antwort werden die GerĂ€te verstehen, dass die Einstellungsseite unter der angegebenen Adresse angezeigt werden muss. Apple-GerĂ€te öffnen diese Seite auf dem Bildschirm selbst und Android zeigt eine Benachrichtigung an. Unter Betriebssystemen ohne UnterstĂŒtzung fĂŒr die Portalauthentifizierung reicht es aus, in die Adressleiste des Browsers eine Adresse zu schreiben, die mit "http: //" beginnt. Der Browser öffnet die Einstellungsseite. Gleichzeitig werden Sie den Benutzer nicht irrefĂŒhren, da die Adresse der Seite mit den Einstellungen in der Adressleiste angezeigt wird. In der Firmware fĂŒr ESP8266 verwenden wir die Adresse devicehive.config .

Wir hoffen, dass all dies fĂŒr Sie nĂŒtzlich ist. Viel GlĂŒck beim Erstellen Ihrer eigenen IoT-Lösungen!

Gepostet von Nikolai Khabarov, Senior Embedded Developer

Source: https://habr.com/ru/post/de383881/


All Articles