Tous les capteurs reliés au RPI par Wifi avec module ESP8266

Parce que les applications du Raspberry Pi sont illimités...

Modérateur : Francois

Répondre
Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » mer. 4 mars 2015 12:33

Hello smba38,
Dans un de mes messages j'ai indiqué mes essais sur les commandes AT.
J'ai utilisé la commande netcat sur Windows pour récupérer les données envoyées d'un esp8266 par des commande AT.
http://sourceforge.net/projects/nc110/
OK, mais il y a bien une raison pour laquelle Putty ne veut pas marcher. La raison est certainement à chercher dans le fait que je suis absolument novice dans ces questions de réseau et de communication.

En plus, ces moyens de communication du style Console, Terminal, Putty, Realterm ou autre ne me sont d'aucune utilité dans mon projet de domotique, sauf peut-être pour des tests. En effet, je cherche à relier (wireless) divers capteurs à une unité centrale de type Raspberry ou microcontrôleur, à l'intérieur d'un programme écrit par moi-même (de préférence en C), capable de prendre des décisions et éventuellement d'actionner une alarme, un éclairage, un moteur, une pompe .....

La question est donc double:
  • Comment s'y prendre pour qu'un ESP envoie "ABCD" à un Raspberry dont on connait l'adresse dans le réseau ?
  • Comment s'y prendre pour qu'un programme homemade tournant sur le Raspberry capte le "ABCD" ?
D'après ce que j'ai lu des commandes AT, l'ESP ne peut envoyer qu'en ouvrant une session "TCP" ou "UDP".
Le programme tournant sur le Raspi doit donc être capable de gérer le protocole TCP ou UDP.

Les choses sont-elles plus simples en Lua ?
On parle aussi du protocole MQTT implantable sur l'ESP ?

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » mer. 4 mars 2015 14:11

Salut Jean-Marie,

je ne sais pas si j'ai bien compris tes manips, mais normalement:

1)- sur le PC n°1 tu dois démarrer un serveur qui écoute sur le port 23:

Code : Tout sélectionner

AT+CIPMUX=1
AT+CIPSERVER=1,23
2)- sur le PC n°2 tu crées un socket pour communiquer avec le PC n°1:

Code : Tout sélectionner

AT+CIPSTART="TCP","192.168.0.100","23"
3)- sur le PC n°2 tu envoies un message au PC n°1:

Code : Tout sélectionner

AT+CIPSEND=7
>Bonjour
4)- sur le PC n°1 tu dois recevoir le message sous cette forme :

Code : Tout sélectionner

+IPD,0,7:Bonjour
Tu as peut-être oublié quelque chose dans l'étape 1 ?
Ou alors c'est parce que tu as choisi UDP, alors que telnet c'est du TCP ?

Veloce
Modifié en dernier par Veloce le mer. 4 mars 2015 14:45, modifié 4 fois.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » mer. 4 mars 2015 14:17

Ah, et puis ce mode 3 tu n'en n'as pas besoin :

même si tu as un serveur d'un côté et un client de l'autre, les deux sont reliés à ton routeur,
donc il faut configurer les deux en station:

Code : Tout sélectionner

AT+CWMODE=1
Veloce

smba38
Modérateur
Messages : 193
Enregistré le : mar. 24 févr. 2015 09:28
Localisation : Bourgoin

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par smba38 » mer. 4 mars 2015 16:52

Bonjour Veloce et jean-marie,
Quelques remarques sur les commandes AT:

Syntaxe à vérifier :

AT+CIPSTART=0,"TCP","192.168.1.30",4444
A voir si le N° de port est à mettre en double quottes ?

Il me semble que la syntaxe du send est canal, longueur
AT+CIPSEND=0,5

En plus quelle est la version du firmware que tu utilises ?

https://drive.google.com/folderview?id= ... 1lvSkJmNU0

Voici la mienne.

Code : Tout sélectionner

SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014, 21:50:58
Ready
Je pense que les choses sont bien plus simples en LUA.


A+
Michel.

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » mer. 4 mars 2015 17:31

Hello Veloce,

Merci pour ces instructions précises. C'est vraiment ce qui me convient car je me sens perdu avec ce vocabulaire nouveau. Par exemple, j'aurais eu tendance à appeler "Serveur" le côté qui envoie et "client" le côté qui reçoit. Or, apparemment c'est le contraire.

Je viens d'essayer ta recette. Malheureusement, ça coince. Je vais donc détailler exactement ce que j'ai fait. Peut-être verras-tu une erreur.

J'ai d'abord configuré l'ESP du PC n°1

Code : Tout sélectionner

Terminal log file
Date: 4/03/2015 - 15:47:41
---------------------------

AT+CWMODE=1	
     no change

AT+CIPMUX=1	
     OK

AT+CIPSERVER=1,23	
     OK

AT+CIFSR	
     192.168.0.102
     OK

---------------------------
Date: 4/03/2015 - 15:50:43
End log file
Je prends note de l'adresse 192.168.0.102 de l'ESP du PC n°1 pour la reporter dans l'autre PC.

Je me suis ensuite rendu sur le PC n°2 pour entrer les commandes suivantes:

Code : Tout sélectionner

Terminal log file
Date: 4/03/2015 - 16:02:30
----------------------------

AT+CWMODE=1
	no change

AT+CIPSTART="TCP","192.168.0.102","23"
	ERROR
	Unlink

---------------------------
Date: 4/03/2015 - 16:03:41
End log file
Comme tu le vois, la commande AT+CIPSTART a échoué.

