======== 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]]