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
Confirma la advertencia de que esto ocupará espacio de almacenamiento adicional con una "J" y "Enter".

La consulta "¿Le gustaría configurar tanto como sea posible de forma automática?" [sí]” confirmas con “sí” y entras.
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

El comando para crear un cliente MQTT corresponde al siguiente "define name-of-mqtt-client MQTT host-or-ip-of-mqtt-server:port-of-server". Entonces, si su servidor MQTT tiene la dirección IP "192.168.0.1" y el puerto 1883 (que corresponde al puerto estándar para MQTT), el comando para crear el cliente MQTT es "define mqttClient MQTT 192.168.0.1:1883". Por supuesto, se puede usar cualquier otro nombre para "mqttClient".

Ahora haga clic en "Guardar configuración" en la parte superior izquierda y reinicie su servidor FHEM usando el siguiente comando.
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.
Para que los cambios realizados sean aceptados y guardados de forma permanente, debes recordar hacer clic en "Guardar configuración". Esto guarda permanentemente la configuración modificada en el archivo de configuración.

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.

La estructura del comando es la siguiente: "define name-of-the-mqtt-bridge MQTT_BRIDGE name-of-the-sensor-or-actuator". En el caso del MAX! Entonces, para un termostato de calentador llamado MAX_15504f, el comando es el siguiente.
defineHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f

Esto crea el módulo "HeizungArbeitszimmerMqtt" del tipo "MQTT_BRIDGE" y lo vincula al módulo "MAX_15504f" existente.

El MQTT_BRIDGE creado ahora está en la sala "Sin ordenar". Cambie a esta sala y abra la vista detallada del puente MQTT creado.
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.

Existe el atributo "publishReading_XYZ" para este propósito. Esto hace que el puente MQTT envíe automáticamente todas las actualizaciones en la lectura "XYZ" al tema especificado.

Ingrese el siguiente comando en el símbolo del sistema de su instancia de FHEM para reenviar automáticamente cada actualización de la lectura de "temperatura" al tema "calefacción/cuarto de trabajo/temperatura".
attr HeizArbeitszimmerMqtt publicarReading_temperature heizung/Arbeitszimmer/temperatura

Asegúrese de que "publishReading" y "temperature" (la lectura del termostato del radiador (o cualquier otro sensor/actuador)) deben estar conectados con un guión bajo. Esto da como resultado "publishReading_temperature".
Para la lectura "Batería", todo se vería así.

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

Esto hace que se suscriba el tema "calefacción/cuarto de trabajo/temperatura deseada" y cada valor entrante se ingresa automáticamente en la lectura de "temperatura deseada". De esta forma, puede controlar la temperatura deseada del termostato de calefacción a través del mensaje MQTT.

La vista detallada de su puente MQTT ahora debería verse así. Puede ver todas las combinaciones de temas de lectura/MQTT vinculados en Atributos. Recuerde guardar este cambio de configuración haciendo clic en "Guardar configuración".

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 "calefacción/estudio/temperatura" y "calefacción/estudio/batería" ser enviado. También tienes la opción de adjuntar al tema "calefacción/estudio/temperatura deseada" para enviar el valor 25. En consecuencia, si todo funciona correctamente, el termostato del radiador vinculado se establece en 25 °C.

Primero verificamos si funciona la recepción y transferencia de valores recibidos a través de MQTT. Para hacer esto, cambie a la habitación "MAX" y luego a la vista detallada del termostato de calefacción respectivo.
En la vista detallada, desplácese hacia abajo hasta que vea la lectura...

… encuentra “Temperatura deseada”. Esta es la lectura que usamos en la configuración del puente MQTT con el tema MQTT "calefacción/estudio/temperatura deseada" 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 "calefacción/estudio/temperatura deseada". 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.

Esto activa automáticamente una actualización de la lectura de la "batería". Vinculando el puente MQTT al tema "calefacción/estudio/batería" 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.

En este ejemplo, tenemos un sensor de temperatura en nuestra red que envía el valor de temperatura medido a intervalos regulares a través del tema MQTT "Datos ambientales/bodega/Temp". Para registrar esto, primero se crea un dispositivo MQTT con el siguiente comando.

definir kellerSensor MQTT_DEVICE
El comando nuevamente se compone de la siguiente manera: "define Name-des-Mqtt-Device MQTT_DEVICE". Como estamos integrando un sensor de temperatura en este ejemplo que está ubicado en el sótano, llamamos al MQTT_DEVICE "kellerSensor. Por lo tanto, el comando completo para crear el MQTT_Device es "Datos ambientales/bodega/Temp".
Una vez que haya creado el MQTT_Device, lo encontrará en la sala "Sin ordenar". También puede usar esto para abrir la vista detallada que se muestra.

Antes de que este MQTT_Device ahora pueda mostrar valores, por supuesto, primero debe estar vinculado al tema MQTT deseado. En este ejemplo, queremos mostrar todos los valores entrantes en el tema MQTT "Umweltdaten/keller/Temp" en el dispositivo MQTT creado.

Para hacer esto, debe establecer el siguiente atributo:

attr kellerSensor subscribeReading_Temp Datos ambientales/keller/Temp

Esto hace que la lectura "Temp" se cree en el MQTT_Device "kellerSensor" creado y se vincule al tema suscrito "Umweltdaten/keller/Temp".

La lectura “Temp” ahora también aparece en la vista de lecturas con el valor actual o último recibido y la fecha de la última actualización.

Para embellecer un poco la vista, puede usar el siguiente atributo para especificar que se debe agregar un "°C" al valor de la temperatura de lectura.

attr kellerEstado del sensorFormat Temp °C
Para hacer esto, ingrese el comando "attr kellerSensor stateFormat Temp °C" en la línea de comando de su instancia de FHEM.
Como resultado, la temperatura actual del "kellerSensor" ahora también se proporciona con un "°C" y es inmediatamente evidente que se trata de un valor de temperatura.

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.