ESP en utilisation avec Django

Portrait de Youssoufba

Bonsoir chers amis, 
Dans le but d'envoyer des données d'un capteur relié à l' ESP et de là envoyer ces mesures à "Django" qui se chargera du traittement.
Dans mes recherches je suis tombé sur plusieurs notions du genre "ESP serveur" ou  "ESP client" je vous prie de bien vouloir m'éclairer sur cela afin de savoir quel sera le rôle de l'ESP dans mon cas.

Puis viens l'envoi des données si quelqu'un à une idée un tuto ou autre chose pour me guider concernant l'envoie à "Django" qui sera préalablement mis en ligne via "Ngrock".
 

Après l'envoi le traittement je pense pouvoir gérer le traittement si la compréhension de l'envoi des données est claire mais je vous ferai un retour sous peu s'il y'a du nouveau!

en attente de vos réponses éclairantes et bonne soirées. 

Portrait de Walter

Bonjour,

Django étant un outil de développement coté serveur web, le plus logique serait que ton ESP sois client de ton serveur WEB, Tu devra donc fournir une URL (pseudo/mini API) permettant d'insérer tes mesures.
Je dis pseud/mini API, car il s'agit d'une seul URL, pas la peine de faire trop compliqué.
Du coup ton ESP devra appeler cette URL avec en paramètre les mesures qu'il veut insérer dans ton appli WEB.
Du coup pour tester ton application WEB, tu pourra simuler ton ESP, avec une commande curl ou un plugin chrone(ou autre) dédié, pour insérer des mesures toi même avec des valeurs de tests.

J'espére que cela répond à ta question, sinon n'hésite pas à demander des précisions.

Portrait de Youssoufba

merci Walter, ta reponse m'a mis sur une piste.

j'ai un autre problème qui se situe au niveau de mon code dans l'IDE Arduino qui est le suivant:

Dans mon code je créé "client" avec la méthode "WiFiClient",  et lorsque j'utilise "client.connect('site.com/données', 'port=80')" pour connecter mon ESP au serveur django et je verifie si la connexion est établie avec "if (client.connected())" et j'affiche dans le moniteur série que l'ESP s'est bien connecté; mais rien s'affiche.

En résumé je n'arrive pas à connecter mon ESP à mon serveur via l'adresse de celui ci, j'espère avoir bien détaillé le problème et que je pourrai une fois de plus bénéficier de votre aide.

merci et bonne soirée!

Portrait de Walter

Je ne connais pas trop WifiClient, il faudrait que tu passe par une socket TCP pour avoir le code d'erreur de la tentative de connection.

Portrait de Youssoufba

Après avir simuler un server sur SocketTest :

> Server Started on Port: 80
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> New Client: 192.168.1.69   /* l'adresse de l'ESP */
GET /watchdog?command=watchdog&uptime=70278&ip=192.168.1.69 HTTP/1.1
Host: 192.168.1.75
Connection: close

> Client closed conection.

> New Client: 192.168.1.75   /* adresse de mon ordi qui sert de serveur (Host) */
GET / HTTP/1.1
Host: 192.168.1.75
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: fr-CI,fr-FR;q=0.9,fr;q=0.8,en-US;q=0.7,en;q=0.6

> Server closed Client conection.
> Server stopped   /* J'ai essayer d'accéder au site via l'adresse du serveur mais vu qu'il y a rien rien ne s'affichait*/
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mais le problème avec ce logciel que j'ai découvert aujourd'hui, je n'arrive pas à écouter sur le port 8000 qui est dédié à mon serveur Django, et ce test m'a permis de voir que l'ESP se connecte à mon serveur fictif mais toujours pas à mon serveur Django.
Encore merci et bonne soirée à vous!

 

Portrait de Walter

Essaye peut être avec la classe EthernetClient  qui te renvois un code d'erreur.
Dans un navigateur la même URL fonctionne ?

Portrait de Youssoufba

en fait j'ai essayer une autre approche plus tôt que d'utiliser client.connect(hôte, port) j'ai utiliser client.begin(hôte, port) et il s'est connecté à mon serveur.
Maintenant j'avais un problème au niveau de l'encodage de l'url afin de préremplir un formulaire ce qui m'a onné un lien de la forme: http://monsite.com/post?data1=14&data2=15, mais je n'arrive pas à faire que l'ESP lance ce lien ainsi permettre le remplissage.

Portrait de GEEK

lol

Portrait de Walter

Je ne suis pas sûre de comprendre ta phrase, tu pourrais reformuler?
tu as du code, un retour avec un code d'erreur.

Sinon comme ton ancien code ne marchais pas, peut être que le problème est le même?

Portrait de GEEK

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

String ssid = "Votre SSID";
String password = "Votre Mot de passe";
String URL;
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connexion au réseau :  ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connectee");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}

