前言
目前市场上有很多物联网开发平台,本次就在腾讯云平台上,做一个简单的尝试。
Get Started
- 创建产品和设备
首先,进入物联网开发平台:https://console.cloud.tencent.com/iotexplorer
这里介绍两个概念,后面也会用到:
iot-explorer,即物联网开发平台
iot-hub,即物联网通信https://cloud.tencent.com/product/iothub,后面会涉及到此中的规则引擎。
进入物联网开发平台后,首先创建一个项目,可以叫“智慧城市”;
接着创建一个自定义产品:
创建好之后,定义一个自定义功能,属性为字符串:
最后创建一个设备:
-
设备调试
点击刚刚创建好的设备,调试,会出现一个虚拟下发设备命令的界面,尝试发一个字符串给设备吧。
查看设备日志,可以看到刚刚下发的命令:
虚拟设备调试功能,点击进去,可以看到有一个虚拟设备状态上报的控制面板,而且有一个二维码可以模拟一个小程序,接收设备上报数据。不过,由于自定义产品无法自动生成一个小程序界面,所以我们重新创建一个智能灯的模板产品,然后尝试一下:
同样的,创建一个产品:
点击进入虚拟设备:
手机小程序:
- 数据同步
该功能是用于将设备的上线下线状态信息,和设备上报数据信息,通过http post的方式,推送给你自己的服务。
我使用go语言简单做了一个http的服务,并部署在云端服务器上面,将url配置到腾讯云平台:
由于虚拟设备无法支持该功能,所以我们要跑一个c语言的脚本,跟着说明页面做一遍即可,刚好复用上我们创建的智能灯的产品。
https://cloud.tencent.com/document/product/1081/34744
运行后,可以看到我们云端的日志,打印出设备的推送数据了。
Go测试脚本参考:
package main
import "github.com/gin-gonic/gin"
import "fmt"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.POST("/data", func(c *gin.Context) {
buf := make([]byte, 1024)
n, _ := c.Request.Body.Read(buf)
fmt.Println(string(buf[0:n]))
c.JSON(200, gin.H{
"message": "success",
})
})
r.Run(":9080") // listen and serve on 0.0.0.0:9080
}
至此,整条设备上行链路已经通了。
后记
刚刚使用的数据同步服务,其源头是使用了iot-hub的规则引擎。进入规则引擎管理页面,可以看到创建了4条规则:
进入其中一个,看到推送的http url即我们刚刚配置的数据同步服务的url: