操作场景
物联网解决方案通常需要实时获取设备上报到物联网平台的数据、状态等信息,再结合各自场景的业务数据来完成整套物联网解决方案的闭环业务流程。
本文档主要介绍如何将采集的车载设备数据使用平台的规则引擎消息转发至用户自建的 HTTP 服务。用户可根据此文档中的代码示例快速了解并构建自己的 HTTP 服务获取设备数据。
前提条件
1. 已开通实例,模拟程序已接入平台并上报数据至平台调试通过。
2. 用户需提前注册开通 腾讯云 SCF 产品,通过 SCF 产品托管 HTTP 服务,将对应的 HTTP 服务接收地址准备好配置到规则引擎转发服务中。
说明:
用户基于腾讯云 SCF 产品部署好 HTTP 服务后,需要确保模拟程序连接平台并持续上报数据,HTTP 服务才能打印接收到的设备数据。
操作步骤
步骤一:使用 SCF 部署 HTTP 服务
本文档使用腾讯云云函数(Serverless Cloud Function,SCF)产品快速搭建 Web 服务,来接收物联网平台规则引擎处理后的数据。本示例只展示如何接收物联网平台的数据,进一步使用数据需要用户根据实际业务场景去处理。
在 SCF 平台基于 Express 快速搭建 Node 服务示例
1. 登录 SCF 控制台,选择 Serverless 应用,单击新建应用。

2. 选择 Web 应用下的 Express 框架模板,单击下一步。

3. 输入应用名,选择环境、地域和上传方式。配置结束后单击完成。

4.
等待部署完成后进入应用,在 API 网关中可以看到 URL
。此 URL 就是您要在规则引擎中填写的 API 地址,假设此 URL 地址为:https://iot-api/,那么在本示例中您的 API 地址为 URL 加上接口路由,即:https://iot-api/test。单击函数名称,进入函数服务。
5. 在函数服务中,单击 app.js,删除原来的代码,复制示例代码到
app.js 文件中进行覆盖。const express = require('express')const path = require('path')const bodyParser = require('body-parser');const sha1 = require('js-sha1');const app = express()app.use(bodyParser.json());// 鉴权信息校验的代码在上文已经解释过,这里使用Middleware来简化代码function checkSignatureMiddleware(req, res, next) {const token = 'test';const { signature, timestamp, nonce } = req.headers;let tmpStr = [token, timestamp, nonce].sort().join('');tmpStr = sha1(tmpStr);if (tmpStr === signature) {next(); // 身份校验通过,继续执行后续的中间件和路由处理器} else {res.status(403).send('Forbidden'); // 身份校验失败,返回403 Forbidden 状态码}}app.get('/test', checkSignatureMiddleware, (req, res) => {const { echostr } = req.headers;res.set('Content-Type', 'text/plain; charset=utf-8');res.send(echostr);});// 注意接收规则引擎转发的数据接口为 POST 类型app.post('/test', checkSignatureMiddleware, (req, res) => {const params = req.body.payload.params;console.log(params); // { body_temperature: 36 }res.end();});// Web 类型云函数,只能监听 9000 端口app.listen(9000, () => {console.log(`Server start on http://localhost:9000`);});
6. 上述步骤完成后,在代码编辑器的上方选择终端 > 新建终端,然后在底部终端中输入命令:
cd src 进入 src 目录,接着输入命令npm install js-sha1 安装依赖包。
7. 等待依赖安装完成之后,单击下图红色线框中的部署,即可成功部署 Web 服务,SCF 会自动启动该 Web 服务,约5秒 - 10秒后系统会提示“部署成功”。

步骤二:控制台配置规则引擎
创建规则引擎
1. 登录 物联网开发平台控制台,选择用户购买的实例。
2. 单击左侧菜单中的规则引擎,然后单击规则引擎列表页的新建规则。
规则名称:输入“HTTP_Forward”或其他内容。
规则描述:输入转发某类产品下设备数据的备注信息。


3. 规则基本信息填写完成后,单击确定,即可完成规则的创建。
配置规则引擎
筛选数据
1. 在规则引擎列表选择刚创建成功的规则 HTTP_Forward,单击规则名称或操作列中的管理,进入规则引擎配置页面。
2. 单击筛选数据右侧的编辑,选择要转发的设备数据源。

3. 在编辑规则页面,输入或选择如下信息。
字段:输入"*" ,表示将设备上报的所有 JSON 数据进行转发。
Topic:首先选择对应的产品,选择所创建的产品(如车载设备);第二步选择设备,请选择全部设备,表示规则引擎将转发该产品下所有的设备;最后一步选择转发的数据,请选择物模型属性上报。


4. 单击确定,将返回配置规则页面,系统自动生成如下图所示对应的 TOPIC 及筛选数据 SQL。

行为操作配置
1. 在规则引擎列表选择刚创建成功的规则 HTTP_Forward,单击规则名称或操作列中的管理,进入规则引擎配置页面。
2. 单击添加行为操作,配置相关规则。

3. 行为类型选择“数据转发到第三方服务(Forward)”;API 地址类型为“使用已有 HTTP 服务地址”,HTTP 地址则为步骤一中 第4步 复制 SCF 自动生成的 URL 地址,并在最后加上
/test。类似https://service.*****.apigw.tencenttcs.com/release/test。

4. 请勾选 “增加鉴权 Token”,且输入 test。
注意:
该 Token 必须与 SCF 函数服务中 app.js 里定义的 Token 值一致。
5. 单击保存,完成规则行为配置。
6. 返回规则引擎列表,将该规则的状态设置为启用状态。
步骤三:模拟验证
1. 参见 实例接入,使用模拟程序上报数据。注意上报的数据相关产品需要与规则引擎筛选的目标产品、设备保持一致。若不一致 SCF 日志查询将无法打印输出数据。
2. 进入 SCF 的 函数服务 页面,选择目标函数服务后单击日志查询,即可查看 SCF 打印的日志,其中包含设备上报的物模型属性。

