Arduinos controllés par le navigateur web.

Bonsoir,

Je viens de déposer le code d'une classe (BoardView) permettant de contrôler sa carte arduino à partir d'un navigateur web lambda. Ça se passe ici.

Ce code est tout récent, sans doute bogué, mais les exemples tournent chez moi :wink:

Si vous êtes intéressés n'hésitez pas à utiliser ce topic pour en discuter ...

Slt je voulais s'avoir si tu avais des image a donner et le matteriel utiliser et si on peut demander a l'arduino d'afficher une information sur la page web

Salut zaienj,

je n'ai pas très bien compris ta demande ? De quel matériel disposes-tu ? mes tests utilise un d1 mini (coté ESP) et un nano. qu'est ce que tu appelles image ? en fait je distribue les sources sous licence libre et chacun les recompile (après éventuelles modifications) pour se produire ses exécutables à implanter sur ses cartes.

Des images ? Pourtant elles y sont :

Bonjour,

desolé pour le retard j'avais beaucoup de travail à coté :confused:

j'ai essayé de tester tes exemples mais l'objet Boardview est inconnu quand je compile

Salut lgabed420,

pas de soucis, moi aussi je ne viens ici que quand j'ai le temps :wink:

Tu peux me décrire le matériel que tu as utilisé, l'exemple que tu as voulu tester et la sortie d'erreur de la compilation ?

As-tu eu un soucis particulier lors de l'installation, si oui, même anecdotique, il peut avoir de l'importance.

