Cómo: FHEM: crear dispositivos MQTT

En el artículo RaspberryPi – Instale el servidor MQTT en RaspberryPi Escribí un poco sobre MQTT y expliqué cómo instalar su propio servidor MQTT en RaspberryPi.

Para que también pueda usar un servidor MQTT de FHEM, todavía tiene que instalar algunos módulos FHEM. He descrito cómo funciona esto y a qué debe prestar atención en el siguiente artículo.


Instrucciones de seguridad

Sé que las siguientes notas siempre son un poco molestas y parecen innecesarias. Desafortunadamente, muchas personas que sabían "mejor" han perdido ojos, dedos u otras cosas debido a un descuido o se lesionaron. La pérdida de datos es casi insignificante en comparación, pero incluso estos pueden ser realmente molestos. Por lo tanto, tómese cinco minutos para leer las instrucciones de seguridad. Porque incluso el proyecto más genial no vale la pena lesionarse u otros problemas.
https://www.nerdiy.de/sicherheitshinweise/

Enlaces afiliados / enlaces publicitarios

Los enlaces a las tiendas en línea enumerados aquí son los llamados enlaces de afiliados. Si hace clic en dicho enlace de afiliado y realiza una compra a través de este enlace, Nerdiy.de recibirá una comisión de la tienda en línea o el proveedor correspondiente. El precio no cambia para usted. Si realiza sus compras a través de estos enlaces, ayuda a Nerdiy.de a poder ofrecer otros proyectos útiles en el futuro. 🙂 


Requisitos

Antes de comenzar con este artículo, debe haber preparado la RaspberryPi para que pueda accederse a ella a través de la red y controlarse a través de SSH.

Los siguientes tres artículos describen lo que se debe hacer para preparar la RaspberryPi:
RaspberryPi: ¡configuración para nerdiys!
RaspberryPi – ¡La primera configuración!
RaspberryPi: controle el RaspberryPi a través de SSH
Tu propia casa inteligente – instalación e ingreso a FHEM
Mosquitto en Raspberry: instale el servidor MQTT en RaspberryPi

Herramientas necesarias:
-No-

Materiales necesitados:

En la siguiente lista encontrará todas las piezas que necesita para implementar este artículo.


Inicie sesión en RaspberryPi a través de SSH

Para comenzar, primero debe iniciar sesión en Rasp Pi con Putty a través de SSH. Cómo hacer esto está en el artículo. RaspberryPi - Controle el RaspberryPi a través de SSH descrito.

Después de ingresar su nombre de usuario y contraseña, puede ingresar los primeros comandos.

Gestión de paquetes de actualización

La gestión de paquetes en Linux es un "lugar central" a través del cual se pueden instalar varios paquetes de software. Para que esto funcione de manera confiable, las listas y fuentes de administración de paquetes deben actualizarse antes de cada instalación de nuevos paquetes.

Para iniciar la actualización de la gestión de paquetes, debe ingresar el siguiente comando.
sudo apt-obtener actualización && sudo apt-obtener actualización
Dependiendo de cuánto tiempo hace que fue la última actualización de la administración de paquetes, este proceso ahora puede demorar un tiempo. Las listas que hacen referencia a las fuentes de paquetes individuales se actualizan primero.
Después de eso, los paquetes en sí se actualizan. Dado que la memoria adicional está ocupada, se le pedirá nuevamente su consentimiento. Tienes que confirmar esto con una "J" y "Enter".
Una vez que se complete la actualización, verá un pequeño resumen de la duración y el alcance de la actualización.

Instalar paquetes Perl MQTT

Para que FHEM pueda comunicarse con el servidor MQTT, se deben instalar dos paquetes de Perl.

Debe iniciar sesión en Rasp Pi con Putty e ingresar el siguiente comando.
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.
La instalación de los dos paquetes me llevó unos cinco minutos. Así que tiempo suficiente para tomar otra taza de café. 🙂


Crear clientes MQTT

Para poder establecer una conexión con un dispositivo MQTT en el siguiente paso, primero se debe crear un cliente MQTT. Esto guarda la información necesaria para conectarse al servidor MQTT más tarde.

Para hacer esto, ingrese el siguiente comando en el símbolo del sistema de su instancia de FHEM.
definir mqttCliente 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.
apagar reiniciar

Una vez que el servidor se haya reiniciado, estará listo para crear nuevos puentes y dispositivos MQTT.

Vista del cliente MQTT recién creado. Aquí puede ver si se pudo establecer una conexión con el servidor MQTT. También se le mostrará más información sobre la conexión al servidor 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.

Configuración del puente MQTT con un termostato de calefacción MAX!

