Bien le bonjour à toutes et à tous,
Étant élève en terminal STI2D SIN je cherche a faire un programme arduino me permettant de stocker des données venant de différents capteurs(Humidité,luminosité et température, etc...)puis ensuite je souhaiterai parvenir a les envoyer sur un site internet écrit en PHP
où elle seront lu et afficher en temps réel. Le site est ddéja en construction je souhaite juste savoir quoi mettre dans se programme.
J'ai fait de nombreuse recherche sur internet et arduino mais je n'ai trouver aucunes réponses correspondant à mes attente.
^^ Merci de bien vouloir me porter de l'aide. ^^
Bonjour,
Dans le principe ça revient à faire ça :
Merci pour ta réponse mais étant un débutant dans la programmation arduino j'ai quelques question sur le programme( en espérant ne pas te déranger) :
-A quoi sert la communication UDP (#include <EthernetUdp.h>) ?
-Pour quoi a-t-on besoin d'un port d'écoute global ?
- A quoi sert la partie suivante ?
/** Adresse IP de time.nist.gov /
static IPAddress timeServer1(192, 43, 244, 18);
/* Adresse IP de time.nist.gov */
static IPAddress timeServer2(129, 6, 15, 28); - au Final ton programme permet juste d'afficher le temps sur un fichier texte qui sera ensuite envoyer au site ?
-Dernière question: pourrait tu me montrer ou citer de quel ligne a quel ligne le programme envoie le fichier texte au site en php ?
Merci de bien vouloir répondre au Noob que je suis !! :~
xwiloux:
-A quoi sert la communication UDP (#include <EthernetUdp.h>) ?
A la partie NTP (Network Time Protocol) qui gère la synchronisation de l'horloge embarquée avec un serveur de temps distant.
xwiloux:
-Pour quoi a-t-on besoin d'un port d'écoute global ?
Pareil c'est pour recevoir les réponses du serveur NTP.
xwiloux:
- A quoi sert la partie suivante ?
/** Adresse IP de time.nist.gov */
static IPAddress timeServer1(192, 43, 244, 18);/** Adresse IP de time.nist.gov */
static IPAddress timeServer2(129, 6, 15, 28);
Ce sont les deux adresses IP des serveurs de temps NTP que j'utilise.
Ces eux qui fournissent l'heure "absolu" pour mettre à jour localement celle de l'arduino.
xwiloux:
- au Final ton programme permet juste d'afficher le temps sur un fichier texte qui sera ensuite envoyer au site ?
Non, le code lit les info du capteur de manière périodique.
Quand le code veut envoyer les info au serveur il créer un "rapport" avec la date, heure et la valeur du capteur.
-> si l'envoi peut se faire immédiatement les données sont envoyées.
-> si l'envoi échoue (plus de connexion, câble débranché, ...) un fichier texte avec les données est crée en attendant de pouvoir l'envoyé plus tard.
Si l'envoi d'un rapport réussi le code regarde si des fichiers texte de rapports antérieurs existent et si oui les envois tant que c'est possible.
Ça permet d'avoir une sorte de cache local pour ne pas perdre de données en cas de perte de connexion avec le serveur.
xwiloux:
-Dernière question: pourrait tu me montrer ou citer de quel ligne a quel ligne le programme envoie le fichier texte au site en php ?
Ligne 317, fonction "sendData".
J'envoi pas le fichier texte brut, j'envoi un "rapport".
Le fichier texte c'est l'étape intermédiaire "de stockage" en cas de probléme.
Merci pour la réponse.
Ton programme nécessite-t-il obligatoirement une carte SD comme espace de stockage ?
Etant donnée que ma Carte arduino sera en constante alimentation et que je ne possède absolument pas carte SD sur ma carte arduino.
De plus mon projet ne nécessite absolument pas l'utilisation du temps
donc j'ai beaucoup de mal a trouver ce dont j'ai besoin dans ton programme étant donnée que justement il est sur la lecture et l'envoie du temps.
donc au final il m’amène a me poser plus de question car a la base je ne requiert que la lecture de donnée reçu a partir des capteur,
puis les envoyé au sites afin de pouvoir les afficher et cela dans un format lisible par l'homme.
Désolé mais j'ai du mal a comprendre ton programme.
Ou plutôt j'ai du mal a l’adapter a ma situation. Aurait tu quelque conseil sur quoi changée dedans ?
Merci de m'accorder un peu de ton temps.
Jette un œil à ça :
Ce code d'exemple se connecte à google et effectue une recherche avec le mot "arduino" via la méthode GET.
Que ce soit par GET ou par POST, l'arduino transmet donc un donnée au site qui la traite et retourne une page web en conséquence.
while (client.available()) {
char c = client.read();
Serial.write(c);
}
Ce bout de code affiche dans le moniteur série la page retournée par le serveur (en l'occurrence Google).
Mais avec un php bien pensé, tu peux enregistrer la donnée envoyée soit sur une BDD, soit sur un fichier texte, puis retourner un booléen et, au lieu de l'afficher dans le moniteur serie, le tester pour savoir si ton php à bien enregistré la donnée envoyée.
Donc en gros, le code d'exemple est à utiliser presque tel quel, le plus gros travail est sur le script php.
Me revoilà après de nombreux essaie je ne parvient toujours pas a lancer ton programme même en le lançant telle qu'elle(Celui-ci : [Arduino] Systéme de traitement online / offline | Skyduino - Le DIY à la française). De nombreuse erreur son déclaré et je ne voie pas comment parvenir a les résoudre et cela même a l'aide de mon professeur.
Please je requiert de l'aide uniquement pour pouvoir stocker mes donnée sur un fichier texte dans un serveur fillezilla (qui ne possède pas d'adresse IP a ma connaissance) . L'utilisation de Fillezilla est nécéssaire car le site internet pourrait lire ainsi directement le fichier texte et afficher les valeur. Merci de me répondre assez rapidement.
Mon programme est join pour voir ce que j'ai fait.
Cordialement xwiloux.
PS: j'utilise la dernière version d'arduino, et l'erreur me dit generalement:
Adaptation_envoie_txt.ino: In function 'void setup()':
Adaptation_envoie_txt:56: error: 'getNtpSync' was not declared in this scope
Adaptation_envoie_txt:56: error: 'setSyncProvider' was not declared in this scope
Adaptation_envoie_txt:57: error: 'timeStatus' was not declared in this scope
Adaptation_envoie_txt:57: error: 'timeNotSet' was not declared in this scope
Adaptation_envoie_txt.ino: In function 'void sendReport(long unsigned int)':
Adaptation_envoie_txt:96: error: 'lum' cannot be used as a function
Adaptation_envoie_txt:97: error: 'hum' cannot be used as a function
Adaptation_envoie_txt:98: error: 'temp' cannot be used as a function
Adaptation_envoie_txt:99: error: 'onoff' cannot be used as a function
Adaptation_envoie_txt:15: error: too few arguments to function 'boolean sendData(int, int, int, int, long unsigned int)'
Adaptation_envoie_txt:102: error: at this point in file
Adaptation_envoie_txt:13: error: too few arguments to function 'void createWaitingReport(int, int, int, int, long unsigned int)'
Adaptation_envoie_txt:116: error: at this point in file
Adaptation_envoie_txt.ino (7.48 KB)