Python MQTT Guía de integración de corredores

Introducción

Python MQTT Brokeres el centro del Aplicación del MQTT que intercambia datos entre los múltiples clientes de MQTT desplegados en el campo y la comunicación puede suceder sobre wifi, GSM u otras formas de conectividad. CrystalMQMQTT Serverse construye utilizando C para el máximo rendimiento. Sin embargo basado en las necesidades de negocio, hemos añadido interfaces basadas en python para el servidor MQTT para asegurar que la implementación pueda ampliarla para lograr su negocio metas. Como el enlace directo se hace detrás del Broker, aplicaciones de construcción por suscripción se evita para hacer la escala de IoT Implementation y optimizar ancho de banda.

Esta documentación es una guía integral para los desarrolladores que están planeando para construir aplicaciones de IoT utilizandoPython MQTT Ganchos de corredor. Lo harás. ser capaz de construir un negocio completo Aplicación IoT sobre el corredor con estas interfaces diseñadas para Almacenamiento, Integración AI/ML, Ganchos de autenticación, Listas para ejecutar análisis de datos, Editor de interfaz de usuario. Basado en este documento, podráconstruir una aplicación MQTT en un día.

Python MQTT Interfaces de Broker

Bevywise MQTT Broker es un middleware basado en python / C con una publicación Suscríbete arquitectura. Proporciona apoyo completo para elMQTT protocolo. Los desarrolladores pueden utilizar Python ganchos a habilitar una interfaz para ampliar la implementación. La interfaz se puede utilizar para construir complejo Aplicaciones IoT. Cristal MQ viene con el almacenamiento predeterminado, interfaz de usuario, motor de regla, etc., Sin embargo, para la conveniencia de la aplicación IoT/IIoT, se proporcionaron extensiones para personalizar y construir alrededor del MQTT Broker.

Las opciones de ampliación actuales son las siguientes:

  • Integra tus tableros de trabajo usando UI personalizada
  • Personalización de almacenamiento y enviar datos a los motores Relational, Big Data.
  • Programación del Análisis de Datos que ejecuta intervalo predefinido para analizar datos y desencadenar acciones.
  • Transformación recibida Datos IoT con integración AI/ML
  • Integración de autenticación de terceros como LDAP, Aplicación IAM para la seguridad del dispositivo

Un más detallado cómo personalizar el gancho Python MQTT para lograr su el objetivo se explica más adelante.

Python MQTT Gancho 1 : Almacenamiento de datos personalizado

MQTT Brokersoporta unas pocas bases de datos por defecto para el almacenamiento. Los datos se almacenan en un formato pre definido en bases de datos relacionales. A continuación figura la lista de bases de datos soportadas:

  • MySQL
  • SQLite
  • PostgreSQL
  • MSSQL

Usted puede habilitar estosAlmacenamiento de datos IoTopciones sin una sola línea de código. Puede habilitar estas opciones enconf/datastore.conf

Datos aduaneros Almacenamiento permite a los usuarios elegir su propia base de datos para su solicitud. Además de elegir la base de datos, podrá personalizar la formato de datos también en eldatastore.confarchivo. La siguiente sección explicará cómo configurar el almacenamiento de datos.

Pasos para configurar la tienda de datos personalizada

  • Abra la tienda de datos.conf
  • Establecer la opción DATA_INTEGRATION como TRUE. Seleccionar esta opción envía recibido mensajes de clientes al archivo custom_store.py. También incluye el defecto almacenamiento de datos.

datastore.conf


[CUSTOM_HOOKS]
DATA_INTEGRATION = TRUE
♪ VERDADERO ANTERIENTE FALSE

  • Cuando configura la configuración personalizada del almacenamiento de carga útil, los datos de MQTT se enviarán a on_message_received_hook(data) método. Este método maneja los datos recibidos por los clientes. Y los datos enviados a clientes del broker serán enviados al método on_message_sent_hook(data). Este método está presente en el archivo python especificado en INTERCEPT_ Silencio.
custom_store.py