void loop() {

  URL  = "192.168.1.75:8000/"; // Ne fonctionne pas avec https !
  Requete();
  delay(500);
  Serial.println("OK");
}
void Requete() {
  HTTPClient http;
  http.begin(URL + "mes datas");
  int httpCode = http.GET();
  if (httpCode > 0) {
    String payload = http.getString();
    Serial.println(payload); // Print réponse
  }

else {
Serial.println("Erreur de transfert");
}

  http.end();
}

Portrait de Youssoufba

Walter c'était dû à un problème de compréhension je ne comprenais pas vraiment le code qui se trouvait devant moi et m'attendait à ce qu'il fasse autre chose qui n'était pas ordonnée dans le code

Merci pour ce bout de code Geek, surtout les commentaires m'ont bien aidés

j'attaque le côté serveur Django en lui demandant de réccuperer le lien qui lui est envoyé et le lancé je vous écris si j'ai du nouveau encore merci les amis pour votre intérêt et votre aide.

Portrait de GEEK

A ton service

Portrait de Youssoufba

Encore merci les pari ressi le serveur Django arrive à lire les données encodées dans l'URL.

encore une petite question j'aimerai vraiment être une plaque tournante de l'electronique embarquée où que je sois avoir une opinion qui aide même le projet ou la technologie me sont inconnus alors les amis donnez moi encore une fois vos avis et suggestions.
encore merci et bonne soirée.

Portrait de GEEK

Désolé Youssoufla Je n'ai rien compris à ta petite question !

Portrait de Youssoufba

j'aimerai être plus expérimenté en électronique embarquée alors je vous demande des conseils pour m'améliorer ou si vous avez des cours et ou projets à me suggérer?
 

Portrait de GEEK

C'est tellement vaste que je ne sais quoi te dire, le plus simple c'est que tu nous poses des problèmes que l'on essayera de résoudre !

Bonne Journée

Portrait de Walter

Comme le dis Geek, difficile de te conseiller.
As tu des domaines de prédilection ?

Des projets sympa, peuvent tourner autour de l'audio, drone, sensor, télécommunications, automate.

Portrait de GEEK

Je ne vois pas ce que Walter a apporté de plus mais bon !!!

Portrait de Walter

 C'est pourtant assez criant, dommage d'avoir toujours a ce justifier, même quand ce n'est on ne plus claire, mais bon!

As tu des domaines de prédilection ?

Des projets sympa, peuvent tourner autour de l'audio, drone, sensor, télécommunications, automate.

Portrait de GEEK

Désolé c'est vrai que cela change tout, par contre beaucoup de conseils, mais uniquement des conseils  !

Je pense quand même que pour un spécialiste des réseaux et surtout des serveurs je t'aurais vu un peu plus loquace mais peut être n'est ce pas la façon dont tu apportes de l'aide l

Portrait de Walter

Je suis heureux que tu te rende compte de la différence!

Tu te trompe de personne, je ne suis pas là pour étaler ma science, si quelqu'un pose des questions, lorsque je pense pouvoir y répondre, je le fait, rien de plus.
Tu peux le voir en exemple dans ma réponse à Youssoufba après ton commentaire.

De plus je ne tien pas à polémiquer, tu pense que je suis une buse, j'en pense de même de vous 4, tout est dit!

Portrait de Youssoufba

Désolé les amis on n'en viendra pas aux main?? tout de même on à pas forcement le même avis signifie pas du coup qu'on peut pas sympatiser!
J'aime vos commentaires qui aident presque tous sur le forum!

Quelle est cette manie de savoir qui a la plus grosse on est pas aux vestiaires les mecs...(excusez ma vulgarité mais c mon avis)
pour répondre à la question j'ai une passion naissante pour les drones et je suis curieux de savoir comment est l'univers des télécoms et automates (expliquez moi d'avantages)

j'espère n'avoir fustrer personnes encore merci et bonne soirée.

Portrait de Walter

Pour ma pars, pas de soucis :)

Sur les drone je ne connais pas trop, mais il y a de nombreux projets dessus à base d'arduino ou esp.
Donc peut être essayer de créer l'electronique de ton drone avec un esp qui reçoit les commandes d'un Tel en wifi/bluetooth et pilote les moteurs, avec un gyro/accélerometre comme capteur.

Suivant ce que tu veux faire en télécom, tu peux faire quelque expérience en émission/réception sur un fil  et implementant des protocole "simples" de communications, d'abord en numérique, puis en analogique.
Les telecoms sont un très vaste sujet aussi.

Pour des automates, je pense que faire un robot est très formateur, sur l'enchaînement capteur/actionneur.

Portrait de GEEK

Youssoufba

Je n'ai nulle intention d'en venir aux mains mais ce qui me titille c'est que les aides apportées sont pratiquement des banalités dont très sincèrement je ne vois pas l'intérêt, mais si cela te convient, ce que je conçois difficilement  je ne m' immiscerais plus dans ton sujet !