Documentatión

Ámbitos de aplicación de MQTT

MQTT es un protocolo de Internet con un intermediario central de mensajes. Con este corredor de mensajes, los participantes pueden suscribirse a determinados "temas" y enviar mensajes a los temas. El Gestor de Carga cFos puede escuchar mensajes sobre temas específicos y, por tanto, ser controlado a través de MQTT. También puede comunicar el estado de los dispositivos que gestiona. La cFos Power Brain Wallbox también puede controlarse a través de MQTT y transmitir su estado. Esto es útil cuando se conecta a un sistema domótico, para control industrial (M2M) y para monitorización y grabación. Todos los temas empiezan por cfos_mqtt. Si quieres conectar múltiples dispositivos MQTT cFos a un broker MQTT, el tema puede empezar opcionalmente con cfos_mqtt_<serial number>/, ajustable bajo configuración. En la configuración también puedes establecer una URL para el broker MQTT por defecto. Las URL pueden empezar opcionalmente por mqtt:// y mqtts: //. Con mqtts: //, el cFos Charging Manager o la cFos Power Brain Wallbox establecen una conexión TLS. Se utilizan los puertos estándar 1883 para conexiones no cifradas y 8883 para conexiones TLS. Sin embargo, también puede especificar un puerto en la URL. El nombre de usuario y la contraseña se pueden especificar en la notación URL habitual, por ejemplo, mqtt://user:password@192.168.2.111. Si especifica un broker MQTT en la configuración de cFos Charging Manager, puede especificar un broker individual o simplemente escribir mqtt. En este caso, se utiliza el broker por defecto almacenado en la configuración.

El cFos Charging Manager soporta tanto MQTT 3.1.1 como MQTT 5. Si deja que la URL empiece por mqtt3:// o mqtt5:// (mqtts3:// y mqtts5:// para conexión encriptada), determina la versión del protocolo. Por defecto es MQTT 3.1.1. cFos Charging Manager intenta cambiar a MQTT 3.1.1 para MQTT 5 si se muestra un mensaje de error. Esto funciona con brokers Mosquitto antiguos, pero no necesariamente con otros brokers.

Nota: Dado que la configuración de MQTT requiere la contraseña de administrador, el Gestor de carga gestiona los datos en consecuencia. Por lo tanto, se envían deliberadamente datos a los que solo se puede acceder con una contraseña de administrador.

