Wifi

Wifi sur microcontrôleur.

Voici un petit exemple de connexion entre un navigateur web et un microcontrôleur.
Pour ce faire j'utilise un module ESP2866.
Je me suis basé sur ce tutoriel.
Voici mon code source un peu modifié que j'écris dans l'ESP8266 avec l'IDE Arduino:

#include
#include
const char* ssid = "*********";
const char* password = "*********";
const int GPIO2 = 2;
WebSocketsServer webSocket = WebSocketsServer(80);
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght)
{
switch(type)
{
case WStype_DISCONNECTED:
{
Serial.printf("Deconnexion\r\n");
analogWrite(GPIO2, 0);
}
break;
case WStype_CONNECTED:
{
IPAddress ip = webSocket.remoteIP(num);
Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\r\n", num, ip[0], ip[1], ip[2], ip[3], payload);
analogWrite(GPIO2, 254);
}
break;
case WStype_TEXT:
{
Serial.printf("[%u] Texte recu: [%s]\r\n", num, payload);
webSocket.sendTXT(num, payload);
}
break;
case WStype_BIN:
{
Serial.printf("Reception binaire.\r\n");
hexdump(payload, lenght);
webSocket.sendBIN(num, payload, lenght);
}
break;
default:
break;
}
}
void setup()
{
Serial.begin(115200);
pinMode(GPIO2, OUTPUT);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(200);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(500);
Serial.println("Start Websocket Server");
webSocket.begin();
webSocket.onEvent(webSocketEvent);
}
void loop()
{
webSocket.loop();
}

Ensuite, coté client (navigateur web), j'utilise ce lien, c'est un petit code JavaScript qui initie une connexion websocket.
Ce lien doit toujours être lancé en http, et non en https, car le programme du module ESP2866 ne supporte pas le WWS, et il n'est pas possible de faire une connexion en clair (http ou ws) dans une page chargé en https.