HowTo : FHEM - Créer des appareils MQTT

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.

Après avoir entré votre nom d'utilisateur et votre mot de passe, vous pouvez entrer les premières commandes.

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.

Pour démarrer la mise à jour de la gestion des packages, vous devez entrer la commande suivante.
sudo apt-get mise à jour && sudo apt-get mise à niveau
Selon la date de votre dernière mise à jour de la gestion des packages, ce processus peut maintenant prendre un certain temps. Les listes qui font référence aux sources de packages individuelles sont mises à jour en premier.
Après cela, les packages eux-mêmes sont mis à jour. Étant donné que de la mémoire supplémentaire est occupée, votre consentement vous sera à nouveau demandé. Vous devez le confirmer avec un "J" et "Entrée".
Une fois la mise à jour terminée, vous verrez un petit résumé de la durée et de la portée de la mise à jour.

Installer les packages Perl MQTT

Pour que FHEM puisse communiquer avec le serveur MQTT, deux packages Perl doivent être installés.

Vous devez vous connecter au Rasp Pi avec Putty et entrer la commande suivante.
sudo apt-get install libmodule-pluggable-perl && sudo cpan install Net ::MQTT:Simple && sudo cpan install Net ::MQTT:Constantes
Die Warnung, dass dadurch zusätzlicher Speicherplatz belegt wird quittiert Ihr mit einem “J” und “Enter”.

Die Nachfrage “Would you like to configure as much as possible automatically? [yes]” bestaetigt ihr mit “yes” und Enter.
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.

Pour ce faire, entrez la commande suivante dans l'invite de commande de votre instance FHEM.
définir mqttClient MQTT 192.168.0.1:1883

Der Befehl zum erstellen eines MQTT-Clienten entspricht dabei der folgenden “define Name-des-mqtt-clienten MQTT host-oder-ip-des-mqtt-servers:port-des-servers”. Hat Euer MQTT-Server also die IP-Adresse “192.168.0.1”, den Port 1883 was dem Standardport für MQTT entspricht) so lautet der Befehl zum erstellen des MQTT-Clienten “define mqttClient MQTT 192.168.0.1:1883”. Dabei kann für “mqttClient” natürlich auch jeder andere beliebige Name verwendet werden.

Klickt nun oben links auf “Save config” und startet Euren FHEM-Server mithilfe des folgenden Befehls neu.
arrêt redémarrage

Une fois le serveur redémarré, vous êtes prêt à créer de nouveaux ponts et appareils MQTT.

Vue du client MQTT nouvellement créé. Ici, vous pouvez voir si une connexion au serveur MQTT a pu être établie. Vous verrez également de plus amples informations sur la connexion au serveur MQTT.
Damit die gemachten Änderungen übernommen und dauerhaft gespeichert bleiben müsst Ihr unbedingt daran denken auf “Save config” zu klicken. Dadurch werden die geänderten Einstellungen dauerhaft in der Konfigurationsdatei gespeichert.

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.

Die Struktur des Befehls ist dabei wie folgt aufgebaut “define Name-der-mqtt-bridge MQTT_BRIDGE Name-des-sensors-bzw-aktors”. Im Fall des MAX! Heizungsthermostats mit dem Namen “MAX_15504f” lautet der Befehl also folgendermaßen.
définirHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f

Dadurch wird das Modul “HeizungArbeitszimmerMqtt” vom Typ “MQTT_BRIDGE” angelegt und mit dem bereits vorhandenen Modul “MAX_15504f” verknüpft.

Die erstellte MQTT_BRIDGE befindet sich nun im Raum “Unsorted”. Wechselt in diesen Raum und öffnet die Detailansicht der erstellten MQTT-Bridge.
Dans la vue détaillée, vous pouvez maintenant voir toutes les informations sur le pont MQTT créé. Cependant, avant que le pont MQTT puisse connecter les données du thermostat de chauffage MAX! au monde MQTT, il doit d'abord savoir quelle lecture du thermostat de chauffage doit être liée à quel sujet MQTT.

Dazu gibt es das Attribut “publishReading_XYZ”. Dieses bewirkt, dass die MQTT-Bridge alle Aktualisierungen auf dem Reading “XYZ” automatisch an das angegebene Topic weitergeleitet wird.

Gebt also folgenden Befehl in die Befehlseingabe Eurer FHEM-Instanz ein um automatisch jede aktualisierung des Readings “temperature” an das Topic “heizung/Arbeitszimmer/temperature” weiterleiten zu lassen.
attr HeizArbeitszimmerMqtt publishReading_temperature heizung/Arbeitszimmer/temperature

Achtet hierbei darauf, dass “publishReading” und “temperature”(das reading des Heizkörperthermostats(oder jedes anderen Sensors/Aktors)) mit einem Unterstrich verbunden sein müssen. So ergibt sich “publishReading_temperature”.
Für das Reading “Battery” würde das ganze dann folgendermaßen aussehen.

