[fly-iot Feifan IoT] (16): オープンソース IOT モノのインターネット プロジェクトが Emqx の MQTT サービスに接続し、MySQL データベース認証を構成しました。それでも非常に便利です。WebSocker を使用して接続してテストできます。

序文


fly-iot Feifan IoT コラム:
https://blog.csdn.net/freewebsys/category_12219758.html

1. ビデオデモンストレーションアドレス


https://www.bilibili.com/video/BV1JG411B7ty/

[fly-iot] (5): オープンソース IOT モノのインターネット プロジェクトは、Emqx の MQTT サービスに接続し、MySQL データベース認証を構成するのに非常に便利です。WebSocker を使用して接続してテストできます。

ここに画像の説明を挿入します

2. まずデータベース接続認証方法を設定します。


接続されました。これは、データベースのパスワードが正しく構成されていることを意味します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

最も重要なのは、この認証クエリ SQL です。MySQL のクエリは次のとおりです。

SELECT token as password_hash FROM devices where 
 `deviceUsername` = ${username} AND  blocked = 0 LIMIT 1

3. IoT プラットフォーム上にデバイスを作成する

ここに画像の説明を挿入します

その後、ツールでテストできます。

ここに画像の説明を挿入します

無事接続できました。次に、サブスクリプションがテストされ、メッセージが送信されました。

4. docker-compose での設定

docker-compose コード全体:
https://gitee.com/fly-iot/docker-compose

...
################## emqx latest 版本 ##################
  emqx:
    image: emqx/emqx:latest
    container_name: emqx
    environment:
    - "[email protected]"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=[[email protected]]"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
    volumes:
       - ./emqx/cluster.hocon:/opt/emqx/data/configs/cluster.hocon
    depends_on:
      - mysql-iot

構成メソッドを使用できるため、構成のためにインターフェイスにログインする必要はありません。
管理バックグラウンドは後で閉じることができます。設定ファイルを直接使用する方が安全です。

cluster.hocon の設定ファイル

authentication = [
  {
    
    
    backend = mysql
    database = fly_iot
    enable = true
    mechanism = password_based
    password = mysqliot
    password_hash_algorithm {
    
    name = plain, salt_position = disable}
    pool_size = 8
    query = "SELECT token as password_hash FROM devices where \n `deviceUsername` = ${username} AND  blocked = 0 LIMIT 1"
    query_timeout = 5s
    server = "mysql-iot:3306"
    ssl {
    
    
      ciphers = []
      depth = 10
      enable = false
      hibernate_after = 5s
      log_level = notice
      reuse_sessions = true
      secure_renegotiate = true
      verify = verify_peer
      versions = [tlsv1.3, tlsv1.2]
    }
    username = root
  }
]

設定ファイルを用意するだけです。

5. まとめ

emqx を使用して mqtt サービスを提供すると非常に便利です。
認証では、データベースに直接クエリを実行します。したがって、バックグラウンド システムが Python であるか golang であるかは関係ありません。
emqx サーバーと mysql データベースに負荷がかかります。

おすすめ

転載: blog.csdn.net/freewebsys/article/details/135433773