IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Des capteurs connectés pour la maison avec Arduino et Raspberry Pi [Tutoriel]


Sujet :

Raspberry Pi

  1. #1
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut Des capteurs connectés pour la maison avec Arduino et Raspberry Pi


    Je vous propose un nouveau tutoriel :


    Le but est de construire un système communicant en WiFi comprenant un nœud de capteurs autour d’une carte Arduino et une carte Raspberry Pi configurée en serveur domotique. Les données brutes mesurées par les capteurs sont transmises, traitées puis stockées sur le serveur et peuvent être consultées sur des graphiques dans un navigateur Web par tout client connecté au réseau domestique, et même depuis Internet.

    Bonne lecture

    Cours et tutoriels Raspberry Pi
    Cours et tutoriels Arduino

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut Mise à jour - version 2
    Mise à jour du programme Arduino qui publiait jusqu'à présent les mesures à intervalles toujours réguliers, qui peuvent saturer inutilement le réseau alors que les mesures sont stables.
    La fréquence de publication des données de mesure peut maintenant être variable si les mesures varient rapidement et de façon importante.

    Voir II-C-5. Le programme Arduino complet
    [...]
    L’URL ou l’adresse IP du broker, le port du broker MQTT (1883 par défaut, sans chiffrement des messages, ni authentification), le topic de publication des messages et des données sur la fréquence de publication des messages :

    mqtt_broker.h
    Code arduino : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #define MQTT_TOPIC "/home/bedroom/unor4wifi-01/si7021"
     
    // Smaller time interval in milliseconds
    #define MQTT_PUBLISH_MIN_INTERVAL (60 * 1000)
     
    // largest time interval in milliseconds
    #define MQTT_PUBLISH_MAX_INTERVAL (1200 * 1000)
     
    // Minimum temperature change (°C)
    #define MQTT_PUBLISH_MIN_TEMP_VAR (0.5)
     
    // Minimum humidity change (%RH)
    #define MQTT_PUBLISH_MIN_HUM_VAR (1)

    L’algorithme programmé permet de publier les mesures à intervalles réguliers (ici, toutes les 20 min au moins, soit 1200 s), mais aussi d’accélérer la fréquence des publications si les variations de température ou d’humidité sont importantes (ici, le système peut publier toutes les 60s si la variation de température est supérieure à 0.5°C ou si la variation d’humidité relative est supérieure à 1% par rapport à la publication précédente). Le but est d’éviter la saturation du réseau avec de nouvelles données alors que les mesures sont jugées relativement stables, mais de ne pas manquer non plus les variations rapides et importantes si elles se produisent.
    L'article a été mis à jour en conséquence

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut Et en Zigbee ?
    Bonjour,

    En complément, j'ai fait un test concluant avec un capteur de température et d'humidité communiquant en Zigbee via une passerelle Zigbee2MQTT :
    [Raspberry Pi] [Test] Une passerelle Zigbee avec un dongle USB Zigbee2MQTT

  4. #4
    Membre émérite
    Homme Profil pro
    Expertise comptable
    Inscrit en
    Décembre 2019
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Expertise comptable
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2019
    Messages : 842
    Points : 2 895
    Points
    2 895
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Le but est de construire un système communicant en WiFi comprenant un nœud de capteurs autour d’une carte Arduino et une carte Raspberry Pi configurée en serveur domotique. Les données brutes mesurées par les capteurs sont transmises, traitées puis stockées sur le serveur et peuvent être consultées sur des graphiques dans un navigateur Web par tout client connecté au réseau domestique, et même depuis Internet.
    Merci beaucoup !

    J'ai un montage similaire avec un pi zero w qui fonctionne depuis 3 ans désormais, sans problème.

    J'utilise la debian modifiée de diet-pi, qui facilite grandement l'installation de MQTT, NODE RED, GRAFANA et INFLUX-DB sur le pi et n'utilise pas DOCKER, le système tourne à moins d'1% du CPU quasiment en permanence.

    Merci beaucoup pour la partie du tutoriel sur ce bout de code que je vais essayer d'adapter sur mes esp qui forment mon réseaux de capteur chez moi:
    #define MQTT_TOPIC "/home/bedroom/unor4wifi-01/si7021"

    // Smaller time interval in milliseconds
    #define MQTT_PUBLISH_MIN_INTERVAL (60 * 1000)

    // largest time interval in milliseconds
    #define MQTT_PUBLISH_MAX_INTERVAL (1200 * 1000)

    // Minimum temperature change (°C)
    #define MQTT_PUBLISH_MIN_TEMP_VAR (0.5)

    // Minimum humidity change (%RH)
    #define MQTT_PUBLISH_MIN_HUM_VAR (1)
    Je vais aussi essayer DUCK DNS

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Merci Jules34 , n'hésite pas à faire un retour de tes expériences ici-même.

    Citation Envoyé par Jules34 Voir le message
    Je vais aussi essayer DUCK DNS
    Attention à la sécurité dès que tu ouvres un service sur Internet, mes fichiers logs montrent régulièrement des tentatives d'intrusion

  6. #6
    Candidat au Club
    Homme Profil pro
    Spécialiste en science des données
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Spécialiste en science des données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 4
    Points
    4
    Par défaut excellent projet / tutoriel Arduino Raspberry
    Merci f-leb, ça fait un petit moment que je bricolle avec du raspberry, du Arduino et des senseurs d'un côté, et que j'expérimente avec Docker, la virtualisation et les architectures orientées évènements. Ce tutoriel est top, il combine tout ça de manière très pertinente. L'utilité et la puissance de ces outils ne me sont jamais parues aussi évidentes. Et tout ça fonctionne parfaitement, encore bravo!

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Merci diazepam

    Et en prime, on peut compléter son réseau avec des équipements en Zigbee presque sans effort grâce à la passerelle opensource zigbee2mqtt :

    Nom : architecture-rpi-zigbee2mqtt.png
