完成设备端和服务端业务开发后,启动服务端程序,与物联网平台建立连接,然后启动设备端模拟脚本上报数据,在服务端调用Pub接口下发控制指令,进行整体联调运行。

设备端上报数据联调

设备端

在CMD窗口,使用cd命令找到设备端的iot_device.js文件所在路径,然后输入如下命令,运行iot_device.js代码,启动设备。

node iot_device.js

设备接入成功,打印业务报文,如下所示。

payload=[ DE02,23,16,011101010,am024,1d478f ]
payload=[ DE02,29,24,011101010,am024,1d478f ]
payload=[ DE02,28,17,011101010,am024,1d478f ]
payload=[ DE02,26,18,011101010,am024,1d478f ]
payload=[ DE02,25,10,011101010,am024,1d478f ]
payload=[ DE02,18,10,011101010,am024,1d478f ]
payload=[ DE02,29,13,011101010,am024,1d478f ]

服务端

在IntelliJ IDEA,运行已完成开发的AmqpClient.java程序。

说明 本示例Demo代码中,添加了结束程序的代码(Thread.sleep(60 * 1000);),即程序启动成功,运行一分钟后会结束。实际场景中,您可根据需要自行设置运行时间。

服务端实时打印从物联网平台获取到的消息数据。报文中包含设备原始报文完整内容,如下图所示。

服务端日志

物联网平台云端

登录物联网平台控制台进入对应的实例,选择监控运维 > 日志服务 > 云端运行日志

可以看到业务类型设备行为的日志,记录设备上线(online)、设备离线(offline),如下图所示。

设备行为日志

还可以查看上行消息的消息详情,包括Topic和Payload,跟踪上行消息的流转过程,如下图所示。

上行消息日志

图中的日志已按产生时间标记顺序,依次为:

  1. 设备上报消息(图示中①)。
  2. 消息从规则引擎流转到AMQP(图示中②)。
  3. AMQP推送消息到服务端(图示中③)。
  4. 服务端响应消息ACK(图示中④)。

在控制台左侧,选择消息转发 > 服务端订阅,单击消费组列表,单击消费组充电宝业务数据处理对应的查看,进入消费组详情页面,可看到消息处理速率、堆积量、最后一条消息处理时间,以及服务端(即下图中的客户端)的信息。

消费组详情

服务端下发控制指令

服务端

在IntelliJ IDEA,运行已完成开发的PubClient.java程序。

在服务端执行Pub接口调用,向设备下发控制指令,如下图所示。

Pub接口调用

设备端

设备端会实时打印指令信息,如下所示。

topic /a16****/deviceSN1/user/cmd/down
message CMD,82923,ad322

物联网平台云端

登录物联网平台控制台进入对应的实例,选择监控运维 > 日志服务 > 云端运行日志

可以查看指令消息流转的完整过程,如下图所示。

下行消息日志

图中的日志已按产生时间标记顺序,依次为:

  1. 服务端调用下行API(图示中①)。
  2. 云端收到服务端的API调用请求后,推送消息到设备端(图示中②)。

执行结果

至此,我们在尽量少影响业务的前提下,完成了企业存量设备迁移上阿里云物联网平台的工作,为企业业务增长提供了稳定的技术保障。