Lesson 9钛极OS(TiJOS) 万物互联-物联网之MQTT

原创 2018年04月16日 15:43:13

MQTT是物联网系统中使用最广泛的通讯协议, 已被所有的物联云所支持, 钛极OS(TiJOS) 提供了MQTT相关Java类,可直接支持设备连接至各大物联云平台。

下面以百度云为例,在使用前请先在百度云下的物接入IoT Hub中进行相关配置,具体请参考

https://cloud.baidu.com/product/iot.html

网络配置

在进行网络应用开发之前,请先通过Ti-Device Manager对TiKit 进行网络设置

network_settings

百度云Iot Hub设置

在百度云Iot Hub进行设置后获得如下类似信息:

参数说明
MQTT Server URItcp://tijos.mqtt.iot.gz.baidubce.com:1883MQTT 服务器地址及端口
User Nametijos/dev1设备用户名
PasswordtWnuCZdmdgqn6uT6oaVjE1NwC9atipvOTxBA0Xn2QFQ=用户密码
Topictopic2用于发布和订阅的主题名,需要同时具有发布和订阅权限

以上配置为例程中所用的配置, 可根据实际应用进行对应修改。

新建 TiJOS Application 应用工程

在Ti-Dev Studio中新建MQTTClientDemo工程及相应的类

启动网络连接

在应用中使用网络之前, 首先需要启动网络连接

try{
//启动WLAN及DNS
TiWLAN.getInstance().startup(10);
TiDNS.getInstance().startup();
}
catch(IOException ex)
{
ex.printStackTrace();
return ;
}

MQTT server连接参数设置

根据以上参数设置MQTT server的连接参数

//MQTT Server 地址,用户名, 密码 
final String broker       = "tcp://tijos.mqtt.iot.gz.baidubce.com:1883";
final String username     = "tijos/dev1";
final String password     = "tWnuCZdmdgqn6uT6oaVjE1NwC9atipvOTxBA0Xn2QFQ=";

//ClientID
final String clientId     = "mqtt_test_java_tijos";

//MQTT连接设置
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setUserName(username);
connOpts.setPassword(password);
//允许自动重新连接
connOpts.setAutomaticReconnect(true);

设置MQTT事件回调并连接MQTT服务器

MQTT通过事件回调的方式提供服务,需要创建一个MqttClientListner的实现类用于接收事件回调

class MqttEventLister implements MqttClientListener

设置回调参数

mqttClient.SetMqttClientListener(new MqttEventLister());
//连接MQTT服务器
mqttClient.connect(connOpts, mqttClient);

订阅主题

订阅指定主题,当收到订阅主题的数据发布时, MqttClientListener的messageArrived事件将被调用

//订阅topic
int qos = 1;
String topic        = "topic2";
int msgId = mqttClient.subscribe(topic, qos);

发布数据到指定主题

publish用于将数据发布到指定主题

String content = "new data";
msgId = mqttClient.publish(topic, content.getBytes(), qos, false);

关闭并释放资源

应用结束前或不再使用MQTT时,请关闭MQTT 连接

结果输出

可在Ti-Device Manager中将日志配置为显示全部以查看输出结果,编译下载后在TiKit上运行如下图所示:

mqtt_output

相关源码请参考MqttClientDemo.java

结论

钛极OS(TiJOS) MQTT编程与目前广泛流行开源Paho MQTT编程方式相似,可以方便将现有的MQTT 应用移植到钛极OS(TiJOS)中运行, 与各大物联云集成非常方便。

钛极OS(TiJOS)物联网操作系统之初体验

钛极OS(TiJOS)之初体验作者:crashMaker插曲终于等到周末,幸运的是不用加班^_^,有时间玩玩刚买的开发套件了,在之前写的“开箱记”中笔者只是简单的秀了秀,今天终于可以真正的玩一玩了。在...
  • crashMaker
  • crashMaker
  • 2017-11-25 16:46:58
  • 423

钛极OS(TiJOS)物联网操作系统之小试牛刀(2)——超声波测距

钛极OS(TiJOS)物联网操作系统之小试牛刀(2)——超声波测距作者:crashMaker说明开发环境的搭建以及应用工程的创建方法在这里不再赘述,可参考笔者文章《钛极OS(TiJOS)物联网操作系统...
  • crashMaker
  • crashMaker
  • 2017-11-30 16:19:20
  • 227

ESP8266+钛极OS(TiJOS)+面包板=JAVA控制物联网硬件平台[创客版]

ESP8266+钛极OS(TiJOS)+面包板=JAVA控制物联网硬件平台[创客版]作者:crashMaker废话必说身为一屌丝级“资深”创客,是绝对不干于“拿来主义”的,创造永无止境。。。于是笔者决...
  • crashMaker
  • crashMaker
  • 2017-12-01 14:42:30
  • 385

钛极OS(TiJOS)物联网操作系统之小试牛刀(1)——灯、按键

钛极OS(TiJOS)系统之小试牛刀(1)——灯、按键作者:crashMaker说明开发环境的搭建以及应用工程的创建方法在这里不再赘述,可参考笔者文章《钛极OS(TiJOS)物联网操作系统之初体验》或...
  • crashMaker
  • crashMaker
  • 2017-11-29 16:18:30
  • 325

NodeMCU刷钛极OS(TiJOS)系统固件——告别LUA,用JAVA编程。[创客版]

NodeMCU刷钛极OS(TiJOS)系统固件——告别LUA,用JAVA编程。[创客版]作者:crashMaker啰嗦几句NodeMCU是一个开源的物联网平台, 它使用Lua脚本语言编程,该平台基于e...
  • crashMaker
  • crashMaker
  • 2018-01-04 14:33:08
  • 427

【特别补充】NodeMCU刷钛极OS(TiJOS)系统固件——告别LUA,用JAVA编程

原文链接:http://blog.csdn.net/crashmaker/article/details/78970666 最近,论坛的小伙伴私信给我,说在笔者资源空间里下载的操作系统固件烧录后不能...
  • crashMaker
  • crashMaker
  • 2018-02-06 16:38:39
  • 93

钛极OS(TiJOS)系统固件(ESP8266) V2.02

  • 2018年01月04日 11:23
  • 8.47MB
  • 下载

钛极OS(TiJOS)系统固件(ESP8266) V2.06

  • 2018年02月06日 16:42
  • 8.47MB
  • 下载

钛极OS(TiJOS)物联网操作系统介绍

钛极OS(TiJOS) 是一个支持使用 Java 开发嵌入式智能硬件应用的物联网操作系统,支持多种MCU芯片,为开发者提供高效、成熟的物联网应用开发平台,让智能硬件及IoT 应用开发更快捷简单。钛极O...
  • tijos803
  • tijos803
  • 2018-03-27 11:39:07
  • 26
收藏助手
不良信息举报
您举报文章:Lesson 9钛极OS(TiJOS) 万物互联-物联网之MQTT
举报原因:
原因补充:

(最多只允许输入30个字)