< Kopf >

Python Leitfaden für die Integration von Broker

Einleitung

Python Brokerist das Zentrum der MQTT Implementierung, Austausch Daten zwischen den im Feld eingesetzten mehreren MQTT-Clients und der Kommunikation können geschehen über WLAN, GSM oder andere Möglichkeiten der Konnektivität. KristallglasMQTT Serverwird mit C aufgebaut für die maximale Leistung. Aufgrund der Geschäftsanforderungen haben wir jedoch pythonbasierte Schnittstellen hinzugefügt für den MQTT-Server, um sicherzustellen, dass die Implementierung sie erweitern kann, um ihr Geschäft zu erreichen Ziele. Da die direkte Verbindung hinter dem Broker erfolgt, Gebäudeanwendungen im Abonnement werden vermieden, um die IoT-Implementierung zu ermöglichen und Optimierung der Bandbreite.

Diese Dokumentation ist ein umfassender Leitfaden für Entwickler, die planen zum Aufbau von IoT-AnwendungenPython Broker Haken. Du wirst ein komplettes Geschäft aufbauen können IoT-Anwendung über den Broker mit diesen Schnittstellen für Storage, AI/ML Integration, Authentication Haken, Zeitpläne zur Datenanalyse, Benutzeroberflächen-Builder. Basierend auf diesem Dokument können SieSie eine MQTT-Anwendung an einem Tag.

Python Broker Interfaces

Bevywise MQTT Broker ist ein python / C-basiertes Middleware mit einem Verlag abonnieren Architektur. Es bietet vollständige Unterstützung für dieMQT Das ist alles.. Entwickler können Pythons verwenden Haken an eine Schnittstelle zur Erweiterung der Implementierung ermöglichen. Die Schnittstelle kann verwendet werden, um Komplex zu bauen IoT-Anwendungen. Kristall MQ kommt mit dem Standardspeicher, Benutzeroberfläche, Regelmotor, etc., jedoch für den IoT/IIoT Implementierungskomfort, Um den MQTT Broker anzupassen und zu bauen, wurden Erweiterungen vorgesehen.

Die aktuellen Erweiterbarkeitsoptionen sind:

  • Integrieren Sie Ihre Business Dashboards mit Custom UI
  • Speicheranpassung und Senden von Daten an Relational, Big Data Motoren.
  • Schema der Datenanalyse, die das vorgegebene Intervall ausführt, um Daten zu analysieren und auszulösen Aktionen.
  • Übersetzen Sie empfangene IoT-Daten mit AI/ML-Integration
  • Dritte Authentifizierungsintegration wie LDAP, IAM Anwendung für die Gerätesicherheit

Eine detailliertere Anpassung der Python MQTT Broker Haken, um Ihre Ziel wird weiter erläutert.

Python Haken 1 : Benutzerdefinierte Datenspeicher

MQTT Brokerunterstützt standardmäßig einige Datenbanken für den Speicher. Die Daten werden in einem vordefinierten Format gespeichert in relationalen Datenbanken. Nachfolgend die Liste der unterstützten Datenbanken:

  • MySQL
  • SQLite
  • PostgreSQL
  • MSSQL

Sie können diese aktivierenInternet-InformationenOptionen ohne eine einzelne Linie von Code. Sie können diese Optionen in derkonfis/datastore.conf

Zolldaten Speichern ermöglicht es Benutzern, ihre eigene Datenbank zu wählen für ihre Anwendung. Zusätzlich zur Auswahl der Datenbank können Sie die Datenformat sowieDatenspeicher.confDatei. Der nächste Abschnitt wird erklären, wie Sie den Datenspeicher konfigurieren.

Schritte zur Konfiguration des Custom Data Stores

  • Öffnen Sie die datastore.conf
  • Setzen Sie die DATA_INTEGRATION Option als TRUE. Auswahl dieser Option sendet empfangene Nachrichten von Clients in die custom_store.py-Datei. Es enthält auch den Standard Datenspeicherung.

Datenspeicher.conf


(STÖHNT)
DATA_INTEGRATION = TRUE
# TRUE || FALSE

  • Wenn Sie benutzerdefinierte Einstellungen des Payload-Speichers konfigurieren, werden die MQTT-Daten an die on_message_received_hook(data) Methode. Diese Methode behandelt die von Clients empfangenen Daten. Und die Daten an die Clients aus dem Broker werden an die on_message_sent_hook(data) Methode gesendet. Diese Methode ist in der in INTERCEPT_ angegebenen python-Datei vorhanden. FILEPATH.
benutzerdefinierte_store.py

