++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Atelier Domotique : préparation ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. include:: idBlock.rst :Création: 12/05/2023 :Maj: 05/2023 .. include:: tdm.rst ==================================================================================================== Présentation ==================================================================================================== L'objectif est d'atteindre vite un résultat. Inspi. `la chaîne Yt NeodymeTv`_ et en particulier: `[Cours 4.2 Bioautomatique] Capteur DIY No-code (Setup de Tasmota et Node-RED)`_ Mise en garde:: Il s'agit d'une recette de cuisine rapide tous les sujets concernant la domotique ne seront pas abordés... .. _`[Cours 4.2 Bioautomatique] Capteur DIY No-code (Setup de Tasmota et Node-RED)` : https://www.youtube.com/watch?v=qJVA5QKo-zw .. _`la chaîne Yt NeodymeTv` : https://www.youtube.com/@NeodymeTV et la `playliste`_ .. _`playliste` : https://www.youtube.com/playlist?list=PLYCQztVKrSmDaZG0bwnbd0PfgdXGe9Q2c l'ESP-8266 et plus particulièrement WEMOS-D1 mini ---------------------------------------------------------------------------------------------------- `Site officiel WEMOS/LOLIN DI mini`_ (en v4.0.0 avec connecteur USB-C) `github de la v3.0`_ .. _`github de la v3.0` : https://github.com/wemos/docs/blob/master/docs/en/d1/d1_mini_3.1.0.rst .. image:: images/schemaWemosD1v3.0.png .. _`Site officiel WEMOS/LOLIN DI mini` : https://www.wemos.cc/en/latest/d1/d1_mini.html ==================================================================================================== 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 ---------------------------------------------------------------------------------------------------- .. image:: images/atelierModelAfficheGroslay.jpg :width: 300 px 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 .. image:: images/node-red-hexagon.png :width: 100 px .. image:: images/Controlling-Neopixel-using-Tasmota.png :width: 100 px .. image:: images/Mqtt-hor.svg :width: 100 px .. image:: images/building-m2m-iot-projects.png :width: 100 px L'affiche réalisée ---------------------------------------------------------------------------------------------------- .. image:: images/visuelAtelierDomotique230329_2331.png :width: 600 px 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 :ref:`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) .. image:: images/rpi3bb_pinout.JPG :width: 600 px 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. :class: without-title 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`_ .. _`5 Méthodes pour Configurer le Wi-Fi sur Raspberry Pi OS` : https://raspberrytips.fr/configurer-wifi-raspberry-pi/ 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... .. index:: pair: MQTT; Domotique Install MQTT (MOSQUITTO) ---------------------------------------------------------------------------------------------------- :: sudo apt install mosquitto systemctl status mosquitto `Tutoriel : installer Mosquitto MQTT sur Raspberry Pi`_ .. _`Tutoriel : installer Mosquitto MQTT sur Raspberry Pi` : https://www.lesalexiens.fr/domotique/tutoriel-installer-mosquitto-mqtt-sur-raspberry-pi/ :: 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`_ .. _`mqtt-explorer` : https://mqtt-explorer.com/ .. index:: pair: NodeRed; Domotique 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 .. admonition:: **SITE OFFICIEL** :class: SEEALSO `Node-RED documentation`_ .. _`Node-RED documentation` : https://nodered.org/docs/ .. index:: pair: Domotique; Tasmota Tasmota ---------------------------------------------------------------------------------------------------- Prémices **************************************************************************************************** `[Cours 4.1 Bioautomatique] Capteur DIY No-code (Installation de Tasmota)`_ lien Tamsota instll dans la description .. _`[Cours 4.1 Bioautomatique] Capteur DIY No-code (Installation de Tasmota)` : https://www.youtube.com/watch?v=2RA9PNGm2Dg&list=PLYCQztVKrSmDaZG0bwnbd0PfgdXGe9Q2c&index=13 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) .. image:: images/tasmotaBoutonResetConfiguration.JPG :width: 300 px au lieu du bouton restart: .. image:: images/tasmotaBoutonRestart.JPG :width: 300 px 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`_, `Overview of Tasmota topics and Messages`_ Mais aussi `doc officiel TASMOTA MQTT`_ %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) .. image:: images/tasmotaMQTTParameters.JPG :width: 300 px Donc pour piloter un relais : cmnd/SR04_D82B5C/commande `Liste des commandes TASMOTA`_ 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`` :class: without-title Avec tasmota-identifiant: celui dans la fenêtre console de TASMOTA .. image:: images/tasmotaConsole.JPG Depuis NodeRed: .. image:: images/tasmotaToggleRelay1.JPG Et dans l'ui: .. image:: images/guiButtonRelayCommand.JPG .. NOTE:: le bouton génère directement topic et payload :class: without-title 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`_ .. _`Easy ESP-01 Tasmota Programming` : https://www.instructables.com/Easy-ESP-01-Tasmota-Programming/ 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 :class: without-title 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`_ et `rules`_ (la doc sur rule est très longue, il y a des Examples à la fin `rules cookbook`_) .. _`rules cookbook` : https://tasmota.github.io/docs/Rules/#rule-cookbook .. _`rules` : https://tasmota.github.io/docs/Rules/ .. _`timers` : https://tasmota.github.io/docs/Timers/ 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 expires (x = 1..8). Voir le tableau `Examples of Available Triggers`_ .. _`Examples of Available Triggers` : https://tasmota.github.io/docs/Rules/#examples-of-available-triggers 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: .. image:: images/tasmotaSR04PinConfig.JPG :width: 300 px Relay 1 est pour la led Jaune déclenchée depuis Node-red Tasmota devices database **************************************************************************************************** `Tasmota Supported Devices Repository`_ **IMPRESSIONNANT** ! .. WARNING:: A revoir :class: without-title Tasmota Device Manager https://github.com/jziolkowski/tdm TASMOTA et HC-SR04 **************************************************************************************************** This feature is included only in tasmota-sensors binary ! .. image:: images/TasmotaSR04_250416_2252.JPG :width: 300 px .. image:: images/TasmotaSR04_250416_2252_config.JPG :width: 300 px 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. .. _`MQTT fulltopic definition` : https://tasmota.github.io/docs/MQTT/#mqtt-topic-definition .. _`Overview of Tasmota topics and Messages` : https://www.youtube.com/watch?v=VACudinucx8&list=PLk0D2S-fqJ7YvR1wrpl8A4mhtBbYOlsE4&index=15 .. _`doc officiel TASMOTA MQTT` : https://tasmota.github.io/docs/MQTT/ .. _`Liste des commandes TASMOTA` : https://tasmota.github.io/docs/Commands/#commands-list .. _`Tasmota Supported Devices Repository` : https://templates.blakadder.com/index.html ==================================================================================================== 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`_ .. _`NTFY - système de notification hyper simple et complet` : https://www.youtube.com/watch?v=UieZYWVVgA4 Update 24/09/2024 : autre solution Firebase Cloud Messaging un système Google gratuit. .. admonition:: **SITE OFFICIEL** :class: SEEALSO `Firebase Cloud Messaging`_ .. _`Firebase Cloud Messaging` : https://firebase.google.com/docs/cloud-messaging ==================================================================================================== 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`_ sur le site TASMOTA .. _`WS2812B and WS2813` : https://tasmota.github.io/docs/WS2812B-and-WS2813/ ESP HUMAN IR ---------------------------------------------------------------------------------------------------- ? ref WEMOS Batterie shield ---------------------------------------------------------------------------------------------------- Disponible chez AliExpress à 1.7€ `WEMOS Battery Shield doc`_ .. _`WEMOS Battery Shield doc` : https://www.wemos.cc/en/latest/d1_mini_shield/battery.html 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`_ .. _`Tasmota supporte le DeepSleep mode visiblement` : https://tasmota.github.io/docs/DeepSleep/ 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. .. index:: pair: Thermometre; Switchbot 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. .. index:: pair: Virtualisation; PROXMOX `PROXMOX`_ gestion d'environnement virtuel Open source CPU 64 bits (Intel EM64T ou AMD64). .. _`PROXMOX` : https://www.proxmox.com/en/ ==================================================================================================== Weblinks ==================================================================================================== .. target-notes::