Atelier Domotique : préparation

_images/smartHome.png

Index

Auteur:

Gilles Lecorsier & J.Soranzo

Societe:

VoRoBoTics [1]

Entity:

VoLAB [1]

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)

github de la v3.0 [4]

_images/schemaWemosD1v3.0.png

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

_images/atelierModelAfficheGroslay.jpg

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

_images/node-red-hexagon.png _images/Controlling-Neopixel-using-Tasmota.png _images/Mqtt-hor.svg _images/building-m2m-iot-projects.png

L’affiche réalisée

_images/visuelAtelierDomotique230329_2331.png

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

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)

_images/rpi3bb_pinout.JPG

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

Node-RED documentation [9]

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)

_images/tasmotaBoutonResetConfiguration.JPG

au lieu du bouton restart:

_images/tasmotaBoutonRestart.JPG

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)

_images/tasmotaMQTTParameters.JPG

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

_images/tasmotaConsole.JPG

Depuis NodeRed:

_images/tasmotaToggleRelay1.JPG

Et dans l’ui:

_images/guiButtonRelayCommand.JPG

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

Easy ESP-01 Tasmota Programming [11]

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:

_images/tasmotaSR04PinConfig.JPG

Relay 1 est pour la led Jaune déclenchée depuis Node-red

Tasmota devices database

Tasmota Supported Devices Repository [20] IMPRESSIONNANT !

Warning

A revoir

Tasmota Device Manager https://github.com/jziolkowski/tdm

TASMOTA et HC-SR04

This feature is included only in tasmota-sensors binary !

_images/TasmotaSR04_250416_2252.JPG _images/TasmotaSR04_250416_2252_config.JPG

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.

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€

WEMOS Battery Shield doc [24]

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).