MQTT之客户端工具

MQTT Spy

mqtt-spy_v0.5.3

这是一个用java开发的开源MQTT客户端,可以到他们的GitHub上下载,用起来感觉得行但是如果机器上没有安装好java的话就会非常坑,经常会运行不了。如果想省事的朋友就不太推荐此工具。

HiveMQ

HiveMQ是一个实时的MQTT服务的一个网站,他们既提供MQTT信息中转服务也提供一个客户端工具,http://www.mqtt-dashboard.com/ 是实时MQTT中转服务的面板,里面有MQTT服务的基本配置,如下图所示:

HiveMQ服务端

如果要使用HiveMQ的客户端工具的话,可以访问 http://www.hivemq.com/demos/websocket-client/ 。这是一个在线的MQTT客户端,它是采用WebSocket与MQTT进行通信的,所以他使用的端是8000。

HiveMQ

命令行工具 mosquitto

这是一个非常有效简单的实用工具,在macOS下可以按以下方式安装

$ brew install mosquitto

这个工具主要提供以下两个命令:

  • mosquitto_sub - 订阅消息
  • mosquitto_pub - 发布消息

订阅命令 - mosquitto_sub

命令格式

Usage: mosquitto_sub [-c] [-h host] [-k keepalive] [-p port] [-q qos] [-R] -t topic ...
                     [-C msg_count] [-T filter_out]
                     [-A bind_address] [-S]
                     [-i id] [-I id_prefix]
                     [-d] [-N] [--quiet] [-v]
                     [-u username [-P password]]
                     [--will-topic [--will-payload payload] [--will-qos qos] [--will-retain]]
                     [{--cafile file | --capath dir} [--cert file] [--key file]
                      [--ciphers ciphers] [--insecure]]
                     [--psk hex-key --psk-identity identity [--ciphers ciphers]]
                     [--proxy socks-url]
  • -c, –disable-clean-session:禁止’clean session’选项,即如果客户端断开连接,这个订阅仍然保留来接收随后到的QoS为1和2的消息,当改客户端重新连接之后,它将接收到已排在队列中的消息。建议使用此选项时,客户端id选项设为–id
  • -d, –debug:开启debug选项
  • -h, –host:说明所连接到的域名,默认是localhost
  • -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
  • -I, –id-prefix:指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。
  • -k, –keepalive:给代理发送PING命令(目的在于告知代理该客户端连接保持且在正常工作)的间隔时间,默认是60s
  • -p, –port:说明客户端连接到的端口,默认是1883
  • -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
  • -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
  • –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
  • -t, –topic:指定订阅的消息主题,允许同时订阅到多个主题
  • -u, –username:指定用户名用于代理认证。
  • -v, –verbose:冗长地打印收到的消息。若指定该选项,打印消息时前面会打印主题名——“主题 消息内容”,否则,只打印消息内容
  • –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
  • –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
  • –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
  • –will-topic:指定客户端意外断开时,Will消息发送到的主题。
$ mosquitto_sub -h broker.mqttdashboard.com -t growthai/ray/mqtt/#

键入以上命令之后终端会进入一个等待状态,所有来自growthai/ray/mqtt/#主题的信息都会打印到终端上。

在HiveMQ的客户端上发一个中文消息到growthai/ray/mqtt/

以下是终端收到信息的效果

发布命令 - mosquitto_pub

Usage: mosquitto_pub [-h host] [-k keepalive] [-p port] [-q qos] [-r] {-f file | -l | -n | -m message} -t topic
                     [-A bind_address] [-S]
                     [-i id] [-I id_prefix]
                     [-d] [--quiet]
                     [-M max_inflight]
                     [-u username [-P password]]
                     [--will-topic [--will-payload payload] [--will-qos qos] [--will-retain]]
                     [{--cafile file | --capath dir} [--cert file] [--key file]
                      [--ciphers ciphers] [--insecure]]
                     [--psk hex-key --psk-identity identity [--ciphers ciphers]]
                     [--proxy socks-url]

选项:

  • -d, –debug :开启debug选项
  • -f, –file:把一个文件的内容做为消息的内容发送。经测试,支持txt文件,不支持doc等其他形式文件。
  • -h, –host:说明所连接到的域名,默认是localhost
  • -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
  • -I, –id-prefix :指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能和–id同时使用。
  • -l, –stdin-line:从总段读取输入发送消息,一行为一条消息,空白行不会被发送。
  • -m, –message:从命令行发送一条消息,-m后面跟发送的消息内容。
  • -n, –null-message:发送一条空消息。
  • -p, –port:连接的端口号,默认是1883.
  • -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
  • -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
  • –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
  • -r, –retain:如果指定该选项,该条消息将被保留做为最后一条收到的消息。下一个订阅消息者将能至少收到该条消息。
  • -s, –stdin-file:从标准输入接收传输的消息内容,所有输入做为一条消息发送。
  • -t, –topic:指定消息所发布到哪个主题。
  • -u, –username:指定用户名用于代理认证。
  • –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
  • –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
  • –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
  • –will-topic:指定客户端意外断开时,Will消息发送到的主题。

我们可以先在HiveMQ上订阅growthai/raymqtt/#这个主题,质量为Qos0,然后在终端向这个主题发送一条信息:

$ mosquitto_pub -h broker.mqttdashboard.com -t growthai/ray/mqtt/ -m 'hi i am ray'

然后我们可以看到在HiveMQ上收到的主题信息:

HiveMQ和mosquitto 命令行工具对于做IoT开来说都是非常轻量型的,而且使用也非常方便。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 一:前言 最近在了解MQTT协议相关的内容,内容有点多,特此把MQTT协议,以及其从服务端到客户端的流程整理出来...
    子夏的不语阅读 69,981评论 9 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • MQTT-SN的一个重要设计原则是尽可能与MQTT相近。因此,所有的协议语义应保持尽可能与MQTT中定义的一致。接...
    aded3e27ac95阅读 850评论 0 2
  • 序 本篇会把连接(CONNECT)、心跳(PINGREQ/PINGRESP)、确认(CONNACK)、断开连接(D...
    技术学习阅读 9,744评论 0 8
  • 梵高曾经给他的哥哥提奥写信,说每个人的心里都有一团火,路过的人只看到烟。 能让你变好的那个人,正是能够点燃你心目中...
    珠琳阅读 886评论 0 3