Bonjour !
Frédéric Bressy a écrit :
> [...] Voir le fichier capteur_armoire.ino joint zippé.
Je ne suis pas sûr de bien comprendre ce que tu veux faire. En général,
quand tu veux transmettre des données par le réseau, tu as deux choix :
– soit tu les tires, auquel cas le producteur est serveur et le
consommateur est client ;
– soit tu les pousses, auquel cas le producteur est client et le
consommateur est serveur.
Dans le code que tu as partagé, l'Arduino pousse périodiquement des
données. Si tu es satisfait de cette approche, pourquoi est-ce que tu
voudrais maintenant tirer les données ? Est-ce que tu veux changer
d'approche ? Est-ce que tu voudrais que les données soient poussées *et*
tirées ?
> le code exemple W5100_web_server (que l'on trouve avec l'IDE de
> l'arduino).
Je ne l'ai pas trouvé... Est-ce que c'est ça ?
https://www.tala-informatique.fr/wiki/index.php/Arduino_W5100_web_server
Ça a l'air très complet, et selon tes besoins peut-être un peu overkill.
> Ou celui de zestedesavoir.com
J'ai un peu regardé. Vu de loin, ça a l'air fonctionnel, mais c'est du
« vite fait, mal fait ». En particulier, le serveur envoie sa réponse
dès qu'un client se connecte, sans attendre qu'il ait formulé sa
requête. C'est pas joli ! Après, si ton Arduino est trop petit pour
héberger un code qui parse proprement la requête, une telle approche à
la hache peut se justifier...
Personnellement, j'essayerais au moins d'attendre la séquence (CR, LF,
CR, LF), ce qui n'est pas coûteux à détecter avec une petite machine à
états. Si jamais tu veux avoir plus d'un point d'entrée dans ton API
(plus d'une URL visible), il faudra parser un minimum.
> Et avec l'outil Postman j'ai fait des tests en envoyant une requête.
Connais pas Postman. Tu as essayé un truc plus simple, genre curl ? Tu
peux même essayer le bon vieux telnet, qui te permet de voir
*exactement* ce qui passe dans le tuyau, sans les couches
d'interprétation des outils avancés. Ou alors tu gardes Postman et tu
renifles la connexion avec, par exemple, Wireshark.
Aussi, si tu te bases sur un exemple trouvé en ligne, il faudrait tester
l'exemple tout seul avant de l'intégrer dans ton programme.
> http://192.168.1.180/testafaire/listetruca/?moteur0001=3&moteur0002=42
> Déjà est-ce que la requête est correcte pour faire du GET?
Oui.
> Ou alors si vous avez un morceau de code plus adéquat ?
J'ai cherché « Arduino Web server library » sur GitHub. La première
réponse :
https://github.com/lasselukkari/aWOT
L'API a l'air sympa : propre et facile à utiliser. Et il y a pas mal
d'exemples.
À+,
Edgar.