MQTT の紹介 MQTT (Message Queuing Telemetry Transport) は、IBM が開発したインスタント メッセージング プロトコルであり、モノのインターネットの重要な部分になる可能性があります。このプロトコルはすべてのプラットフォームをサポートしており、ほぼすべての接続オブジェクトを外部の世界に接続できます。センサーやアクチュエータの通信プロトコルとして使用されます(Twitter 経由で家をインターネットに接続するなど)。 DockerはRabbitMQをインストールし、MQTTを設定します MQTT サーバーとして RabbitMQ を使用し、クライアントとして Eclipse Paho を使用します。ホストシステムはUbuntu 16.04です Docker ダウンロードイメージ
RabbitMQを起動する docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 -p 1883:1883 -p 15675:15675 daocloud.io/library/rabbitmq:3.7.4 マッピングコンテナポートに注意してください
プラグインを有効にする デフォルトのインストール後、rabbitmq_management プラグイン、rabbitmq_mqtt プラグイン、rabbitmq_web_mqtt プラグインを手動で有効にする必要があります。 次の3つのコマンドを実行します docker exec <コンテナID> rabbitmq-plugins で rabbitmq_management を有効にする docker exec <コンテナID> rabbitmq-plugins enable rabbitmq_mqtt docker exec <コンテナID> rabbitmq-plugins enable rabbitmq_web_mqtt もちろん、start.shスクリプトを書いてコンテナにコピーすることもできます。 /usr/sbin/rabbitmq-plugins でrabbitmq_managementを有効にする /usr/sbin/rabbitmq-plugins でrabbitmq_mqttを有効にする /usr/sbin/rabbitmq-plugins でrabbitmq_web_mqtt を有効にする コンテナに入り、このスクリプトを実行します。 ホストポートを開く ファイアウォールコマンド --zone=public --add-port=15672/tcp --permanent ファイアウォールコマンド --zone=public --add-port=5672/tcp --permanent ファイアウォールコマンド --zone=public --add-port=1883/tcp --permanent ファイアウォールコマンド --zone=public --add-port=15675/tcp --permanent ファイアウォール-cmd --reload Python MQTTクライアント実装 Python パッケージをインストールする
データ送信デモ(消費者) # 使用する前に、hbase と thrift サーバーを起動する必要があります。# cd /usr/local/hbase bin/start-hbase.sh で hbase を起動します。デフォルトのポートは 60000 です。 # Thriftサーバーを起動します。cd /usr/local/hbase/bin execute ./hbase-daemon.sh start thrift デフォルトのポートは9090です。 インポートシステム インポートOS dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../' sys.path.append(dir_common) # 通常は共通フォルダを参照するためにシステムディレクトリにルートディレクトリを追加します import argparse # インポートログ インポート時間、日時 common.py_log から init_logger、init_console_logger をインポートします common.config からインポート * common.py_hbase から PyHbase をインポートします インポート時間、json common.py_rabbit から Rabbit_Consumer をインポートします paho.mqtt.client を mqtt としてインポートします。 インポート時間 ホスト = "192.168.2.46" ポート = 1883 client_loop() を定義します: client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます クライアント.on_connect = on_connect クライアント.on_message = on_message クライアント.connect(ホスト、ポート、60) クライアント.loop_forever() on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc): print("結果コード "+str(rc) で接続されました) クライアント.subscribe("テスト") on_message を定義します(クライアント、ユーザーデータ、メッセージ): print(msg.topic+" "+msg.payload.decode("utf-8")) __name__ == '__main__' の場合: クライアントループ() データ受信デモ(プロデューサー) インポートシステム インポートOS dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../' sys.path.append(dir_common) # 共通フォルダを参照するためにシステムディレクトリにルートディレクトリを追加します。通常は import paho.mqtt.client as mqtt インポート時間 ホスト = "192.168.2.46" ポート = 1883 client_loop() を定義します: client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます クライアント.on_connect = on_connect クライアント.on_message = on_message クライアント.connect(ホスト、ポート、60) クライアント.loop_forever() on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc): print("結果コード "+str(rc) で接続されました) クライアント.subscribe("テスト") on_message を定義します(クライアント、ユーザーデータ、メッセージ): print(msg.topic+" "+msg.payload.decode("utf-8")) __name__ == '__main__' の場合: クライアントループ() プロデューサーデモ # paho.mqtt.client を mqtt としてインポートします paho.mqtt.publish を publish としてインポートします。 インポート時間 ホスト = "192.168.2.46" ポート = 1883 on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc): print("結果コード "+str(rc) で接続されました) クライアント.subscribe("テスト") on_message を定義します(クライアント、ユーザーデータ、メッセージ): print(msg.topic+" "+msg.payload.decode("utf-8")) __name__ == '__main__' の場合: client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())) # client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します# client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます # クライアント.on_connect = on_connect # クライアント.on_message = on_message # client.connect(ホスト、ポート、60) # client.publish("test", "Hello MQTT", qos=0, preserve=False) # メッセージをパブリッシュ publish.single("test", "Hello MQTT", qos = 1, hostname=HOST, port=PORT, client_id=client 公式ドキュメント: 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: ドロップダウンメニュー効果を実現するJavaScript
(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...
<br />HTML 言語では、タグを使用してテーブルにタイトルを自動的に追加できます。...
この記事は主にSQLシリアル番号取得コード例を紹介します。記事ではサンプルコードを詳細に紹介しており...
目次シンボルデータタイプシンボルが表示される理由シンボルの特徴シンボルの応用rbオブジェクトにupメ...
目次1. binlogの3つのモード1.ステートメントレベルモード2. 行レベルモード3. 混合モー...
ユーザーを作成します: 'oukele' によって識別されるユーザー 'ou...
1. 分析的思考1. 機械自身の理由を排除する2. サーバーパフォーマンス分析3. プロジェクト自体...
まずコードファイルの構造を見てみましょう。エントリファイル (index1.js) の内容: ...
目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...
123WORDPRESS.COM では、さまざまな環境での MYSQL の他のバージョンのインストー...
1. はじめにSupervisor は Python で開発された汎用プロセス管理プログラムです。通...
stat 関数と stat コマンドLinux ファイル内の [inode = インデックス ノード...
Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...
1. 基本環境1. オペレーティングシステム: CentOS 7.3 2. MySQL: 8.0.1...
序文コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイル...