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

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. 11 mars 2015 23:55

smba38 a écrit :Ou as-tu acheté tes ESP-XX et à quel prix.
Je les ai achetés chez AliExpress: 11,66€ pour 5 modules
498.jpg
498.jpg (77.01 Kio) Vu 3351 fois
Tu peux aussi acheter les platines d'adaptation au pas de 2,54mm (3,09€ pour 5) mais il faut les souder:
499.jpg
499.jpg (80.55 Kio) Vu 3351 fois
Dans le projet Ardupi, je crois que Veloce a raison. L'avantage du bus I2C et de pouvoir chaîner plusieurs Arduinos sur le bus. Le RaspBurry serait responsable de la conduite générale des périphériques et de l'affichage. Les Arduinos seraient responsables des moteurs et autres.

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 » ven. 13 mars 2015 17:31

Coucou Jean-Marie.
Veloce a écrit :
smba38 a écrit : Je suis tombé par hasard sur cette information.
http://mchobby.be/wiki/index.php?title=ArduPi-I2C

ArduPi permet parait-il d’avoir du code qui tourne sur Arduino et sur Raspberry ?.
Heu non, ce n'est pas ce que j'en comprends. On dirait plutôt un modèle où le Raspberry Pi
est relié en réseau par le bus I2C à une batterie d'Arduinos qui commandent chacun des moteurs,
des servos, des capteurs... Plutôt pour les gros projets avec plein d'E/S donc.

Veloce ;)
Je suis abonné à la revue Electronique pratique et dans le N° 130 il est écrit page 4 je site:
'cette approche nous permet d'écrire des programmes qui fonctionnent à la fois sur Arduino et sur Rasbperry PI sans modification'
c'est basé sur des librairies que l'on peut utiliser avec les deux environnements.

MQTT avec Raspberry esp8266 nodemcu et Lua:
J’ai fait quelques essais sur Mqtt pour en comprendre le principe.

Installation sur Raspbberry des packages Mosquitto:

Code : Tout sélectionner

sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Mosquitto est un serveur Mqtt (Broker).
Mosquitto-clients installe le client Mqtt ‘mosquitto_sub’
Python-mosquitto ajoute la partie Python.

Pour commencer avant de configurer le serveur sur le Rasberry, on peut simplement d’utiliser le serveur de test de Mosquitto « test.mosquitto.org ».
Il n'y a pas de compte à créer sur mosquito.org et aucun paramétrage n'est nécessaire pour lancer des tests.

