设备接入 IoTDA
设备接入 IoTDA
- 最新动态
- 功能总览
- 服务公告
- 计费说明
- 产品介绍
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
-
API参考
- 应用侧API参考
- 设备侧MQTT/MQTTS接口参考
- 设备侧HTTPS接口参考
- 设备侧LwM2M接口参考
- 安全隧道WebSocket接口参考
- 模组AT指令参考
- 修订记录
- SDK参考
- 场景代码示例
-
常见问题
- 热门问题
-
方案咨询
- 连接IoT平台的业务场景有哪些?
- 设备管理服务和设备接入服务合一后的差异点是什么?
- IAM子用户或子项目是否可以开通物联网平台服务?
- 物联网平台支持在华为云的哪些区域开通?
- 华为是否提供模组/硬件终端/应用软件等?
- IAM用户访问API提示没有权限?(是否区分版本?)
- 创建规则或者设置资源文件存储时候提示赋予Security Administrator权限
- 物联网平台设置默认资源空间的规则是什么?
- 设备接入服务如何获取设备数据?
- 物联网平台的资源空间和设备可以无限创建吗?
- 物联网平台支持批量注册设备吗?
- 物联网平台对应用侧和设备侧在开发或使用时有限制吗?
- 物联网平台支持的DTLS加密算法有哪些?
- 物联网平台支持二进制大小端模式切换吗?
- 什么是NB-IoT?
- 物联网平台支持的硬件架构和使用的相关组件有哪些?
- 如何获取平台接入地址?
- 设备集成相关问题
- 设备侧SDK相关问题
- 设备发放相关问题
- LWM2M/CoAP接入相关问题
- MQTT接入相关问题
- 泛协议接入相关问题
- 物模型相关问题
- 消息通信相关问题
- 订阅推送相关问题
- 编解码插件相关问题
- OTA升级相关问题
- 应用集成相关问题
- 实例管理相关问题
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
广播通信使用示例
Java SDK使用示例
本文介绍如何使用JAVA SDK进行广播通信的开发。
开发环境要求
本示例使用的开发环境为JDK 1.8及以上版本。
配置应用侧SDK
- 配置Maven依赖。
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>[3.0.40-rc, 3.2.0)</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-iotda</artifactId> <version>[3.0.40-rc, 3.2.0)</version> </dependency>
- 下发广播消息完整样例如下,topic必须为“$oc/broadcast/”前缀,消息内容需要使用BASE64编码。
public class BroadcastMessageSolution { // REGION_ID:如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-4" private static final String REGION_ID = "<YOUR REGION ID>"; // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。 private static final String ENDPOINT = "<YOUR ENDPOINT>"; // 标准版/企业版:需自行创建Region对象 public static final Region REGION_CN_NORTH_4 = new Region(REGION_ID, ENDPOINT); public static void main(String[] args) { String ak = "<YOUR AK>"; String sk = "<YOUR SK>"; String projectId = "<YOUR PROJECTID>"; // 创建认证 ICredential auth = new BasicCredentials().withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) .withAk(ak) .withSk(sk) .withProjectId(projectId); // 创建IoTDAClient实例并初始化 IoTDAClient client = IoTDAClient.newBuilder().withCredential(auth) // 基础版:请选择IoTDARegion中的Region对象 //.withRegion(IoTDARegion.CN_NORTH_4) // 标准版/企业版:需自行创建Region对象 .withRegion(REGION_CN_NORTH_4).build(); // 实例化请求对象 BroadcastMessageRequest request = new BroadcastMessageRequest(); DeviceBroadcastRequest body = new DeviceBroadcastRequest(); body.withMessage(Base64.getEncoder().encodeToString("hello".getBytes())); body.withTopicFullName("$oc/broadcast/test"); request.withBody(body); try { BroadcastMessageResponse response = client.broadcastMessage(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
表1 参数说明 参数
说明
ak
您的华为云账号访问密钥ID(Access Key ID)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的 AK/SK。更多信息请查看访问密钥。
sk
您的华为云账号秘密访问密钥(Secret Access Key)。
projectId
项目ID。获取方法请参见 获取项目ID。
IoTDARegion.CN_NORTH_4
请替换为您要访问的物联网平台的区域,当前物联网平台可以访问的区域,在SDK代码IoTDARegion.java中已经定义。
您可以在控制台上查看当前服务所在区域名称,区域名称、区域和终端节点的对应关系,具体步骤请参考地区和终端节点。
REGION_ID
如果是上海一,请填写"cn-east-3";如果是北京四,请填写"cn-north-4";如果是华南广州,请填写"cn-south-4"
ENDPOINT
请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
配置设备侧SDK
- 配置设备侧SDK的Maven依赖。
<dependency> <groupId>com.huaweicloud</groupId> <artifactId>iot-device-sdk-java</artifactId> <version>1.1.4</version> </dependency>
- 配置设备侧SDK,设备连接参数。
//加载iot平台的ca证书,获取链接参考:https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section3 URL resource = BroadcastMessageSample.class.getClassLoader().getResource("ca.jks"); File file = new File(resource.getPath()); //注意格式为:ssl://域名信息:端口号。 //域名获取方式:登录华为云IoTDA控制台左侧导航栏“总览”页签,在选择的实例基本信息中,单击“接入信息”。选择8883端口对应的接入域名。 String serverUrl = "ssl://localhost:8883"; //在IoT平台创建的设备ID。 String deviceId = "deviceId"; //设备ID对应的密钥。 String deviceSecret = "secret"; //创建设备 IoTDevice device = new IoTDevice(serverUrl, deviceId, deviceSecret, file); if (device.init() != 0) { return; }
- 订阅广播Topic,广播Topic需使用“$oc/broadcast/”前缀。
device.getClient().subscribeTopic("$oc/broadcast/test", null, rawMessage -> { log.info(" on receive message topic : {} , payload : {}", rawMessage.getTopic(), new String(rawMessage.getPayload())); rawMessage.getPayload(); }, 0);
测试验证
先运行设备侧 SDK代码,使设备上线,并订阅广播topic。然后运行应用侧SDK代码,调用broadcastMessage接口向设备发送广播消息,设备侧收到的广播消息样例如下:
图1 广播消息样例

父主题: 广播通信