vendredi 22 février 2019

Peser sa ruche et envoyer les données en WiFi sur son ordinateur

*************************************************
DEBUTANTS:

Cet exercice fait référénce à l'exercice précédent sur ce lien:



*************************************************





Si votre ruche est à proximité WiFI d'une BOX internet, voici comment récupérer son poids et l'afficher sur votre ordinateur.

Principe:





Et pour avoir quelque chose qui ressemble à ceci:





On va utiliser le même matériel que dans l'article précédent, on va ajouter quelques programmes à notre ordinateur et modifier le code installé précédemment.

La tare et le facteur de calibration restent inchangés.


Il nous faut installer Mosquitto et Node-Red

-------------------------------------------------------------------------------------
Pour ceux qui veulent aller plus vite, une machine virtuelle est disponible ici

puis continuez dans cet article à la fin de l'installation manuelle
-------------------------------------------------------------------------------------

Installation manuelle



1- Installer mosquitto

commencez par télécharger la version qui correspond à votre système d'exploitation en 32 ou 64 bits à cette adresse:

https://mosquitto.org/download/


c'est léger comme produit mais allez donc voir ici à quoi ça sert:

Mosquitto

Exécutez le et laissez coché l'option "service" comme ça on le démarre avec Windows. 


Ensuite allez dans le menu démarrer puis exécuter
tapez la commande: services.msc et OK




Repérez la ligne Mosquitto Broker et cliquez droit , propriétés

vérifiez qu'il est en automatique et cliquez sur démarrer.

Fermez les fenêtres et c'est ok pour ça.


On utilisera Mosquitto par défaut , sans accès par mot de passe, sur le port TCP 1883.

2- Installer Node.js

Télécharger la version qui vous convient en 32 ou 64 ici :

https://nodejs.org/fr/

en principe on vous propose la version LTS dans la bonne version de votre Windows.

Installez.   next  next .. finish


Verifier que node est bien installé, ouvrez une invite de commande (admin)
ou simplement PowerShell et tapez les commandes 

npm -v

puis node -v

ca doit vous répondre à peu pres ça:



PS C:\Users\"votrenom"> npm -v
6.4.1
PS C:\Users\"votrenom"> node -v

v10.15.1





Ensuite il faut installer node-red, l'application graphique.