Pré requis pour faire fonctionner les exemples :

  *  Avoir installé la chaîne de compilation pour votre Esp (voir par exemple ici)
  *  Avoir installé la bibliothèque "Web Sockets" de Markus Sattler (version 2.*) (via le menu "Outils -> Gérer les bibliothèques" par exemple pour l'IDE Arduino).
  *  Avoir téléchargé et installé le ZIP de BoardView (bouton "Clone or download" en haut de cette page) et ensuite, pour l'IDE Arduino "Croquis -> Inclure une bibliothèque -> -> Ajouter la bibliothèque .ZIP" (plus de détails ici).

Aucun matériel nécessaire pour les exemples autre qu'une carte esp8266 (et nano + 4 fils si test du mode "redirect").

Bref tout indice est bon à prendre...

Bonjour supercc,

j'utilise un esp8266-01 et une carte mega.

je voulais tester l'exemple BangBangD1mini , et j'ai pas eu de soucis particulier lors de l'installation :smiley:

j'ai suivi toutes les étapes et j'obtiens les erreurs ci-dessous :

BangBangD1Mini:18:1: error: 'BoardView' does not name a type

BoardView boardView;

^

C:\Users\medam\OneDrive\Documents\Arduino\libraries\BoardView-master\examples\BangBangD1Mini\BangBangD1Mini.ino: In function 'int parseRequest(char*, char*, unsigned int)':

BangBangD1Mini:66:28: error: 'matchCmd' was not declared in this scope

if(matchCmd(request,"dump")) {

^

BangBangD1Mini:69:49: error: 'addFloat' was not declared in this scope

addFloat(response, MAX_LINE_LEN, "hum", hum, 1);

^

BangBangD1Mini:72:50: error: 'addInt' was not declared in this scope

addInt (response, MAX_LINE_LEN, "relay", relay);

^

BangBangD1Mini:82:50: error: 'matchAndAssignFloat' was not declared in this scope

else if(matchAndAssignFloat(request, "hum", &hum)) strcpy(response, "ok");

^

BangBangD1Mini:85:54: error: 'matchAndAssignInt' was not declared in this scope

else if(matchAndAssignInt (request, "relay", &relay)) strcpy(response, "ok");

^

C:\Users\medam\OneDrive\Documents\Arduino\libraries\BoardView-master\examples\BangBangD1Mini\BangBangD1Mini.ino: In function 'void setup()':

BangBangD1Mini:105:2: error: 'WiFi' was not declared in this scope

WiFi.mode(WIFI_STA);

^

BangBangD1Mini:105:12: error: 'WIFI_STA' was not declared in this scope

WiFi.mode(WIFI_STA);

^

BangBangD1Mini:107:26: error: 'WL_CONNECTED' was not declared in this scope

while (WiFi.status() != WL_CONNECTED) delay(500);

^

BangBangD1Mini:120:2: error: 'boardViewParseRequest' was not declared in this scope

boardViewParseRequest=parseRequest;

^

BangBangD1Mini:121:2: error: 'boardView' was not declared in this scope

boardView.name="Bang-bang";

^

C:\Users\medam\OneDrive\Documents\Arduino\libraries\BoardView-master\examples\BangBangD1Mini\BangBangD1Mini.ino: In function 'void loop()':

BangBangD1Mini:148:2: error: 'boardView' was not declared in this scope

boardView.loop();

^

exit status 1
'BoardView' does not name a type

On est bien d'accord que l'exemple BangBangD1Mini ne nécessite pas d'autre carte qu'une carte avec ESP8266, donc pour l'instant on oublie la mega.

Cette erreur vient soit de mon coté (pb dans le code de détection de l'architecture) ou du tien : tu n'as pas choisi une carte ESP8266 lors de la compilation (Outils -> type de carte -> Un modèle avec ESP8266).

Dans ton cas (ESP-01) je crois que c'est le modèle "Generic ESP Module" si je me réfère par exemple à ce lien ce lien.

Je ne connais pas le module ESP-01 et l'absence de port USB nécessite de passer par un adaptateur du genre de celui utilisé ici ou via une carte externe comme fait dans le lien indiqué plus haut.

Pour voir ou se situe le problème il faudrait que tu me donnes aussi la ligne de compilation effectuée juste avant le message d'erreur.

EDIT : juste la ligne de compilation avant le message d'erreur.

Tu as bien raison j'avais mal compris j'essayais d'utiliser la mega avec l'ESP avec un code dedié à la D1, j'ai compilé le ChronoNano qui utilise bien l'objet BoardView et la carte Nano , et làaucune erreur !

Est ce que je peux utilisé celà pour envoyer des données ( mesure de capteur, requete ) à un serveur quelconque
avec mes moyens du bords (esp01 - mega) ?

Très bien, maintenant il faut que tu mettes BridgeD1Mini (qui fera le pont entre l'arduino (nano, uno, mega) sur lequel tourne le chnrono et le Wifi) sur l'ESP-01 (cf. le post précédent).

Est ce que je peux utilisé celà pour envoyer des données ( mesure de capteur, requete ) à un serveur quelconque avec mes moyens du bords (esp01 - mega) ?

Quel type de serveur ?

Ah d'accord, il faut choisir l'esp comme carte pour compiler c'est ca ?

un serveur web qui sera l’intermédiaire âvec une base de données.

lgabed420:
Ah d'accord, il faut choisir l'esp comme carte pour compiler c'est ca ?

Pour BridgeD1Mini, oui.

un serveur web qui sera l’intermédiaire âvec une base de données.

Actuellement BoardView ne fait pas cela. Ce que fait BoardView est de permettre d'accéder aux variables et fonctions d'une carte (arduino, esp8266) à partir d'un navigateur Web.

La problématique de l'émission de données à une base de données (il faudrait précisée laquelle) est tout autre. Actuellement par exemple, dans ce post, nous essayons de le faire en se servant de domoticz comme base de données (pour l'instant on cherche à y placer les valeurs des capteurs).

Autre exemple ici d'un forumeur qui cherchait directement à accéder à une base de données SQL. Cela fonctionne mais le code a embarquer dans l'arduino est lourd.

Ah d'accord !

j'ai cherchais un peu sur le net, la plupart utilisent l'ethernet et non pas la wifi, je continuerai mes recherches et je te tiens au courants si je trouve à avancer :smiley:

Voilà un petit exemple : lien

ils recuperent les mesure et les envoie à une base de donnée SQL grace à une UNO et un module Wifly de sparkfun

Oui c'est peut être une solution ($89 quand même le module) !

Il faudra que tu cherches d'occasion :

Note: Retired Product
This product has been retired from our catalog and is no longer for sale. This page is made available for those looking for datasheets and the simply curious.

Maintenant je pense que c'est une ancienne carte et qu'il y a moyen de faire moins onéreux. Ouvre peut-être un post a ce sujet et précise bien que tu veux le faire à partir d'une mega sans connexion réseau.

Il est possible de faire un pont Arduino <-> ESP8266 <-> Base de données mais ce n'est pas ce que fait BoardView.

Je voulais pas m'acheter la carte mais je me suis dit que c'est faisable tant qu'on a deja fait avec un autre module .

D'accord je vais le faire tout de suite .

Petite mise à jour de BoardView (pour l'instant il permet juste contrôler ses cartes via une webSocket, et donc via n'importe quel navigateur sur le même réseau que lui).

La nouveauté c'est qu'en plus de fonctionner sur esp8266 il est possible qu'il fonctionne sur esp32, UNO Wifi REV2, Ethernet (UNO, ... + W5100, ...)

Je dis bien possible car n'ayant pas le matos je n'ai pas testé. J'ai juste virer les dépendances à l'esp8266 et ajouter les lignes de compilation conditionnelle :

#if defined(ARDUINO_ARCH_ESP32)

#include <WiFi.h>
#define TcpClient WiFiClient
#define TcpServer WiFiServer

#elif defined(ARDUINO_ARCH_ESP8266)

#include <ESP8266WiFi.h>
#define TcpClient WiFiClient
#define TcpServer WiFiServer

#elif defined(ARDUINO_AVR_UNO_WIFI_REV2)

#include <WiFiNINA.h>
#define TcpClient WiFiClient
#define TcpServer WiFiServer

#else // Ethernet 

#include <Ethernet.h>
#define TcpClient EthernetClient
#define TcpServer EthernetServer

#endif

Donc si vous êtes intéressés faites remonter vos retours :wink: