程序员离不开命令行,许多经典命令是每天必用的,比如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. 独显坏掉,openSUSE启动黑屏卡死

    我的Dell Vostro 1440配置双显卡,独显是 AMD 的.可能是因为散热的问题,独显烧坏了.原先每次启动都有 openSUSE 的圆形启动动画,显卡烧坏后,启动动画变成三个点. 装 Debi ...

  2. Control M 复习笔记

    记录一些复习过程想通的知识点 1.我们教案中看到的图基本都是复平面,从来没有看到过所谓s域或z域,不同的稳定区域只是因为从复平面到函数中存在不同的映射过程(s函数和z函数). s函数是纯粹的频域,也就 ...

  3. SpringCloud框架开发

    1.是什么微服务 是一种架构模式,他提倡将单一应用程序划分一组小的服务,服务之间的相互配合.互相协调. 2.Spring Cloud简介 SpringClound等于分布式微服务架构的一站式解决方案, ...

  4. 关于js数组方法forEach()

    1.forEach()是什么? forEach()是一种数组遍历方法. 在js最基础的遍历数组方法可能是这样的 点击查看代码 var myArr = [1, 2, 3] for(var i = 0; ...

  5. 关于pandas的一些用法

    pandas用法之前我总是把他想的无比复杂.其实也是比较简单的,这个东西在做数据统计的时候还是挺好用的. 然后这里列举几个比较好用的几段代码.偏向数据透视类型pivot的,导出方式是直接在IDE 生成 ...

  6. echarts 图表 tooltip提示框,formatter自定义

    自定义图表提示框样式, 自定义原因:series中有多个数据样式,那么提示框会展示多条. tooltip: { formatter(params) { let circle = `<span s ...

  7. sqlserver数据备份

    sqlserver数据库 导入方法 第一种方法 1.打开SQL Server,写好登录名和密码点击连接. 2.打开数据库,右键某一个数据库,选择"新建查询(Q)". 3.再代码界面 ...

  8. jmeter 数据库连接

    位置:右击添加>配置元件>JDBC Connection Configuration 作用:需要对数据库发起请求查询数据或者对数据库施加压力 3.设置说明 Variable Name(变量 ...

  9. PHP 中if的多种写法

    第一种 最普遍的写法 if(condition){ 代码块1 }else{ 代码块2 } 第二种 if(condition) 代码行1;else 代码行2;end; 第三种 if(condition) ...

  10. Python第七章实验报告

    一.实验名称:<零基础学Python>第7章 面向对象程序设计 二.实验环境:IDLE Shell 3.9.7 三.实验内容:5道实例.4道实战 四.实验过程: 实例01 创建大雁类并定义 ...