Dans l'article RaspberryPi – Installez le serveur MQTT sur le RaspberryPi J'ai écrit un peu sur MQTT et expliqué comment installer votre propre serveur MQTT sur le RaspberryPi.
Pour que vous puissiez également utiliser un serveur MQTT de FHEM, vous devez encore installer quelques modules FHEM. J'ai décrit comment cela fonctionne et ce à quoi vous devez faire attention dans l'article suivant.
Consignes de sécurité
Je sais que les notes suivantes sont toujours un peu ennuyeuses et semblent inutiles. Malheureusement, de nombreuses personnes qui savaient "mieux" ont perdu des yeux, des doigts ou d'autres choses à cause d'une négligence ou se sont blessées. La perte de données est presque négligeable en comparaison, mais même celles-ci peuvent être vraiment ennuyeuses. Par conséquent, veuillez prendre cinq minutes pour lire les consignes de sécurité. Parce que même le projet le plus cool ne vaut pas une blessure ou d'autres problèmes.
https://www.nerdiy.de/sicherheitshinweise/
Liens d'affiliation/publicitaires
Les liens vers des boutiques en ligne répertoriés ici sont des liens dits d'affiliation. Si vous cliquez sur un tel lien d'affiliation et effectuez un achat via ce lien, Nerdiy.de recevra une commission de la boutique en ligne ou du fournisseur concerné. Le prix ne change pas pour vous. Si vous effectuez vos achats via ces liens, vous aidez Nerdiy.de à pouvoir proposer d'autres projets utiles à l'avenir. 🙂
Conditions préalables
Avant de commencer cet article, vous devez avoir préparé le RaspberryPi pour qu'il soit accessible via le réseau et contrôlé via SSH.
Les trois articles suivants décrivent ce qu'il faut faire pour préparer le RaspberryPi :
RaspberryPi - configuration pour les nerdiys !
RaspberryPi – La première configuration !
RaspberryPi - Contrôlez le RaspberryPi via SSH
Votre propre maison intelligente - installation et entrée dans FHEM
Mosquitto sur le Raspberry - Installer le serveur MQTT sur le RaspberryPi
Outils nécessaires :
-Non-
Les matériaux nécessaires:
Dans la liste suivante, vous trouverez toutes les pièces dont vous avez besoin pour mettre en œuvre cet article.
Connectez-vous au RaspberryPi via SSH
Pour commencer, vous devez d'abord vous connecter au Rasp Pi avec Putty via SSH. Comment faire cela est dans l'article RaspberryPi - Contrôlez le RaspberryPi via SSH décrites.
Mettre à jour la gestion des packages
La gestion des packages sous Linux est un "lieu central" à travers lequel divers packages logiciels peuvent être installés. Pour que cela fonctionne de manière fiable, les listes et les sources de la gestion des packages doivent être mises à jour avant chaque installation de nouveaux packages.
sudo apt-get mise à jour && sudo apt-get mise à niveau
Installer les packages Perl MQTT
Pour que FHEM puisse communiquer avec le serveur MQTT, deux packages Perl doivent être installés.
sudo apt-get install libmodule-pluggable-perl && sudo cpan install Net ::MQTT:Simple && sudo cpan install Net ::MQTT:Constantes
L'installation des deux packages m'a pris environ cinq minutes. Donc assez de temps pour prendre une autre tasse de café. 🙂
Créer des clients MQTT
Afin de pouvoir établir une connexion avec un appareil MQTT à l'étape suivante, un client MQTT doit d'abord être créé. Cela enregistre les informations nécessaires pour se connecter ultérieurement au serveur MQTT.
définir mqttClient MQTT 192.168.0.1:1883
La commande pour créer un client MQTT correspond à la suivante "define name-of-mqtt-client MQTT host-or-ip-of-mqtt-server:port-of-server". Donc si votre serveur MQTT a l'adresse IP "192.168.0.1" et le port 1883 (qui correspond au port standard pour MQTT), la commande pour créer le client MQTT est "define mqttClient MQTT 192.168.0.1:1883". Bien entendu, tout autre nom peut être utilisé pour "mqttClient".
arrêt redémarrage
Une fois le serveur redémarré, vous êtes prêt à créer de nouveaux ponts et appareils MQTT.
Configuration du pont MQTT en utilisant un thermostat de chauffage MAX! comme exemple
Dans cet exemple, nous créons un pont MQTT. Comme son nom l'indique, le pont MQTT connecte quelque chose. Dans ce cas, le thermostat de chauffage MAX! avec le monde MQTT. En principe, ce lien fonctionne selon le même schéma avec tous les capteurs ou actionneurs déjà installés. Dans le cas du MAX! Le thermostat de chauffage fonctionne avec la commande suivante.
définirHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f
Cela crée le module "HeizungArbeitszimmerMqtt" de type "MQTT_BRIDGE" et le relie au module "MAX_15504f" existant.
Il y a l'attribut "publishReading_XYZ" à cet effet. Cela amène le pont MQTT à transférer automatiquement toutes les mises à jour sur la lecture "XYZ" vers le sujet spécifié.
attr HeizArbeitszimmerMqtt publishReading_temperature heizung/Arbeitszimmer/temperature
Assurez-vous que "publishReading" et "temperature" (la lecture du thermostat du radiateur (ou de tout autre capteur/actionneur)) doivent être reliés par un trait de soulignement. Cela se traduit par "publishReading_temperature".
Pour la lecture "Batterie", le tout ressemblerait à ceci.
attr HeizArbeitszimmerMqtt publishReading_battery heizung/Arbeitszimmer/batterie
attr HeizArbeitszimmerMqtt subscribeSet_desiredTemperature heizung/Arbeitszimmer/desiredTemperature
Cela entraîne l'abonnement au sujet "chauffage/salle de travail/température souhaitée" et chaque valeur entrante est automatiquement saisie dans la lecture "température souhaitée". De cette façon, vous pouvez contrôler la température souhaitée du thermostat de chauffage via le message MQTT.
Test du pont MQTT défini
Une façon de tester le pont MQTT fraîchement créé est décrite ici.
Pour ce faire, j'ai créé un mini visualiseur MQTT dans NodeRed qui vous montre les valeurs pour les sujets définis "chauffage/étude/température" et "chauffage/étude/batterie" être envoyé. Vous avez également la possibilité de joindre au sujet « chauffage/étude/température souhaitée » pour envoyer la valeur 25. Par conséquent, si tout fonctionne correctement, le thermostat du radiateur associé est réglé sur 25°C.
… trouve "température souhaitée". C'est la lecture que nous utilisons dans la configuration du pont MQTT avec le sujet MQTT « chauffage/étude/température souhaitée » ont lié. La valeur actuelle de la lecture et l'heure de la dernière mise à jour sont également affichées ici.
Si vous cliquez maintenant sur le nœud d'injection dans le visualiseur MQTT auto-construit, vous envoyez la valeur 25 au sujet « chauffage/étude/température souhaitée ». Cela devrait maintenant également mettre à jour la lecture de votre thermostat de chauffage à la valeur 25. De plus, l'heure de la dernière mise à jour est réglée sur l'heure actuelle.
Pour tester le sens inverse - c'est-à-dire la publication d'une lecture modifiée sur un sujet MQTT - il suffit de défiler vers le haut de la vue détaillée du thermostat de chauffage MAX!. Une fois là-bas, vous modifiez la température souhaitée de votre thermostat de chauffage comme indiqué.
Création d'un appareil MQTT à l'aide d'un capteur de température comme exemple
Une autre possibilité du module MQTT est la création d'appareils MQTT. Cela inclut tous les capteurs ou appareils qui envoient leurs valeurs mesurées directement via MQTT. Afin d'enregistrer ces valeurs et de les résumer dans un capteur virtuel, vous devez créer un appareil MQTT.
Dans cet exemple, nous avons un capteur de température dans notre réseau qui envoie la valeur de température mesurée à intervalles réguliers via le sujet MQTT "Données environnementales/Cave/Temp". Afin d'enregistrer cela, un appareil MQTT est d'abord créé avec la commande suivante.
définir kellerSensor MQTT_DEVICE
Avant que ce MQTT_Device puisse maintenant afficher des valeurs, il doit bien sûr d'abord être lié au sujet MQTT souhaité. Dans cet exemple, nous souhaitons afficher toutes les valeurs entrantes sur le sujet MQTT "Umweltdaten/keller/Temp" dans l'appareil MQTT créé.
Pour ce faire, vous devez définir l'attribut suivant :
attr kellerSensor subscribeReading_Temp Données ambiantes/keller/Temp
Cela entraîne la création de la lecture "Temp" dans le MQTT_Device "kellerSensor" créé et liée à la rubrique abonnée "Umweltdaten/keller/Temp".
Afin d'embellir un peu la vue, vous pouvez utiliser l'attribut suivant pour spécifier qu'un "°C" doit être ajouté à la valeur de la lecture Temp.
attr kellerSensor stateFormat Temp °C
Plus d'informations
https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung
Amusez-vous avec le projet
J'espère que tout a fonctionné comme décrit. Si ce n'est pas le cas ou si vous avez des questions ou des suggestions, faites-le moi savoir dans les commentaires. Je les ajouterai à l'article si nécessaire.
Les idées de nouveaux projets sont toujours les bienvenues. 🙂
PS Beaucoup de ces projets - en particulier les projets matériels - coûtent beaucoup de temps et d'argent. Bien sûr, je le fais parce que j'aime ça, mais si vous pensez que c'est cool que je partage l'information avec vous, je serais heureux d'un petit don au fonds du café. 🙂
Salut Fab
Merci beaucoup pour toutes les informations que vous avez mises à disposition ici. J'ai passé de nombreuses années avec l'assistant à domicile, et pas du tout avec le FHEM que j'utilise maintenant pour essayer de mieux contrôler mes appareils de chauffage FHT. Si je peux faire communiquer FHEM avec un serveur MQTT existant, ce serait mon rêve.
J'ai FHEM en cours d'exécution sur Raspian OS dans un conteneur docker, l'installation s'est déroulée selon vos conseils sans erreur - mais lorsque j'essaie d'entrer les commandes via le frontal Web FHEM, je reçois Impossible de charger le module MQTT_BRIDGE ou Impossible de charger le module MQTT_CLIENT ce qui me rend pensez-vous que j'ai foiré en n'installant pas perl/mqtt depuis le conteneur docker ou que je n'ai rien fait dans FHEM pour invoquer la nouvelle capacité MQTT?
Bien à vous
pseudo