def on_message_received_hook(data):
""
Dieses Verfahren wird jedes Mal ausgelöst, wenn der MQTT Broker eine Nachricht von einem Verlag erhält Client.
Daten: {
„Sender":>clientid>
„topic":<topic name>
„Nachricht":<payload>
„unixtime":<timestamp>
„Datum":<datetime>
}
""
versuchen:
Reisepass
mit Ausnahme von e:
logger_p.error(f"{e}")

def on_message_sent_hook(data):
""
Diese Methode wird jedes Mal ausgelöst, wenn der MQTT Broker eine Nachricht an eine Anmeldung sendet Client.
Daten: {
„Sender":>clientid>
„topic":<topic name>
'sent_packetid':<packet id>
„enthalten": <0/1>,
'qos':<0/1/2>
„Nachricht":<payload>
„unixtime":<timestamp>
„Datum":<datetime>
}
""
versuchen:
Reisepass
mit Ausnahme von e:
logger_p.error(f"{e}")

INTERCEPT_FILEPATH = ./CrystalMQ/Erweiterungen/custom_store.py

Zusätzliche Objektbezüge

Die custom_store.py-Datei bietet folgendes Python-Objekt an Referenz. Diese Referenz ermöglicht eine engere Integration mit dem MQTT Broker.

  • Web_socket –UI Websocket Objekt für Senden von Daten an die UI für alle Ereignismeldungen. Dies wird hilfreich sein Zoll UI Umsetzung.
benutzerdefinierte_store.py

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

Implementierung Bonus TIP

Nach der Konfiguration des benutzerdefiniertenMQTT-Daten Lagerbestände, Sie erhalten die Python Nachricht callback funktioniert in Ihrer Python-Datei. Diese Rückruffunktionen werden für das Verfahren verwendeton_message_received_hook(Daten).

Ihre Implementierung sollte die Daten erhalten und speichern und zurückgeben die Methode. Sie sollten Ihre Datenanalyse in einem separaten Thread durchführen.

Python Haken 2 : Custom Scheduler

Wenn bereits erfasste Daten besser verarbeitet werden, AI und ML am besten. Das Scheduling-Modul unterstützt die Verarbeitung von Daten über einen Zeitraum. Der Zoll Scheduler wird helfen Sie erstellen Ihren eigenen MQTT Broker Zeitplan. Dies hilft Ihnen bei der Aggregation Ihrer Daten, indem Sie Ihren eigenen Code auf der Serverseite hinzufügen.

Betrachten Sie beispielsweise die Überprüfung des Wasserspiegels in einem Haus. Die benutzerdefinierte Scheduler wird helfen, eine Erinnerung zu setzen, um den Status des Wasserspiegels im Tank zu überprüfen.

benutzerdefinierte_scheduler.py

def custom_schedules():
EnableCustomSchedules = Falsch
Termine = [
{'time': Schedule.every(2).seconds, 'job': job1}, # Alle 2 Sekunden
{'time': Schedule.every(1).minutes, 'job': job2}, # Every 1 minute
{'time': Schedule.every(1).hours, 'job': job3}, # Jede 1 Stunde
{'time': plan.every().day.at("14:30"), 'job': job4}, # Jeden Tag um 14:30 (2:30 Uhr)
!
zurück aktivierenCustomSchedules, Termine

  • Aktivieren / Deaktivieren Sie Ihren Zeitplan, indem Sie Wert als True/False in ‘enableCustomSchedules’ hinzufügen.
  • Sie können Ihren Zeitplan in Sekunden, Minuten, Stunden und Tagen in dem entsprechenden Raum hinzufügen zugeteilt.

Python Haken 3 : Custom UI Server

UI Custom Server bietet eine Möglichkeit, den Benutzer anzupassen Schnittstelle. von Standard, MQTT Broker kommt mit der benutzerdefinierten Dashboard Option mit reichen Widgets. Diese Widgets hilft, die Daten in einer Weise, die Benutzer benötigen. Aber, um UI für fortgeschrittene & High Level IoT / IIoT anpassen Implementierung, Custom UI Server wird die richtige Option. Sie können Ihren eigenen Code hinzufügen die serverseitige. So können Sie die UI derMQTT Serversehr Einfach. Du kannst Änderung den Code in custom_ui_server.py Datei, wie Sie es anpassen müssen.

benutzerdefinierte_ui_server.py

def custom_urls():
urls_info =
"URL_REDIRECT": "/",
"urls":
"/new-page" : new_page_method},
!
}
zurück nach oben
def new_page_method(data):
versuchen:
zurück ("Deine neue Seite!!")
mit Ausnahme von e:
logger_p.error(f"{e}")

Python Hook 4: Kundenspezifische Authentifizierung

CrystalMQ unterstütztNicht verfügbar AuthentisierungFunktionalität. Eine der Optionen die unterstützte MQTT-Authentifizierung ist der benutzerdefinierte Haken, wo Sie den eigenen Anbieter wählen können. Es kann jede Identify Access Management (IAM) oder SSO oder LDAP oder alles, was mit dem MQTT Python Interface aufgerufen werden kann.

