Configuration sans fil de l'ESP8266 dans le firmware DeviceHive v 0.3



Bonnes nouvelles tout le monde! Une nouvelle version du firmware DeviceHive pour ESP8266 a été publiée. Nous avons implémenté la prise en charge des interfaces les plus populaires pour la connexion d'appareils: GPIO, ADC, PWM, UART, I2C, SPI, 1 fil. Vous pouvez désormais facilement connecter des appareils dotés de ces interfaces à notre service cloud. Et surtout - la possibilité de configurer sans fil le firmware est apparue (voir la capture d'écran ci-dessous). Nous en parlerons aujourd'hui.



Triple RESET, ou "Allons-y!"


Lors de la création d'appareils IoT avec une connexion sans fil, vous pouvez souvent rencontrer un problème désagréable: la configuration de l'appareil pour l'utilisateur final n'est pas aussi simple qu'il y paraît. Ces appareils ne sont généralement pas équipés d'un écran et d'un clavier, de sorte que la configuration des paramètres initiaux (données du réseau Wi-Fi, par exemple) ne fonctionnera pas sans un câble approprié et un logiciel spécialisé. Nous avons essayé de résoudre ce problème dans la nouvelle version du firmware.

Maintenant, tout est extrêmement simple à configurer:
• l'appareil redémarre trois fois (avec un intervalle ne dépassant pas 3 secondes), après quoi il se transforme en point d'accès Wi-Fi;
• vous vous connectez à ce point et entrez dans le navigateur tous les paramètres nécessaires;
• après avoir appliqué les paramètres, l'appareil redémarre automatiquement déjà avec les nouveaux paramètres.

De cette façon, les deux problèmes sont résolus en même temps - vous n'aurez besoin ni de câbles ni de logiciels spéciaux. Outre le navigateur ... mais avez-vous un navigateur? Le bouton RESET est le plus souvent situé directement sur le corps de l'appareil, en appuyant trois fois devrait être assez simple.

De plus, dans les systèmes d'exploitation mobiles modernes, vous n'avez même pas besoin d'ouvrir un navigateur, car la plupart d'entre eux prennent en charge l'authentification par portail captif. Sur les appareils Apple, la page de saisie des données s'ouvre automatiquement. Android affichera une notification en cliquant sur lequel, vous vous retrouverez sur cette page.

Dans la vidéo ci-dessous, vous pouvez voir comment tout fonctionne avec le nouveau firmware et l'appareil Android.



Fais le toi-même


Voyons comment fonctionne un tel système de configuration, car il peut être mis en œuvre pour tout autre appareil sans fil avec Wi-Fi.

Pour commencer, nous augmentons le réseau Wi-Fi habituel. Dans ce document, nous créons un serveur DHCP qui distribuera les adresses IP aux appareils connectés. Mais en tant que serveur DNS, il transmet l'adresse IP du DNS «rusé». L'astuce est que la même adresse IP du serveur HTTP avec lequel nous pouvons configurer l'appareil sera toujours renvoyée à tous les enregistrements de requête DNS «A». Dans le cas d'ESP8266, les serveurs DHCP, DNS et HTTP fonctionnent directement sur la puce. Dans une version très basique, cela suffit - en ouvrant n'importe quelle page du navigateur, nous verrons la page des paramètres. Mais, pour être beau, vous pouvez forcer les appareils qui prennent en charge l'authentification du portail à afficher une notification sur la nécessité de saisir des données.

L'authentification du portail est généralement utilisée pour saisir des données et / ou afficher un accord d'utilisation dans un hôtel, un hôtel et d'autres points d'accès Wi-Fi. Nous utilisons cette technique pour afficher notre page.

Android lors de la connexion à un réseau Wi-Fi essaiera d'accéder à clients3.google.com/generate_204 .
Les appareils Apple tentent de se connecter à captive.apple.com .

Après y avoir envoyé une demande, vous recevrez une réponse du formulaire:

$ 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>


Autrement dit, en réponse à une demande HTTP, ils renvoient une réponse avec le statut 2xx. Grâce à ces demandes, les appareils déterminent s'ils sont connectés à Internet. Pour implémenter l'authentification du portail, en réponse à ces demandes (ou simplement à toutes les demandes à l'exception de celles qui nous intéressent), envoyez une réponse avec le code 302 Déplacé temporairement et indiquez le champ Emplacement avec notre adresse dans l'en-tête, c'est-à-dire que la réponse devrait être quelque chose comme ceci:

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


Après avoir reçu cette réponse, les appareils comprendront qu'il est nécessaire d'afficher la page des paramètres à l'adresse spécifiée - les appareils Apple ouvriront cette page à l'écran eux-mêmes et Android affichera une notification. Dans les systèmes d'exploitation sans prise en charge de l'authentification du portail, il suffit d'écrire dans la barre d'adresse du navigateur toute adresse commençant par «http: //» - le navigateur ouvrira la page des paramètres. Dans le même temps, vous ne tromperez pas l'utilisateur, car l'adresse de la page avec les paramètres sera affichée dans la barre d'adresse. Dans le firmware pour ESP8266, nous utilisons l'adresse devicehive.config .

Nous espérons que tout cela vous sera utile. Bonne chance pour créer vos propres solutions IoT!

Publié par Nikolai Khabarov, développeur principal embarqué

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


All Articles