Python MQTTの特長 ブローカー統合ガイド

導入事例

Python MQTTの特長中心はあります 交換するMQTT実装 フィールドにデプロイされた複数の MQTT クライアント間でのデータと通信が起こる 無線LAN、GSMまたは他の接続方法に。 クリスタルMQMQTTについてCを使用してビルド お問い合わせ 最高性能。 しかし、ビジネスニーズに基づいて、Pythonベースのインターフェースを追加しました。 MQTT Server では、実装が事業の達成のためにそれを拡張できるようにします。 目標。 ブローカーの背後にある直接的なインターフェイスが行われるため、 サブスクリプションによるアプリケーションの構築は、IoTの実装規模や 帯域幅の最適化

このドキュメントは、計画している開発者のための包括的なガイドです IoT アプリケーションの構築Python MQTTの特長お問い合わせ お問い合わせ 完全なビジネスを造ることができる 貯蔵、AI/MLの統合のために設計されているこれらのインターフェイスが付いているブローカー上のIoTの適用、 認証ホック、データ分析、ユーザーインターフェイスビルダーを実行するためのスケジュール。 このドキュメントに基づいて、MQTT を 1 日に作成します。

Python MQTTの特長 ブローカーインターフェイス

Bevywise MQTT(ビービービーワイズ) ブローカーは、公開とpython / Cベースのミドルウェアです サインアップ アーキテクチャ。 それは完全なサポートを提供しますMQTTの特長 ハードウェアお問い合わせ 開発者は Python の ホックへ 実装を拡張するためのインターフェイスを有効にします。 インターフェイスは複雑なビルドに使用できます IoTアプリケーション クリスタル MQはデフォルト記憶装置、ユーザー インターフェイス、規則エンジン、等と来ます、 しかし、IoT/IIoT実装の利便性のため、 エクステンションはMQTT Brokerの周りのカスタマイズと構築のために提供されました。

提供されている現在の拡張性オプションは次のとおりです。

  • カスタムUIを使用してビジネスダッシュボードを統合
  • ストレージのカスタマイズとレフォーラル、ビッグデータエンジンにデータを送信します。
  • あらかじめ定義された間隔を実行したデータ解析をスケジューリングし、データを解析し、トリガーする アクション。
  • トランスフォーメーションは、AI/MLインテグレーションでIoTデータを受け取りました
  • LDAP、IAMアプリケーションなどの第三者認証統合

Python MQTT Brokerのホックをカスタマイズする方法の詳細 目標はさらに詳しく説明します。

Python MQTTの特長 ホック1:注文のデータ貯蔵

MQTTについてストレージのデフォルトでは、いくつかのデータベースをサポートしています。 データはあらかじめ定義された形式で保存されます。 リレーショナルデータベース 以下は、サポートされているデータベースのリストです。

  • ログイン
  • ログイン
  • ライブラリ
  • MSSQLについて

これらを有効にすることができますIoTデータ単一行のないオプション インフォメーション コード。 これらのオプションを有効にすることができます。conf/datastore.conf とデータストア

カスタムデータ ストレージを使用すると、ユーザーは独自のデータベースを選択することができます 応募者 データベースを選択することに加えて、データベースをカスタマイズすることができます データ形式だけでなく、データストア.confファイル。 次のセクション データストレージの設定方法を説明します。

カスタムデータストアを設定する手順

  • datastore.conf を開く
  • DATA_INTEGRATION オプションを TRUE に設定します。 このオプションを選択すると、 custom_store.py ファイルにクライアントからメッセージを受信しました。 また、デフォルトを含む データストレージ。

データストア.conf


[カスタマイズ]
DATA_INTEGRATION = 取引
# TRUE | バリュー

  • ペイロードストレージのカスタム設定を設定すると、MQTTデータが送信されます。 on_message_received_hook(データ) メソッド。 クライアントから受け取ったデータを処理します。 送信されたデータ ブローカーからのクライアントは、on_message_sent_hook(data) メソッドに送信されます。 この方法は INTERCEPT_ で指定された python ファイルに存在する フリルパス
カスタム_store.py