Affichages : 179
Taille : 181,6 Ko


  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 119
    Points : 65
    Points
    65
    Par défaut S’abonner à MQTT - MQTT Broker non disponible
    Bonour

    Merci pour ce tutos
    Je butte sur la configuration du capteur temperature
    L'assistant de configuration ne répond pas sur l'adresse http://<adresse IP de la Raspberry Pi>:8080
    Dans Portainer on voit pourtant le conteneur zigbee2MQTT avec ce port
    Nom : Capture d'écran 2025-01-16 174741.png
Affichages : 56
Taille : 91,3 Ko
    Merci

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    dans le titre de ta discussion, tu écris "MQTT Broker non disponible". Comment le sais-tu ? Tu as essayé de t'abonner à un topic et de publier ?

    Pour tester le broker, tu ouvres deux fenêtres de terminal.
    Dans le 1er terminal, tu t'abonnes à un topic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mosquitto_sub -h localhost -t test/topic
    Dans le 2è terminal, tu publies sur le topic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mosquitto_pub -h localhost -t test/topic -m "Hello world!"
    Si "Hello world!" s'affiche dans le 1er terminal, la connexion est OK...

    Si tu es connecté à distance, cela devrait aussi fonctionner par exemple avec Putty (en ouvrant deux fois Putty donc).

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 119
    Points : 65
    Points
    65
    Par défaut MQTT Broker non disponible
    Bonjour

    J'utilise Putty
    La commande mosquito n'est pas reconnu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ~/IOTstack $ mosquitto_sub -h localhost -t test/topic
    -bash: mosquitto_sub: command not found
    C'est cela qui me fait penser à un mouvaise implantation du brocker mosquito

    J'ai un Raspberry Pi 4, un dongle Sonoff et un capteur Sonoff SNZB-02P
    J'ai suivi le tutos : "Une passerelle Zigbee avec un dongle USB Zigbee2MQTT"
    Je n'ai pas de Arduino et dans le tutos "Configuration d’un serveur domotique avec MQTT, Node-RED, InfluxDB et Grafana" j'ai suivi le chapitre III La pile IOTstack


    Si j'affiche j'ai ceci dans les logs

    zigbee2mqtt | Starting Zigbee2MQTT without watchdog.
    zigbee2mqtt | [2025-01-17 11:48:20] info: z2m: Logging to console, file (filename: log.log)
    zigbee2mqtt | [2025-01-17 11:48:20] info: z2m: Starting Zigbee2MQTT version 2.0.0 (commit #060ae99cff715cc9ef6a0cfa7cae0cdcb17f0c8a)
    zigbee2mqtt | [2025-01-17 11:48:20] info: z2m: Starting zigbee-herdsman (3.2.1)
    zigbee2mqtt | [2025-01-17 11:48:20] info: zh:zstack:znp: Opening SerialPort with {"path":"/dev/ttyACM0","baudRate":115200,"rtscts":false,"autoOpen":false}
    zigbee2mqtt | [2025-01-17 11:48:20] info: zh:zstack:znp: Serialport opened
    zigbee2mqtt | [2025-01-17 11:48:21] info: zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
    zigbee2mqtt | [2025-01-17 11:48:22] info: zh:zstack:znp: Skip bootloader for CC2652/CC1352
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Error while starting zigbee-herdsman
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Failed to start zigbee-herdsman
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Check https://www.zigbee2mqtt.io/guide/ins...s-runtime.html for possible solutions
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Exiting...
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
    zigbee2mqtt | at ZStackAdapter.start (/app/node_modules/.pnpm/zigbee-herdsman@3.2.1/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:113:27)
    zigbee2mqtt | at Controller.start (/app/node_modules/.pnpm/zigbee-herdsman@3.2.1/node_modules/zigbee-herdsman/src/controller/controller.ts:136:29)
    zigbee2mqtt | at Zigbee.start (/app/lib/zigbee.ts:69:27)
    zigbee2mqtt | at Controller.start (/app/lib/controller.ts:142:13)
    zigbee2mqtt | at start (/app/index.js:161:5)
    zigbee2mqtt exited with code 0
    Merci pour l'aide

  11. #11
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: mosquitto_sub: command not found
    C'est sans doute parce que j'ai oublié que mosquitto était conteneurisé

    Il faut exécuter ces commandes dans les conteneurs.

    Dans un premier terminal, tu rentres dans le terminal du conteneur avec docker exec avant de t'abonner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi@raspberrypi:~ $ docker exec -it mosquitto /bin/sh
    / # mosquitto_sub -h localhost -t test/topic
    Dans un 2e terminal, tu rentres dans le terminal du conteneur avant de publier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pi@raspberrypi:~ $ docker exec -it mosquitto /bin/sh
    / # mosquitto_pub -h localhost -t test/topic -m "Hello world!"
    Le Hello World! devrait apparaître dans le 1er terminal. Commande exit pour sortir du conteneur.

    Mais je vois que tu as aussi ton coordinateur zigbbe2mqtt qui n'est pas reconnu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zigbee2mqtt | [2025-01-17 11:48:40] error: z2m: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
    Quelle est la référence de ton dongle USB (lien internet ?)

    La procédure est expliquée dans la doc pour que le dongle soit reconnu : https://sensorsiot.github.io/IOTstac...dentifyAdapter


    J'ai suivi le tutos : "Une passerelle Zigbee avec un dongle USB Zigbee2MQTT"
    La partie Zigbee est un billet assez court pour rendre compte, mais il est vrai que je n'en ai pas fait un tutoriel détaillé pas-à-pas... Il y a donc cette partie reconnaissance du dongle que je n'ai pas montrée, mais la procédure n'est pas très compliquée (normalement)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 119
    Points : 65
    Points
    65
    Par défaut Connexion zigbee2MQTT
    Merci

    C'est la premiere fois que jutilise un docker et je découvre
    Effectivement avec ces commandes le broker fonctionne

    Le problème semble donc être sur zigbee2MQTT avec le dongle USB
    C'est le modele du tutos : Sonoff SNZB-02P
    J'ai bien suivi le lien pour la configuration, je vois qu'il est bien monté sur ttyUSB0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ls -l /dev/serial/by-id
    lrwxrwxrwx 1 root root 13 Jan 16 18:31 usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_7cf9e8748439ef118dd25df454516304-if00-port0 -> ../../ttyUSB0
    J'ai ouvert le fichier de configuration crée par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ~/IOTstack/volumes/zigbee2mqtt/data $ sudo nano configuration.yaml
    version: 4
    homeassistant:
    enabled: false
    frontend:
    enabled: true
    mqtt:
    base_topic: zigbee2mqtt
    server: mqtt://mosquitto:1883
    advanced:
    network_key:
    - 31
    - 107
    - 101
    - 41
    - 144
    - 252
    - 122
    - 32
    - 104
    - 201
    - 150
    - 163
    - 101
    - 252
    - 173
    - 87
    pan_id: 22259
    ext_pan_id:
    - 139
    - 209
    - 199
    - 84
    - 68
    - 152
    - 243
    - 166
    log_symlink_current: true
    serial:
    port: /dev/ttyACM0
    adapter: zstack
    Dans la rubrique serial j'ai essayé de changer le port par ttyUSB0 mais sans succès
    Dans la rubrique frontend je ne vois pas de port de déclarée, est-ce une piste

    Cordialement

  13. #13
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_7cf9e8748439ef118dd25df454516304-if00-port0
    Je pense savoir d'où vient le problème...

    Nom : zbdongle-p-e.png
Affichages : 24
Taille : 240,9 Ko
    https://sonoff.tech/product/gateway-...dongle-plus-p/


    Tu as un dongle-E (Dongle_Plus_V2), alors que j'ai un dongle-P. Les deux se ressemblent physiquement (le boitier est plus long avec le P) et il n'y a rien de marqué sur l'emballage...

    Les deux ont des Soc et des interfaces série différentes (Serial Interface Protocol).

    C'est pour le dongle-P, il faut trouver comment changer d'interface pour le dongle-E...

  14. #14
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 953
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    47
    Par défaut
    Je crois qu'il faut remplacer adapter : zstack par adapter : ember et relancer la pile.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 119
    Points : 65
    Points
    65
    Par défaut Connexion zigbee2MQTT
    Bonjour

    Merci pour la solution
    Le menu zigbee2mqtt est maintenant accessible et l'appairage effectué

    Remarque :
    La modification du fichier de configuration.yaml de zigbee2mqtt ne permet pas de modifier les variables. Celles-ci sont systématiquement remplacées lors du relancement avec docker-compose
    Pour que celles-ci soient prisent en compte il faut les modifer dans le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo nano docker-compose.yml
    Ne pas recharger zigbee2mqtt par menu.sh option Build Stack car les parametres seront de nouveau ceux du Dongle-P

    Maintenant je vais m'attaquer à node-red

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/02/2019, 00h41
  2. Réponses: 2
    Dernier message: 02/03/2015, 10h38
  3. Réponses: 22
    Dernier message: 04/09/2014, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo