华为云:基于示例代码体验物联网上云

来自CloudWiki
Cloud17讨论 | 贡献2023年4月18日 (二) 15:11的版本
跳转至: 导航搜索

https://support.huaweicloud.com/qs-iothub/iot_05_00122.html

https://github.com/huaweicloud/huaweicloud-iot-device-sdk-python/blob/main/README_CN.md#6

概述

本文基于Java代码演示设备通过MQTTS/MQTT协议接入华为云物联网平台,通过平台接口实现南向“数据上报”、“命令下发”的功能,通过应用侧的示例代码接收北向服务端订阅的消息示例。以智慧路灯为例,设备将光照强度等信息上报到IoT平台,应用服务器再接收从平台推送来的设备数据。

前提条件

确保开发环境为JDK 1.8及以上版本。

已安装IntelliJ IDEA开发工具。如未安装请访问IntelliJ IDEA官网下载并安装。

上传产品模型

产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备的功能。

操作步骤

访问设备接入服务,单击“控制台”进入设备接入控制台。

选择左侧导航栏的“产品”,单击右上角“创建产品”。

在弹出的窗口中,可以参考图中的内容填写。


下载模型文件,该模型文件已开发完毕(由开发产品模型开发完毕的产品模型导出)。详细开发过程指导请参考在线开发产品模型。

创建成功后,单击刚创建的产品,然后单击上传模型文件(无需解压,并且压缩包的名称不能有括号),上传刚下载的模型文件

600px

创建设备

选择设备接入服务左侧导航栏的“设备 > 所有设备”,单击右上角“注册设备”。


在弹出的窗口中,可以参考图中的内容填写(所属产品需要选择上述步骤创建的产品,密钥不填写,则由平台自动生成,这里是由平台自动生成)然后单击“确定”。


设备创建成功后,需要保存一下设备ID和密钥(后续设备连接的时候需要用到)。


导入代码样例

下载JAVA样例。

打开IDEA开发者工具,点击“ Import Project”。

选择步骤1中下载的样例,然后根据界面提示,单击“next”。

600px

完成代码导入。

600px

建立连接

设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。 在建立连接之前,先修改以下参数: //IoT平台mqtt对接地址 static String serverIp = "iot-mqtts.cn-north-4.myhuaweicloud.com"; //注册设备时获得的deviceId,密钥(要替换为自己注册的设备ID与密钥) static String deviceId = "yourDeviceID"; //device_id, 在创建设备时获得 static String secret = "yourSecret"; //secret,在创建设备时获得

serverIp为物联网平台设备接入MQTT协议的地址,详细获取方式请参考资源获取。 device_id和secret为设备ID和密钥,在成功创建设备后获取。 完成上述信息的修改后,运行程序,在平台可以看到设备显示在线。 点击放大

属性上报 属性上报是指设备主动向平台上报自己的属性(该示例代码已实现自动定时上报功能,可参考下一节在iot平台查看设备上报的数据内容)。

//上报json数据,注意serviceId要与产品模型中的定义对应 String jsonMsg = "{\"services\":[{\"service_id\":\"BasicData\",\"properties\":{\"luminance\":32},\"eventTime\":null}]}";

消息体jsonMsg组装格式为JSON,其中service_id要与产品模型中的定义对应,properties是设备的属性; luminance表示路灯亮度; event_time为可选项,为设备采集数据UTC时间,不填写默认使用系统时间。 设备或网关成功连接到物联网平台后,即可调用MqttAsyncClient的publish(String topic,MqttMessage message)方法向平台上报设备属性值。

查看上报数据 运行main方法成功启动后,即可在设备详情页面查看上报的设备属性数据。详细接口信息请参考设备属性上报。

点击放大

说明: 如果在“设备详情”页面没有最新上报数据,请修改产品模型中服务和属性的内容,确保设备上报的服务/属性和产品模型中的服务/属性一致(如果不一致,则历史数据中看不到设备上报的数据),或者进入“产品 > 模型定义”页面,删除所有服务。

命令下发 在控制台界面点击左侧菜单栏的“API检索和调试”。 点击放大

找到“设备命令”一栏,下发的参数请参考图片内容(跟产品模型中保持一致),然后点击“调试”按钮即可发送命令。 点击放大

service_id表示服务ID,例如:BasicData。 command_name表示命令名称,例如:lightControl。 paras表示下发参数,例如:{"switch":"ON"}。 设备侧可查看已收到命令(示例代码已实现接收命令topic的订阅)。

点击放大

通过云端获取设备上报的数据 本文以AMQP为例,获取设备上报到云端的数据。

点击这里获取Java AMQP接入示例。 登录管理控制台,选择“规则 > 数据转发”,创建数据转发规则。 点击放大

设置转发数据, 填入参数,创建规则。 点击放大

参数名

参数说明

规则名称

创建的规则名称,可自定义。

规则描述

对该规则的描述。

数据来源

选择“设备属性”

触发事件

设备属性上报

资源空间

选择所有资源空间

设置转发目标(注意:需要点击“预置服务接入凭证”按钮,获取下载文件)。 点击放大

参数名

参数说明

转发目标

AMQP推送消息队列

接入凭证

单击“预置服务接入凭证”,保存下载的文件(包含access_key和access_code

消息队列

DefaultQueue

点击启动规则。 点击放大

修改步骤1获取的AMQP代码样例中的参数。 点击放大

yourAccessKey:连接凭证接入键值,参考步骤4获取。 yourAccessCode:连接凭证接入码,参考步骤4获取 yourAMQPUrl:amqp域名,请前往控制台-总览页面-平台接入地址获取,如下图: 点击放大

yourQueue:队列名,使用默认队列DefaultQueue。 AMQP数据成功接收。 点击放大

更多


IoT Device SDK(Python)提供设备接入华为云IoT物联网平台的Python版本的SDK,提供设备和平台之间通讯能力,以及设备服务、网关服务、OTA等高级服务,并且针对各种场景提供了丰富的demo代码。

前言

iot-device-sdk-python(以下简称SDK)提供设备接入华为云IoT物联网平台的Python版本的SDK,提供设备和平台之间通讯能力, 以及设备服务、网关服务、OTA等高级服务,并且针对各种场景提供了丰富的demo代码。 IoT设备开发者使用SDK可以大大简化开发复杂度,快速的接入平台。

本文通过实例讲述SDK帮助设备用MQTT协议快速连接到华为物联网平台。

华为云官网:https://www.huaweicloud.com/

点击华为云官网右上角“控制台”进入管理控制台,在页面上方搜索“IoTDA”进入设备接入服务控制台。

SDK简介

SDK面向运算、存储能力较强的嵌入式终端设备,开发者通过调用SDK接口,便可实现设备与物联网平台的上下行通讯。SDK当前支持的功能有:

  • 支持设备消息、属性上报、属性读写、命令下发
  • 支持OTA升级
  • 支持密码认证和证书认证两种设备认证方式
  • 支持设备影子查询
  • 支持网关服务、子设备管理、子设备消息转发
  • 支持面向物模型编程
  • 支持自定义topic
  • 支持文件上传/下载
  • SDK目录结构

iot_device_sdk_python:sdk代码

iot_device_demo:demo演示代码

iot_gateway_demo:网关与子设备管理demo演示代码