Atelier Domotique : préparation

- Auteur:
Gilles Lecorsier & J.Soranzo
- Societe:
- Entity:
- Création:
12/05/2023
- Maj:
05/2023
Présentation
L’objectif est d’atteindre vite un résultat.
Inspi. la chaîne Yt NeodymeTv [3] et en particulier: [Cours 4.2 Bioautomatique] Capteur DIY No-code (Setup de Tasmota et Node-RED) [2]
Mise en garde:
Il s'agit d'une recette de cuisine rapide tous les sujets concernant la domotique ne seront pas abordés...
l’ESP-8266 et plus particulièrement WEMOS-D1 mini
Site officiel WEMOS/LOLIN DI mini [5] (en v4.0.0 avec connecteur USB-C)

Synthèse
adresses:
(update ip Mai 2025)
ip 192.168.1.29:1880 nodered
192.168.1.29:1883 (server Mosqitto)
pi
raspberry changement le 16/05/2024 : l33M@j0r-9566
http://192.168.1.29/ (HT22)
http://192.168.1.31/ (SR-04)
Étapes de la préparation
- Prépare Raspberry pi OK
- Préparer carte SD
Télécharger les outils: Raspberry pi imager v1.7.4 OK
choisir l’image : pas desktop même si hésitation OK
graver l’image environ mn OK
tester l’image OK
- configurer le réseau OK
filaire rien à faire OK
wifi création du fichier wpa_supplicant dans la partition de boot OK
- installer nodered OK
installer nodejs OK
installer nodered OK
- installer mqtt (Mosquito) OK
tester Mosquitto OK
- préparer ESP8266 OK
installer Tasmota OK
configurer Tasmota OK
- préparer plusieurs ESP
temp/humidity OK
- niveau d’eau avec télémètre ultra-son
sur breadboard OK
passer sur veroboard
- commande de pompe
breadboard
veroboard
- anneau de LED
breadboard
veroboard
Pour Groslay
Modèle d’affiche

Informations
Informations pour l’affiche:
Titre: "Atelier domotique Nocode".
Description:
Configurer une box domotique base Raspberry pi
Capteurs et actuonneurs pilotés par TAMSOTA
Découverte de NodeRED
Date: Samedi X Novembre de 9h00 à 12h00.
Limité à 10 personnes hors membres (à partir de 12 ans).
Participation de 5€.
Spécifier que la réservation est obligatoire.
Ajouter les photos ci-dessous si possible.
Pour le visuel
Logo NodeRed, RPI, TASMOTA, MQTT



L’affiche réalisée

