Python MQTTの特長 ブローカー中心はあります 交換するMQTT実装 フィールドにデプロイされた複数の MQTT クライアント間でのデータと通信が起こる 無線LAN、GSMまたは他の接続方法に。 クリスタルMQMQTT サーバーCを使用してビルド お問い合わせ 最高性能。 しかし、ビジネスニーズに基づいて、Pythonベースのインターフェースを追加しました。 MQTT Server では、実装が事業の達成のためにそれを拡張できるようにします。 目標。 ブローカーの背後にある直接的なインターフェイスが行われるため、 サブスクリプションによるアプリケーションの構築は、IoTの実装規模や 帯域幅の最適化
このドキュメントは、計画している開発者のための包括的なガイドです IoT アプリケーションの構築Python MQTTの特長 ブローカーのホックお問い合わせ お問い合わせ 完全なビジネスを造ることができる 貯蔵、AI/MLの統合のために設計されているこれらのインターフェイスが付いているブローカー上のIoTの適用、 認証ホック、データ分析、ユーザーインターフェイスビルダーを実行するためのスケジュール。 このドキュメントに基づいて、MQTT アプリケーションを 1 日に作成します。
Bevywise MQTT(ビービービーワイズ) ブローカーは、公開とpython / Cベースのミドルウェアです サインアップ アーキテクチャ。 それは完全なサポートを提供しますMQTTの特長 プロトコルお問い合わせ 開発者は Python の ホックへ 実装を拡張するためのインターフェイスを有効にします。 インターフェイスは複雑なビルドに使用できます IoTアプリケーション クリスタル MQはデフォルト記憶装置、ユーザー インターフェイス、規則エンジン、等と来ます、 しかし、IoT/IIoT実装の利便性のため、 エクステンションはMQTT Brokerの周りのカスタマイズと構築のために提供されました。
提供されている現在の拡張性オプションは次のとおりです。
Python MQTT Brokerのホックをカスタマイズする方法の詳細 目標はさらに詳しく説明します。
MQTTブローカーストレージのデフォルトでは、いくつかのデータベースをサポートしています。 データはあらかじめ定義された形式で保存されます。 リレーショナルデータベース 以下は、サポートされているデータベースのリストです。
これらを有効にすることができますIoTデータストレージ単一行のないオプション インフォメーション コード。 これらのオプションを有効にすることができます。conf/datastore.conf とデータストア
カスタムデータ ストレージを使用すると、ユーザーは独自のデータベースを選択することができます 応募者 データベースを選択することに加えて、データベースをカスタマイズすることができます データ形式だけでなく、データストア.confファイル。 次のセクション データストレージの設定方法を説明します。
[カスタマイズ]
DATA_INTEGRATION = 取引
# TRUE | バリュー
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 ブローカーとの緊密な統合を可能にします。
def setwebsocketport(conf):
グローバル web_socket
web_socket=conf["websocket"] は、
カスタム設定後MQTTデータ ストレージ、受け取ります python メッセージ python ファイルのコールバック関数。 これらのコールバック関数はメソッドに使用されます。on_message_received_hook(データ)。
実装は、データを受信して保存し、返す必要があります お問い合わせ メソッド。 別のスレッドでデータ分析を行う必要があります。
既に取得済みのデータが処理されると、AIとMLが向上 最善を尽くします。 Scheduling モジュールは、期間にわたるデータの処理に役立ちます。 カスタム スケジューラがお手伝いします 独自のMQTTブローカーのスケジュールを作成します。 これは、サーバー側で独自のコードを追加できるようにすることで、データを集計するのに役立ちます。
例えば、水位を自宅で確認することを検討してください。 ザ・オブ・ザ・ カスタムスケジューラは、タンク内の水位の状態をチェックするためにリマインダーを設定するのに役立ちます。
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, スケジュール
UIカスタムサーバーは、ユーザーをカスタマイズするオプションを提供します インターフェイス。 によって デフォルトでは、MQTTブローカーは豊富なウィジェットでカスタムダッシュボードオプションが付属しています。 これらのウィジェットは、視覚化するのに役立ちます ユーザーが必要とする方法でデータ。 しかし、高度な&高レベルのIoT / IIoT用のUIをカスタマイズする 実装、カスタムUIサーバーは、適切なオプションになります。 独自のコードを追加できます サーバ側。 これにより、UIをカスタマイズできます。MQTT サーバーお問い合わせ ストレートフォワード。 お問い合わせ 変更する custom_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}")
CrystalMQサポート複数のMQTT 認証機能性。 オプションの1つ 支えられるMQTTの証明は注文のホックです、 プロバイダーを選ぶことができます。 アクセス管理(IAM)を識別するか、 SSO または LDAP または MQTT Python インターフェイスを使用して呼び出すことができるもの。
################################################################################################################################################################################################################################################################
[DEVICE_AUTHENTICATION] - 【郷土料理ものがたり】
AUTHENTICATION=カスタマイズ
# ディザブル ||デファルト ||カスタム
# DISABLED: MQTT デバイスは、接続中にユーザー名とパスワードを送信する必要はありません。
# DEFAULT: MQTT デバイスは、ユーザー名とパスワードの認証情報を送信する必要があります。 認証情報を追加
UI経由で。
ブローカーによって認証が確認されます。
# カスタマイズ: MQTT デバイスは、ユーザー名とパスワードを送信する必要があります。 認証は検証できません。
ブローカー。
CUSTOM_AUTHENTICATION_FILEPATH(カスタマイズ) = ././拡張子/custom_authentication.py
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # AUTHENTICATION = カスタマイズ時のみ使用
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # "custom_authenticate()" という Python メソッドでカスタム認証を実行し、
設定する
ここでファイルパス。
[DEVICE_AUTHENTICATION] - 【郷土料理ものがたり】
AUTHENTICATION=カスタマイズ
サーバーに接続しようとすると、一部の接続 失敗はかもしれないです お問い合わせ これは、間違ったログイン資格情報を入力するためです。 その場合 カウント可能なレトリーの提供は有用です。 リクエストレトリー数を入力すると、 または追加できます。 ユーザの retries の試みを制限します。
# 認証サービス = "https://<auth_url>"
# リクエスト.adapters.DEFAULT_RETRIES = 3
#_timeout リクエスト = 0.1
#_auth リクエスト = "POST"
認証ランディングページの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 Brokerの統合例を使用する準備は、接続するのに役立ちます MQTTブローカーに 弾性検索、モンゴDB&Redis。 お問い合わせMQTTをダウンロード ブローカー フリーダイヤルこれらをデプロイする サンプル 必要に応じてデータを保存します。 ダウンロードもできますプレビルドMQTTクライアントライブラリから。
python インターフェイスの例について詳しく知る:
モンゴDBの 1 つ 最も広く使用される IoTデータ分析のためのドキュメントストレージエンジン。 このプラグインはBevywise MQTTを接続します MongoDBのブローカー。 受信したペイロードデータを、接続されたクライアントからMongoDBに保存することができます。 それは、 あなたを助けます 複雑なデータを簡単な方法で処理し、強力な解析を行います。 以下のドキュメント MongoDB で MQTT ブローカーの設定とセットアップ方法について説明します。
Bevywise Githubにアクセスして、Mqttroute-mongodb-connector の使い方フォルダ。 それから 'mongo' フォルダを開き、'plugin.conf' ファイルを見ることができます。
1。 plugin.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サーバー。
データベースでは、Redis コネクタはクラスタリングと 非破損した接続。 Redisでパスワードベースの認証のみがサポートされています コネクター。 このPython MQTTプラグインはMQTTブローカーとMQTTブローカーを接続しますレディスサーバ。 保存できる すべてのペイロードへ さらなる処理のためのRedisサーバー。
1. と「custom_store.py」を取り替えて下さい Bevywise/CrystalMQ/lib/custom_store.py. ディレクティブ
2。 custom_store.py では、Redis のサーバー名とポートを変更します。 お問い合わせ 別のサーバーまたはポートでRedisを実行しています。
redishost=ローカルホスト
レッドスポーツ=6379
3.Then、開いた Bevywise/CrystalMQ/conf/datastore.conf はコメントを受け付けていません。 DATA_INTEGRATION = TRUE を更新
4。 MQTTブローカーを開始します。 すべてのペイロードを保存し始めます お問い合わせ クライアントでRedisサーバー 鍵として Id_unixtime を実行します。
この包括的なガイドに従って、IoTアプリケーションの設計と開発を得意としています Python MQTT ブローカーのホックを使用して。 さらなるサポートやお問い合わせは、お気軽にお問い合わせください。チームへの参加お問い合わせ