MQTT互連

tags: 自主學習

設備連到同一子網域

  • 網路必須連到同一個子網域才能互連
  • 學校的WiFi是全網域,就算每人都用 NCNU(Web login) 有可能到不同子網域
  • 連到同一子網域的方法(目前知道)有 2 種:

    手機熱點分享也是一種子網域,它的全網域是某某電信的基地台

  • 確認網域:網路 > 現在連線中的網路 > 內容
    • IPv4 DNS 伺服器就是網域,在這裡是 192.168.10.254 搜尋它會進入 TOTOLINK 的網頁(後台?),輸入帳號密碼後可以查看連到此網域的所有裝置名稱
    • IPv4 位址是電腦IP,也可以在 cmd 用下面一段指令查詢
      ​​​​ipconfig

    進入 NCNU(Web login) 的 IPv4 DNS 會出現:

設定連線到 server

  • ** client端**在 MQTTlens 設定連結中 Hostname(主機名稱) 改成 server 的 IP

困難

  • mosquitto 在 2.0 版本後 (現在是 2.0.1 版),client 必須完成管理員才能連進 server 端
  • 先進到mosquitto 資料夾 輸入以下指令
    ​​​mosquitto -v

    文件:https://mosquitto.org/documentation/authentication-methods/
  • 解決的方法有 3 種:
    • 設定密碼
    • 安裝插件
    • 關掉這個功能 (用這個)
  • 方法:server端以管理員身分修改mosquitto.conf
    • mosquitto.conf 在C:\Program Files\mosquitto
    • 在檔案中將allow_anonymous註解拿掉並改成true
    ​​​ listener 1883 ​​​ allow_anonymous true

如果不能修改,先到 內容 > 一般 > 進階 > 取消勾選檔案屬性的選項

其他

  • 不確定 server端改設定
  • 若不要用 MQTTlens 傳送資料,要用 cmd 下指令傳送資料,可以查看說明文件
    ​​mosquitto_pub.exe
    • 把query C# -> 連線
    • 可以將之前座的東西透過C#連線到MQTT

程式碼

實作code source