meta données pour cette page
Ceci est une ancienne révision du document !
L'idée est de paramétrer votre Wemos ou tout autre micro-controleur esp8266 pour en faire un serveur websocket est ainsi envoyer des données qui seront exploité en javascript. Cette méthode vous permet de vous passer d'installer une serveur node.js.
1-Installation de la librairie - Aller via l’onglet croquis sur : inclure une bibliotheque/gérer les bibliothèques - Dans le bloc de saisie en haut à droite tapez « websocket » - Doit apparaitre dans la liste situé dessous : websocket by Markus Sattler. - Cliquer sur installer
2-Le code pour Arduino
#include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <WebSocketsServer.h> #include <ESP8266mDNS.h> #include <Hash.h> //connexion wifi ESP8266WiFiMulti WiFiMulti; //creation d'un serveur websocket sur le port 81 WebSocketsServer webSocket = WebSocketsServer(81); //variable pour savoir si le serveur est lancé bool plug = false; //fonction de gestion du serveur websocket void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght) { switch(type) { case WStype_DISCONNECTED: plug=false; Serial.printf("[%u] Disconnected!\n", num); break; case WStype_CONNECTED: { plug=true; IPAddress ip = webSocket.remoteIP(num); Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload); // send message to client webSocket.sendTXT(num, "Connected"); } break; case WStype_TEXT: Serial.printf("[%u] get Text: %s\n", num, payload); if(payload[0] == '#') { } break; } } void setup() { Serial.begin(115200); //option de debuggage du websocket Serial.setDebugOutput(true); Serial.println(); Serial.println(); Serial.println(); for(uint8_t t = 4; t > 0; t--) { Serial.printf("[SETUP] BOOT WAIT %d...\n", t); Serial.flush(); delay(1000); } //connexion au wifi WiFiMulti.addAP("nom de la borne wifi", "motdepasse"); while(WiFiMulti.run() != WL_CONNECTED) { delay(100); } // lancement du serveur websocket webSocket.begin(); webSocket.onEvent(webSocketEvent); if(MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); } // ajout du service MDNS.addService("ws", "tcp", 81); } void loop() { webSocket.loop(); if(plug){ //lancement d'un message webSocket.sendTXT(0,"ca marche"); } }
3-Le code html
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>test websocket</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="main.js"></script> </head> <body> </body> </html>
3-Le code javascript
//déclaration de la variable message var msg; $(document).ready(function() { listenSocket(); }); function listenSocket(){ //adresse du websocket >>>> changer adresse ip par l'adresse ip de votre arduino (cf la console dans arduino ou l'adresse sera indiqué) . ¡¡¡ Attention bien garder le :81 qui est le port du serveur websocket !!! var exampleSocket = new WebSocket("ws://adresseip:81/", ['arduino']); //gestion des messages reçus exampleSocket.onopen = function() { console.log('connected'); }; exampleSocket.onmessage = function(e) { //msg = JSON.parse(e.data)>>> si le message reçu est un json; console.log('message received : ', e.data); }; exampleSocket.onclose = function() { console.log('disconnected'); }; }
Have fun !!!