EMQがKafkaに沈むIoTデータ収集を実現

ソフトウェア要件:

EMQ Enterprise Editionを使用する必要がある

シーンの要件:

モノのインターネットプラットフォームは、スマートトランスフォーマー収集デバイスによって収集されたデータにアクセスし、MQTTプロトコルに基づいてサーバーのMQ(EMQ)にデータを転送する必要があります。EMQはデータをKafkaクラスターに転送し、sparkStreamingはリアルタイム分析と処理のためにKafkaに接続します。

準備オーケー:

  • アップロードデータの準備:
{
    
    
  "id": "NXP-058659730253-963945118132721-22", // 客户端识别码
  "speed": 32.12, // 车辆速度
  "direction": 198.33212, // 行驶方向
  "tachometer": 3211, // 发动机转速,数值大于 8000 时才需存储
  "dynamical": 8.93, // 瞬时油耗
  "location": {
    
     // GPS 经纬度数据
    "lng": 116.296011,
    "lat": 40.005091
  },
  "ts": 1563268202 // 上报时间
}
  • Kafkaトピックを作成
./kafka-topics.sh --create --partitions 3 --replication-factor 2 --topic emqtopic --zookeeper node01:2181,node02:2181,node03:2181

設定手順:

  • リソースを作成する
    EMQ Xダッシュボードを開き、左側のメニューにあるリソースページに入り、[新規]ボタンをクリックし、Kafkaサーバー情報を入力してリソースを作成します。
    ここに画像の説明を挿入
    EMQ Xクラスター内のノードのネットワーク環境は互いに異なる場合があります。リソースが正常に作成されたら、リストのステータスボタンをクリックして、各ノードのリソース接続ステータスを確認します。ノード上のリソースが使用できない場合は、構成が正しいかどうか、ネットワーク接続を確認して、クリックしてください手動で再接続するための接続ボタン。
    ここに画像の説明を挿入

  • ルールの作成
    左側のメニューのルールページに移動し、[新規]ボタンをクリックしてルールを作成します。ここでは、イベントメッセージの解放をトリガーすることを選択し、メッセージが解放されたときにデータ処理のルールをトリガーします。
    トリガーイベントを選択すると、オプションのフィールドとサンプルSQLがインターフェイスに表示されます。
    ここに画像の説明を挿入

  • 必須フィールドのフィルタリング
    ルールエンジンは、SQLメッセージを使用して、ターミナルメッセージや接続イベントなどを処理/整数化します。このビジネスでは、ペイロードのキーフィールドをフィルターで除外するだけで使用できます。これを行うには、payload。形式を使用して、ペイロードのフィールドを選択できます。さらに、ペイロードのコンテンツに加えて、メッセージのID情報を保存する必要があります。SQLは次の形式で構成できます。

SELECT
  payload.id as client_id, payload.speed as speed, 
  payload.tachometer as tachometer,
  payload.ts as ts, id
FROM
  "message.publish"
WHERE
  topic =~ 't/#'

  • 出力テストにSQLテスト関数を使用します。SQLテスト関数を使用すると
    、現在のSQL処理後のデータ出力をリアルタイムで表示できます。この関数では、ペイロードと他のシミュレートされた生データを指定する必要があります。
    ペイロードデータは次のとおりです。SQL条件を満たすためにタコメーターの値を変更することに注意してください。
{
    
    
  "id": "NXP-058659730253-963945118132721-22",
  "speed": 32.12,
  "direction": 198.33212,
  "tachometer": 9001,
  "dynamical": 8.93,
  "location": {
    
    
    "lng": 116.296011,
    "lat": 40.005091
  },
  "ts": 1563268202
}

SQLテストスイッチボタンをクリックして、トピックとペイロードをシーン内の情報に変更し、テストボタンをクリックしてデータ出力を表示します。
ここに画像の説明を挿入
テスト出力データは次のとおりです。

{
    
    
  "client_id": "NXP-058659730253-963945118132721-22",
  "id": "589A429E9572FB44B0000057C0001",
  "speed": 32.12,
  "tachometer": 9001,
  "ts": 1563268202
}
  • 応答アクションを追加し、メッセージをKafka
    SQL条件付き入力および出力にブリッジした後、対応するアクションを追加し、記述されたSQLステートメントを構成し、スクリーニング結果をKafkaにブリッジします。
    応答アクションの[追加]ボタンをクリックし、Kafkaアクションへのブリッジデータを選択し、選択したばかりのリソースを選択して、上記で作成したKafkaトピックのemqtopicに入力します。
    ここに画像の説明を挿入

テスト

ダッシュボードのWebsocketツールを使用してテストします。
[ツール]-> [Websocket]ページに切り替え、任意の情報クライアントを使用してEMQ Xに接続し、接続が成功したら次の情報をメッセージカードに送信します。

{
    
    
  "id": "NXP-058659730253-963945118132721-22",
  "speed": 32.12,
  "direction": 198.33212,
  "tachometer": 8081,
  "dynamical": 8.93,
  "location": {
    
    
    "lng": 116.296011,
    "lat": 40.005091
  },
  "ts": 1563268202
}

ここに画像の説明を挿入
送信ボタンをクリックし、Kafkaコマンドを使用してメッセージが正常に生成されたかどうかを確認します。これ
ここに画像の説明を挿入
までのところ、ルールエンジンを使用して、ルールエンジンを介してメッセージをKafkaにブリッジするビジネス開発を実現しました。

おすすめ

転載: blog.csdn.net/weixin_44455388/article/details/108253441