程式設計師離不開命令列,許多經典命令是每天必用的,比如ls
和 cd
。
作為一個物聯網開發和學習人員,IoT裝置協議的測試聯調是工作中很重要的一環!我有很多時刻都想擁有一個能整合常見物聯網協議的客戶端工具可供使用。經過我一通查詢,發現和我擁有相同問題的人不在少數。
不僅僅是IoT開發者,包括雲廠商、網路運營商都有相同煩惱:
- 開源物聯網平臺Thingsboard: coap -> coap.js(需要安裝node);
- 移動OneNET平臺: mqtt -> mqtt.fx(幾年沒更新了);
- 電信AEP平臺:自定義TCP協議 -> sokit工具(只支援windows);
- 阿里雲物聯網平臺: Nb-IoT協議 -> 需要到電信或移動平臺上進行測試;
各大雲廠商支援多種協議的裝置接入,但是沒有統一好用的支援多平臺的測試工具!而開發者在日常開發和除錯過程中,因自身技術能力的侷限,無法短時間找到/開發出一個好用的IoT協議除錯工具。
我們希望這個客戶端工具有以下特點:
- 具備MQTT、CoAP和NB-IoT等多種協議測試和Debug能力,不僅僅侷限於單一協議,畢竟物聯網行業協議碎片化嚴重;
- 在記憶體佔用上:我希望這個軟體不要佔用太多記憶體空間。市面上很多采用electron開發的客戶端軟體動不動高達300M,此時我相信大家也是相對無語?的,但是沒有可替代方案,不得不吃下這坨熱乎的xiang!
- 此軟體最好是支援國際化的,在做裝置協議聯調和開發中;如果我發現了問題,在如今這個國際化跨團隊的開發模式下,我希望我咖哩味英語同事和我傲慢的大鼻子同事用這個軟體能復現問題。
- 在使用和便捷性上,我希望它更現代化,提供自動補全且顏色輸出好看,減少我的認知負荷。
Toolkit 緣起
去年我在公司負責了一個混合雲專案的裝置接入,在該專案中充斥著大量Nb-IoT協議(電信AEP平臺和移動OneNET平臺)的燃氣裝置,數量在500萬左右的量級,和不同的非標的自定義TCP/IP協議裝置。
從杭州出差 站在深圳灣公園觀看著遠處的香港,讓我重新想起了上面開發者和我自己遇到的這些問題。經過大半年的嘔心瀝血,我開發了 Toolkit
IoT協議命令列工具。在塗鴉智慧內部和這個大型混合雲專案中都經過了驗證,得到了客戶和公司的開發人員的認可。同時我也想將這個工具介紹給大家,幫助大家解決上面的煩惱。
IoT-Toolkit 工具箱
官網地址: https://iot.mushuwei.cn/#/toolkit
GitHub: https://github.com/IoT-Technology/IoT-Toolkit
功能特性
- ?整合多種IoT協議,支援MQTT、CoAP和NB-IoT協議,未來會支援更多協議,更詳細的協議列印資訊;
- ?多作業系統支援,可在linux、unix和windows等作業系統中執行;
- ??多語言配置,中文、英文、德語和法語支援;
- ?ANSI顏色和樣式, 使命令輸出看起來好看,將重要元素與其餘部分進行對比;
- ?現代化的設計,提供自動補全,使用者互動良好且易於操作;
- ?低記憶體佔用和更快的啟動速度使用GraalVM的AoT技術執行避免JIT的CPU開銷,使用native image,提供更快的vm效能和啟動速度,無需依賴任何執行環境;
安裝方式
Windows
使用 Chocolatey 安裝, 請看安裝教程
choco install toolkit
macOS
使用 brew 安裝
brew install iot-technology/tap/toolkit
Linux & macOS
sdk install toolkit
你也可以直接下載安裝包,解壓安裝
Platform | Toolkit |
---|---|
Linux-x86_64 | toolkit-latest-linux-x86_64.zip |
Linux-arm64 | toolkit-latest-linux-aarch_64.zip |
Unix | toolkit-latest-osx-x86_64.zip |
Windows | toolkit-latest-windows-x86_64.zip |
IoT-Toolkit使用教程
多語言設定
Toolkit 預設為英語,以下操作可以將語言設定切換為中文
toolkit config -l=zh
• zh=中文
• en=英語
• de=德語
• fr=法語
LwM2M 協議工具
LwM2M (Lightweight machine-to-machine)
LwM2M協議是OMA組織制定的輕量化的M2M協議,主要面向基於蜂窩的窄帶物聯網
(Narrow Band Internet of Things, NB-IoT)場景下物聯網應用,聚焦於低功耗廣覆蓋(LPWA)物聯網(IoT)市場
是一種可在全球範圍內廣泛應用的新興技術。具有覆蓋廣、連線多、速率低、成本低、功耗低、架構優等特點。
NB-IoT具備四大特點:
* 廣覆蓋:在同樣的頻段下,NB-IoT比現有的網路增益20dB,相當於提升了100倍覆蓋區域的能力
* 大連線:輕鬆支援大量裝置聯網需求,具備支撐海量連線的能力,NB-IoT一個扇區能夠支援10萬個連線
* 低功耗:聚焦小資料量、小速率應用特別對於一些不能經常更換電池的裝置和場合,理論上NB-IoT終端模組的待機時間可長達10年
* 低成本:預期的單個接連模組不超過5美元
官方地址: https://omaspecworks.org/
版本協議文件: http://www.openmobilealliance.org/release/LightweightM2M/
更多詳細使用見: https://iot.mushuwei.cn/#/toolkit/nb
MQTT協議工具
MQTT (訊息佇列遙測傳輸)
MQTT是用於物聯網(IoT)的OASIS標準訊息傳遞協議,它被設計為一種非常輕量級的釋出/訂閱訊息
傳輸這是遠距離傳輸裝置的理想選擇且程式碼量很小,很小的網路頻寬。MQTT如今被廣泛應用於各種行業
如汽車、製造業、電信和石油天然氣等。
官方地址: https://mqtt.org/
中文MQTT 3.1/3.1.1 版本協議文件: https://iot.mushuwei.cn/#/mqtt3/
中文MQTT 5 版本協議文件: https://iot.mushuwei.cn/#/mqtt5/
更多詳細使用見: https://iot.mushuwei.cn/#/toolkit/mqtt
CoAP協議工具
RFC7252 CoAP (受限制的應用協議)
受限應用協議(CoAP)是一種專門的web傳輸協議
用於物聯網中的約束節點和約束網路.
該協議專為裝置對裝置的應用而設計,例如智慧能源或樓宇自動化等場景.
-------------------------- 協議 ---------------------------------
| 0 | 1 | 2 | 3 |
|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|版本|型別| TKL | 響應碼 | 訊息編號 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 訊息會話-如果有,訊息會話長度位元組(TKL) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 可選項 (如果有 ) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1| 負載內容 (if any) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
官方地址: https://coap.technology/
中文協議文件: https://iot.mushuwei.cn/#/coap/
更多詳細使用見: https://iot.mushuwei.cn/#/toolkit/coap
結語
Toolkit現在完成了一些特性,但是好的開源工具是出自開發者的,但是想要真正的將這個工具做的非常優秀,必須需要開發者的共建。希望大家參與進來!
穆書偉,寫於2023年4月1日 杭州春日