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 = { urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls_info = urls = urls_info = urls = urls_info = urls_info = urls = urls_info = urls_info = urls = urls = urls = urls_info = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls = urls urls = urls urls = urls urls urls urls urls urls urls urls urls urls urls urls urls url
"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

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # AUTHENTICATION = カスタマイズ時のみ使用
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # "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アプリケーションの構築

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