物联网行业已经发展到各个垂直行业真正落地和商用运营阶段,各大厂都在积极布局和拥抱合作伙伴,在云管端各个环节,建立开放平台,推出一揽子的解决方案,打造各自差异化的生态。本文基于腾讯自研的物联网操作系统TencentOS tiny以及腾讯云物联网通信平台IoT Hub进行物联网案例开发。
本案例设计,用户可以通过微信小程序与IoT设备进行简单交互,分三部分组成,包括用户应用,云平台,IoT设备,其架构图如下:
下面就分别展开描述这三个部分的开发过程。
IoT设备
IoT设备可以简单理解为一种既有联网能力的嵌入式设备,本次案例就是基于TEG云架构平台部系统研发中心自研的物联网操作系统TencentOS tiny和配套的自研开发板,TencentOS tiny提供可靠的OS内核功能,丰富的物联网应用组件以及轻量的SDK,方便开发者迅速开发,简单几步便可轻松让IoT设备上云。
一张图描述TencentOS tiny的架构:
TencentOS tiny开发板实物图 :
开发板功能丰富,基本满足物联网各个应用场景的demo,本次使用的硬件模块,简单框图:
光照传感器和温湿度传感器都是通过模拟信号转换成数字信号,MCU通过I2C通信协议读取传感器数据。显示屏可以显示可视化数据,也是通过I2C协议来控制,螺旋桨电机和LED灯则通过普通GPIO来控制,TencentOS tiny已经针对硬件操作封装HAL硬件抽象层,开发者不用过多了解具体的硬件原理和驱动层协议,便可以轻松无感知的操作硬件。
IoT设备的联网能力主要是靠WIFI模组来实现,模组内部已经封装好了协议栈,MCU通过AT命令,就可以与云端服务器进行连接,本次是基于MQTT协议与云端对接,所以使用WIFI模组与云端服务器建立TCP链接。TencentOS tiny提供了可靠的AT框架和网络连接模块,兼容了市面上常用的模组,用户只要适配好以下几个函数功能,则设备就有了联网能力。
简单介绍了OS和硬件,以下就是设备上云的流程。
TencentOS tiny提供了丰富的组件,用户开发的时候,只需修改少量代码就可以实现数据上云服务。本案例的数据通信协议使用MQTT,payload采用JSON数据格式。
数据上行:
数据下行:
TencentOS tiny提供COAP,MQTT等主流的IoT协议框架,提供统一的极简风格的API操作,有效提高开发者的效率。
MQTT连接代码:
MQTT主题订阅代码:
MQTT数据发布代码:
MQTT数据接收代码:
本次案例目的只是demo演示作用,因此基于TencentOS tiny的软件简单流程如下:
启动代码:
主线任务代码:
传感器任务代码:
由于云平台IoT Hub的MQTT连接需要鉴权,因此,编译工程之前,需要根据IoT Hub平台侧的鉴权信息配置MQTT连接参数,平台侧也提供了Python源码,方便生成该信息。开发者只要修改以下和云平台相关的信息,就可以与云端服务器建立MQTT连接,实现数据的上云服务。
云平台配置
腾讯云物联网通信IoT Hub平台提供了方便的配置,很快建立好云端的产品属性,主要步骤是建立产品,添加设备,配置规则引擎,通过云平台的产品ID,设备名,设备密钥生成MQTT连接的鉴权参数。规则引擎配置MQTT的payload内容转发到第三方服务器。以便于与用户应用对接。规则引擎还提供SQL语言进行数据筛查,方便用户选择定制的信息。
(1)登录腾讯云物联网通信平台,创建新产品
确认之后,得到产品ID:
(2)在该产品下,创建新设备:
确定添加之后,得到设备密钥,用于接入鉴权:
(3)新建规则引擎,使MQTT的payload内容转发到用户应用的http server。首先,使用SQL语言筛选信息,本次配置转发所有信息,最后添加行为,填写转发到第三方服务器的URL:
简单3步就可以配置好云平台,数据上云之后,可以通过平台的云日志功能查看数据。
用户应用
腾讯云物联网平台提供了在线API 3.0 Explorer工具,能显著降低使用云 API 的难度,帮助用户高效构建物联网应用,且自动生成Java, Python, PHP, GO等多种主流的服务端SDK代码,可以直接使用生成的代码用于服务端开发。
API 3.0 Explorer代码生成
通过API 3.0 Explorer生成的SDK代码,实现了设备的控制和查询,结合规则引擎配置的转发功能,已经完成了设备的上下行通信的核心功能。
在此基础上,结合开发板提供的温湿度传感器,光照传感器,LED灯,电机等功能组件,开发了一个小型的物联网应用,基于websocket服务与触手可及的微信小程序对接 ,实现和设备的交互,主要包括设备监控,可以实时显示传感器数据或者告警信号,操作界面可以对设备进行远程控制。开发的小程序界面:
写在最后
以上只是简单的演示TencentOS tiny和腾讯云物联网平台的使用以及和第三方应用服务器的对接。如果真正要到垂直行业去落地执行,需要结合具体需求进行优化和迭代。比如,物联网数据的安全性以及实际运营的OTA升级需求,目前demo走的是非加密通道,实际应用场景,可以结合TencentOS tiny提供的安全组件和云端进行加密安全传输,使用TencentOS tiny提供的OTA组件,通过云端操作,可以大批量给设备进行软件版本升级迭代。TencentOS tiny提供可靠和便捷的基础服务,开发者只要关心业务逻辑,极大提高了产品开发效率,大大缩短了用户产品的上市周期。