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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Des capteurs connectés pour la maison avec Arduino et Raspberry Pi
Un tutoriel de f-leb

Le , par f-leb

9PARTAGES

22  0 


Je vous propose un nouveau tutoriel :

Des capteurs connectés pour la maison avec Arduino et Raspberry Pi
Configuration d’un serveur domotique avec MQTT, Node-RED, InfluxDB et Grafana



Architecture du système en réseau local

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
Vous avez lu gratuitement 95 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 12/07/2024 à 14:27
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
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
4  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 15/07/2024 à 9:15
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
3  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 16/07/2024 à 12:58
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
2  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 04/12/2024 à 19:13
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 :

2  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 16/01/2025 à 19:39
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
mosquitto_sub -h localhost -t test/topic
Dans le 2è terminal, tu publies sur le topic :
Code : Sélectionner tout
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).
1  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 17/01/2025 à 12:52
Code : Sélectionner tout
-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
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
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
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)
1  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 17/01/2025 à 20:21
Code : Sélectionner tout
usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_7cf9e8748439ef118dd25df454516304-if00-port0
Je pense savoir d'où vient le problème...


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

Code : Sélectionner tout
adapter: zstack
C'est pour le dongle-P, il faut trouver comment changer d'interface pour le dongle-E...
1  0 
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 17/01/2025 à 20:34
Je crois qu'il faut remplacer adapter : zstack par adapter : ember et relancer la pile.
1  0 
Avatar de FlyByck
Membre du Club https://www.developpez.com
Le 18/01/2025 à 14:18
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
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
1  0 
Avatar de Jules34
Membre émérite https://www.developpez.com
Le 16/07/2024 à 11:49
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
0  0