全网最佳IoT命令行超级工具箱|帮你轻松解决百万物联网设备测试和联调
程序员离不开命令行,许多经典命令是每天必用的,比如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日 杭州春日
全网最佳IoT命令行超级工具箱|帮你轻松解决百万物联网设备测试和联调的更多相关文章
- [转]12款最佳Linux命令行终端工具
摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...
- 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器
12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...
- 12款最佳Linux命令行终端工具
12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的终端软件 ...
- centos命令行变成了-bash-4.1$的解决办法
在使用root用户是先建立了用户yunva的家目录,然后添加yunva用户,切换到yunva用户后发现 命令行变成了-bash-4.1$ ①方法一(临时生效,不推荐) 1. bashrc 在当前目录下 ...
- CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
目前CentOS6.5上自带的python版本为2.6,升级到python2.7会碰到很多问题.本文将介绍如何安装python2.7.pip以及python命令行补全. 一.如何安装python2.7 ...
- 命令行下class redis not found 解决
1.在命令行下输入 php --ini 2.在浏览器中查看 phpinfo() 可以看出,我 的phpinfo和命令行的就不是一个php.ini文件.因为我有几个版本的php , 并且在环境变量中配 ...
- 关于windows环境下cordova命令行无法启动adb.exe的解决办法
使用phonegap开发手机APP,常常需要更改代码之后进行调试,使用安卓模拟器每次启动非常缓慢,而且不能保证最终在真机上的效果.所以一般都采用真机进行调试. 搭建真机的调试环境这里就不再赘述了,网上 ...
- 命令行启动Hololens Emulator,可解决内存不足的问题
有时候在虚拟机测试时常会出现 内存不足 的情况,导致应用卡顿,调整 /memsize 参数大小: start "HoloLens" "C:\Program Files ( ...
- 关于“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具”问题的解决方法
今天打开QQ管家加速版的时候突然出现了这个错误,百度了下说是系统缺少Microsoft Visual C++ 20XX(运行库),下载这个安装即可解决问题.
- centos6 升级gcc 无法识别的命令行选项“-std=gnu++1y”的解决办法
npm install 提示: 1.下载源文件,并安装: wget http://people.centos.org/tru/devtools-2/devtools-2.repo mv devtool ...
随机推荐
- react导入的插件不支持服务端渲染报错的解决方法
正常的导入方法如下: import { useEffect, useState, useRef } from 'react'; 如果不支持服务端渲染的插件这样导入则会报错(具体的报的什么错我忘了),一 ...
- react复制文案到剪切板
这里使用别人写好的插件. 1.安装要用到的插件:copy-to-clipboard: 2.导入: import copy from 'copy-to-clipboard'; 3.使用: copy(co ...
- LeetCode 刷题感想之动态规划
在 LeetCode/剑指Offer 上刷了500题左右了,应该写一篇文章总结一下自己的感想.因为我自己是测试,所以从测试角度来写感受吧. 先说动态规划. 什么是动态规划?是经典算法思想之一,是自底向 ...
- k8s集群查看node和pod的实时资源使用情况
一.部署步骤 1.准备metrics-server官方yaml文件 2.部署metrics-server 3.查看资源使用情况 二.准备metrics-server官方yaml文件 [root@loc ...
- sar与ksar使用显示监控数据
一.Ksar: 1)下载ksar地址:https://github.com/vlsi/ksar/releases/tag/v5.2.4-snapshot.10-gf068072 2)启动:java - ...
- linux 串口查看信息
查看串口是否可用,可以对串口发送数据比如对com1口,echo helloworld >/dev/ttyS0 [root@H3LINUX90 ~]# echo helloworld >/d ...
- 复杂数据类型(signal)的解读-C语言基础
这一篇文章要探讨的是C语言中复杂数据类型的解读.涉及到signal()函数数据类型的解读(并不解释signal()的作用)以及对于数据类型的理解,属于C语言基础篇. 在开始解读signal()这种复杂 ...
- button 样式 触发器
<Style x:Key="Style.OkOperationButton" TargetType="ButtonBase"> <Setter ...
- MySQL 导出数据结构 If you don't want to restore GTIDs, pass --set-gtid-purged=OFF.
应用场景MYSQL导出数据结构 Warning: A partial dump from a server that has GTIDs will by default include the GTI ...
- egret 图片跨域
//图片跨域 egret.ImageLoader.crossOrigin = "anonymous";