mqtt.conf


PORT & SECURITY CONFIGURATION #######################################

(DEVICE_AUTHENTIC)

BEHANDLUNG = ZOLL
# DISABLED || DEFAULT || CUSTOM

# DISABLED: MQTT-Geräte dürfen Benutzername und Passwort nicht während der Verbindung senden.
# DEFAULT: MQTT-Geräte müssen Benutzername & Passwort-Anmeldeinformationen senden. Anmeldeinformationen können hinzugefügt werden über UI. Die Authentifizierung wird vom Broker überprüft.
# CUSTOM: MQTT-Geräte müssen Benutzername & Passwort senden. Authentication wird NICHT durch die Broker.

CUSTOM_AUTHENTIC_FILEPATH = ././Erweiterungen/custom_authentication.py

# Wird nur verwendet, wenn AUTHENTIC = ZOLL
# Umsetzung Ihrer benutzerdefinierten Authentifizierung in einer Python-Methode namens "custom_authenticate()" und setzen, Dateipfad hier.


Wie kann man benutzerdefinierte Authentifizierungsoption aktivieren?


  • Bevywise/CrystalMQ/conf Ordner öffnen
  • Öffnen Sie dabei die mqtt.conf-Datei. [Wenn Sie ein Windows-Benutzer sind, können Sie entweder ein Notizblock oder sublimieren, um die Datei zu öffnen]
  • In mqt.conf-Datei setzen Sie AUTHENTICATION als CUSTOM.

(DEVICE_AUTHENTIC)

BEHANDLUNG = ZOLL

  • Speichern Sie die Datei und starten Sie den MQTT-Broker.

Anfrage von Retries Count

Wenn wir versuchen, mit dem Server zu verbinden, eine Verbindung Fehler können passieren. Dies kann auf falsche Anmeldeinformationen zurückzuführen sein. In diesem Fall die Bereitstellung von zahlbaren Retries wird hilfreich sein. Durch Eingabe von Anfrage Retries zählen, Sie kann hinzufügen oder den Retries-Ansatz des Benutzers zu begrenzen.

Erweiterungen/custom_authentication.py


# Authentifizierung_Service = "https://<auth_url>"
# Requests.adapter.DEFAULT_RETRIES = 3
# request_timeout = 0.1
# request_auth_method = "POST"

  • Bevywise/CrystalMQ/Erweiterungen Ordner öffnen
  • Öffnen Sie dabei benutzerdefinierte_authentication.py-Datei. [Wenn Sie ein Windows-Benutzer sind, können Sie entweder Verwenden Sie ein Notebook oder Sublime, um die Datei zu öffnen]
  • Geben Sie in custom_authentication.py die Anzahl der Anfrageeinträge nach Bedarf ein.
  • request.adapter.DEFAULT_RETRIES = 3 (Standardmäßig wird der Wert als 3) eingestellt

Einstellung der Anfrage-URL

Geben Sie die URL Ihrer Authentifizierungslandeseite ein. Dies authentifiziert den Benutzer versucht, verbinden mit ihren Anmeldeinformationen.

Geben Sie in custom_authentication.py die URL an:

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

Timeout anfordern

Es ist die Zeitdauer oder Intervall, dass eine Anwendung wartet auf die Antwort des Kunden. Diese Werte werden wahrscheinlich in Sekunden angegeben oder Millisekunden.

Um die Anfrage Timeout einzustellen,

Öffnen Sie custom_authentication.py Datei in Erweiterungen Ordner und geben Sie ein Zeitwert im gegebenen Raum.

anfordern_timeout = 0,1 (Standardmäßig trägt er den Wert von 0,1)

Auswahl der Anfragemethode

Es gibt eine Reihe von HTTP-Anforderungsmethoden. Sie können jeden auswählen, um die gewünschte Methode anzuzeigen.

GET –Daten von einem spezifiziert Ressource.

POST –Nachrichten einreichen oder veröffentlichen in der spezifizierte Ressource.

PUT –Wiederholen der bestehenden Daten von die Zielressource.


Öffnen Sie custom_authentication.py Datei in Erweiterungen Ordner und geben Sie Auth Verfahren in der Raum gegeben.


Anfrage senden _auth_method =„POST“


Setzen Sie alle Ihre Konfigurationen, speichern Sie die Datei und starten Sie die Ausführung der Broker.


MQTT Broker bietet ein komplettes Internet der Dinge Anwendung. Es umfasst die Anpassung der Benutzeroberfläche, Datenaggregation und Analyse. Zusätzlich ermöglicht es den Ereignisdatenvergleich mit die verarbeiteten Daten. Dieser IoT-Anwendungsrahmen hilft Ihnen beim Aufbau & ManagementIndustrie IoT Das ist der Fall.schneller. Es erleichtert auch den Prozess innerhalb eines einzigen Prozesses.

