阿里云物联网管理SDK使用示例

简介: 下面演示使用目前最新版本:6.5.0关于产品的创建及删除操作,新建Topic间的消息路由关系、查询向指定Topic订阅消息的目标Topic操作,其它操作类似。

作者:俏巴


概述


目前阿里云的绝大部分服务都提供了管理资源的Rest API,针对相应的API也做了SDK的封装,且版本也在不断的迭代更新。管理API SDK的统一GitHub地址链接。关于IoT SDK的使用,之前官方也给出了示例参考,但是该示例使用的SDK版本为5.0.0,且这个版本的SDK中没有DeleteProductRequest类的实现,下面演示使用目前最新版本:6.5.0关于产品的创建及删除操作,新建Topic间的消息路由关系、查询向指定Topic订阅消息的目标Topic操作,其它操作类似。


pom依赖


        <!--核心依赖-->
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.aliyun<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>aliyun-java-sdk-core<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>3.5.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span></span>

    &lt;!--管理API SDK调用问题--&gt;
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.aliyun<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>aliyun-java-sdk-iot<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>6.5.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span></span></code></pre>

Java示例代码


import com.aliyuncs.AcsResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.RpcAcsRequest;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.iot.model.v20180120.CreateProductRequest;
import com.aliyuncs.iot.model.v20180120.CreateProductResponse;
import com.aliyuncs.iot.model.v20180120.DeleteProductRequest;
import com.aliyuncs.iot.model.v20180120.DeleteProductResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class IoTDemo {

public <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> main(<span class="hljs-built_in">String</span>[] args) {

    <span class="hljs-built_in">String</span> productName = <span class="hljs-string">"iottestdemo123456"</span>;
    <span class="hljs-built_in">String</span> productKey = <span class="hljs-string">"******"</span>;
    Integer nodeType = <span class="hljs-number">0</span>;

// createProductTest(productName,nodeType);

    deleteProductTest(productKey);
    System.out.println(<span class="hljs-string">"删除成功"</span>);
}
<span class="hljs-comment">/**
 * 创建产品
 * @param productName 产品名称
 * @param nodeType 产品描述
 * @return 产品的PK
 */</span>
public <span class="hljs-keyword">static</span> <span class="hljs-built_in">String</span> createProductTest(<span class="hljs-built_in">String</span> productName, Integer nodeType) {
    CreateProductRequest request = <span class="hljs-keyword">new</span> CreateProductRequest();
    request.setProductName(productName);

    request.setNodeType(nodeType);<span class="hljs-comment">//节点的类型,0标识设备,1标识网关</span>
    CreateProductResponse response = (CreateProductResponse)executeTest1(request);
    <span class="hljs-keyword">if</span> (response != <span class="hljs-literal">null</span> &amp;&amp; response.getSuccess() != <span class="hljs-literal">false</span>) {
        System.out.println(<span class="hljs-string">"创建产品成功!productKey:"</span> + response.getProductKey());
        <span class="hljs-keyword">return</span> response.getProductKey();
    } <span class="hljs-keyword">else</span> {
        System.out.println(<span class="hljs-string">"创建产品失败!requestId:"</span> + response.getRequestId() + <span class="hljs-string">"原因:"</span> + response.getErrorMessage());
    }
    <span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;
}

<span class="hljs-comment">/**
 * 删除产品
 * @param productKey 产品key
 * @return 产品的PK,可以在管理门户获取
 */</span>
public <span class="hljs-keyword">static</span> <span class="hljs-built_in">Boolean</span> deleteProductTest(<span class="hljs-built_in">String</span> productKey) {
    DeleteProductRequest request = <span class="hljs-keyword">new</span> DeleteProductRequest();
    request.setProductKey(productKey);
    DeleteProductResponse response = (DeleteProductResponse)executeTest1(request);
    <span class="hljs-keyword">if</span> (response != <span class="hljs-literal">null</span> &amp;&amp; response.getSuccess() != <span class="hljs-literal">false</span>) {
        System.out.println(<span class="hljs-string">"删除产品成功!productKey:"</span> + response.getSuccess());
        <span class="hljs-keyword">return</span> response.getSuccess();
    } <span class="hljs-keyword">else</span> {
        System.out.println(<span class="hljs-string">"创建产品失败!requestId:"</span> + response.getRequestId() + <span class="hljs-string">"原因:"</span> + response.getErrorMessage());
    }
    <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}

public <span class="hljs-keyword">static</span> AcsResponse executeTest1(RpcAcsRequest request) {

    DefaultAcsClient client = <span class="hljs-literal">null</span>;
    <span class="hljs-built_in">String</span> regionId = <span class="hljs-string">"cn-shanghai"</span>;
    <span class="hljs-built_in">String</span> accessKeyID = <span class="hljs-string">"********"</span>;
    <span class="hljs-built_in">String</span> accessKeySecret = <span class="hljs-string">"********"</span>;
    <span class="hljs-built_in">String</span> productCode = <span class="hljs-string">"Iot"</span>;
    <span class="hljs-built_in">String</span> domain = <span class="hljs-string">"iot.cn-shanghai.aliyuncs.com"</span>;
    IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyID, accessKeySecret);
    <span class="hljs-keyword">try</span> {
        DefaultProfile.addEndpoint(regionId, regionId, productCode, domain);
    } <span class="hljs-keyword">catch</span> (ClientException e) {
        e.printStackTrace();
    }
    <span class="hljs-comment">// 初始化client</span>
    client = <span class="hljs-keyword">new</span> DefaultAcsClient(profile);

    System.out.println(<span class="hljs-string">"client 初始化完成!"</span>);

    AcsResponse response = <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> {
        response = client.getAcsResponse(request);
    } <span class="hljs-keyword">catch</span> (Exception e) {
        System.out.println(<span class="hljs-string">"执行失败:e:"</span> + e.getMessage());
    }
    <span class="hljs-keyword">return</span> response;
}

