x286212455的個(gè)人空間 http://selenalain.com/space-uid-142968.html [收藏] [復制] [RSS]

博客

萬(wàn)物互聯(lián)-物聯(lián)網(wǎng)之MQTT

已有 1486 次閱讀2018-5-17 14:45 |個(gè)人分類(lèi):物聯(lián)網(wǎng)| 物聯(lián)網(wǎng), MQTT

MQTT是物聯(lián)網(wǎng)系統中使用最廣泛的通訊協(xié)議, 已被所有的物聯(lián)云所支持, 鈦極OS(TiJOS) 提供了MQTT相關(guān)Java類(lèi),可直接支持設備連接至各大物聯(lián)云平臺。

下面以百度云為例,在使用前請先在百度云下的物接入IoT Hub中進(jìn)行相關(guān)配置,具體請參考

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

網(wǎng)絡(luò )配置

在進(jìn)行網(wǎng)絡(luò )應用開(kāi)發(fā)之前,請先通過(guò)Ti-Device Manager對TiKit 進(jìn)行網(wǎng)絡(luò )設置

network_settings

百度云Iot Hub設置

在百度云Iot Hub進(jìn)行設置后獲得如下類(lèi)似信息:


參數 說(shuō)明
MQTT Server URI tcp://tijos.mqtt.iot.gz.baidubce.com:1883 MQTT 服務(wù)器地址及端口
User Name tijos/dev1 設備用戶(hù)名
Password tWnuCZdmdgqn6uT6oaVjE1NwC9atipvOTxBA0Xn2QFQ= 用戶(hù)密碼
Topic topic2 用于發(fā)布和訂閱的主題名,需要同時(shí)具有發(fā)布和訂閱權限












以上配置為例程中所用的配置, 可根據實(shí)際應用進(jìn)行對應修改。

新建 TiJOS Application 應用工程

在Ti-Dev Studio中新建MQTTClientDemo工程及相應的類(lèi)

啟動(dòng)網(wǎng)絡(luò )連接

在應用中使用網(wǎng)絡(luò )之前, 首先需要啟動(dòng)網(wǎng)絡(luò )連接

try{
//啟動(dòng)WLAN及DNS
TiWLAN.getInstance().startup(10);
TiDNS.getInstance().startup();
}
catch(IOException ex)
{
ex.printStackTrace();
return ;
}


MQTT server連接參數設置
根據以上參數設置MQTT server的連接參數
//MQTT Server 地址,用戶(hù)名, 密碼
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);
//允許自動(dòng)重新連接
connOpts.setAutomaticReconnect(true);


設置MQTT事件回調并連接MQTT服務(wù)器

MQTT通過(guò)事件回調的方式提供服務(wù),需要創(chuàng )建一個(gè)MqttClientListner的實(shí)現類(lèi)用于接收事件回調

class MqttEventLister implements MqttClientListener

設置回調參數

mqttClient.SetMqttClientListener(new MqttEventLister());
//連接MQTT服務(wù)器
mqttClient.connect(connOpts, mqttClient);

訂閱主題

訂閱指定主題,當收到訂閱主題的數據發(fā)布時(shí), MqttClientListener的messageArrived事件將被調用

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


發(fā)布數據到指定主題

publish用于將數據發(fā)布到指定主題

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


關(guān)閉并釋放資源

應用結束前或不再使用MQTT時(shí),請關(guān)閉MQTT 連接

結果輸出

可在Ti-Device Manager中將日志配置為顯示全部以查看輸出結果,編譯下載后在TiKit上運行如下圖所示:

mqtt_output

相關(guān)源碼請參考MqttClientDemo.java

結論

鈦極OS(TiJOS) MQTT編程與目前廣泛流行開(kāi)源Paho MQTT編程方式相似,可以方便將現有的MQTT 應用移植到鈦極OS(TiJOS)中運行, 與各大物聯(lián)云集成非常方便。

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
返回頂部
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页