def on_message_received_hook(data):
"
Este método se activa cada vez que el MQTT Broker recibe un mensaje de una publicación Cliente.
datos: {
'sender':
'topic': Nombre ilustrado
mensaje:
'unixtime':
'tiempo de fecha':
}
"
Pruebe:
paso
excepto Excepción como e:
Logger_p.error(f"{e}")

def on_message_sent_hook(data):
"
Este método se activa cada vez que el MQTT Broker envía un mensaje a un Subscribing Cliente.
datos: {
'sender':
'topic': Nombre ilustrado
'sent_packetid':
'retain': made0/1
'qos':
mensaje:
'unixtime':
'tiempo de fecha':
}
"
Pruebe:
paso
excepto Excepción como e:
Logger_p.error(f"{e}")

INTERCEPT_FILEPATH = ./CrystalMQ/extensions/custom_store.py

Referencias adicionales del objeto

El archivo custom_store.py ofrece el siguiente objeto Python referencia. Esta referencia permite una integración más estrecha con el MQTT Broker.

  • web_socket –UI Websocket objeto para enviar datos a la UI para cualquier notificación de eventos. Esto será útil en UI personalizada aplicación.
custom_store.py

def setwebsocketport(conf):
global web_socket
web_socket=conf["websocket"]

Aplicación de bonos

Después de configurar la costumbreDatos del MQTT almacenamiento, usted recibirá el Python message funciones de callback en su archivo python. Estas funciones de callback se utilizan para el métodoon_message_received_hook(data).

Su implementación debe recibir los datos y almacenarlos y devolverlos el método. Usted debe hacer su análisis de datos en un hilo separado.

Python MQTT Gancho 2 : Programador personalizado

Cuando los datos que ya se han adquirido se procesan mejor, AI y ML actuar mejor. El módulo de programación ayuda en la elaboración de datos durante un período de tiempo. La aduana El programador prestará asistencia usted en la creación de su propio programa de corredores MQTT. Esto le ayuda a recopilar sus datos permitiendo agregar su propio código en el lado del servidor.

Por ejemplo, considere revisar el nivel de agua en un hogar. El El programador personalizado ayudará a establecer un recordatorio para comprobar el estado del nivel de agua en el tanque.

custom_scheduler.py

def custom_schedules():
habilitaciónPersonas = Falso
horarios = [
{'time': schedule.every(2).seconds, 'job': job1}, # Cada 2 segundos
{'time': schedule.every(1).minutes, 'job': job2}, # Every 1 minute
{'time': schedule.every(1).hours, 'job': job3}, # Every 1 hour
{'time': schedule.every().day.at("14:30"), 'job': job4}, # Every day at 14:30 (2:30 PM)
]
habilitación de devoluciónCustomSchedules, schedules

  • Habilitar / Desactivar su programa añadiendo valor como True/False en 'enableCustomSchedules'.
  • Puede agregar su horario en segundos, minutos, horas y días en el espacio apropiado asignado para ella.

Python MQTT Gancho 3 : Servidor UI personalizado

UI servidor personalizado ofrece una opción para personalizar el usuario Interfaz. Por Por defecto, MQTT broker viene con la opción de panel personalizado con widgets ricos. Esos widgets ayudan a visualizar el datos de una manera que el usuario necesita. Pero para personalizar UI para avanzado & alto nivel IoT / IIoT implementación, servidor UI personalizado será la opción correcta. Puede agregar su propio código en el lado del servidor. Esto le permite personalizar la interfaz de usuario de laMQTT servermuy bien. directo. Puedes alter el código en custom_ui_server.py archivo como usted necesita para personalizarlo.

custom_ui_server.py

def custom_urls():
urls_info = {
"URL_REDIRECT": "/",
"urls": [
{"/new-page" : new_page_method},
]
}
retorno urls_info
def new_page_method(data):
Pruebe:
volver ("Tu nueva página!")
excepto Excepción como e:
Logger_p.error(f"{e}")

Python MQTT Gancho 4 : Autenticación personalizada