attr HeizArbeitszimmerMqtt publishReading_battery heizung/Arbeitszimmer/batterie
Cependant, ce lien entre la lecture et les sujets MQTT fonctionne également dans l'autre sens. Pour que les valeurs envoyées à un sujet MQTT soient automatiquement saisies dans une lecture du thermostat de chauffage, vous devez définir l'attribut suivant.
attr HeizArbeitszimmerMqtt subscribeSet_desiredTemperature heizung/Arbeitszimmer/desiredTemperature

Dies bewirkt, dass das Topic “heizung/Arbeitszimmer/desiredTemperature” aboniert wird und jeder darauf eingehender Wert automatisch in das Reading “desiredTemperature” eingetragen wird. Auf diesem Wege könnt Ihr die gewünschte Temperatur des Heizungsthermostats per MQTT-Nachricht steuern.

Die Detailansicht Eurer MQTT-Bridge sollte nun so aussehen. Ihr seht unter Attributes alle verknüpften Reading/MQTT-Topic Kombinationen. Denkt wieder daran diese Änderung der Konfiguration durch einen Klick auf “Save config” abzuspeichern.

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 “heizung/Arbeitszimmer/temperature” et “heizung/Arbeitszimmer/battery” être envoyé. Vous avez également la possibilité de joindre au sujet “heizung/Arbeitszimmer/desiredTemperature” pour envoyer la valeur 25. Par conséquent, si tout fonctionne correctement, le thermostat du radiateur associé est réglé sur 25°C.

Zuerst prüfen wir nun ob der Empfang und die Übernahme von per MQTT empfangenen Werten funktioniert. Wechselt dazu in den Raum “MAX” und dann in die Detailansicht des jeweiligen Heizungsthermostats.
Dans la vue détaillée, faites défiler vers le bas jusqu'à ce que vous voyiez la lecture...

… “desiredTemperature” findet. Dies ist das Reading, dass wir in der Konfiguration der MQTT-Bridge mit dem MQTT-Topic “heizung/Arbeitszimmer/desiredTemperature” 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 “heizung/Arbeitszimmer/desiredTemperature”. 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é.

Dies löst automatisch eine aktualisierung des Readings “battery” aus. Durch die Verknüpfung der MQTT-Bridge mit dem Topic “heizung/Arbeitszimmer/battery” sa valeur est ensuite publiée à volonté via le sujet et est ensuite visible via le nœud de débogage configuré dans votre environnement NodeRed.

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.

In diesem Beispiel haben wir in unserem Netzwerk einen Temperatursensor, der in regelmäßigen Abständen den gemessenen Temperaturwert per MQTT-Topic “Umgebungsdaten/keller/Temp” versendet. Um diesen nun zu erfassen wird zuerst mit folgendem Befehl ein MQTT-Device angelegt.

définir kellerSensor MQTT_DEVICE
Der Befehl setzt sich dabei wieder wie folgt zusammen “define Name-des-Mqtt-Devices MQTT_DEVICE”. Da wir in diesem Beispiel einen Temperatursensor einbinden der sich im Keller befindet nennen wir das MQTT_DEVICE “kellerSensor. Der komplette Befehl zum erstellen des MQTT_Devices lautet also “Umgebungsdaten/keller/Temp”.
Nach dem Ihr das MQTT_Device erstellt habt findet Ihr diesen im Raum “Unsorted”. Darüber könnt Ihr auch die abgebildete Detailansicht öffnen.

Bevor dieses MQTT_Device nun Werte anzeigen kann muss es natürlich zuerst mit dem gewünschten MQTT-Topic verknüpft werden. In diesem Beispiel wollen wir alle auf dem MQTT-Topic “Umgebungsdaten/keller/Temp” eingehenden Werte im erstellten MQTT-Device anzeigen lassen.

Pour ce faire, vous devez définir l'attribut suivant :

attr kellerSensor subscribeReading_Temp Données ambiantes/keller/Temp

Dies bewirkt, dass im erstellten MQTT_Device “kellerSensor” das Reading “Temp” erstellt und mit dem abonierten Topic “Umgebungsdaten/keller/Temp” verknüpft wird.

In der Ansicht der Readings taucht nun also auch das Reading “Temp” mit dem aktuellen bzw. zuletzt empfangenen Wert und dem Datum der letzten Aktualisierung auf.

Um die Ansicht nun noch etwas aufzuhübschen könnt Ihr mit folgendem Attribut angeben, dass dem Wert des Readings Temp ein “°C” angehängt werden soll.

attr kellerSensor stateFormat Temp °C
Gebt dazu den Befehl “attr kellerSensor stateFormat Temp °C” in die Befehlszeile Eurer FHEM-Instanz ein.
Dadurch wird die aktuelle Temperatur des “kellerSensors” nun auch mit einem “°C” versehen und es ist direkt ersichtlich, dass es sich dabei um einen Temperaturwert handelt.

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é. 🙂

Achetez-moi un café sur ko-fi.com       

Un commentaire

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

Kommentar hinterlassen

Votre adresse e-mail ne sera pas publiée. Erforderliche Felder sind mit * markiert


La période de vérification reCAPTCHA a expiré. Veuillez recharger la page.