29 résultats trouvés : mqtt

Requête recherchée : mqtt

par smba38
ven. 22 mai 2015 19:14
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Bonsoir Jean-Marie.

Je pense que nous avons deux façon de voir les choses.
Tu utilise l'esp8266 + un microprocesseur pour dialoguer avec un serveur sur lequel se trouve l'intelligence.
Tous les capteurs / actionneurs sont gérés par un seul serveur.

De mon coté je résonne plutôt avec des capteurs / actionneurs autonomes qui disposent de leur propre intelligence.
Pour faire dialoguer entre eux les capteurs actionneurs je pense utiliser un broker MQTT qui ne sert que pour mettre en relation ces capteurs (publieurs) / actionneurs (souscripteurs) et des programmes de traitement des données(souscripteurs) le broker ne dispose pas d'intelligence.

Par exemple je peux avoir:
des esp-xx avec un capteur de température, qui met sont horloge à jour via NTP une fois par jour et qui envoi une mesure une fois par heure(publieur de données).
des esp-xx avec un petit affichage de température et une alimentation sur secteur(souscripteur).
un raspberry station météo (souscripteur) .
un raspberry broker MQTT (qui peut être le même que celui de la station météo).

Si je veux que l'horloge des DS1337 soit le plus possible à jour c'est pour avoir les réveils des ESP-xx à des heures précises.
La station météo ne gère pas les ESP-XX capteurs de température elle récupère seulement via MQTT les valeurs envoyées par les capteurs.

A+
SMBA38.
par smba38
dim. 12 avr. 2015 11:26
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Bonjour à tous,

Encore une nouvelle version des commandes AT la version v23 (b2).
La version v23(b1) peut être mise à jour en OTA (On The Air).
Il faut je pense avoir flashé le firmware des commandes AT avec 1MO de mémoire
(donc impossible sur un ESP-01 qui ne dispose que de 0,5MO de mémoire)
On lance ma mise à jour par la commande AT: AT+CIUPDATE

Code : Tout sélectionner

AT+GMR

AT version:0.23.b1.0(Apr  2 2015 23:27:52)
SDK version:1.0.1(b1)
compile time:Apr  2 2015 23:39:06

OK
AT+CIUPDATE

+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4

OK

--------  REBOOT automatique

2nd boot version : 1.3(b3)
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user2

ready
AT+GMR

AT version:0.23.b2.0(Apr 10 2015 21:21:43)
SDK version:1.0.1(b2)
compile time:Apr 10 2015 21:31:18

OK
Au reboot c’est l’User2 qui est lancé.
A la prochaine mise à jour OTA un reboot lancera l’User1
Je pense que les configurations « utilisateur » et « Wifi » sont copiées.

Les versions du SDK et des commandes AT semblent évoluer en même temps.
Mais les (b1) ou (b2) doivent être des releases de la version V23 (Mises à jour mineures).
Je n’ai pas testé le passage de la version V22 à la version V23 en OTA.

Rq la version 1.0.1(b2) ajoute la commande AT sleep mode AT+SLEEP

La fréquence des mises à jour est très rapprochée.
En lisant les fichiers qui indiquent les corrections de bugs et les ajouts de nouvelles fonctionnalités on peut avoir peur.
Pour utiliser une nouvelle fonctionnalité il est préférable d’attendre les corrections éventuelles.

MQTT et ESP8266

J’ai essayé le protocole MQTT avec l’IDE Arduino / ESP8266, ça fonctionne.

Il faut ajouter une librairie : PubSubClient https://github.com/knolleary/pubsubclient/tags
Avec l’exemple https://gist.github.com/igrr/7f7e7973366fc01d6393

L’esp8266 publie le topic SMBA38
A intervalles réguliers un compteur est envoyé au broker(serveur) Mosquitto du raspberry Pi (IP=192.168.1.22)
Sur le Rasberry on lance un souscripteur par la commande :

Code : Tout sélectionner

 mosquitto_sub -h localhost  -t "SMBA38" -v
Pour info, pour installer Mosquitto sur le raspberry Pi
(sudo apt-get install mosquitto mosquitto-clients python-mosquitto)


Trace console Série de l’IDE arduino / ESP8266

Code : Tout sélectionner

Connecting to WRT54G_409B
...
WiFi connected
IP address: 
192.168.1.157
Connecting to 192.168.1.22 as esp8266-18:fe:34:9b:9b:e-6a
Connected to MQTT broker
Topic is: SMBA38
Publish ok
Sending payload: {"micros":3200222,"counter":0}
Publish ok
Sending payload: {"micros":8286114,"counter":1}
Publish ok
Sending payload: {"micros":13410525,"counter":2}  
Et voici la trace sur le Raspberry

Code : Tout sélectionner

