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.
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:
Un más detallado cómo personalizar el gancho Python MQTT para lograr su el objetivo se explica más adelante.
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:
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.
[CUSTOM_HOOKS]
DATA_INTEGRATION = TRUE
♪ VERDADERO ANTERIENTE FALSE
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
El archivo custom_store.py ofrece el siguiente objeto Python referencia. Esta referencia permite una integración más estrecha con el MQTT Broker.
def setwebsocketport(conf):
global web_socket
web_socket=conf["websocket"]
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.
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.
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
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.
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}")
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.
################################################################################################################################################################################################################################################################
[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í.
[DEVICE_AUTHENTICATION]
AUTHENTICATION = CUSTOM
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.
autenticación_servicio = "https:// hechosauth_url confidencial"
# requests.adapters.DEFAULT_RETRIES = 3
# request_timeout = 0.1
# request_auth_method = "POST"
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”
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)
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.
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:
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.
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:
[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.
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.
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.
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!