Soportes CrystalMQMQTT autenticaciónfuncionalidad. Una de las opciones la autenticación MQTT compatible es el gancho personalizado, donde puede elegir el proveedor propio. Puede ser cualquier Identificar Gestión de Acceso (IAM) o SSO o LDAP o cualquier cosa que se pueda llamar usando la interfaz de Python MQTT.

mqtt.conf


################################################################################################################################################################################################################################################################

[DEVICE_AUTHENTICATION]

AUTHENTICATION = CUSTOM
DISABLED TENIDO TERRITORIO DEFAULT TENIDO CUSTOM

# DISABLED: Los dispositivos MQTT no deben enviar el nombre de usuario > Contraseña al conectarse.
# DEFAULT: Los dispositivos MQTT deben enviar credenciales de usuario > Contraseña. Se pueden agregar credenciales via UI. La autenticación es verificada por el Broker.
# CUSTOM: Los dispositivos MQTT deben enviar Nombre de usuario > Contraseña. La autenticación NO es verificada por el Broker.

CUSTOM_AUTHENTICATION_FILEPATH = ./../extensions/custom_authentication.py

# Usado sólo cuando AUTORICACIÓN = CUSTOM
# Implementa tu autentificación personalizada en un método Python llamado "custom_authenticate()" y que ruta de archivo aquí.


¿Cómo habilitar la opción de autenticación personalizada?


  • Abrir carpeta Bevywise/CrystalMQ/conf
  • En eso, abre el archivo mqtt.conf. [Si eres usuario de Windows, puedes usar a notepad o sublime para abrir el archivo]
  • En el archivo mqtt.conf, establece AUTHENTICATION como CUSTOM.

[DEVICE_AUTHENTICATION]

AUTHENTICATION = CUSTOM

  • Guarda el archivo y comienza a ejecutar el corredor MQTT.

Solicitud de cuenta de las entradas

Cuando intentamos conectarnos al servidor, alguna conexión fracasos sucede. Esto puede deberse a la introducción de credenciales de inicio de sesión incorrectas. En ese caso proporcionar retries contable será útil. Al entrar en la solicitud los registros cuentan, usted puede agregar o limitar el intento de registro del usuario.

extensions/custom_authentication.py


autenticación_servicio = "https:// hechosauth_url confidencial"
# requests.adapters.DEFAULT_RETRIES = 3
# request_timeout = 0.1
# request_auth_method = "POST"

  • Abrir carpeta Bevywise/CrystalMQ/extensions
  • En ese archivo, open custom_authentication.py. [Si eres usuario de Windows, puedes use un notepad o sublime para abrir el archivo]
  • En custom_authentication.py file, introduzca el número de entradas de solicitud según su necesidad.
  • solicitudes.adapters.DEFAULT_RETRIES = 3 (Por defecto, el valor se establecerá como 3)

Configuración de la URL de solicitud

Introduzca la URL de su página de aterrizaje de autenticación. Esto autentica al usuario tratando de Conecte con sus credenciales de inicio de sesión.

En el archivo custom_authentication.py, proporcione la URL:

url = “https://www.bevywise.com/auth”

Solicitud de tiempo

Es la duración o intervalo de tiempo que una aplicación espera la respuesta del cliente. Estos valores probablemente se dan en segundos o milisegundos.

Para fijar el tiempo de solicitud,

Abrir archivo custom_authentication.py en carpeta extensiones y entrar valor temporal en el espacio dado.

request_timeout = 0.1 (Por defecto, lleva el valor de 0.1)

Seleccionar método de solicitud

Hay un conjunto de métodos de solicitud HTTP. Puede seleccionar a cualquiera para indicar el método deseado para ser realizado.

Ve...Solicitar datos de un especificada recursos.

POST –Presentar o publicar mensajes to the recursos especificados.

PUT...Replacing the existing datos de el recurso objetivo.


Abra custom_authentication.py archivo en carpeta extensiones y introduzca auth método en el espacio dado.


request_auth_method =“POST”


Establecer todas sus configuraciones, guardar el archivo " empezar a ejecutar el bróker.


