## 參考資料 [[Node-RED] 安裝 MQTT 伺服器](http://blog.3dgowl.com/node-red-%E5%AE%89%E8%A3%9D-mqtt-%E4%BC%BA%E6%9C%8D%E5%99%A8/) [如何將連接埠新增至 Windows 防火牆 的例外清單?](https://helpcenter.trendmicro.com/zh-tw/article/tmka-08206) [阿好伯陪你一起玩 Node-Red 與 MQTT相關資料](https://hackmd.io/@LHB-0222/AHB0901) ## Install mosquitto [mosquitto download](https://mosquitto.org/download/) ### Enable mosquitto 啟用 Mosquitto,並確認狀態為執行中。 ![螢幕擷取畫面 2024-08-17 140051](https://hackmd.io/_uploads/ByHRh3TcA.png) ### 防火牆建立白名單 * MQTT 伺服器啟動後,會使用網路的「1883」通訊埠進行通訊。 * Windows 的防火牆預設是沒有開通 1883 埠,所以本機以外的通訊設備無法和 Mosquitto 伺服器連線。所以需要開通防火牆的 1883 埠。 * 開啟"防火牆與網路保護",並點選"進階設定",開啟"具有進階安全性的 Windows Defender 防火牆"。點選"輸入規則"來"新增規則"。 ![螢幕擷取畫面 2024-08-17 141641](https://hackmd.io/_uploads/HJltG6a9A.png) * 輸入連接埠1883 ![螢幕擷取畫面 2024-08-17 141716](https://hackmd.io/_uploads/SJn3G6T9R.png) * 建立完成 ![螢幕擷取畫面 2024-08-17 141759](https://hackmd.io/_uploads/Byiaz6pqA.png) ### 測試伺服器運作狀態 以管理者身分開啟兩個「終端機命令視窗」,並進入 mosquitto 資料夾。 ``` C:\Program Files\mosquitto ``` 在其中一個終端機命令視窗輸入「mosquitto_sub -t topicTest」模擬訂閱「topicTest」主題。 ``` mosquitto_sub -t topicTest ``` 在另一個終端機命令視窗輸入「mosquitto_pub -h 127.0.0.1 -p 1883 -t topicTest -m “Hello World!!!”」。此時,在第一個終端機命令視窗(訂閱者)的畫面上,會出現(收到)發布者傳來的訊息。 ``` mosquitto_pub -h 127.0.0.1 -p 1883 -t topicTest -m “Hello World!!!” ``` ![螢幕擷取畫面 2024-08-17 152334](https://hackmd.io/_uploads/BJoql0aq0.png) ### 查找說明文件 ``` mosquitto –help mosquitto_sub --help ``` ![螢幕擷取畫面 2024-08-17 152731](https://hackmd.io/_uploads/BJLgWAT9R.png) ### 啟用Log * 開啟 mosquitto 目錄下 mosquitto.conf 檔案 ![螢幕擷取畫面 2024-08-17 205533](https://hackmd.io/_uploads/ryK0af090.png) * 新增以下配置 ``` log_type all log_dest file C:/path/to/logfile.log ``` ![螢幕擷取畫面 2024-08-17 205716](https://hackmd.io/_uploads/H1WBRGR90.png) * 重新啟用 Mosquitto ``` net stop mosquitto net start mosquitto ``` ![螢幕擷取畫面 2024-08-17 205837](https://hackmd.io/_uploads/HkaKCfR5C.png) ## Publish MQTT Server ### Install Node.js [Node.js](https://nodejs.org/en/) ### 版本確認 啟動Node.js command prompt輸入以下指令 ``` node --version && npm --version ``` ### Install Node-Red ``` npm install -g --unsafe-perm node-red ``` ### 執行 Node-Red ``` node-red ``` ![螢幕擷取畫面 2024-08-17 153441](https://hackmd.io/_uploads/S1k0fRpc0.png) ### 開啟 Node-Red 開啟瀏覽器,輸入以下網址。 http://127.0.0.1:1880/ ![螢幕擷取畫面 2024-08-17 153653](https://hackmd.io/_uploads/rkn770pqA.png) ### Install MQTT Broker Libary ``` node-red-contrib-mqtt-broker ``` 開啟節點管理 ![螢幕擷取畫面 2024-08-17 153922](https://hackmd.io/_uploads/Byq8sA650.png) ![螢幕擷取畫面 2024-08-17 154113](https://hackmd.io/_uploads/HkfHiCTcA.png) ### 測試MQTT Server 依序將模組清單內的「mqtt in」、「debug」、「inject」、「mqtt out」等節點拖拉到流程視窗上。 #### mqtt in 設定 ![螢幕擷取畫面 2024-08-17 162656](https://hackmd.io/_uploads/SkaObJCcR.png) #### MQTT Server設定 於mqtt in或mqtt out模組內,點擊服務端(Server)新增鈕後編輯。 * 連接設定 ![螢幕擷取畫面 2024-08-17 155012](https://hackmd.io/_uploads/r1lERCTcR.png) * 消息設定 ![螢幕擷取畫面 2024-08-17 155028](https://hackmd.io/_uploads/HylobkA9A.png) #### inject 設定 ![螢幕擷取畫面 2024-08-17 155224](https://hackmd.io/_uploads/SyIR-105C.png) #### mqtt out 設定 ![螢幕擷取畫面 2024-08-17 155354](https://hackmd.io/_uploads/rJE7G1RqR.png) #### 部屬 將「mqtt in 」節點與「debug」節點連結起來,將「inject」節點與「mqtt out」節點連結起來。點擊「部署」按鈕。「mqtt in 」節點及「mqtt out」節點下方出現「已連接」,表示 MQTT 伺服器連線成功。連線成功後,在 debug 視窗會出現「Hi, Node-RED, 123」,如果按下「inject」前面的方塊,則會出現「再次發訊息」(或是您輸入的訊息內容)。 ![螢幕擷取畫面 2024-08-17 160438](https://hackmd.io/_uploads/SyALM1R5C.png)