======== Tp ESP32 Tasmota MQTT Node red ======== [[http://chanterie37.fr/fablab37110/lib/exe/fetch.php?media=faire_preparation:presentation_iot_v03.pdf|presentation_iot_v03.pdf]] {{ :faire_preparation:soireeinfo:tp:planreseaucastellab_dif_002.pdf |Diffusion Plan reseaux Castellab Tasmota MQTT node red}} {{ :faire_preparation:soireeinfo:tp:planreseaucastellab001.pdf.zip |Plan reel reseaux Castellab Tasmota MQTT node red avec MDP }} [[start:raspberry:installation|Installation RaspberryOS Lite 32bits]] [[start:arduino:esp32:Arrossage_automatique|arrossage_automatique]] [[start:esp32:tasmota:recupip|Récuperer l'@IP de l'ESP32 via Node-red]] [[start:esp32:nodered:heure|Heure de l'esp32 dans Node-red ]] [[start:esp32:nodered:heure:NR|Date et heure du Raspberry dans Node red ]] [[start:raspberry:mqtt|Installer un serveur MQTT sur un RaspberryPI]] [[start:raspberry:accesexterne|Acceder à votre raspberry depuis internet ]] [[start:raspberry:nodered:imagefondecran|Changer l'image du fond d'ecran du Dashboard de Node-red ]] [[start:raspberry:nodered:stokagedonnées|Stockage des données contextuelles dans le système de fichiers]] [[start:raspberry:nodered:notifications| Notifications sur telephone via l'application ntfy ( open source )]] [[start:raspberry:nodered:compteurs| Idées pour compteurs avec node red ]] ===== Materiels utilisés ===== * 1 ESP32 avec son cordon * 1 PC Fixe ou portable * 1 Led * 1 Bredboard * Des cables Dupont * 1 Bouton poussoir ou interrupteur * 1 DHT11 * 1 serveur MQTT fonctionnel -- Serveur MQTT de test ==> [[http://fablab37110.ddns.net:1883|fablab37110.ddns.net:1883]] [[start:Orangepi|OrangePi]] [[http://chanterie37.fr/fablab37110/doku.php?id=start:rasberry:nodered&s[]=node&s[]=red#installation_node-red_sur_raspberry|installer un serveur Node-Red sur un Raspberry]] ATTENTION inserer dans le champ MQTT de tasmota et node-red : **fablab37110.ddns.net** ou ** 90.35.37.195 ** et ensuite dans le champ "port" mettre **1883** ne pas mettre http:// **Le mot de passe est.... : Demander à GL ** * Plusieurs serveurs Node Red fonctionnel Nouveau serveur de test NodeRed pour l année 2023-2024 : ( @IP externe :90.35.37.195) * [[http://fablab37110.ddns.net:1881|fablab37110.ddns.net:1881]] Pour Xavier * [[http://fablab37110.ddns.net:1884|fablab37110.ddns.net:1884]] Pour Serge * [[http://fablab37110.ddns.net:1885|fablab37110.ddns.net:1885]] Pour Christian * [[http://fablab37110.ddns.net:1886|fablab37110.ddns.net:1886]] Pour ..... * [[http://fablab37110.ddns.net:1887|fablab37110.ddns.net:1887]] Pour Fernand * [[http://fablab37110.ddns.net:1888|fablab37110.ddns.net:1888]] Pour Patrick * [[http://fablab37110.ddns.net:1889|fablab37110.ddns.net:1889]] Pour Jean-Luc * [[http://fablab37110.ddns.net:1890|fablab37110.ddns.net:1890]] Pour ..... * [[http://fablab37110.ddns.net:1891|fablab37110.ddns.net:1891]] Pour Jean-Luc Test * [[http://fablab37110.ddns.net:1892|fablab37110.ddns.net:1892]] Pour Thierry ( cours - demo ) ---------------------------------------------------------------------------------------------------------------- Ancien serveurs NodeRed utilisé en 2022/2023 (faite une copie sur les nouveaux serveurs 2023/2024 et prevoir la reinstallation des noeuds supplementaires utilises... ) * * [[http://castellab.ddnsfree.com:1881|castellab.ddnsfree.com:1881]] Pour Xavier * [[http://castellab.ddnsfree.com:1882|castellab.ddnsfree.com:1882]] Pour Serge * [[http://castellab.ddnsfree.com:1884|castellab.ddnsfree.com:1884]] Pour ...... * [[http://castellab.ddnsfree.com:1885|castellab.ddnsfree.com:1885]] Pour Christian * [[http://castellab.ddnsfree.com:1886|castellab.ddnsfree.com:1886]] Pour ...... * [[http://castellab.ddnsfree.com:1887|castellab.ddnsfree.com:1887]] Pour Fernand * [[http://castellab.ddnsfree.com:1888|castellab.ddnsfree.com:1888]] Pour Patrick * [[http://castellab.ddnsfree.com:1889|castellab.ddnsfree.com:1889]] Pour Jean-Luc * [[http://castellab.ddnsfree.com:1890|castellab.ddnsfree.com:1890]] Pour ...... * [[http://castellab.ddnsfree.com:1891|castellab.ddnsfree.com:1891]] Pour ...... * [[http://castellab.ddnsfree.com:1892|castellab.ddnsfree.com:1892]] Pour Thierry backup * [[http://castellab.ddnsfree.com:1893|castellab.ddnsfree.com:1893]] Pour ...... * [[http://castellab.ddnsfree.com:1894|castellab.ddnsfree.com:1894]] Pour ...... * [[http://castellab.ddnsfree.com:1895|castellab.ddnsfree.com:1895]] Pour Gerard Test * Si mot de passe demandé => le meme mdp que pc fablab et utilisateur = "admin" Il est tres fortement recommandé d '**utiliser un serveur node-red par utilisateur et un seul** ... Il est tres fortement conseillé de **sauvegarder sa configuration Node-red** dans un fichier sur son PC au cas ou .... ===== Sauvegarde configuration Node-red ===== [[faire_preparation:soireeinfo:tp:sauveconfignodered|sauvegarde configuration Node-red]] ===== Supprimer un Flow dans node-red ===== [[faire_preparation:soireeinfo:tp:supflow|Supprimer un flow dans node red]] ===== Schema de raccordement ===== {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-25_19-57-28.png?direct&600 |}} ====== Exercise 1 : ====== ===== Etapes ===== -- Raccorder l ESP32 au PC sur un port USB -- Telecharger le binaire Tasmota avec [[https://tasmota.github.io/install/|Web Installer]] en utilisant Chrome ou Chromium {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_16-04-28.png?direct&400 |}} -- Configurer le wifi , Indiquer le SSID et le mot de passe de votre box Si vous etes au FABLAB et si nous n'avez pas de connexion wifi (castellab), taper dans la console : **Backlog SSID1 Livebox-5200; Password1 Castel37110$; SSID2 SSIDVOTREBOX; Password2 MDPWIFIVOTREBOX** -- Connecter vous via le navigateur web **Chrome ou Chromium**, à l'adresse @192.168.xxx.xxx de votre tasmota (si vous ne connaissez pas @IP de votre tasmota : Vous pouvez utiliser l' [[faire_preparation:soireeinfo:tp:interfbox|interface de votre box]] ou le logiciel [[faire_preparation:soireeinfo:tp:nmap|nmap]]) -- Une fenetre comme ci-dessous s'ouvrira {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_16-55-02.png?direct&400 |}} -- Menu Configuration {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_16-56-06.png?direct&400 |}} -- Configurer le serveur MQTT , Exemple : "fablab37110.ddns.net" le port par defaut est 1883 {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-06_14-48-16.png?direct&400 |}} -- configurer les modules : {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_16-57-52.png?direct&400 |}} -- GPIO39 ==> bouton ==> index 1 ( ceci est un exemple on peut configurer d'autres GPIO conrespondant à votre ESP32 ) -- GPIO21 ==> relais ==> index 1 ( ceci est un exemple on peut configurer d'autres GPIO conrespondant à votre ESP32 ) -- **Ouvrir la console de tasmota ** ( revenir au premier ecran) est entrer les commandes "SetOption146 1" + Entrée( validation de l'envoi de la temperature de l'ESP32) et "teleperiod 5" + Entrée ( definit la periode d'envoi des informations vers MQTT ici tous les 5 s), "SetOption65 1" pour eviter de reinitialiser la configuration sur defaut d'alimentation, "SetOption1 1" pour defaut reset intempestif sur appui bouton. {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-06_17-48-19.png?direct&600 |}} --revenir au premier ecran {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-06-13.png?direct&400 |}} -- Copier les topic de l'esp32 "**stat/tasmota_6B2128/POWER**" ( A partir de la console) pour l'etat ON/OFF du bouton ( à sauvegarder dans un fichier texte provisoire) Le code 6B2128 depend de l'ESP32, il est différent à chaque ESP32 , reprend une partie de l'adresse MAC de l'ESP32 -- Et copier le topic "**tele/tasmota_6B2128/SENSOR**" pour recuperer la temperature de l'ESP32 Idem le sauvegarder NOTER les 6 derniers caracteres de l'adresse MAC de votre ESP32 pour le retrouvez plus facilement dans votre configuation et coller une etiquette sur votre ESP32 avec cette @MAC {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-06_17-48-19.png?direct&600 |}} -- Vous pouvez copier d'autres topic pour les inserer dans Node red si besoin -- Vous connecter au serveur Node red ( Au serveur qui vous est destiné pour les tests : fablab37110.ddns.net:18XX ) Attention si vous vous connnecter à plusieurs sur le meme serveur Node red , vous allez vous melanger les flux et cela risque de creer des soucis , donc prenez chacun un Node red voir avec Thierry ou Gerard... (Voir le debut du tuto pour les @IP des serveurs node-red) -- allez ouvrir une page web comme celle-ci : {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-08-33.png?direct&800 |}} -- Vous inserer un noeud en le faisant glisser sur la partie centrale. le premier noeud est MQTT IN dans la colonne de gauche section "Network" {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-13-09.png?direct&400 |}} -- Inserer le noeud "Debug" section "Common" pour visualiser les informations venant de votre ESP32 via MQTT {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-15-08.png?direct&600 |}} -- Il vous faut parametrer le noeud MQTT IN avec l'adresse du serveur MQTT utilisé par votre Tasmota de l'ESP32 et le topic ( sujet) que vous voulez utiliser *serveur MQTT ==> "fablab37110.ddns.net port par defaut 1883 ( Le crayon pour changer @MQTT) *Topic à inserer pour le bouton "stat/tasmota_6B2128/POWER" Cliquer sur le bouton "Update" et ensuite bouton "Done" et ensuite le bouton "Deploy" pour valider ( en haut à droite ) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-21-13.png?direct&400 |}} Cliquez sur le petit crayon pour avoir cette fenettre et inserer uniquement l'URL de MQTT , le port etant par defaut 1883 {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-06_14-31-03.png?direct&400 |}} {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-23-44.png?direct&400 |}} Si les ronds bleu on disparu et aucun triangle orange , c'est qu'il n'y pas d'erreurs et si vous avez l'info " Connected " en dessous du noeud MQTT IN , indique que Node red à bien trouver le serveur MQTT {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-26-37.png?direct&400 |}} Si vous voulez utiliser un autre topic par exemple la temperature , il faut utiliser un autre noeud MQTT IN Si vous appuyer 1 fois sur le bouton , vous devez voir l'information "ON" dans la fenetre "Debug" {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-32-47.png?direct&400 |}} Si vous appuyer 1 autre fois sur le bouton , vous devez voir l'information "OFF" dans la fenetre "Debug" {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-03-28_17-35-08.png?direct&400 |}} ==== Visualiser la Led de lESP32 sur Node Red ==== * 1-Inserer 2 nodes supplementaires : **node-red-dashboard** , il permet d'avoir un tableau de bord pour visualiser et piloter notre ESP32 et **node-red-contrib-ui-led** , permet d'afficher la valeur de la LED Eteinte = vert, Allumée = Rouge * 2- Configurer le node de la Led pour l'affichage * 3- Configurer le node MQTT out et un node switch pour piloter la LED via Node Red ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ *1- Inserer les nodes supplementaires ( Cliquez sur le menu en haut à droite à coté de l'icone "Deploy" ) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_15-47-00.png?direct&400 |}} *2- Cliquez sur "**Manage Palette**" et ensuite l'onglet "**Install**" taper dans la zone de recherche "**dashboard**" et cliquez sur "**install**" à la ligne "**node-red-dashboard** " {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-05-38.png?direct&400 |}} *3- Faire la même chose avec le node " **node-red-contrib-ui-led** " *4 - Vous devriez avoir dans la colonne de gauche un menu supplementaire avec le dashboard avec ses nodes correspondants ainsi que le node "LED" {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-11-10.png?direct&200 |}} *5- Inserez le node "LED" et relié le au node "MQTT in" parametré précédement {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-20-46.png?direct&400 |}} *6- On paramettre le node "LED" : Le groupe ( petit crayon) , Le Label ( Nom), La position , La forme(Cercle ou carré), le msg.payload mode String ( ON / OFF), la couleur ( Rouge = Allumée , Blanc = Eteinte ) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-24-22.png?direct&400 |}} *7- On paramettre le groupe ( Name) et le nom du dashboard ( Tab) en cliquant sur le petit crayon et ensuite on clique sur "Update" et ensuite "Done" et on n'oublie pas de faire "Deploy" ( Enregistrer) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-24-41.png?direct&400 |}} {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-44-14.png?direct&400 |}} *8- En ouvrant une nouvelle fenetre pour afficher le Dashboard @iPNodered/ui ( exemple : http://192.168.1.44:1880/ui/) on affiche le tableau de bord avec la LED qui s'allume ou s'eteint suivant l'etat du bouton de l'ESP32 **Allumé** {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-37-09.png?direct&800 |}} **Eteint** {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-41-00.png?direct&800 |}} ==== Piloter la LED de ESP32 et du Dasboard via Node Red ==== *1- Inserez 2 nodes : "MQTT out" ( Network ) et "Switch" ( Dashboard) et relié les ensembles ( Sortie Switch sur entree MQTTout) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-49-10.png?direct&+600 |}} *2- Parametrer le node "MQTT out" : **server** (exemple) = fablab37110.ddns.net:1883 ; **Topic** = cmnd/tasmota_6B2128/POWER1 (cmnd = abreviation pour envoyer des infos à tasmota; tasmota_6B2128 = reference materiel du tasmota esp32 utilisé; /POWER = Bouton ou switch de tasmota; 1 = index 1 de Tasmota ) {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-54-40.png?direct&400 |}} Cliquez sur le petit crayon ( ligne server) pour avoir cette fenettre et inserer uniquement l'URL de MQTT (pour exemple fablab37110.ddns.net) , le port etant par defaut 1883 {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-06_14-31-03.png?direct&400 |}} *3- Parametrer le node "Switch" : le groupe ( ICI test001) , la taille ( Size), Le label( Nom) , On Payload = ON , Off Payload = OFF, Topic = msg.topic ) Cliquer sur "Done" et "Deploy" {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_16-55-22.png?direct&400 |}} *4- On devrait visualiser "connected" sous le node MQTT out {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_17-08-36.png?direct&800 |}} *5- On affiche le dashboard ( voir rubrique précedente); En actionnant le "Switch" sur NodeRed on eteint ou allume la LED , et de même avec le bouton de l'ESP32 **Allumé** {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_17-15-23.png?direct&400 |}} **Eteinte** {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_17-15-36.png?direct&400 |}} ====== Exercice 2 : ====== * Essayer de parametrer le Dashboard avec la temperature de l'ESP32 qui s'affiche sur une Gauge et ensuite sur un graphique ( Il faudra utiliser un node "Function" pour obtenir la valeur de la temperature var Temp = msg.payload.ESP32.Temperature; msg.payload = Temp; return msg; Pour avoir cela : {{ :faire_preparation:soireeinfo:tp:capture_d_ecran_du_2023-04-03_17-35-15.png?direct&400 |}} ===== La correction ===== [[faire_preparation:soireeinfo:tp:corex2|Correction exercice 2]]