如何使用自定义Topic进行通信 您所在的位置:网站首页 阿里云物联网平台数据传到手机端 如何使用自定义Topic进行通信

如何使用自定义Topic进行通信

2023-06-15 01:47| 来源: 网络整理| 查看: 265

配置设备端SDK订阅Topic。

配置设备认证信息、设置初始化连接参数、初始化连接,请参见设备发送消息给服务器中的相应示例代码。

设备要接收服务器发送的消息,还需订阅消息Topic。

配置设备端订阅Topic示例如下:

//初始化成功以后的回调。 @Override public void onInitDone(InitResult initResult) { //设置订阅的Topic。 MqttSubscribeRequest request = new MqttSubscribeRequest(); request.topic = "/" + productKey + "/" + deviceName + "/user/cloudmsg"; request.isSubscribe = true; //发出订阅请求并设置订阅成功或者失败的回调函数。 LinkKit.getInstance().subscribe(request, new IConnectSubscribeListener() { @Override public void onSuccess() { System.out.println(""); } @Override public void onFailure(AError aError) { } }); //设置订阅的下行消息到来时的回调函数。 IConnectNotifyListener notifyListener = new IConnectNotifyListener() { //此处定义收到下行消息以后的回调函数。 @Override public void onNotify(String connectId, String topic, AMessage aMessage) { System.out.println( "received message from " + topic + ":" + new String((byte[])aMessage.getData())); } @Override public boolean shouldHandle(String s, String s1) { return false; } @Override public void onConnectStateChange(String s, ConnectState connectState) { } }; LinkKit.getInstance().registerOnNotifyListener(notifyListener); }

其中,request.topic值需修改为具有订阅权限的自定义Topic。

配置云端SDK调用物联网平台接口Pub发布消息。参数说明,请参见Pub,使用说明,请参见Java SDK使用说明。

设置身份认证信息。

String regionId = "cn-shanghai"; String accessKey = "LTAI4GFGQvKuqHJhFaj****"; String accessSecret = "iMS8ZhCDdfJbCMeA005sieKe****"; final String productKey = "a1uzcH0****"; final String deviceName = "device1"; final String iotInstanceId = "iot-2w****";

实际业务场景中,您需修改以下参数值。

参数

示例

说明

accessKey

LTAI4GFGQvKuqHJhFaj****

您的阿里云账号的AccessKey ID和AccessKey Secret。

登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

说明

如果使用RAM用户,您需授予该RAM用户管理物联网平台的权限(AliyunIOTFullAccess),否则将连接失败。授权方法请参见授权RAM用户访问物联网平台。

accessSecret

iMS8ZhCDdfJbCMeA005sieKe****

productKey

a1uzcH0****

设备证书信息。您可在物联网平台控制台的设备详情页面查看。具体操作,请参见查看具体设备信息。

deviceName

device1

region

cn-shanghai

您物联网平台设备所在地域的Region ID。Region ID表达方法,请参见地域列表。

iotInstanceId

iot-2w****

设备所属实例的ID。

您可在控制台的实例概览页面查看。

若有ID值,必须传入该ID值。

若无实例概览页面或ID值,传入空值,即iotInstanceId = ""。

设置连接参数。

//设置client的参数。 DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKey, accessSecret); IAcsClient client = new DefaultAcsClient(profile);

设置消息发布参数。

PubRequest request = new PubRequest(); request.setIotInstanceId(iotInstanceId); request.setQos(0); //设置发布消息的Topic。 request.setTopicFullName("/" + productKey + "/" + deviceName + "/user/cloudmsg"); request.setProductKey(productKey); //设置消息的内容,一定要用Base64编码,否则乱码。 request.setMessageContent(Base64.encode("{\"accuracy\":0.001,\"time\":now}"));

实际业务场景中,您需修改调用接口的请求参数。详细说明,请参见Pub。

发送消息。

try { PubResponse response = client.getAcsResponse(request); System.out.println("pub success?:" + response.getSuccess()); } catch (Exception e) { System.out.println(e); }

设备端接收到的消息如下:

msg = [{"accuracy":0.001,"time":now}]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有