Pre built Python MQTT Broker Beispiele

Die gebrauchsfertigen Python MQTT Broker Integrationsbeispiele helfen Ihnen zu verbinden MQTT Broker an die Elastische Suche, Mongo DB & Redis. Du kannstMQTT herunterladen Broker für kostenlos.und versuchen, diese Beispiele Daten nach Bedarf speichern. Sie können auch herunterladenVorherige MQTT Clientsaus unserer Bibliothek.

Erfahren Sie mehr über die Beispiel-Python-Schnittstellen im Detail:


MQTT nach MongoDB

MongoDBist einer von am weitesten verbreitet dokumentieren Sie Speichermotoren für die IoT-Datenanalyse. Dieses Plugin verbindet Bevywise MQTT Broker mit MongoDB. Es ermöglicht die Speicherung von empfangenen Nutzdaten von verbundenen Clients in MongoDB. Es hilft dir komplexe Daten einfach und für eine leistungsfähige Analyse handhaben. Die folgende Dokumentation erklärt, wie MQTT Broker in MongoDB konfiguriert und eingerichtet werden kann.

MQTT Broker MongoDB Connector konfigurieren und einrichten


Gehen Sie zum Bevywise Github und greifen Sie auf dieMqttroute-mongodb-VerbindungOrdner. Dann öffnen Sie den Ordner 'mongo' und dort können Sie die Datei 'plugin.conf' sehen.

ANHANG Öffnen Sie plugin.conf und konfigurieren Sie Folgendes:


  • Hostname und Portnummer des MongoDB-Servers in MONGO Abschnitt aktualisieren
  • Wenn AUTHENTICATION im MQTT-Broker aktiviert ist, aktualisieren Sie die MongoDB Anmeldeinformationen. Andere AUTHENTICATION_ENABLED = FALSE.
  • Aktualisieren Sie den Log-Dateipfad zu Ihrem eigenen Ordner Standort. [Standard = Bevywise/CrystalMQ/Erweiterungen].
Plugin.conf

(MONGO)

HOSTNAME = 127.0.0.1
PORT = 27017
DB_NAME = bevywise
SAMMLUNG = mqtroute
(AUTHENTIK)
AUTHENTIC_ENABLED = FALSE
# TRUE || FALSE
USERNAME = Wurzel
PASSWORD = Wurzel

(LOGIE)
LOG_FILE_PATH = ../Erweiterungen/mongo.log


2. Kopieren Sie den Ordner Mongo und fügen Sie ihn einBevywise/CrystalMQ/Erweiterungen.


3. Kopieren Sie das Ordner-Plugin. konfiszieren und einfügen Bevywise/CrystalMQ/Erweiterungen.


4. Ersetzen custom_store.py mit Bevywise/CrystalMQ/extensions/custom_store.py.


5. Bevywise/CrystalMQ/conf/datastore.conf öffnen und DATA_INTEGRATION aktualisieren = TR


6. Starten Sie den MQTT-Broker und es wird beginnen, die gesamte Nutzlast zu speichern in der Mongo DB Server.


MQTT zu Redis Connector

In der Datenbank verwendet der Redis-Anschluss sowohl geclustert als auch nicht abgeschlossene Verbindungen. Nur passwortbasierte Authentifizierung wird von Redis unterstützt Connector. Dieses Python MQTT Plugin verbindet MQTT Broker mit demRedisServer. Es erlaubt zu speichern alle Nutzlasten den Redis-Server für die weitere Verarbeitung.

MQTT Broker Redis Stecker konfigurieren und einrichten


1. Ersetzen”custom_store.py” mit Bevywise/CrystalMQ/lib/custom_store.py.

2. In custom_store.py ändern Sie den Servernamen und den Port der Redis, wenn du werden Redis auf einem anderen Server oder Port ausgeführt.

benutzerdefinierte_store.py

redishost=„localhost“
Redisport=6379

3.Dann, offen Bevywise/CrystalMQ/conf/datastore.conf DATA_INTEGRATION = TRUE

4. Starten Sie den MQTT-Broker. Es wird beginnen, alle Nutzlast zu speichern in der Redis Server mit Client Id_unixtime als Schlüssel.

Nach diesem umfassenden Leitfaden sind Sie gut vorbereitet, IoT-Anwendungen zu entwerfen und zu entwickeln mit Python MQTT Broker Haken. Für weitere Hilfe oder Abfragen, fühlen Sie sich freiUnser Team!

Bauen Sie Ihre IoT-Anwendung!

Auf der Suche nach einigen Start Anleitung? Halten Sie uns auf dem Laufenden.