Liste du matériel nécessaire
Voir fichier Excel : C:\Users\jojo\Documents\jojoBag\perso\BRIDOLAB\atelierDomotic
RPi3 modèle B+ 60€ sur AMAZON
alimentation Rpi 11€
carte microSD 32Go (Verbatim 6.45€) ou 64Go
dongle ftdi usb uart (7€)
usb cable usb mini 30cm 2€
wemosD1 mini x3 (16€)
usb power x3 (5€)
usb cable micro x3 (7€)
sfr-04 (HC-SR04)
DHT-22 (12€/5)
human ir detector (ceux des kits)
Déroulé de l’atelier
Voir chapitre dédié
Notes sur les difficulté rencontrées lors de la préparation
Préparer la carte SD
choisir l’OS:
dans paramètre : login mdp + wifi + éventuellement ssh (faut voir c’est peut-etre plus simple de configurer le wifi avec wpa_supplicant.conf)
Dialogue avec la plateforme
Un des premier écueil est le dialogue avec le RPi : soit avec le desktop (là il faut écran, clavier et souris), soit en ssh (là il faut activer le ssh et connaître l’IP) soit en mode console (là il faut dongle usb FTDI-232°, câble usb, fils de câblage, vitesse-115200- et brochage)
J’ai choisi de travailler en mode console car l’avantage est qu’on a pas besoin d’autre chose d’un point de vue matériel que du pi et un dongle USB UART.
Warning
Le mode console sur le pi n’est pas actif par défaut.
Pour activer le mode console sur le pi, il faut modifier le fichier config.txt
et y ajouter
enable_uart=1
. Ce fichier se trouve sur la partition boot directement éditable sur PC
Branchement au RPi:
FTDI-232 TX sur UART0-RXD et FTDI-232 RX sur UART0-TXD
Détection du port utilisé: gestionnaire de périphérique
Configuration du wifi
5 Méthodes pour Configurer le Wi-Fi sur Raspberry Pi OS [6]
wpa_supplicant.conf dans /boot:
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Wifi_ssid"
scan_ssid=1
psk="wifi_passwd"
key_mgmt=WPA-PSK
}
Connexion
Avec Mobaxterm à 115200
être patient au premier démarrage…
Install MQTT (MOSQUITTO)
sudo apt install mosquitto
systemctl status mosquitto
Tutoriel : installer Mosquitto MQTT sur Raspberry Pi [7]
sudo systemctl enable mosquitto.service
sudo mosquitto_passwd -c /etc/mosquitto/passwd mqtt (un userid quelconque) (pass mqtt_)
sudo nano /etc/mosquitto/conf.d/default.conf
allow_anonymous false
password_file /etc/mosquitto/passwd
listener 1883
sudo systemctl restart mosquitto
Client portable: mqtt-explorer [8]
Install Nodered
Directement sur le site officiel:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
### WARNING ###
DO NOT EXPOSE NODE-RED TO THE OPEN INTERNET WITHOUT SECURING IT FIRST
Even if your Node-RED doesn't have anything valuable, (automated) attacks will
happen and could provide a foothold in your local network
Follow the guide at https://nodered.org/docs/user-guide/runtime/securing-node-r ed
to setup security.
### ADDITIONAL RECOMMENDATIONS ###
- Remove the /etc/sudoers.d/010_pi-nopasswd file to require entering your pass word
when performing any sudo/root commands:
sudo rm -f /etc/sudoers.d/010_pi-nopasswd
- You can customise the initial settings by running:
node-red admin init
- After running Node-RED for the first time, change the ownership of the setti ngs
file to 'root' to prevent unauthorised changes:
sudo chown root:root ~/.node-red/settings.js
sudo systemctl enable nodered.service
http://192.168.1.28:1880/
Ne pas oublier d’installer la palette node-red-dashboard
SITE OFFICIEL
Tasmota
Prémices
[Cours 4.1 Bioautomatique] Capteur DIY No-code (Installation de Tasmota) [10] lien Tamsota instll dans la description
https://tasmota.github.io/install/ non compatible avec Brave (Webserial volontairement désactivé)
Reset password problématique
Reset password problématique après un appui accidentel sur le bouton Reset configuration (seule solution, reflashage)
au lieu du bouton restart:
Time zone
Time zone : Backlog0 Timezone 99; TimeStd 0,0,10,1,3,60; TimeDst 0,0,3,1,2,120
Pilotage LED/GPIO
Comment piloter une LED depuis le serveur MQTT, sachant qu’avec TASMOTA on ne peut renseigner qu’un seul topic
début de réponse avec MQTT fulltopic definition [16], Overview of Tasmota topics and Messages [17]
Mais aussi doc officiel TASMOTA MQTT [18]
%prefix% = cmnd ou stat ou tele
%topic% = nom fourni dans la bdd MQTT parameters : SR04_ID (en général le nom suivi de l’ID ex SR04_D82B5C)
Donc pour piloter un relais : cmnd/SR04_D82B5C/commande
Liste des commandes TASMOTA [19]
Expérimentation depuis MQTT explorer:
cmnd/SR04_D82B5C/RELAY1 ON ne fonctionne pas unknown command
cmnd/SR04_D82B5C/Power avec en dessous du topic coché RAW et le texte ON/OFF
Power1 est normalement associé au RELAY1 (command on sait/change ?)
Malgré toutes mes recherches, je n'ai pas trouvé cette information !
Note
Commande qui fonctionne donc cmnd/tasmota-identifiant/Power
Avec tasmota-identifiant: celui dans la fenêtre console de TASMOTA
Depuis NodeRed:
Et dans l’ui:
Note
le bouton génère directement topic et payload
Avec le code:
[
{
"id": "790c247cee35967d",
"type": "ui_button",
"z": "337adf8b7cc766f3",
"name": "",
"group": "73780367594c940a",
"order": 15,
"width": 0,
"height": 0,
"passthru": true,
"label": "button",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "",
"payload": "TOGGLE",
"payloadType": "str",
"topic": "cmnd/SR04_D82B5C/Power",
"topicType": "msg",
"x": 430,
"y": 360,
"wires": [
[
"b90cd59749ab07b0"
]
]
},
{
"id": "b90cd59749ab07b0",
"type": "mqtt out",
"z": "337adf8b7cc766f3",
"name": "",
"topic": "cmnd/SR04_D82B5C/Power",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "8788867735f96ce7",
"x": 670,
"y": 360,
"wires": []
},
{
"id": "73780367594c940a",
"type": "ui_group",
"name": "Info salon",
"tab": "a1efb096ba5c364c",
"order": 1,
"disp": true,
"width": 16,
"collapse": false,
"className": ""
},
{
"id": "8788867735f96ce7",
"type": "mqtt-broker",
"name": "",
"broker": "192.168.1.28",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
},
{
"id": "a1efb096ba5c364c",
"type": "ui_tab",
"name": "Home",
"icon": "dashboard",
"disabled": false,
"hidden": false
}
]
Tasmota sur ESP-01
Heartbeat
Cela peut être intéressant de faire palpiter la led interne histoire de vérifier que le module est actif.
Avec la commande et ruletimer (unité la seconde)
Warning
texte
La LED interne de l’ESP est sur la sortie ? voir le schema sur GPIO2 soit à priori D4 et inversée
Dans la console TASMOTA:
Rule1 ON Rules#Timer=1 DO Backlog RuleTimer1 1; Power2 toggle ENDON
suivi de rule1 1 puis de ruletimer1 1 pour lancer
trigger : System#Boot
Rule1 ON System#Boot DO Backlog RuleTimer1 2 ENDON ON Rules#Timer=1 DO Backlog RuleTimer1 2; Power2 toggle ENDON
suivi de rule1 on et redémarrer l'ESP
Petit refresh 2025: cf doc Tamosta timers [14] et rules [13] (la doc sur rule est très longue, il y a des Examples à la fin rules cookbook [12])
On utilise timer1 ? non les timers sont off… TBC trop fatigué ! Question c’est quoi RuleTimer1 ? je connais Rule, Timer mais RuleTimer. C’est dans le doc des commandes (dans le groupe rules justement): Up to eight timers to be used as countdown event (x = 1..8)
- Remarque la syntaxe Rules#Timer=1 fait bien référence aux countdown timer RuleTimer1
when countdown RuleTimer<x> expires (x = 1..8). Voir le tableau Examples of Available Triggers [15]
Donc ci-dessus seule la deuxième proposition est suffisante:
Rule1 ON System#Boot DO Backlog RuleTimer1 2 ENDON ON Rules#Timer=1 DO Backlog RuleTimer1 2; Power2 toggle ENDON
Qui lors du boot, fixe le count down timer1 (RuleTimer1) à 2secondes puis lorsque ce dernier arrive à 0 Commence par se remettre lui-même à 2 et change l’état de relais 2
Il n’y a pas de mode reapeat dans le RuleTimers !
Rappel:
Relay 1 est pour la led Jaune déclenchée depuis Node-red
Tasmota devices database
Tasmota Supported Devices Repository [20] IMPRESSIONNANT !
TASMOTA et HC-SR04
This feature is included only in tasmota-sensors binary !
Change WIFI settings
Attention un TASMOTA flashé depuis le WEB a sa console série qui ne fait que de l’affichage. Donc impossible de passer des commandes.
L’astuce que j’ai expériementé lors du passage de la Livebox-FC98 à la Livebox-A1A0 est d’activer dans la box un réseau wifi invité avec l’ancien SSID et mdp et aisni d’accéder à l’interface WEB pour changer de réseau. Au passage renseigner un deuxième SSID jojo celui du téléphone.
Free notification
https://ntfy.sh/ directement des exemples pour nodered
On peut se créer une instance locale de ntfy (sur le pi ou encore mieux sur le NAS en contenairisé…)
NTFY - système de notification hyper simple et complet [21]
Update 24/09/2024 : autre solution Firebase Cloud Messaging un système Google gratuit.
SITE OFFICIEL
Producteur de données
ESP TEMP/HUMIDITY
http://192.168.1.29/ : TAMSOTA
Consommation électrique: mesure vs autonomie
ESP distance
HC-SR04,
ESP anneau de LED
WS2812
WS2812B and WS2813 [23] sur le site TASMOTA
ESP HUMAN IR
? ref
WEMOS Batterie shield
Disponible chez AliExpress à 1.7€
Les prix
ESP-8266 WEMOS D1 mini environ 3.5€ sur AliExpress avec Fdp ou 20€ les 5 sur AMAZON (avec Prime)
HC-SR04 sur AMAZON une dizaine d’Euro les 5 (27/05/23), ou AliExpress
Anneau LED
HUMAN PIR
WEMOS Batt shield
batterie 1200mAh
Power
Consommation
Le courant oscille enter 21 et 80mA
L’unité de mesure de l’énergie électrique du système SI est le Joule. Wh ou mWh
Mesure moyenne : 11h15: 5mn 3mAh, 15mn : 15mAh soit 60mAh soit seulement 25h d’autonomie ! 14:40 110mAh soit 205mn pour 110mAh à 23h15 379mAh
Tasmota supporte le DeepSleep mode visiblement [25]
mais:
Other devices, with onboard regulators, USB chips etc. like the WEMOS D1 Mini, may still
require 18 mA at 5 V when in deep sleep (i.e.: greater than 1000 times more power).
ESP01 semblerait plus adapté au DeepSleep.
Switchbot Thermometer
2 achetés AMAZON : https://www.amazon.fr/dp/B0BB7M7BPM?psc=1&ref=ppx_yo2ov_dt_b_product_details
Truc en BT doit être hackable
API github
https://github.com/OpenWonderLabs/SwitchBotAPI (pour le hub du site…)
mieux:
https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/tree/latest
Realtek BLE chip 8762
AiP16C21 ?
sous le PCB ?
RPi replacement
Pourquoi se poser la question ? A cause du prix actuel mais pas seulement.
Quand on fait le bilan, au Pi, il faut ajouter une alimentation, un éventuel disque dur, on est sur une architecture ARM avec ce que cela implique…
Ce qu’apporte le Pi ce sont les IO programmable en Python par exemple.
Si on a pas besoin de GPIO alors un mini pc ferait l’affaire:
Sur la chaîne du gaz avec le Swiss accent:
FUJITSU FUTRO S920 4GRAM/8G SSD environ 30€ sur ebay , AMD Radeon
LENOVO ThinkCentre M93 Intel I5 8G/120G
LENOVO ThinkCenter M73 Intel I7 8G/240G (100€ sur back Market)
Inconvénient pas de port console pour démarrer sur ces machines donc écran/clavier souris pour démarrer.
PROXMOX [26] gestion d’environnement virtuel Open source CPU 64 bits (Intel EM64T ou AMD64).