mosquitto_sub -h localhost  -t "SMBA38" -v
SMBA38 hello from ESP8266
SMBA38 {"micros":3200222,"counter":0}
SMBA38 {"micros":8286114,"counter":1}
SMBA38 {"micros":13410525,"counter":2}
 
Le protocole MQTT peut être utilisé pour tester des capteurs / actionneurs à base d'ESP8266 autonomes.
Il n'y a rien à configurer du coté serveur et on peut demander que certains topics soient persistants.
Un topic persistant peut être relu même si un souscripteur n'était pas à l'écoute au moment ou le publieur l'a envoyé.

Dans la logique de l'internet des objets chaque objet peut être publieur et souscripteur pour un ou plusieurs topics.
Le broker ne sert qu'a établir une relation des publieurs/souscripteurs.

L'intelligence (la programmation des actions) n'est pas forcément centralisée sur un seul programme.

A+
SMBA38.
par Jean-Marie
jeu. 26 mars 2015 21:13
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Hello SMBA38,

Toutes mes félicitations pour ton article sur l'IoT avec MQTT. Je n'ai pas encore eu le temps de le lire en détail et cela risque de prendre un certain temps car demain à la mi-journée je m'absente jusqu'à mardi soir.

En ce qui concerne ton schéma, je ne sais pas si l'ESP peut supporter des pins d'input à 3.3V alors que le chip n'est pas alimenté. Je ne trouve pas cette information dans les spécifications. Jusqu'ici, je n'ai travaillé qu'avec des microcontrôleurs AVR. Voici les caractéristiques électriques maximales supportables sur un Atmega328, mais c'est valable pour tous les AVR:
16.jpg
16.jpg (50.1 Kio) Vu 3290 fois
On y voit que les GPIO ont une tolérance de 0.5V au-delà de GND ou de VCC. Si l'ESP est du même type, tu es certain d'endommager le chip en alimentant les GPIO sans alimenter le chip. Il m'est arrivé une seule fois (heureusement) de détruire un Atmega8 en alimentant les pins de programmation alors que l'alimentation générale était coupée. Donc, ton montage me fait peur à ce sujet.
Mais il n'y aurait peut-être pas grand chose à modifier à ton schéma. Au repos, au lieu d'être connectés aux GPIO, les 3 poussoirs sont connectés à la pin d'alimentation de l'ESP. Si tu enfonces un bouton, tu transmets le 3.3V sur le GPIO correspondant tout en conservant l'alim générale. La commande exécutée est donc celle qui a son GPIO à la valeur haute.
En fait, cela revient à alimenter séparément l'ESP et à lancer une commande en changeant l'état logique de la pin concernée.
Evidemment, l'ESP reste constamment sous tension. S'il est raccordé au réseau 220V, ce n'est pas trop grave. Mais sur batterie, c'est inacceptable. Il est alors indispensable d'intercaler entre l'alim et les poussoirs un système qui se coupe dès que la commande est exécutée. C'est justement sur ce sujet que je travaille.
par smba38
jeu. 26 mars 2015 19:10
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Coucou Jean-Marie.

Finalement la nuit porte conseil.
J'ai des petits boutons genre va et vient à 3 fils.
Je n'ai besoin que de 3 contacts dans ma télécommande.
J'utilise trois GPIO, je n'utilise plus l'ADC.
Que penses tu de ce schéma.
boutons 2.JPG
boutons 2.JPG (24.96 Kio) Vu 3295 fois
Par contre les GPIO sont toujours sous tension .
L'esp8266 n'est alimenté que si un bouton est enfoncé.
Le contact à traiter est celui relié à la masse.

J'ai publié un article sur MQTT sur Framboise314
http://www.framboise314.fr/linternet-de ... avec-mqtt/


A+
SMBA38.
par Jean-Marie
dim. 22 mars 2015 18:44
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Hello les amis,

J'ai fait un peu de lèche-vitrine sur le web cet après-midi et je suis tombé sur un blog qui me paraît très intéressant pour la domotique, et en particulier pour notre ESP8266.

Voici les sujets traités jusqu'à présent concernant l'ESP et classés par ordre chronologique: Il s'agit donc d'un blog très actif. Les articles sont bien écrits, précis, avec des liens complémentaires.
par Jean-Marie
sam. 14 mars 2015 18:48
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

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 3214 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 !
par smba38
sam. 14 mars 2015 15:25
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

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.
par Manfraid
sam. 14 mars 2015 10:15
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

Vraiment sympa ce protocol MQTT je vais m'y interesser de plus près aussi
par Jean-Marie
sam. 14 mars 2015 09:48
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

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 ;)
par smba38
ven. 13 mars 2015 17:31
Forum : Et tout le reste
Sujet : Tous les capteurs reliés au RPI par Wifi avec module ESP8266
Réponses : 528
Vues : 179431

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

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.

Retourner vers « Tous les capteurs reliés au RPI par Wifi avec module ESP8266 »