跳至主要內容

设备上报数据

约 1084 字大约 4 分钟

设备上报数据

在上一节中,您已经获得了设备证书的两个标识。

对于普通的物联网场景,使用设备的这两个标识,就可以完成设备数据向云端的上报,也就是我们通常说的数据采集。

ThingsCloud 支持多种设备接入协议,这里我们分别以常用的 HTTPMQTT 协议为例,快速实现数据上报,完成我们进入互联网开发世界的第一个 Hello World。

假设我们的物理设备是一个通过 UART 串口连接温度传感器的 ARM 单片机,通过 WiFi 模组接入互联网。我们希望将温度数据上报到云平台。

通过 HTTP 上报数据

通过使用 HTTP 接入协议,我们只需要在设备固件中访问云平台的 HTTP 接入点,将温度数据提交到云端。

不同区域有不同的 HTTP 接入点,我们可以设备详情页的 连接 页面找到,包括 HTTP 和基于 SSLHTTPs 两种类型。使用 HTTPs 可以获得传输层加密的特性,但对单片机资源要求较高,您需要有支持 SSLHTTP 客户端代码。

当我们找到设备 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 官网open in new window 来模拟设备端与 ThingsCloud 建立 MQTT 连接以及上报数据。

这里我们采用 MQTT 普通认证方式,通过 username/password 完成连接身份验证。同样要用到之前拿到的设备证书,身份信息对应关系如下:

参数
usernameAccessToken
passwordProjectKey
clientId空或任意

在 MQTT.fx 中设置连接参数,如下图:

MQTT.fx 设置连接到 ThingsCloud
MQTT.fx 设置连接到 ThingsCloud

连接成功后,在 Publish 中填写发布到的主题 attributes,这个主题是 ThingsCloud 标准协议的属性上报主题。

然后在内容区中填写以下 JSON 消息:

{
    "temperature": 34.2
}

点击 Publish 发布按钮,即可完成一次设备数据上报。

MQTT.fx 发布数据到 ThingsCloud
MQTT.fx 发布数据到 ThingsCloud

提示

更多 MQTT 接入 ThingsCloud 的实战教程,请进入 教程

提示

在实际的设备开发中,不同的硬件平台有不同的开发方式,我们将会对一些主流硬件提供 SDK 和代码示例,包括基于 ARM/RISC-V 的单片机、基于 RTOS/Linux 操作系统的嵌入式硬件、基于 OpenCPU 模式的通信模组等。

更多设备接入方式

ThingsCloud 支持更多设备接入方式,详情请浏览 设备接入指南open in new window