Nota sobre los brokers MQTT: Gracias a Stefan G. (#diebestenuserderwelt) hemos podido probar el broker MQTT integrado en ioBroker. Este broker MQTT 3.1.1 se comporta (a partir de Feb. 2023) de varias maneras no conformes con el estándar: los intentos de conexión se terminan silenciosamente sin un mensaje de error, la carga útil a veces falta en los paquetes PUBLISH, los paquetes PUBLISH aparentemente se envían dos veces (¿se puede desactivar esto mediante un ajuste de configuración?). Esto significa que este broker no es adecuado para controlar la API del Charging Manager, ya que las peticiones de la API pueden ejecutarse más de una vez. Aunque estamos interesados en que nuestra implementación de MQTT sea compatible con tantos brokers como sea posible, actualmente recomendamos usar Mosquitto para ioBroker.

Integración de contadores y cajas murales mediante el tipo de dispositivo "Entrada HTTP".

En lugar de suministrar estos dispositivos a través de HTTP (ver API HTTP -> medidores HTTP y wallboxes), estos dispositivos también pueden escuchar MQTT. Introduce mqtt o una URL de broker MQTT como dirección del dispositivo. Entonces el contador o wallbox correspondiente escucha el topic cfos_mqtt/set/<device ID>, por ejemplo para un contador con el ID de dispositivo M1 a cfos_mqtt/set/M1. El medidor de entrada HTTP espera entonces una cadena JSON como mensaje, tal y como se describe en la API HTTP en "Medidores HTTP y wallboxes". Por lo tanto, su fuente MQTT debe entregar los datos en este formato. Esto le permite integrar dispositivos que no son compatibles con el Gestor de Carga cFos, obteniendo los datos de otra fuente (por ejemplo, un sistema domótico) y luego introduciéndolos en el Gestor de Carga.
Nota: Si los datos de la fuente están en un formato diferente al que espera el contador HTTP, también puede crear un contador personalizado. Para MQTT, esto se describe a continuación.


Ejemplo: Ha creado un contador de entrada HTTP y tiene M3 como ID de dispositivo. Ha introducido la dirección del broker Mosquitto como dirección, por ejemplo mqtt://192.168.2.30. Si introduce el siguiente comando en la línea de comandos del ordenador en el que se está ejecutando Mosquitto:
mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
el contador debe contener los valores anteriores.

Transferir el estado de los dispositivos Charging Manager

En la configuración del Gestor de Carga, puede especificar una URL de broker MQTT (o mqtt para broker estándar), bajo la cual el Gestor de Carga publica el estado de todos los dispositivos bajo el tema cfos_mqtt/get/dev_info. Transmite esto en el formato conocido de HTTP get_dev_info. Esto te da todos los valores de los dispositivos, ya que también son visibles en la interfaz de usuario, por ejemplo, los valores de potencia de los contadores o el estado de las wallboxes. Si sólo desea suscribirse a dispositivos individuales, puede desactivar la casilla "Publicar información a través de MQTT" y en su lugar marcar la opción "Publicar información a través de MQTT" en la configuración de los dispositivos individuales en "Mostrar". Entonces se publicará una cadena JSON correspondiente sobre el dispositivo respectivo bajo el tema cfos_mqtt/get/<device-ID>. Además, puedes suscribirte a todos los valores globales bajo el tema cfos_mqtt/get/params, ya que se emiten en el formato conocido de HTTP get_dev_info bajo "params".

control de la API del gestor de carga cFos a través de MQTT

En la configuración de cFos Charging Manager, puede especificar una URL de broker MQTT (o mqtt para brokers estándar) en "Broker para acceso API vía MQTT". Si este valor no está vacío, cFos Charging Manager se suscribe a todos los temas que empiezan por cfos_mqtt/api/. A continuación, interpreta los mensajes de dichos temas como si el nombre del tema fuera una URL HTTP que comienza por /cnf? y los reenvía a la API HTTP. A continuación, el gestor de cobros publica la respuesta de la API HTTP como JSON en el tema cfos_mqtt/api_res. De esta manera, tienes casi toda la API HTTP bajo tu control a través de MQTT. Las excepciones son las llamadas a la API que entregan respuestas JSON largas. Ejemplo: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1 establece la variable del Gestor de Carga x a 1 con la función API set_cm_var. Un mensaje bajo cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1 introduce el RFID 5678 para la Wallbox con el ID de dispositivo E1 (ver también nuestras funciones RFID extendidas).
Los datos transmitidos a través de HTTP POST pueden colocarse en el mensaje bajo el tema.

Ejemplo: Modifique periódicamente la corriente total máxima disponible para el Gestor de carga:
Introduzca su broker en los ajustes generales del Charging Manager, en "Brokers para acceso API vía MQTT" (o simplemente mqtt si se va a utilizar el broker por defecto almacenado en "Configuración"). A continuación, mediante MQTT, publique en el tema
cfos_mqtt/api/cmd=set_params
un objeto JSON con el siguiente contenido:
{"max_total_cur_prc": p}
donde p es una indicación en porcentaje de qué parte del flujo total máximo preestablecido debe tomarse.
Nota: Algunas de las llamadas a la API HTTP hacen que el Gestor de carga guarde la configuración. Si las ejecuta con demasiada frecuencia, la memoria flash (en el cFos Power Brain o el cFos Wallbox Booster) o la tarjeta SD de la Raspberry se desgastarán. Por lo tanto, la llamada a la API "set_params" con el único parámetro "max_total_cur_prc" no guarda los parámetros.

Controlar wallboxes a través de MQTT

Si el Gestor de carga cFos no está en modo "Gestión de carga", sino en modo "Observar", puede utilizar MQTT para controlar usted mismo todas las Wallboxes. Esto se aplica en particular a las wallboxes cFos Power Brain que funcionan como esclavas en modo "Observar". Para ello, debe marcar la opción "Activar el control de las Wallboxes" en la Configuración del Gestor de Carga bajo MQTT. Entonces el Gestor de Carga cFos escucha el tema MQTT cfos_mqtt/ctl y espera mensajes con un objeto JSON. Este objeto tiene sub-objetos como propiedades con el ID del dispositivo como nombre. Los subobjetos tienen el siguiente aspecto {"cur": c, "ena": b, "wke": b}, donde c es la corriente de carga en mA, y b puede ser verdadero o falso respectivamente. "ena": false desactiva la carga en la wallbox, "wke": true intenta enviar un comando "wake up car" a la wallbox (actualmente sólo es posible con las wallboxes cFos Power Brain). También puede omitir "cur", "ena" y "wke" y así ejecutar sólo determinadas funciones de control.
Ejemplo: {"E1":


{cur: 8000, ena: true, wke: true}, "E2": {cur: 10000}}

Establece la corriente de carga de la Wallbox con el ID de dispositivo en 8A, activa la carga e intenta despertar el coche. Además, la corriente de carga de la Wallbox E2 se establece en 10A.

Envío de registro y registro de transacciones a través de MQTT

Puede especificar una URL de broker MQTT para la transmisión de entradas de registro en el registro del sistema en "Configuración". El Gestor de Carga cFos publica entonces todas las entradas de registro bajo el tema cfos_mqtt/log. Esto le permite supervisar los registros de Charging Manager de forma remota. También puede especificar una URL de agente MQTT para las entradas del registro de transacciones en "Configuración". A continuación, todas las transacciones de cobro se envían bajo el tema cfos_mqtt/ta_log. Esto permite la evaluación remota de los datos contables de las transacciones de cobro y la creación de copias de seguridad de las transacciones de cobro en otro sistema. Una transacción de carga comienza cuando el enchufe de carga está enchufado y termina cuando está desenchufado.

Contadores definidos por el usuario con MQTT

Puede crear contadores personalizados utilizando rtype = 2 para MQTT. Estos contadores se definen de forma similar a los contadores HTTP (rtype = 1). Sin embargo, las direcciones aquí no son URLs HTTP, sino temas MQTT.




Ejemplo: "power_w": {"address": "/test_topic3", "type": "float", "query": "power_w"}
En este caso, el contador definido por el usuario se suscribe al tema /test_topic3 y espera un objeto JSON con la propiedad "power_w", por ejemplo {"power_w": 1234}. Diferentes variables de contador pueden tener diferentes temas y se actualizan tan pronto como se publica un mensaje bajo el tema correspondiente.