[RESOLU] arduino client web et reception données

Bonjour

Mes arduinos et wemos sont tous considérés comme des clients web !!!

voila, j'arrive à envoyer dans ma base de données les variables sortantes de mes wemos D1 (R1 et R2)
de mes cartes uno et mega avec bouclier ethernet
Tout ce ptit monde accede au net via un routeur dédié

http://starenda.info/ecrireso.php

est la page ou mes cartes envoient les infos necessaires

Mais , je ne sais pas comment les infos de la base de données
infos qui sont la ligne 2 et 3 de cette page

http://starenda.info/extrac_res.php

on m'a dit de placer la page dans une variable
mais comment faire ?
la parser comme en PHP et eliminer le code dont on a rien a faire ?
ca prend pas trop de memoire pour un arduino ?

si vous avez un exemple concret !!

Merci de votre aide

Marc

Bonjour,

Dans la mesure où ta page ne comporte pas beaucoup de lignes, le plus simple est de compter les retours chariot. Il te suffira ensuite de stocker les lignes 2 et 3 dans des variables.

Pour une vue générale du client Web, voir ici.
Il te suffira de modifier la boucle de réception des caractères pour intercepter tes 2 lignes.

Bonjour

Le plus simple est de mettre une place une sorte de web service de consultation côté php, à une uri dédiée, et qui retournerait non pas une page html destinée à un navigateur, mais un flux texte destiné à être exploité par un programme.

Les formats de flux texte usuellement utilisés sur le web sont json ou xml, mais c'est pénible à décoder avec un arduino. Cela pourrait aussi être un bête csv

Par exemple minimaliste : http://starenda.info/API/toto.php pourrait retourner la valeur de toto, sous forme d'une simple chaîne de caractères.

Bonsoir

MErci bricolo
mais aurais tu un exemple car je desire placer la ligne 2 qui le premier resultat de ma bdd dans nom_précedent (dans les arduino)
et le resultat de la ligne 3 dans etat_prec

bisur, je peux n afficher que ca :slight_smile: ^^
ESP1 ou uno1
et le chiffre sur la ligne du dessous

MErci

Le mieux c’est d’avoir un php qui vous retourne que ce dont vous avez Besoin

Pas de MP SVP

(ok pardon pour le mp)
le php ne retourne que ce dont, j'ai besoin soit :
esp2 (ou le nom de la carte )
3 (l'état de la carte)

Et donc - quelle est la question ? postez votre code

et donc comment je fais pour sortir juste les 2 lignes ?
je n'ai pas de code a presenter cest la le probleme

je sais appeler une page par une url, mais comme je n'attends aucun retour , je ne la stocke pas coté arduino

et la justement je veux appeler une page et la stocker pour traiter le retour

Merci

binoclard:
et donc comment je fais pour sortir juste les 2 lignes ?
je n'ai pas de code a presenter cest la le probleme

je sais appeler une page par une url, mais comme je n'attends aucun retour , je ne la stocke pas coté arduino

et la justement je veux appeler une page et la stocker pour traiter le retour

Merci

Hello, je te conseille d'encoder tes données quand tu les envoies dans ta base de données par exemple si tu as une carte arduino mega qui t'envoie 39 par exemple tu l'encode comme ça ==> AM_39_untimestamp et en php tu fait un explode("_", "AM_39_untimestamp") et tu récupère un array avec en clé 0 AM pour Arduino Mega, 39 en clé 1 pour la valeur et en clé 2 le timestamp ainsi tu compare les timestampes des dernières valeurs entré pour avoir tes 2 dernières lignes

Skew:
Hello, je te conseille d'encoder tes données quand tu les envoies dans ta base de données par exemple si tu as une carte arduino mega qui t'envoie 39 par exemple tu l'encode comme ça ==> AM_39_untimestamp et en php tu fait un explode("_", "AM_39_untimestamp") et tu récupère un array avec en clé 0 AM pour Arduino Mega, 39 en clé 1 pour la valeur et en clé 2 le timestamp ainsi tu compare les timestampes des dernières valeurs entré pour avoir tes 2 dernières lignes

avant de penser sécurité et encodage , je veux recuperer mes données issues de la base soit
ESP01 (ca sera ESP ou UNO ou MEG et XX pour le numero de la carte)
et
1 (ca ira de 1 à 9 pour l'etat de la carte qui lit cet etat)


ESP01 lit l'état de ESP02
ESP02 lit l'état de ESP03
ESP03 lit l'etat de UNO01
UNO 01 lit l'etat de MEG01 et de MEG02

vous voyez ou je veux en venir ?

jml
ce post de toi, est il ce que je dois faire ?
https://forum.arduino.cc/index.php?topic=437683.15

Merci

Je ne sais pas ce que vous voulez dire par cette question

bonjour à tous,

J'ai pas mal avancé !!
je sais maintenant recevoir les données dans une variable
maintenant comment mettre les 5 premiers caracteres de ma variable String a_recevoir;
dans la variable String canton_prec;
et le chiffre qui suis (soit le 6 caractere)
dans la variable String etat_prec;

Merci

Le plus simple, c'est d'utiliser la fonction substring.

Zlika

SUPER merci à toi
et un grand merci à tous les autres

donc, je reprends pour celui qui cherche a faire comme moi

j'execute une page php qui sort juste ceci :
ESP01 , 1

ESPxx ets le nom de ma carte mais peut aussi etre UNOxx, ou MEGXX
1 est l'etat de la carte (ca va de 1 à 9)

a_recevoir = (SendWithAnswer("www.starenda.info/extrac_res.php","Yes"));
carte_prec =a_recevoir.substring(0,5);
etat_prec=a_recevoir.substring(8,9)
;
Serial.println(carte_prec);
Serial.println(etat_prec);

et donc il récupere dans carte_prec le nom de la carte
et dans etat_prec son etat

voila c'est simple quand on comprend

Encore un grand merci a tous (Jml / Skew / bricoleau ) et aussi merci pour votre patience (je suis nul, mais j'essaie d'évoluer, meme si c est pas gagné :slight_smile: )
, et surtout à zlika qui m'a donné la solution miracle :stuck_out_tongue:

Merci mais il n'y a rien de miraculeux, il suffit d'avoir sa bible à porté de main. :wink:

dans l'absolu bien sûr il vaudrait mieux se passer de la classe String (même si sur ESP on a plus de mémoire) et utiliser des cStrings et les fonctions des librairies standard stdlib.h et string.h

par exemple la fonction strncpy() va copier n caractères d'une cString à une autre.