Par contre, j'ai essayé en remplaçant "TCP" par "UDP" et la commande a été acceptée:

Code : Tout sélectionner

Terminal log file
Date: 4/03/2015 - 17:22:34
-----------------------------------------------
AT+CIPSTART="UDP","192.168.0.102","23"
     OK
AT+CIPSEND=7
     > Bonjour
     SEND OK

-----------------------------------------------
Date: 4/03/2015 - 17:24:42
End log file
Malheureusement, le terminal de l'ESP du PC n°1 n'a rien reçu. Donc, si l'ESP a reçu le bonjour, celui-ci n'a pas été exporté vers le PC par la liaison série.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » mer. 4 mars 2015 18:23

J'ai peut-être trouvé l'os rigolo (comme dans Docteur Maboul) :
Tu as mis le numéro de port entre guillemets, et il ne faut pas !

C'est normal qu'en UDP il dise OK tout le temps, puisque c'est un socket sans connexion :
imagine une communication par CB. Tu appuies sur le bouton et tu dis "y'a quelqu'un ?".
Tu ne sais pas si ça a marché, mais ta CB a affiché une led qui dit que tu as émis quelque chose.

Maintenant en TCP, on doit établir une connexion. Pense au téléphone, tu composes le numéro,
mais ça sonne occupé. Ou ça t'indique que tu as fait un numéro qui n'existe pas.

Bon ce coup-ci, dis moi que ça marche !

Veloce

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » mer. 4 mars 2015 18:24

Hello Michel, alias smba38,

Ton message s'est ajouté pendant que je préparais le mien.

Selon un document d'ESSPRESSIF, la syntaxe de la commande AT+CIPSTART est la suivante:
487.jpg
487.jpg (103.94 Kio) Vu 8866 fois
On voit que cette version V0.20 est datée du 28 novembre 2014.

Si je demande la version de mon ESP (commande AT+GMR), j'obtiens 0018000902-A103.
Tout ce que je peux dire, c'est que ma version AT est 0018.
Et lors de AT+RST, j'obtiens [Vendor:www.ai-thinker.com Version:0.9.2.4]
Je vois sur la page web que tu renseignes que la version serait 0.9.5.0 Mais par ailleurs, dans le log, les commandes utilisées ici n'ont pas été modifiées.

Pour la commande CIPSTART, on voit que <type>,<addr> et <port> sont des strings (entourés de guillemets).
Par contre, le paramètre <id> ne prend pas de guillemets mais n'est nécessaire que si CIPMUX=1. Dans mon cas, CIPMUX=0

De même, pour CIPSEND, le paramètre <id> (canal) n'est à mettre que quand CIPMUX=1.

smba38
Modérateur
Messages : 193
Enregistré le : mar. 24 févr. 2015 09:28
Localisation : Bourgoin

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par smba38 » mer. 4 mars 2015 18:31

Bonsoir Jean-marie.

Dans ton exemple, le 18 est la version du SDK, la version des commandes AT est 9.0.2.

Si on dispose d’un Raspberry, on peut utiliser des commandes pour visualiser le trafic sur un port.

On peut utiliser la commande netcat (nc) pour visualiser le trafic

Code : Tout sélectionner

nc -4 -u -l   5005
-4 pour IPV4, -u pour UDP et –l pour listen (écoute du port)

Et la commande netstat permet de lister les connexions actives

Code : Tout sélectionner

netstat |grep 5005

J’ai verifié, ça fonctionne avec les commandes AT (avec le protocole UDP dans l'exemple).

Sur le raspberry lancer nc pour écouter en UDP sur le port 5005

Code : Tout sélectionner

nc -4 -u -l   5005
Sur l’ESP8266 lancer les commandes AT

Code : Tout sélectionner

AT+CWMODE=3 
OK

AT+CWJAP="WRT54G_409B","mot de passe"
OK

AT+CIPMUX=1
OK

AT+CIPSTART=0,"UDP","192.168.1.22",5005 
0,CONNECT
OK

AT+CIPSEND=0,5
> 12345busy s...

SEND OK
Su le Raspberry on récupère les données

Code : Tout sélectionner

nc -4 -u -l   5005
12345
On peut vérifier que la connexion est active par netstat

Code : Tout sélectionner

netstat |grep 5005
udp        0      0 pc33.home:5005          pc33.home:29406         ESTABLISHED
Avec le protocole TCP , ça marche également, mais le "nc -4 -l 5005" doit être lancé en premier sur le Raspberry
Ne pas mettre -u (UDP) dans la commande nc

Essayes de récupérer la dernière version du firmware des commandes AT.

Courage.

SMBA38
Modifié en dernier par smba38 le mer. 4 mars 2015 22:51, modifié 4 fois.

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » mer. 4 mars 2015 18:50

Hello Veloce,

De nouveau un croisement de message.

YOUPIIIIE

Tout a fonctionné.

Le PC2 a envoyé un grand Bonjour au PC1 qui l'a reçu.

Whaou ! Je suis pas mal content !

Bon, ce soir, j'ai une émission TV intéressante mais dès que possible, je poste l'ensemble définitif des commandes de chacun des PC.

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » mer. 4 mars 2015 18:56

Hello, Michel,

Croisement de message !

Ce serait probablement une bonne idée de flasher la dernière version des commandes AT. Mais avant, je vais refaire un petit topo de tout ce qu'il faut faire pour que ça marche (dès fois que la mise-à-jour du firmware cafouille).

Pour le moment, je laisse netcat en réserve.

Répondre

Retourner vers « Et tout le reste »