En este ejemplo, creamos un puente MQTT. Como sugiere el nombre, el puente MQTT conecta algo. En este caso el termostato de calefacción MAX! con el mundo MQTT. En principio, este enlace funciona según el mismo esquema con todos los sensores o actuadores ya instalados. En el caso del MAX! El termostato de calefacción funciona con el siguiente mando.

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.
defineHeatingWorkroomMqtt 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.
En la vista detallada ahora puede ver toda la información sobre el puente MQTT creado. Sin embargo, antes de que el puente MQTT pueda conectar los datos del termostato de calefacción MAX! al mundo MQTT, primero debe saber qué lectura del termostato de calefacción debe vincularse a qué tema 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 publicarReading_temperature heizung/Arbeitszimmer/temperatura

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 publicarLectura_batería heizung/Arbeitszimmer/batería
Sin embargo, esta vinculación de temas de lectura y MQTT también funciona al revés. Para que los valores enviados a un tema MQTT se ingresen automáticamente en una lectura del termostato de calefacción, debe configurar el siguiente atributo.
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.

Probando el puente MQTT establecido

Aquí se describe una forma de probar el puente MQTT recién creado.

Para ello creé un mini visor MQTT en NodeRed que te muestra los valores para los temas establecidos “heizung/Arbeitszimmer/temperature” y “heizung/Arbeitszimmer/battery” ser enviado. También tienes la opción de adjuntar al tema “heizung/Arbeitszimmer/desiredTemperature” para enviar el valor 25. En consecuencia, si todo funciona correctamente, el termostato del radiador vinculado se establece en 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.
En la vista detallada, desplácese hacia abajo hasta que vea la lectura...

… “desiredTemperature” findet. Dies ist das Reading, dass wir in der Konfiguration der MQTT-Bridge mit dem MQTT-Topic “heizung/Arbeitszimmer/desiredTemperature” han vinculado. El valor actual de la lectura y la hora de la última actualización también se muestran aquí.

Si ahora hace clic en el nodo de inyección en el visor MQTT autoconstruido, está enviando el valor 25 al tema “heizung/Arbeitszimmer/desiredTemperature”. Esto ahora también debería actualizar la lectura de su termostato de calefacción al valor 25. Además, la hora de la última actualización se establece en la hora actual.

Para realizar la prueba en sentido contrario, es decir, la publicación de una lectura modificada en un tema MQTT, basta con desplazarse hasta la parte superior de la vista detallada del termostato de calefacción MAX!. Una vez allí, cambie la temperatura deseada de su termostato de calefacción como se muestra.

Dies löst automatisch eine aktualisierung des Readings “battery” aus. Durch die Verknüpfung der MQTT-Bridge mit dem Topic “heizung/Arbeitszimmer/battery” su valor luego se publica según lo deseado a través del tema y luego es visible a través del nodo de depuración configurado en su entorno NodeRed.

Crear un dispositivo MQTT usando un sensor de temperatura como ejemplo

Otra posibilidad del módulo MQTT es la creación de dispositivos MQTT. Esto incluye todos los sensores o dispositivos que envían sus valores medidos directamente a través de MQTT. Para registrar estos valores y resumirlos en un sensor virtual, debe crear un dispositivo 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.

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

Para hacer esto, debe establecer el siguiente atributo:

attr kellerSensor subscribeReading_Temp Datos ambientales/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 kellerEstado del sensorFormat 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.

Más información

https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung


Diviértete con el proyecto.

Espero que todo te haya funcionado como se describe. Si no es así, o si tiene alguna pregunta o sugerencia, hágamelo saber en los comentarios. Si es necesario, lo añadiré al artículo.
Las ideas para nuevos proyectos siempre son bienvenidas. 🙂

PS Muchos de estos proyectos, especialmente los proyectos de hardware, cuestan mucho tiempo y dinero. Por supuesto que hago esto porque lo disfruto, pero si crees que es genial que comparta la información contigo, me encantaría hacer una pequeña donación al fondo del café. 🙂

Cómprame un café en ko-fi.com       

Un comentario

  1. hola fabuloso
    Muchas gracias por toda la información que ha puesto a su disposición aquí. Pasé muchos años con Home Assistant y nada de tiempo con FHEM, que ahora estoy usando para tratar de tener un mejor control de mis dispositivos de calefacción FHT. Si puedo hacer que FHEM se comunique con un servidor MQTT existente, ese sería mi sueño.

    Tengo FHEM ejecutándose en el sistema operativo Raspian dentro de un contenedor docker, la instalación se realizó según su consejo sin errores, pero cuando intento ingresar los comandos a través de la interfaz web de FHEM, aparece No se puede cargar el módulo MQTT_BRIDGE o No se puede cargar el módulo MQTT_CLIENT, lo que me hace ¿Piensa que me equivoqué al no instalar perl/mqtt desde el contenedor docker o que no hice nada dentro de FHEM para invocar la nueva capacidad MQTT?

    Atentamente

    Mella

Kommentar hinterlassen

Tu dirección de correo electrónico no será publicada. Erforderliche Felder sind mit * markiert


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.