# MQTT互連 ###### tags: `自主學習` ## 設備連到同一子網域 - 網路必須連到同一個子網域才能互連 - 學校的WiFi是全網域,就算每人都用 NCNU(Web login) 有可能到不同子網域 ![](https://i.imgur.com/SSHHQpb.png) - 連到同一子網域的方法(目前知道)有 2 種: - 透過分享器 (我們用 [TOTOLINK 路由器](https://24h.pchome.com.tw/prod/DRAF5L-A9006SM1T)) ![](https://i.imgur.com/rrU5E2K.png =400x) - 透過 vpn ![](https://i.imgur.com/sJR9FXe.png =400x) > 手機熱點分享也是一種子網域,它的全網域是某某電信的基地台 - 確認網域:`網路` > 現在連線中的網路 > `內容` ![](https://i.imgur.com/W7st9uB.png =400x) - IPv4 DNS 伺服器就是網域,在這裡是 192.168.10.254 搜尋它會進入 TOTOLINK 的網頁(後台?),輸入帳號密碼後可以查看連到此網域的所有裝置名稱 - IPv4 位址是電腦IP,也可以在 cmd 用下面一段指令查詢 ```shell= ipconfig ``` > 進入 NCNU(Web login) 的 IPv4 DNS 會出現: > ![](https://i.imgur.com/CjENp3h.png =200x) 或 ![](https://i.imgur.com/3ZXupEa.png =200x) ## 設定連線到 server - ** client端**在 MQTTlens 設定連結中 **Hostname(主機名稱)** 改成 server 的 IP ![](https://i.imgur.com/BLMNrKM.png) ## 困難 - mosquitto 在 2.0 版本後 (現在是 2.0.1 版),client 必須完成**管理員**才能連進 server 端 - 先進到mosquitto 資料夾 輸入以下指令 ```shell= mosquitto -v ``` ![](https://i.imgur.com/Y7YQ1k1.png) 文件:https://mosquitto.org/documentation/authentication-methods/ - 解決的方法有 3 種: - 設定密碼 - 安裝插件 - 關掉這個功能 (用這個) - 方法:**server端**以管理員身分修改mosquitto.conf - mosquitto.conf 在C:\Program Files\mosquitto - 在檔案中將allow_anonymous註解拿掉並改成true ```shell= listener 1883 allow_anonymous true ``` > 如果不能修改,先到 `內容` > `一般` > `進階` > 取消勾選`檔案屬性`的選項 > ![](https://i.imgur.com/Hbxfog2.png =400x) ## 其他 - 不確定 server端改設定 ![](https://i.imgur.com/phPfTTx.png =300x) ![](https://i.imgur.com/VxCAXsF.png =300x) - 若不要用 MQTTlens 傳送資料,要用 cmd 下指令傳送資料,可以查看說明文件 ```shell= mosquitto_pub.exe ``` - 把query C# -> 連線 - 可以將之前座的東西透過C#連線到MQTT # 程式碼 [實作code source](https://github.com/xamarin/mqtt)