On lance en premier le client Mqtt : mosquitto_sub en lui demandant de se mettre à l’écoute d’un ensemble de Topics dans l’exemple, SMBA38 et les sous topics de SMBA38 (en utilisant le #):

Code : Tout sélectionner

 $mosquitto_sub -h test.mosquitto.org -t "SMBA38/#" –v
Ensuite on lance dans une autre console, plusieurs fois le client Mqtt pour publier des valeurs sur ce même Topic

Et voici les traces, en premiers trois publications du publisher (option –m):

Code : Tout sélectionner

pi@raspberrypi:~$ mosquitto_pub -h test.mosquitto.org -t SMBA38/temps/Ext  -m 17
pi@raspberrypi:~$ mosquitto_pub -h test.mosquitto.org -t SMBA38/temps/Ext  -m 15
pi@raspberrypi:~$ mosquitto_pub -h test.mosquitto.org -t SMBA38/temps/Int  -m 21
Et voici les données affichées par le subscripteur (option –v).
Les données arrivent immédiatement après leur publication.

Code : Tout sélectionner

pi@raspberrypi:~$ mosquitto_sub -h test.mosquitto.org -t "SMBA38/#" -v
SMBA38/temps/Ext 17
SMBA38/temps/Ext 15
SMBA38/temps/Int 21
Dans cet exemple on n’utilise pas de nom d’utilisateur et de mot de passe, les transmissions ne sont pas codées.
La Qos (qualité de service n’est pas utilisée).

Si on lance la commande : mosquitto_sub -h test.mosquitto.org -t "#" –v
On récupère tous les topics du serveur de Test( même ceux non créés par nous même).
Je suppose que Mosquitto utilise l’adresse IP pour nous identifier.

Et maintenant avec Lua comme client:

Le code

Code : Tout sélectionner

m=mqtt.Client("test", 30,"","")
m:lwt("/lwt", "offline", 0, 0)
-- Evénements 
m:on("connect", function(con) print ("Connexion OK") end)
m:on("offline", function(con) print ("offline") m:close() end)
m:on("message", function(conn, topic, data) 
   if data ~= nil then  
       print("réception topic: ".. topic .. ":" .. data) end end)

-- Connexion + écoute + envoi 
m:connect("test.mosquitto.org", 1883, 0, function(conn) print("Connexion lancée")
     m:subscribe("SMBA38/#",1, function(conn) print("Subscription OK, je suis à l'écoute") 
           m:publish( "SMBA38/temps/ext",15,0, 0,function(conn)  print ("SMBA38/temps/ext publié")
           end) 
      end)
end)
Et la trace dans la console Lua

Code : Tout sélectionner

dofile("mqtt_mosquitto.lua")
> Connexion lancée
Subscription OK, je suis à l'écoute
SMBA38/temps/ext publié
réception topic: SMBA38/temps/ext:15
réception topic: SMBA38/temps/Int:21
offline
Dans le même code on teste :
le subscripteur (mis en premier pour recevoir les données du publisher)
Le publisher.
La valeur : ‘réception topic: SMBA38/temps/Int:21’
Correspond à une valeur publiée en même temps que le test avec Lua depuis le Raspberry par :

Code : Tout sélectionner

mosquitto_pub -h test.mosquitto.org -t SMBA38/temps/Int -m 21
Dans la vraie vie, il y aura plusieurs esp8266, un qui envoie des données et un (ou plusieurs) qui les traite.

Il est donc très facile en quelques lignes de Lua de mettre à jour la base de données d’un Broker, ce broker publiant immédiatement les données.

Dans le code Lua, il n’y a pas la partie connexion au WIFI.
Dans la mémoire Flash les paramètres de configuration WIFI sont conservés.
Si l’on utilise un flasher pour réintialiser un esp8266, la configuration WIFI est perdue.
Sauf si l’on ne flashe que la partie utilisateur (Commandes AT ou Lua) en conservant le SDK et la configuration WIFI.
C'est pour cette raison que certains firmwares esp8266 sont à flasher en plusieurs parties.

Par exemple Frankenstein pour ne pas le citer: https://github.com/nekromant/esp8266-fr ... n/issues/4

Address___Size______Name__________________Description
00000h___ 248k______app.v6.flash.bin_________User application
3E000h___ 8k________master_device_key.bin___OTA device key
40000h___ 240K______app.v6.irom0text.bin____ SDK libraries
7C000h___ 8k________esp_init_data_default.bin_Default configuration
7E000h___ 8k________blank.bin_______________Filled with FFh May be WiFi configuration.

J’ai eu quelques problèmes en ajoutant en tête de chaque code la connexion au WIFI.
ça marche mieux si on ne connecte qu’une seule fois par du code le WIFI pour initialiser la configuration WIFI.

Il existe plusieurs Clients MQTT pour Windows, Apple, Linux, Smartphones voir .
http://www.hivemq.com/seven-best-mqtt-client-tools/

Je pense que sous peu les commandes AT seront compatibles Mqtt.
Le port utilisé par défaut est le 1883.

Je me pose quelques questions :
Comment relire des données publiées lorsque le Subscripteur n’était pas à l’écoute.
Comment mettre en place la sécurité (gestion des certificats).
Utilisation de la Qos pour être sur que les messages sont bien reçus.

Il me reste à configurer le Broker coté Raspberry pour se passer du serveur de test de Mosquitto.

A+
SMBA38.
Modifié en dernier par smba38 le mer. 18 mars 2015 07:46, modifié 5 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 » ven. 13 mars 2015 19:38

smba38 a écrit : Je suis abonné à la revue Electronique pratique et dans le N° 130 il est écrit page 4 je site:
'cette approche nous permet d'écrire des programmes qui fonctionnent à la fois sur Arduino et sur Rasbperry PI sans modification'
c'est basé sur des librairies que l'on peut utiliser avec les deux environnements.
Ah oui, mais alors je n'ai pas l'impression que ce soit la même chose que ce dont parle McHobby.

Il y a un fabricant qui a fait un shield pour le Raspberry Pi, qui reprend exactement la forme de l'Arduino,
et une bibliothèque qui permet de réutiliser les programmes d'Arduino sur le Pi:

http://www.cooking-hacks.com/documentat ... ion-bridge

Il faudrait regarder, mais j'ai l'impression qu'en fait il y a un AVR sur leur shield ? Si ça coûte le prix d'un Arduino quel intérêt ? Enfin l'info est intéressante, merci.
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 » sam. 14 mars 2015 09:48

Hello smba38

Tes essais avec MQTT ont l'air super. Pour le moment, je n'ai pas encore la base requise pour en profiter mais j'espère que les choses vont évoluer. Ce qu'il y a de bien avec un forum, c'est que l'information reste consultable même longtemps après.
Ce qu'il faudrait, c'est un bénévole comme toi qui donne un cours sur les arcanes des réseaux à des seniors comme moi ;)

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

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

Message par Manfraid » sam. 14 mars 2015 10:15

Vraiment sympa ce protocol MQTT je vais m'y interesser de plus près aussi
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

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 » sam. 14 mars 2015 15:25

Coucou Jean-Marie.

Je continue mes tests sur Mqtt et au détour d'une page Web, j'ai trouvé cette info.

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

Il semble que https://github.com/tuanpmt/espduino

Permette d'utiliser le protocole Mqtt sur Arduino avec un esp8266 comme interface WIFI.

