Go Down

Topic: [RESOLU] arduino client web et reception données (Read 351 times) previous topic - next topic

binoclard

Oct 22, 2018, 01:34 pm Last Edit: Oct 25, 2018, 12:56 pm by binoclard Reason: RESOLU
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 <sortir> 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

Zlika

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.

bricoleau

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.


Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

binoclard

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 :) ^^
ESP1 ou uno1
et le chiffre sur la ligne du dessous

MErci

J-M-L

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

Pas de MP SVP
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

binoclard

(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)

J-M-L

#6
Oct 22, 2018, 11:35 pm Last Edit: Oct 22, 2018, 11:36 pm by J-M-L
Et donc - quelle est la question ? postez votre code
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

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

Skew

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

binoclard

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 ?

binoclard

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

Merci

J-M-L

Je ne sais pas ce que vous voulez dire par cette question
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

binoclard

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

Zlika

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

binoclard

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é :) )
, et surtout à zlika qui m'a donné la solution miracle :p




Go Up