MQTT broker ofrece un completo Internet de Cosas aplicación. Incluye la personalización de la interfaz de usuario, agregación de datos y análisis. Además, permite la comparación de datos del evento con los datos procesados. Este marco de aplicación IoT le ayudará a construir y gestionarindustrial IoT Aplicacionesmás rápido. También hace que el proceso sea mucho más fácil dentro de un solo proceso.

Ejemplos de Python MQTT

Los ejemplos de integración Python MQTT Broker te ayudan a conectarte MQTT broker to la búsqueda elástica, Mongo DB & Redis. Puedesdescargar MQTT Broker para gratisy tratar de desplegar estos ejemplos para almacenar datos según sea necesario. También puede descargarpreconstruido MQTT Clientesde nuestra biblioteca.

Más información sobre las interfaces de python ejemplo en detalle:


MQTT a MongoDB

MongoDBes uno de la más utilizada document storage engines for IoT data analysis. Este plugin conecta Bevywise MQTT Broker con MongoDB. Permite el almacenamiento de datos recibidos de carga útil de clientes conectados a MongoDB. It te ayuda manejar datos complejos de una manera fácil y para un análisis poderoso. La siguiente documentación explica cómo configurar y configurar MQTT Broker en MongoDB.

Configurar y configurar MQTT Broker MongoDB Connector


Vaya al Github Bevywise y acceda alMqttroute-mongodb-connectorcarpeta. Luego abre la carpeta 'mongo', y allí se puede ver el archivo 'plugin.conf'.

1. Abrir plugin.conf y configurar lo siguiente:


  • Actualizar el nombre de host y número de puerto del servidor MongoDB en la sección MONGO
  • Si la AUTHENTICATION está activada en MQTT broker, entonces actualice el MongoDB credenciales. De lo contrario, se establece AUTHENTICATION_ENABLED = FALSE.
  • Actualizar la ruta de archivo de registro a su propia ubicación de carpeta. [default] Bevywise/CrystalMQ/extensions].
plugin.conf

[MONGO]

HOSTNAME = 127.0.0.1
PORT = 27017
DB_NAME
COLECCIÓN = mqttroute
[AUTHENTICATION]
AUTHENTICATION_ENABLED = FALSE
♪ VERDADERO ANTERIENTE FALSE
USERNAME = root
PASSWORD = root

[LOG]
LOG_FILE_PATH = ../extensions/mongo.log


2. Copiar el mongo de la carpeta y pegarlo enBevywise/CrystalMQ/extensions.


3. Copia el plugin de carpeta. conf y pegarlo en Bevywise/CrystalMQ/extensions.


4. Reemplace custom_store.py con Bevywise/CrystalMQ/extensions/custom_store.py.


5. Open Bevywise/CrystalMQ/conf/datastore.conf y actualización DATA_INTEGRATION = TRUE


6. Comience el corredor MQTT y empezará a almacenar toda la carga útil en el Mongo DB server.


MQTT a Redis Connector

En la base de datos, el conector Redis utiliza tanto agrupados como conexiones no incluidas. Sólo la autentificación basada en contraseña es compatible con Redis Conector. Este plugin Python MQTT conecta el broker MQTT con elRedisservidor. Permite almacenar todas las cargas de pago a el servidor Redis para mayor procesamiento.

Configurar y configurar el conector MQTT Broker Redis


1. Reemplazar”custom_store.py” con Bevywise/CrystalMQ/lib/custom_store.py.

2. En custom_store.py cambiar el nombre del servidor & puerto de Redis si Tú están ejecutando Redis en un servidor o puerto diferente.

custom_store.py

redishost=‘localhost’
redisport=6379

3.Entonces, abierto Bevywise/CrystalMQ/conf/datastore.conf DATA_INTEGRATION = TRUE

4. Comienza el corredor de MQTT. Empezará a almacenar toda la carga útil en el Redis servidor con cliente Id_unixtime como la llave.

Siguiendo esta guía completa, usted está bien preparado para diseñar y desarrollar aplicaciones IoT usando Python MQTT Broker ganchos. Para mayor asistencia o consultas, no dudellegar a nuestro equipo!

¡Construyendo tu aplicación de IoT!

¿Buscas alguna guía para empezar? Mantennos informados.