重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
主要讲下Android如何使用MQTT通讯。用到的软件或者框架有:
成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元旌阳做网站,已为上家服务,为旌阳各地企业和个人服务,联系电话:13518219792
EMQ:
org.eclipse.paho的MQTT通讯框架:
如果已经有MQTT相关服务,可以跳过第一项,从第二项开始看。
1.安装所需要的依赖包
2.使用以下命令设置稳定存储库,以 CentOS7 为例
3.安装最新版本的 EMQ X
4.安装特定版本的 EMQ X
5.启动 EMQ X
地址:xxx.xxx.xxx:18083,地址为服务器ip或者域名,端口为18083端口
1.在Android中导入依赖
项目地址:
2.创建MQTT连接的一个Service
首先:需要的工具就是:Hbuilder软件
第二步:打开Hbuilder
第三步:点击-新建web项目
第四步:编写项目名称,并选择文件保存的位置(这里我们默认填写name1,路径就是在桌面)
点击完成之后就会出现了,左侧就是我们新建文件目录,右侧就是页面所在的编辑框
第五步:就是在建立好的框架上,编写所需要的样式以及代码了
用Hbuilder写html的好处就在于,它会简化你写代码样式的工作,自动识别,比如你要写div框架的时候,只需写前半边,后半边自动就识别出来回车一下就可以了
作用:一,高效率练习你码字母的效率;二,节省你工作的效率;三,在结构上看,写完之后的代码样式很规范。
用户在使用CAT1模组MQTT协议对接自己的服务器,有时会遇到设备无法连接服务器问题(比如提示+ECMTCON:0,0,5连接服务器被拒绝,认证失败)。此时可以通过 标准的MQTT服务器 进行对比,因为用户自己的服务器一般加入校验信息,导致模组MQTT服务器无法连接。
Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1,这里使用该服务器进行测试。针对该服务器更详细的介绍也可以参考 。
MQTT有个重要的参数QOS,因下面使用较多,这里列出便于后续查看:
AT+ECMTOPEN=tcpconnectID,“host_name”,port
tcpconnectID 整型。 MQTT Socket 标识符。范围: 0~4
host_name IP 地址或域名
port 整型。服务器端口
示例:AT+ECMTOPEN=0, "test.mosquitto.org",1883 //建立 tcp
返回值:+ECMTOPEN:tcpconnectID,result
tcpconnectID Integer type,MQTT socket identifier. The value is 0
result 1 Failed to open network,0 Opened network successfully
AT+ECMTCONN=tcpconnectID,“clientID”[,“username”[,“password”]]
tcpconnectID MQTT socket identifier. The value is 0
“clientID” 用户不指定标准服务器会自行创建
“username”,“password” 标准MQTT服务器不使用
示例:AT+ECMTCONN=0 //在 mosquitto 平台上注册设备
返回值:+ECMTCONN:tcpconnectID,result[,ret_code]
AT+ECMTSUB=tcpconnectID,msgID,“topic”,qos
tcpconnectID MQTT socket identifier. The value is 0
msgID 任意填写,Message identifier of packet. The range is 1-65535
topic String type,Topic that the client wants to subscribe to or unsubscribe from.
qos Message QoS, can be 0,1 or 2
示例:AT+ECMTSUB=0,1,”test”,2 //订阅 topic
返回值:+ECMTSUB:tcpconnectID,msgID,result[,value]
额外指令:AT+ECMTUNS=0,4, “test” //取消订阅 topic
AT+ECMTPUB=tcpconnectID,msgID,qos,retain,“topic”,“payload"
tcpconnectID MQTT socket identifier. The value is 0
msgID Message identifier of packet.
qos Message QoS, can be 0,1 or 2
retain 0 Server should not retain the message 1 Server should retain the message
topic String type
payload String type
示例:AT+ECMTPUB=0,0,0,0,"test","hello" //发送数据给 mosquitto 平台
+ECMTPUB:tcpconnectID,msgID,result[,value]
额外指令:AT+ECMTDISC=0 //删除 mqtt client 和 mqtt 连接