C'est peut être une solution pour ton projet.

J'ai également testé le Broker Mosquitto sur Raspberry ça fonctionne nickel.

Tu te considère comme un sénior, je ne suis pas loin derrière toi, il ne me reste que 8 ans pour lire Tintin.

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 » sam. 14 mars 2015 18:48

Pour MQTT, j'espère que tu t'y retrouves dans ce style télégraphique, pour ne pas dire extra-galactique. Moi, je verrais plus clair en plongeant ma tête dans une boîte de cirage noir, car "Ça-va-Seul"
501.jpg
501.jpg (23.15 Kio) Vu 3312 fois
smba38 a écrit :Tu te considère comme un sénior, je ne suis pas loin derrière toi, il ne me reste que 8 ans pour lire Tintin.
Chouette alors ! Tu pourras encore me lire Tintin pendant 1 an !

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 » dim. 15 mars 2015 17:27

Hello les amis,

Mon routeur Wifi est configuré en serveur DHCP, de sorte que les PC qui se connectent reçoivent une adresse IP.

Oui mais les ESP reçoivent aussi une adresse IP et celle-ci peut changer ! C'est gênant car les stations ESP périphériques doivent connaître l'adresse de l'unité centrale pour lui envoyer les mesures et l'unité centrale doit connaître l'adresse des effecteurs pour leur envoyer les commandes.

En fouillant un peu dans mon routeur, j'ai vu qu'il y avait moyen d'enregistrer une liste d'adresses IP fixes, en plus des adresses variables attribuées par le DHCP.

Une petite épine hors du pied ;)

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 » dim. 15 mars 2015 19:10

Coucou Jean-Marie.

On peut en général forcer un routeur pour avoir une adresse IP fixe sur une interface réseau d'un ordinateur.
Pour connaître l'adresse IP affectée par le DHCP du routeur utiliser AT+CIFSR.

Code : Tout sélectionner

AT+CIFSR -> Infos connexions 
+CIFSR:APIP,"192.168.4.1" 		 -> AP (Acces point) IP non modifiable par commandes AT
+CIFSR:APMAC,"1a:fe:34:9b:c8:31"
+CIFSR:STAIP,"192.168.1.17"		-> IP affectée par le DHCP du routeur WRT54G_409B
+CIFSR:STAMAC,"18:fe:34:9b:c8:31"
OK
18:fe:34:9b:c8:31 est l'adresse MAC associée à l'adresse IP 192.168.1.17 de l'interface wifi connectée au routeur WRT54G_409B

Chaque interface réseau dispose d'une adresse MAC unique dans le monde (En principe).
Sur un esp8266, il y a deux interfaces réseau avec deux adresses MAC différentes.
Une pour le point d'accès (APMAC) et une pour le mode Station (STAMAC).
Pour le point d'accès c'est le DHCP de l'esp8266 qui affecte l'adresse IP.
Pour une station c'est le DHCP de la BOX (Routeur).

Dans le routeur, il faut remplir une liste pour indiquer la correspondance entre l'adresse MAC et l'adresse IP que l'on veut forcer.
Il faut prendre une adresse IP en dehors de la plage des adresses IP du DHCP.

Par exemple sur Orange il faut se connecter avec un navigateur à l'adresse 192.168.1.1
Utilisateur admin mot de passe admin (Ou autre mot de passe si l'on a changé le mot de passe).
et dans configuration avancée, remplir la liste.
OrangeIPFIXE.JPG
OrangeIPFIXE.JPG (26.52 Kio) Vu 3301 fois
Jean-Marie, tu peux également tester si ce que j'ai indiqué dans un message précédant est valable pour les commandes AT.
A savoir que les paramètres WIFI sont conservés dans la mémoire Flash.
Et qu'il n'est pas nécessaire de reconfigurer le WIFI après un arrêt ou le Boot d'un esp8266.
par contre il faut refaire la configuration WIFI après un Flash.

Avec Lua, on peut forcer directement l'adresse IP par une fonction wifi.sta.setip.

Code : Tout sélectionner

wifi.setmode(wifi.STATION)  -- Wifi en mode station 
cfg = { ip="192.168.1.157", netmask="255.255.255.0", gatway="192.168.1.1"}
wifi.sta.setip(cfg)  -- on force l'adresse IP en dehors de la plage du DHCP
A+
Michel.
Modifié en dernier par smba38 le dim. 15 mars 2015 21:34, modifié 3 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 » dim. 15 mars 2015 21:08

Merci Michel pour toutes ces précisions précieuses. C'est très clair et pédagogique. Je crois que je bénéficie de ton expérience d'instructeur bénévole pour sénior.

Oui, je sais, si je me qualifie de "sénior", je t'entraîne presque de force dans le même groupe ! Mais c'est pas ma faute si tu es venu au monde peu de temps après moi. :lol:

Demain, je teste la persistance ou l'effacement des paramètres wifi.

Répondre

Retourner vers « Et tout le reste »