def on_message_received_hook(データ):
お問い合わせ
MQTT Brokerがパブリッシングからメッセージを受け取るたびにこのメソッドがトリガーされます クライアント。
データ: {
'sender':<clientid>,
'topic':<トピック名>,
'message':<ペイロード>,
'unixtime':<timestamp>,
'datetime':<日付>
お問い合わせ
お問い合わせ
トライ:
パス
例外を除く:
logger_p.error(f"{e}")

def on_message_sent_hook(データ):
お問い合わせ
この方法は、MQTT Brokerがサブスクライブにメッセージを送るたびにトリガーされます クライアント。
データ: {
'sender':<clientid>,
'topic':<トピック名>,
'sent_packetid':<packet id>,
'retain':<0/1>,
'qos':<0/1/2>、
'message':<ペイロード>,
'unixtime':<timestamp>,
'datetime':<日付>
お問い合わせ
お問い合わせ
トライ:
パス
例外を除く:
logger_p.error(f"{e}")

INTERCEPT_FILEPATHの特長 = ./CrystalMQ/拡張子/custom_store.py

追加オブジェクト参照

custom_store.py ファイルは、次の Python オブジェクトを提供しています。 参照。 この参照では、MQTT ブローカーとの緊密な統合を可能にします。

  • web_ソケットUI Websocketオブジェクト イベント通知のUIにデータを送信します。 おすすめです。 カスタムUI 実装。
カスタム_store.py

def setwebsocketport(conf):
グローバル web_socket
web_socket=conf["websocket"] は、

実装ボーナスTIP

カスタム設定後MQTTデータ お問い合わせ、受け取ります python メッセージ python ファイルのコールバック関数。 これらのコールバック関数はメソッドに使用されます。on_message_received_hook(データ)。

実装は、データを受信して保存し、返す必要があります お問い合わせ メソッド。 別のスレッドでデータ分析を行う必要があります。

Python MQTTの特長 ホック2:注文のスケジューラ

既に取得済みのデータが処理されると、AIとMLが向上 最善を尽くします。 Scheduling モジュールは、期間にわたるデータの処理に役立ちます。 カスタム スケジューラがお手伝いします 独自のMQTTブローカーのスケジュールを作成します。 これは、サーバー側で独自のコードを追加できるようにすることで、データを集計するのに役立ちます。

例えば、水位を自宅で確認することを検討してください。 ザ・オブ・ザ・ カスタムスケジューラは、タンク内の水位の状態をチェックするためにリマインダーを設定するのに役立ちます。

カスタム_scheduler.py

def custom_schedules():
enableCustomSchedules = 偽物
スケジュール = [
{'time': schedule.every(2).seconds, 'job': job1}, # 2秒毎
{'time': schedule.every(1).minutes、'job': job2}、# 1分毎
{'time': schedule.every(1).hours, 'job': job3}, # 1 時間ごとに
{'time': schedule.every().day.at("14:30")、'job':job4}、# 毎日14:30(2:30 PM)
. .
return enableCustomSchedules, スケジュール

  • 「enableCustomSchedules」で True/False として値を追加することにより、スケジュールを有効に/無効にします。
  • スケジュールを秒単位、分数、時間、曜日単位で設定できます。 お問い合わせ

Python MQTTの特長 ホック3:注文のUIサーバー

UIカスタムサーバーは、ユーザーをカスタマイズするオプションを提供します インターフェイス。 によって デフォルトでは、MQTTブローカーは豊富なウィジェットでカスタムダッシュボードオプションが付属しています。 これらのウィジェットは、視覚化するのに役立ちます ユーザーが必要とする方法でデータ。 しかし、高度な&高レベルのIoT / IIoT用のUIをカスタマイズする 実装、カスタムUIサーバーは、適切なオプションになります。 独自のコードを追加できます サーバ側。 これにより、UIをカスタマイズできます。MQTTについてお問い合わせ ストレートフォワード。 お問い合わせ 変更する custom_ui_server.py ファイルのコードをカスタマイズする必要があります。

カスタム_ui_server.py

def custom_urls():
urls_info = {
"URL_REDIRECT": "/",
「urls」:[
{"/new-page" : new_page_method},
. .
お問い合わせ
urls_info を返す
def new_page_method(データ):
トライ:
戻り値(新しいページ!!)
例外を除く:
logger_p.error(f"{e}")

Python MQTTの特長 ホック4:注文の認証

CrystalMQサポート多重MQTT 認証情報機能性。 オプションの1つ 支えられるMQTTの証明は注文のホックです、 プロバイダーを選ぶことができます。 アクセス管理(IAM)を識別するか、 SSO または LDAP または MQTT Python インターフェイスを使用して呼び出すことができるもの。

mqtt.confの特長


#################### ポートとセキュリティの構成 #########################

[DEVICE_AUTHENTICATION] - 【郷土料理ものがたり】

AUTHENTICATION=カスタマイズ
# ディザブル ||デファルト ||カスタム

# DISABLED: MQTT デバイスは、接続中にユーザー名とパスワードを送信する必要はありません。
# DEFAULT: MQTT デバイスは、ユーザー名とパスワードの認証情報を送信する必要があります。 認証情報を追加 UI経由で。 ブローカーによって認証が確認されます。
# カスタマイズ: MQTT デバイスは、ユーザー名とパスワードを送信する必要があります。 認証は検証できません。 ブローカー。

CUSTOM_AUTHENTICATION_FILEPATH(カスタマイズ) = ././拡張子/custom_authentication.py

# 「custom_authenticate()」という名前の Python メソッドでカスタム認証を実装し、そのファイル パスをここで設定します。


カスタム認証オプションを有効にする方法は?


  • Bevywise/CrystalMQ/confフォルダを開く
  • その中で、mqtt.confファイルを開きます。 [Windowsユーザーの場合、どちらでも使用できます メモ帳 ファイルを開くか、またはサブライム
  • mqtt.conf ファイルに AUTHENTICATION を CUSTOM に設定します。

[DEVICE_AUTHENTICATION] - 【郷土料理ものがたり】

AUTHENTICATION=カスタマイズ

  • ファイルを保存し、実行を開始するMQTTについてお問い合わせ

Retries カウントのリクエスト

サーバーに接続しようとすると、一部の接続 失敗はかもしれないです お問い合わせ これは、間違ったログイン資格情報を入力するためです。 その場合 カウント可能なレトリーの提供は有用です。 リクエストレトリー数を入力すると、 または追加できます。 ユーザの retries の試みを制限します。

拡張子/custom_authentication.py


# 認証サービス = "https://<auth_url>"
# リクエスト.adapters.DEFAULT_RETRIES = 3
#_timeout リクエスト = 0.1
#_auth リクエスト = "POST"

  • Bevywise/CrystalMQ/extensionsフォルダを開く
  • では、custom_authentication.py ファイルが開きます。 [Windowsユーザーの場合、どちらでもOK] Notepad や sublime を使ってファイルを開きます。
  • custom_authentication.py ファイルでは、必要に応じてリクエストエントリの数を入力します。
  • request.adapters.DEFAULT_RETRIES = 3 (デフォルトでは、値は3に設定されます)

URLリクエストの設定

認証ランディングページのURLを入力します。 ユーザ認証 試み ログイン認証情報に接続します。

custom_authentication.py ファイルに URL を指定します。

url = "https://www.bevywise.com/auth"

リクエストタイムアウト

アプリケーションが期限または間隔です。 クライアントからの応答を待ちます。 これらの値は秒単位で指定される または ミリ秒。

リクエストタイムアウトを設定するには、

拡張子フォルダーに custom_authentication.py ファイルを開き、入る timeout 値 与えられた空間で。

= 0.1リクエスト (デフォルトでは0.1の値を運ぶ)

リクエスト方法の選択

HTTPリクエストメソッドのセットがあります。 希望する方法を示すために、誰でも選択できます。

GET –データをリクエストする リクエスト リソース。

投稿 -メッセージの送信または公開 お問い合わせ 指定されたリソース。

パット –既存のものを交換する データ ターゲットリソース。


拡張子フォルダーに custom_authentication.py ファイルを開き、auth を入力します。 メソッド 与えられたスペース。


_auth_method リクエスト =「ポスト」


すべての設定を設定し、ファイルを保存し、実行を開始する ブローカー。


MQTTブローカーは、物事の完全なインターネットを提供しています アプリケーション。 それはユーザー インターフェイスのカスタム化を含んでいます、 データ集計・解析 また、イベントデータとの比較も可能 処理されたデータ。 このIoTアプリケーションフレームワークは、構築と管理を支援します産業IoT お問い合わせより速く。 また、プロセスを単一プロセス内ではるかに簡単にします。

ビルド済みの Python MQTT ブローカーの例

Python MQTT Brokerの統合例を使用する準備は、接続するのに役立ちます MQTTブローカーに 弾性検索、モンゴDB&Redis。 お問い合わせMQTT ダウンロード フリーダイヤルこれらをデプロイする サンプル 必要に応じてデータを保存します。 ダウンロードもできますプレビルドMQTTクライアントライブラリから。

python インターフェイスの例について詳しく知る:


MQTT から MongoDB

モンゴDBの 1 つ 最も広く使用される IoTデータ分析のためのドキュメントストレージエンジン。 このプラグインはBevywise MQTTを接続します MongoDBのブローカー。 受信したペイロードデータを、接続されたクライアントからMongoDBに保存することができます。 それは、 あなたを助けます 複雑なデータを簡単な方法で処理し、強力な解析を行います。 以下のドキュメント MongoDB で MQTT ブローカーの設定とセットアップ方法について説明します。

MQTTブローカーMongoDBコネクタの設定と設定


Bevywise Githubにアクセスして、Mqttroute-mongodb-connectorの使い方フォルダ。 それから 'mongo' フォルダを開き、'plugin.conf' ファイルを見ることができます。

1。 plugin.conf を開き、次の設定を行います。


  • MONGO セクションの MongoDB サーバーのホスト名とポート番号を更新
  • MQTT ブローカーで AUTHENTICATION が設定されている場合は、MongoDB を更新します。 認証情報 それ以外の設定 AUTHENTICATION_ENABLED=偽物。
  • 自分のフォルダの場所へのログファイルパスを更新します。 [デフォルト = Bevywise/CrystalMQ/拡張子].
プラグイン.conf

[モンゴ]

名前 = 127.0.0.1
ポート = 27017
DB_NAME = 同様に
コレクション=mqttroute
[お知らせ]
AUTHENTICATION_ENABLED = 偽物
# TRUE | バリュー
ユーザー名 = ルート
PASSWORD = ルート

[ログ]
LOG_FILE_PATHの特長 = ../拡張子/mongo.log


2。 フォルダmongoをコピーして貼り付けるBevywise/CrystalMQ/ファイル拡張子お問い合わせ


3。 フォルダプラグインをコピーします。 conf に貼り付けて Bevywise/CrystalMQ/拡張子。


4。 custom_store.py を置換する Bevywise/CrystalMQ/extensions/custom_store.py.


5。 Bevywise/CrystalMQ/conf/datastore.conf を開き、 DATA_INTEGRATION を更新します。 ログイン


6。 MQTTブローカーを起動し、すべてのペイロードを保存します お問い合わせ Mongo DBサーバー。


MQTT から Redis コネクタ

データベースでは、Redis コネクタはクラスタリングと 非破損した接続。 Redisでパスワードベースの認証のみがサポートされています コネクター。 このPython MQTTプラグインはMQTTブローカーとMQTTブローカーを接続しますレディスサーバ。 保存できる すべてのペイロードへ さらなる処理のためのRedisサーバー。

MQTT Broker Redisコネクタの設定と設定


1. と「custom_store.py」を取り替えて下さい Bevywise/CrystalMQ/lib/custom_store.py. ディレクティブ

2。 custom_store.py では、Redis のサーバー名とポートを変更します。 お問い合わせ 別のサーバーまたはポートでRedisを実行しています。

カスタム_store.py

redishost=ローカルホスト
レッドスポーツ=6379

3.Then、開いた Bevywise/CrystalMQ/conf/datastore.conf はコメントを受け付けていません。 DATA_INTEGRATION = TRUE を更新

4。 MQTTブローカーを開始します。 すべてのペイロードを保存し始めます お問い合わせ クライアントでRedisサーバー 鍵として Id_unixtime を実行します。

この包括的なガイドに従って、IoTアプリケーションの設計と開発を得意としています Python MQTT ブローカーのホックを使用して。 さらなるサポートやお問い合わせは、お気軽にお問い合わせください。チーム翻訳お問い合わせ

IoTアプリケーションの構築

スタートガイドをお探しですか? お問い合わせ