<span class="hljs-comment">/**
 * 新建Topic间的消息路由关系
 */</span>
public <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> CreateTopicRouteTable() {
    CreateTopicRouteTableRequest request = <span class="hljs-keyword">new</span> CreateTopicRouteTableRequest();
    request.setSrcTopic(<span class="hljs-string">"/a1D8NwXCe56/device1/user/TopicToTopicDemo"</span>); <span class="hljs-comment">// 源Topic,即被订阅的Topic。</span>
    List&lt;<span class="hljs-built_in">String</span>&gt; dstTopics = <span class="hljs-keyword">new</span> ArrayList&lt;<span class="hljs-built_in">String</span>&gt;();
    dstTopics.add(<span class="hljs-string">"/a1D8NwXCe56/ceshi/user/TopicToTopicDemo"</span>); <span class="hljs-comment">// 目标Topic列表,即从SrcTopic订阅消息的Topic列表。</span>
    request.setDstTopics(dstTopics);
    CreateTopicRouteTableResponse response = (CreateTopicRouteTableResponse)executeTest1(request);
    <span class="hljs-keyword">if</span> (response != <span class="hljs-literal">null</span> &amp;&amp; response.getSuccess() != <span class="hljs-literal">false</span>) {
        System.out.println(<span class="hljs-string">"CreateTopicRouteTable 成功:"</span> + response.getSuccess());
    } <span class="hljs-keyword">else</span> {
        System.out.println(<span class="hljs-string">"CreateTopicRouteTable, requestId:"</span> + response.getRequestId() + <span class="hljs-string">"原因:"</span> + response.getErrorMessage());
    }
}

<span class="hljs-comment">/**
 *  查询向指定Topic订阅消息的目标Topic
 */</span>
public <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> QueryTopicRouteTable() {
    QueryTopicRouteTableRequest request = <span class="hljs-keyword">new</span> QueryTopicRouteTableRequest();
    request.setActionName(<span class="hljs-string">"QueryTopicRouteTable"</span>);
    request.setTopic(<span class="hljs-string">"/a1D8NwXCe56/device1/user/TopicToTopicDemo"</span>); <span class="hljs-comment">// 要查询的源Topic,即发布消息的Topic。</span>
    QueryTopicRouteTableResponse response = (QueryTopicRouteTableResponse)executeTest1(request);
    <span class="hljs-keyword">if</span> (response != <span class="hljs-literal">null</span> &amp;&amp; response.getSuccess() != <span class="hljs-literal">false</span>) {
        System.out.println(<span class="hljs-string">"QueryTopicRouteTable 成功:"</span> + response.getSuccess());
        System.out.println(response.getDstTopics());
    } <span class="hljs-keyword">else</span> {
        System.out.println(<span class="hljs-string">"CreateTopicRouteTable, requestId:"</span> + response.getRequestId() + <span class="hljs-string">"原因:"</span> + response.getErrorMessage());
    }
}

}


注意


当前阶段国内只有上海地区支持IoT服务,用户只需要根据需求替换AK及IoT的信息即可。删除产品的前提是产品中没有设备,管理门户目前删除产品需要短信验证码,直接使用SDK调用不需要验证码。


参考链接


IoT SDK Demo


API列表


相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联携手阿里云构筑高可用物联网消息中枢
面对换电生态高速发展的通信挑战,易易互联通过采用阿里云 MQTT + RocketMQ 的融合解决方案,成功构建了“海量接入、实时响应、弹性处理、安全可信”的物联网通信底座。该架构不仅显著提升了系统稳定性与可扩展性,更保障了高并发场景下的业务连续性,为实现“让换电成为营运补能第一选择”的战略目标提供了坚实的技术支撑。
167 28
|
6月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2120 42
|
8月前
|
存储 监控 安全
工业物联网关应用:PLC数据通过智能网关上传阿里云实战
本文介绍如何使用智能网关将工厂PLC数据传输至阿里云平台,适合中小企业远程监控设备状态。硬件准备包括三菱FX3U PLC、4G智能网关和24V电源。接线步骤涵盖PLC编程口与网关连接、运行状态检测及天线电源接入。配置过程涉及通讯参数、阿里云对接和数据点映射。PLC程序关键点包括数据上传触发和温度值处理。阿里云平台操作包含实时数据查看、数据可视化和规则引擎设置。最后提供常见故障排查表和安全建议,确保系统稳定运行。
670 1
|
9月前
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
129 0
|
11月前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
228 7
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
1401 5
|
Java 开发工具
通过Java SDK调用阿里云模型服务
在阿里云平台上,可以通过创建应用并使用模型服务完成特定任务,如生成文章内容。本示例展示了一段简化的Java代码,演示了如何调用阿里云模型服务生成关于“春秋战国经济与文化”的简短文章。示例代码通过设置系统角色为历史学家,并提出文章生成需求,最终处理并输出生成的文章内容。在实际部署前,请确保正确配置环境变量中的密钥和ID,并根据需要调整SDK导入语句及类名。更多详情和示例,请参考相关链接。
|
Java 开发工具
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
133 1

相关产品

  • 物联网平台
  • 下一篇
    开通oss服务