toujours dans PowerShell ( c'est mieux ) ou en invite de commande tapez:

PS C:\Users\"votrenom"> install -g --unsafe-perm node-red   puis entrée.




Laisser faire, oubliez les Warn , et c'est fait.

repérez bien "votrenom"

Maintenant on va lancer node-red au démarrage de Windows dans le planificateur de tâches.


Ouvrez le "Panneau de configuration" puis "Outils d’administration"

Cliquez "Planificateur de tâches"


Créer une nouvelle tâche




Mettez y un nom et les options comme ci dessous





Suivez les flèches



Onglet suivant, 

Mettez ceci en remplacant votre nom de profil utilisateur:





C:\Users\<votrenom>\AppData\Roaming\npm\node-red.cmd

ex:

C:\Users\gle\AppData\Roaming\npm\node-red.cmd

puis ok

passez l'onglet ' conditions' et allez sur 'Paramétres'

laissez les options par défaut et cliquez OK

une fenêtre s'ouvre , entrez votre mot de passe et cliquez OK


Dans la liste des tâches, recherchez celle que vous avez créée et cliquez bouton droit : démarrer

Sinon redémarrer votre PC.


testons si c'est ok:

Ouvrez votre navigateur internet, et suivez cette adresse:

http://127.0.0.1:1880

Si vous ne voyez pas ça c'est raté




Bien , maintenant on reste sur node-red et il nous faut installer le Dashboard pour les Camemberts et les graphs.

Ouvrir le menu ( barres en haut à droite) puis cliquez Manage palette



Allez sur l'onglet Install, dans le champ texte de recherche , tapez: dashboard

Recherchez et utilisez l'ascenseur pour trouver "node-red-dashboard" version 2.12.2 ou supérieure.

Cliquez install à droite, attendez que le statut installed soit affiché puis cliquez : close. 





En récompense de vos efforts on va pouvoir tester si tout fonctionne .

Je vous expliquerai en details comment gérer les flux et comment les afficher correctement dans dashboard plus loin.

Node-red va nous permettre d'importer des flux tout prêts.

Je vous ai laissé un fichier "balance-maison.txt"

Ouvrez le avec notepad.exe puis sélectionnez le tout et faites Copier.





ensuite allez dans le menu ( en haut et à droite ) puis cliquez :
import ->  clipboard

une fenêtre s'ouvre et vous faites coller puis import en bas à droite.

les nodes sont collés à votre souris déplacez et cliquez pour les déposer au centre de votre fenêtre.
















Le bouton deploy est rouge , cliquez deploy vous valider la configuration.   


Pour tester la configuration on utilise 2 flux

Par le flux de gauche on va injecter des données aléatoires, des valeurs de 1 à 100 vers le topic Mqtt que j'ai nommé balance/poids

Par le flux de droite on va simplement s'abonner au topic balance/poids et récupérer les données qu'on va afficher simultanément:

1- dans la fenêtre de debug
2- dans un compteur
3- dans un graph



Ensuite on supprimera le flux de gauche pour récupérer les données envoyées par notre balance par Mqtt embarqué dans notre module ESP8266 WiFi  vers le topic balance/poids.





aller sur le bouton Dashboard et cliquez sur ce bouton ( affichage graphique ) ou allez sur:


Admirez ! ...

ARRET de l'injection Tests

Quand vous en avez marre vous pouvez arrêter l'injection en supprimant le lien entre le node "injection test" et "nombre aléatoire" sélectionnez le lien sur le graphique puis appuyer sur suppr du clavier et cliquez  DEPLOY !

Avant d'injecter de nouvelles valeurs il est préférable de vider le graph

allez sur node-red, cliquez sur le node "Graphique"
repérez la ligne Type:  Line Chart
remplacer par Bar Chart

cliquez Done et Deploy

retournez sur le node "Graphique" et remettez en Line Chart
et dans la ligne du dessous mettez 1 weeks (1 semaine pour commencer)
ne surchargez pas trop le nombre de points à afficher au départ.

puis DONE et DEPLOY

le graph doit être vide de données injectées et prêt a recevoir 1 semaine glissante du poids de votre balance.


------------------------------------------------------------------------------------
fin installation manuelle
------------------------------------------------------------------------------------


Programmation du module Esp8266 WEMOS



Comme la fois précédente vous démarrez l'IDE Arduino et vous ouvrez :

"MQTT-balance-poids-Wemos-Wifi.ino"


Attention, il faut vérifier que la bibliothèque PubsubCilent soit installée sinon à faire avant le téléversement ( merci Pascal ) :






Vous aurez à modifier DANS CE PROGRAMME:

1-votre SSID wifi ( de votre box)
2-le mot de passe Wifi
3-l'adresse IP du PC sur lequel tourne MOSQUITTO ( votre PC)
4-votre facteur de calibration
5-votre tare fictive

enregistrez vos modifications et cliquez sur l'icône V pour vérifier la cohérence avant de téléverser.

Vous aurez à modifier sur votre PC

- le pare-feu ou votre antivirus s'il fait pare-feu

Soit vous désactivez le pare-feu ou vous ouvrez en entrée le port TCP 1883
c'est la porte d'entrée des données envoyées par le module de la balance.

Les paramétres Arduino n'ont pas dû changer, verifier dans Outils que vous êtes restés sur LOLIN(WEMOS)D1 mini pro et le port com.

Branchez le module à l'USB, téléversez.


chargez et déchargez votre balance, visualisez les données qui arrivent sur le debug et dans le graph.





Éloignez votre balance, mettez éventuellement un répéteur Wifi si le signal est insuffisant et alimentez en permanence avec un adaptateur secteur-miniusb 5V (un ancien chargeur téléphone portable par exemple)

Félicitations !


Lien vers les nouveaux fichiers: ICI


le lien vers les autres fichiers est en fin de l'article précédent.


Prochain article à venir: 

Récupérer les données dans une base de données InfluxDB via LoraWan privé en longue distance ( 2 - 10 km) en ultra faible consommation d’énergie et affichage des graphiques avec Grafana.








































22 commentaires:

  1. Bonjour Gilles et merci pour toutes ces précieuses informations. J'ai déjà réalisé la balance "simple" du premier article et ça fonctionne impeccable. Le Wifi ne me sert pas car mon rucher est trop loin. J'attends avec impatience l'article sur la version Lora ou Sigfox !! :-)
    Merci encore !!

    RépondreSupprimer
  2. Merci à vous pour ce retour fort encourageant.

    Je m'en occupe très vite, au moins pour pouvoir commander les boitiers Lora vu les delais d'approvisionnement ;)

    RépondreSupprimer
  3. Bonjour Gilles et merci pour toutes ces précieuses informations.
    J'attends avec impatience l'article sur la version Lora ou Sigfox !! :-)
    Tu as commandé quoi comme boitiers Lora ???

    Merci encore !!

    RépondreSupprimer
    Réponses
    1. Bonjour Pascal, une partie de l'article est publié tout frais
      Tu vas pouvoir faire chauffer ta carte bleue.

      Supprimer
  4. Merci de vos commentaires, du coup j’accélère la rédaction de la documentation LoRa

    Je vous publie une partie de l'article concernant la Comm en LoRa , ce qui vous permettra de commander les modules esp32 LoraWan .

    Ayant pris un peu de retard à la rédaction , les bibliothèques des cartes ont évolué ( en bien ) du coup je suis en cours d'optimisation du code de la passerelle et des émetteurs, mais ça fonctionne et je ne manquerai pas de vous les livrer dès validation complète.

    RépondreSupprimer
  5. Bonjour Gilles
    j'ai reçu mes composants et je fais mon 1er montage.
    je suis tellement enthousiaste que je voudrai équiper mes 3 ruches qui sont cote à cote mais je fais mon 1er montage fixe et je voudrai que les 2 autres le soit aussi ! Est il possible d'avoir 3 émetteurs wifi en même temps ?
    Pascal

    RépondreSupprimer
  6. Bonjour Pascal,
    Parfait, oui tu peux en mettre pas mal, les flux sont faibles et ça ne risque pas de saturer ta bande passante
    tu dois simplement créer un flux nodered pour chaque balance et dans ton code tu indiques pour mqtt nomduboitier/nomduflux que tu récupères avec nodered sous ce même nom ex dans code 2eme balance: String poids_topic = "wemos2/balance2";
    dans nodered tu peux faire des copier coller de tes nodes, c'est hyper pratique, ensuite tu les édite pour modifier les champs nécessaires.

    RépondreSupprimer
  7. Merci Gilles
    Donc pour chaque balance dans le programme je change #define Probe01_topic "balance/poids" je change par #define Probe01_topic "balance1/poids1" et balance2/poids2 ....
    dans node red je colle 3 fois balance-maison.txt en remplacant balance/poids par balanceX/poidsX
    j'ai bon ?

    RépondreSupprimer
    Réponses
    1. j'ai fais ca sous node red : https://i.goopics.net/avQ7A.jpg

      Supprimer
  8. Bonjour Pascal, tu as bon.
    Mieux que le plan. tu pourrais essayer d'injecter des données virtuelles pour peupler tes graphiques, en attendant les flux WiFi.
    Bravo.

    RépondreSupprimer
  9. Bonjour
    Je progresse ! https://i.goopics.net/Pgnx0.jpg
    bon le graphique et le compteur ne sont pas sur la même ligne....
    je peux envoyer le fichier ? Ou ?

    RépondreSupprimer
  10. Bonjour, quel fichier ?

    Ensuite tu pourras envoyer tes flux nodered vers une base de donnée InfluxDB pour pouvoir garder un historique plus complet ou exporter vers un fichier formatté comme tu veux sur ton pc (txt, ..).
    si tu veux avancer plus vite, je te renvoie vers ce site qui m'a servi de réference pour débuter ces projets:

    https://projetsdiy.fr/tutoriel-influxdb-installation-configuration-macos/

    Bonne lecture

    RépondreSupprimer
  11. Bonjour
    Mon module n'arrive pas à se connecter à mon wifi à 5m !
    maintenant à force de m'acharner le module déraille !!!La LED bleue reste allumée après le téléversement sauf avec le programme de calibration ! Mais il reste très souvent sur init balance !
    je n'es jamais vu de source wifi apparaitre
    j'ai bien la même carte que celle en photo sur le schéma de câblage avec logo Wemos

    RépondreSupprimer
    Réponses
    1. Alors juste pour faire un retour d’expérience. Je me suis trouvé devant le même problème avec divers modules,j'ai réglé le soucis en modifiant juste la ligne : " delay(4000); // mini 2000 !! " que j'ai passé a 4000

      Supprimer
  12. Bonjour Pascal, j'en suis bien désolé et je pense qu'il faut regarder, en effet 5 m c'est vraiment très peu:

    approcher le module ta borne Wifi et ouvrir le moniteur série afin de voir les logs , le code contient un certain nombre de serial.print et voir ou ça cloche.
    tu peux également charger un code d'exemple tout simple et tester : pour ta carte "wemos lolin d1 mini pro": tu ouvres menu fichiers exemples et tu cherches esp8266Wifi puis Wifisan , tu televerses et tu devrais voir ton réseau Wifi dans le moniteur série.
    Si tu veux vraiment utiliser du Wifi alors je peux te proposer une autre carte performante, mais je ne l'ai pas prise comme modèle du fait que la gestion des i/o est particulière ( LOLIN new NodeMCU v3) https://fr.aliexpress.com/item/33000187587.html.
    mais je peux te fournir un code qui marche.

    reverifie bien ton montage, pas de faux contacts etc ... est ce que ca fonctionne en mode autonome ?

    regarde également les détails de la compilation et le version des bibliothèques, si il n'y aurait pas une erreur non bloquante. tu peux rétrograder les bibliothèques au cas où.

    pas bon l'acharnement, tu vas mettre ton esp dans le coma ;)

    RépondreSupprimer
  13. Bonjour
    ca marche presque !!!!!
    https://i.goopics.net/OQ1r7.jpg
    https://i.goopics.net/8jQX2.jpg

    j'ai tout downgradé à tes versions ! (bon y doit quand meme manquer une librairie PubSubClient.h !)

    Bon pourquoi dans MQTT-balance-poids-Wemos-Wifi.ino c'est le port 1883 et dans Node red c'est le 1880 ???
    j'ai essayé avec 1880 dans MQTT-balance-poids-Wemos-Wifi.ino c'est pas mieux !

    RépondreSupprimer
  14. Bonjour pascal,

    bibliothèque pubsubclient v2.7.0 nick o'leary a ajouter ( je l'aurais oublié dans la doc ? )


    le port pour communiquer depuis ton esp vers MQTT est 1883

    le port pour visualiser en http tes nœuds node-red: 1880 ( http://127.0.0.1:1880)

    Tu vas y arriver.

    RépondreSupprimer
  15. En effet j'ai omis l'installation de cette bibliothèque, j'ai modifié la doc article 1. Désolé du contretemps.

    RépondreSupprimer
  16. PS C:\Users\"votrenom"> install -g --unsafe-perm node-red puis entrée. Je bloc a cette emplacement je ne peut rentrer cette commande ni dans terminal ni dans le powerschel j ai la bonne réponse avec node -v ,je suis sur window 10
    Merci

    RépondreSupprimer
    Réponses
    1. Bonjour, essaye en Powershell (admin) , ou ton antivirus pourrait bloquer ?

      Supprimer
    2. Si tu peux télécharger la machine virtuelle, tout y est installé :)

      Supprimer
  17. hello , j'ai tout installé ok
    j'ai televersé ok
    ma balance ce connecte bien au wifi avec la modif delay(4000); // mini 4000 :-)
    le poids s'affiche bien dans le moniteur :-)

    mais problème

    en node-red aucune donnée n'arrive, j'ai pourtant déactivé mon pare feux :-( et ip est correcte

    help merci

    RépondreSupprimer