< Kopf >
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.
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:
Eine detailliertere Anpassung der Python MQTT Broker Haken, um Ihre Ziel wird weiter erläutert.
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:
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.
(STÖHNT)
DATA_INTEGRATION = TRUE
# TRUE || FALSE
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
Die custom_store.py-Datei bietet folgendes Python-Objekt an Referenz. Diese Referenz ermöglicht eine engere Integration mit dem MQTT Broker.
def setwebsocketport(conf):
global web_socket
Web_socket=conf["websocket"]
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.
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.
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
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.
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}")
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.
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.
(DEVICE_AUTHENTIC)
BEHANDLUNG = ZOLL
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.
# Authentifizierung_Service = "https://<auth_url>"
# Requests.adapter.DEFAULT_RETRIES = 3
# request_timeout = 0.1
# request_auth_method = "POST"
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“
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)
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.
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:
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.
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:
(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.
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.
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.
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!