设备上报数据
设备上报数据
在上一节中,您已经获得了设备证书的两个标识。
对于普通的物联网场景,使用设备的这两个标识,就可以完成设备数据向云端的上报,也就是我们通常说的数据采集。
ThingsCloud 支持多种设备接入协议,这里我们分别以常用的 HTTP
和 MQTT
协议为例,快速实现数据上报,完成我们进入互联网开发世界的第一个 Hello World。
假设我们的物理设备是一个通过 UART 串口连接温度传感器的 ARM 单片机,通过 WiFi 模组接入互联网。我们希望将温度数据上报到云平台。
通过 HTTP 上报数据
通过使用 HTTP
接入协议,我们只需要在设备固件中访问云平台的 HTTP
接入点,将温度数据提交到云端。
不同区域有不同的 HTTP
接入点,我们可以设备详情页的 连接
页面找到,包括 HTTP
和基于 SSL
的 HTTPs
两种类型。使用 HTTPs
可以获得传输层加密的特性,但对单片机资源要求较高,您需要有支持 SSL
的 HTTP
客户端代码。
当我们找到设备 HTTP
接入点后,就可以使用如下 URL 来提交数据。
http: <endpoint>/device/v1/<AccessToken>/attributes
或使用 HTTPs
https: <endpoint>/device/v1/<AccessToken>/attributes
以上 URL
是云平台提供的 API 规范,在这里是代表 属性上报
。
使用 POST
方法提交如下 JSON
格式的数据:
{
"temperature": 34.2
}
为了看到效果,我们直接在系统命令行中使用 cURL
来模拟 HTTP
请求。
curl -v -X POST -d "{\"temperature\": 34.2}" https://<endpoint>/device/v1/<AccessToken>/attributes -H "Content-Type:application/json" -H "Project-Key:<ProjectKey>"
提示
记得将这里的 <AccessToken>
和 <ProjectKey>
替换为您的设备证书。
如果没有什么意外,您会看到 cURL
命令返回的一大串请求结果,最底部会有类似如下的响应正文。
{"result":1,"ts":1608911646584}
这就代表着云平台已经成功收到了设备的数据上报。
如果您不喜欢使用命令行的 cURL
,也可以使用一些第三方 API 客户端工具,支持 macOS 和 Windows,比如:
通过 MQTT 上报数据
MQTT 全称是 Message Queuing Telemetry Transport,它是一种基于消息队列的轻量级应用层通信协议,实现了消息发布和订阅。设备可以作为客户端的形式通过它来发布和接收消息,实现数据上报和实时控制。
ThingsCloud 公有云支持全球多个区域,并随着设备接入量不断扩张。每个接入的设备有专用的 MQTT 接入点,您可以在设备详情页的【连接】中找到 MQTT 接入点,例如:
mqtt://<endpoint>:1883
以上表示 MQTT 接入点服务器主机为 <endpoint>
, 端口为 1883
。其中 <endpoint>
会以域名形式出现,不支持 IP。
为了方便演示,我们使用 MQTT.fx 官网 来模拟设备端与 ThingsCloud 建立 MQTT 连接以及上报数据。
这里我们采用 MQTT 普通认证方式,通过 username/password 完成连接身份验证。同样要用到之前拿到的设备证书,身份信息对应关系如下:
参数 | 值 |
---|---|
username | AccessToken |
password | ProjectKey |
clientId | 空或任意 |
在 MQTT.fx 中设置连接参数,如下图:
连接成功后,在 Publish 中填写发布到的主题 attributes
,这个主题是 ThingsCloud 标准协议的属性上报主题。
然后在内容区中填写以下 JSON
消息:
{
"temperature": 34.2
}
点击 Publish
发布按钮,即可完成一次设备数据上报。
提示
更多 MQTT 接入 ThingsCloud 的实战教程,请进入 教程。
提示
在实际的设备开发中,不同的硬件平台有不同的开发方式,我们将会对一些主流硬件提供 SDK 和代码示例,包括基于 ARM/RISC-V 的单片机、基于 RTOS/Linux 操作系统的嵌入式硬件、基于 OpenCPU 模式的通信模组等。
更多设备接入方式
ThingsCloud 支持更多设备接入方式,详情请浏览 设备接入指南。