智慧路灯设备SDK与平台通信(Java)
概述
本文基于Java代码演示设备通过MQTTS/MQTT协议接入华为云物联网平台,通过平台接口实现南向“数据上报”、“命令下发”的功能,通过应用侧的示例代码接收北向服务端订阅的消息示例。以智慧路灯为例,设备将光照强度等信息上报到IoT平台,应用服务器再接收从平台推送来的设备数据。
视频指导
前提条件
- 确保开发环境为JDK 1.8及以上版本。
- 已安装IntelliJ IDEA开发工具。如未安装请访问IntelliJ IDEA官网下载并安装。
上传产品模型
产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备的功能。
操作步骤:
创建设备
- 选择设备接入服务左侧导航栏的
,单击“注册设备”。图4 所有设备-注册设备
- 在弹出的窗口中,可以参考图中的内容填写(所属产品需要选择上述步骤创建的产品,密钥不填写,则由平台自动生成,这里是由平台自动生成)然后单击“确定”。
图5 注册设备-test123
- 设备创建成功后,需要保存设备ID和密钥(后续设备连接的时候需要用到)。
图6 设备-注册设备成功
建立连接
- 在建立连接之前,先修改以下参数:
1 2 3 4 5
//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,在创建设备时获得
- 完成上述信息的修改后,运行程序,在平台可以看到设备显示在线。
图7 设备列表-设备在线
属性上报
属性上报是指设备主动向平台上报自己的属性(该示例代码已实现自动定时上报功能,可参考下一节在iot平台查看设备上报的数据内容)。
1 2 |
//上报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检索和调试”。
图9 导航-API检索和调试
- 找到“设备命令”一栏,下发的参数请参考图片内容(跟产品模型中保持一致),然后单击“调试”按钮即可发送命令。
- service_id表示服务ID,例如:BasicData。
- command_name表示命令名称,例如:lightControl。
- paras表示下发参数,例如:{"switch":"ON"}。
设备侧可查看已收到命令(示例代码已实现接收命令topic的订阅)。
通过云端获取设备上报的数据
本文以AMQP为例,获取设备上报到云端的数据。
- 单击这里获取Java AMQP接入示例。
- 登录管理控制台,选择 ,创建数据转发规则。
图10 数据转发-创建规则
- 设置转发数据, 填入参数,创建规则。
图11 数据转发-新建属性上报流转规则
参数名
参数说明
规则名称
创建的规则名称,可自定义。
规则描述
对该规则的描述。
数据来源
选择“设备属性”
触发事件
设备属性上报
资源空间
选择所有资源空间
- 设置转发目标(注意:需要单击“预置服务接入凭证”按钮,获取下载文件)。
图12 新建转发目标-转发至AMQP推送消息队列
参数名
参数说明
转发目标
AMQP推送消息队列
接入凭证
单击“预置服务接入凭证”,保存下载的文件(包含access_key和access_code
消息队列
DefaultQueue
- 单击启动规则。
图13 启动规则-转发至AMQP
- 修改步骤1获取的AMQP代码样例中的参数。
- AMQP数据成功接收。