之前做MQTT專案,現把測驗環境搭建記錄一下,
物聯網設備很多會用到MQTT協議,我們的專案也用到了,需要把訊息報警資料通過MQTT協議上傳到第三方平臺,設備端只要用到publish協議即可,但是,設備端程式開發完成后,需要自行測驗通過后,才能與第三方平臺對接,這樣提高對接效率,
MQTT服務端采用mosquitto,先到mosquitto官方網站下載安裝程式和原始碼,
Eclipse Mosquitto
最初,我們選擇Windows安裝包,安裝完成后,在安裝目錄雙擊mosquitto.exe,把服務端運行起來,默認埠1883,安裝目錄還有另外兩個測驗程式,mosquitto_pub和mosquitto_sub,這兩個程式需要通過命令列來運行,然后,通過mosquitto_pub程式發布訊息,mosquitto_sub訂閱訊息,mosquitto_sub能收到訊息,看起來一切正常,
但是,mosquitto_pub 加引數-P 密碼運行的時候,提示測驗程式不支持密碼模塊,mosquitto_sub也有同樣的問題,我們對接第三方是要密碼認證的,由于下載的是安裝包程式,沒有辦法,通過原始碼在Linux平臺上編譯吧,
把原始碼解壓,到解壓目錄,直接make,過一會說找不到cjson頭檔案,怎么需要cjson呢,有點奇怪,然后在代碼根目錄找到README-compiling.md,里面說cjson是可選的,然后找到config.mk,搜索CJSON的行,把yes改為no,再make,編譯OK,測驗程式生成在client目錄下,
編譯出來的測驗程式支持密碼引數的,通過Linux的mosquitto_pub程式,發布到Windows的服務端,死活連不上,但是可以ping通,有點奇怪,然后,直接telnet 到Windows的1883埠,也不行,那說明不是測驗程式問題,Windows本地可以連,說明是listen的時候系結的回環地址,查看,資源管理器,果然是bind了回環地址,
修改安裝目錄下的組態檔mosquitto.conf,搜索listener,然后增加一句 listener 埠 IP,重新運行mosquitto,通過Linux測驗程式,可以連接上了,但是,加了-P引數,提示報錯,拒絕連接,網上搜了一下,需要配置用戶和密碼,
找到安裝目錄下mosquitto_passwd.exe,通過mosquitto_passwd.exe生成密碼檔案,publish和sub都一起生成了,注意,下面那行不要帶-c引數,否則會重新生成pwfile檔案,分別輸密碼就可以了,
mosquitto_passwd.exe -c pwfile pub_user
mosquitto_passwd.exe pwfile sub_user
密碼檔案生成后,打開組態檔,找到password_file這行, 增加一行 password_file pwfile,保存,重新運行服務端程式,Linux 測驗程式pub和sub都可以發布和訂閱訊息了,測驗環境搭建完成,板子就可以與服務端除錯了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/348489.html
標籤:其他
