程序员离不开命令行,许多经典命令是每天必用的,比如lscd

作为一个物联网开发和学习人员,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

使用 SDKMAN!安装,请看安装文档

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日 杭州春日

全网最佳IoT命令行超级工具箱|帮你轻松解决百万物联网设备测试和联调的更多相关文章

  1. [转]12款最佳Linux命令行终端工具

    摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...

  2. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  3. 12款最佳Linux命令行终端工具

    12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的终端软件 ...

  4. centos命令行变成了-bash-4.1$的解决办法

    在使用root用户是先建立了用户yunva的家目录,然后添加yunva用户,切换到yunva用户后发现 命令行变成了-bash-4.1$ ①方法一(临时生效,不推荐) 1. bashrc 在当前目录下 ...

  5. CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决

    目前CentOS6.5上自带的python版本为2.6,升级到python2.7会碰到很多问题.本文将介绍如何安装python2.7.pip以及python命令行补全. 一.如何安装python2.7 ...

  6. 命令行下class redis not found 解决

    1.在命令行下输入 php --ini 2.在浏览器中查看 phpinfo() 可以看出,我  的phpinfo和命令行的就不是一个php.ini文件.因为我有几个版本的php , 并且在环境变量中配 ...

  7. 关于windows环境下cordova命令行无法启动adb.exe的解决办法

    使用phonegap开发手机APP,常常需要更改代码之后进行调试,使用安卓模拟器每次启动非常缓慢,而且不能保证最终在真机上的效果.所以一般都采用真机进行调试. 搭建真机的调试环境这里就不再赘述了,网上 ...

  8. 命令行启动Hololens Emulator,可解决内存不足的问题

    有时候在虚拟机测试时常会出现 内存不足 的情况,导致应用卡顿,调整 /memsize 参数大小: start "HoloLens" "C:\Program Files ( ...

  9. 关于“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具”问题的解决方法

    今天打开QQ管家加速版的时候突然出现了这个错误,百度了下说是系统缺少Microsoft Visual C++ 20XX(运行库),下载这个安装即可解决问题.

  10. centos6 升级gcc 无法识别的命令行选项“-std=gnu++1y”的解决办法

    npm install 提示: 1.下载源文件,并安装: wget http://people.centos.org/tru/devtools-2/devtools-2.repo mv devtool ...

随机推荐

  1. Absolute Path Traversal 错误解决

    Absolute Path Traversal (APT) 是一种常见的安全漏洞,攻击者可以通过该漏洞访问应用程序的文件系统中的文件, 包括敏感信息,从而可能导致应用程序遭受攻击. 一.使用专门的文件 ...

  2. vue+element-ui+sortable.js实现表格行和列的拖拽

    项目碰到一个需求是需要表格字段列进行顺序拖拽,查过一些资料,中途也碰到了很多坑,实现方式如下: 封装成公用组件操作 //父组件 <template> <div> <com ...

  3. to_csv()导入数据乱码问题

    制定编码: utf_8 -->utf_8_sig 修改后代码code: df.to_csv('data3.csv',index=False,encoding='utf_8_sig')

  4. P1138 第 k 小整数

    P1138 第 k 小整数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) dalao 勿喷,适合新手 思路就是排序加查重,最后判断第k小数.思路十分简单. 刚开始我一直想二维循环查 ...

  5. ubuntu(一)

    1.首先在上手之前准备几样开发辅助工具: ①vmware ②ubuntu ③xshell ④xftp 2.创建ubuntu系统 打开vmware创建一个新的虚拟机 在创建虚拟机时有几处需要留意 首先是 ...

  6. mysql 设置相关

    告诉mysql客户端这边的文字编码 告诉mysql希望返回的结果集编码: set character_set_client=gbk; set character_set_results=gbk;   ...

  7. 【原创】android 7.0 通知报错 java.lang.SecurityException: You need MANAGE_USERS permission to: check if specified user a managed profile outside your profile group

    项目中在后台发送通知,突然某一天测出在Android 7.0上通知发送失败,那么根据提示,我们尝试加了MANAGE_USERS权限,看起来是个系统级别权限,验证后果然无效.接着在搜索后都无果,似乎大家 ...

  8. Learning under Concept Drift: A Review 概念漂移综述论文阅读

    首先这是2018年一篇关于概念漂移综述的论文[1]. 最新的研究内容包括 (1)在非结构化和噪声数据集中怎么准确的检测概念漂移.how to accurately detect concept dri ...

  9. linux端口映射,telnet通信失败

    linux端口映射 1.第一种方法, 使用firewalld # 开启伪装IP firewall-cmd --permanent --add-masquerade # 配置端口转发,将到达本机的123 ...

  10. python - 命令行下一键更新所有包

    Python3.8以下这样一键更新所有包:from pip._internal.utils.misc import get_installed_distributionsfrom subprocess ...