Serverless,实现 IoT 设备运行状态缓存到Redis方案

该技术方案介绍了如何利用物联网平台的规则引擎将设备上报的运行状态实时存储到表格存储中,无需编写应用程序代码。设备定时上报状态,规则引擎将数据处理后流转至数据库,通过Node.js查询OTS获取设备最新状态。
摘要由CSDN通过智能技术生成

今天,我们给大家带来基于云产品组合的方案,无需编写应用程序代码,实时缓存IoT设备上报的当前运行状态,供业务系统查询的技术方案。

技术原理

借助物联网平台提供的规则引擎模块,我们可以轻松的把设备上报的最新状态存储到Key-Value的数据库--表格存储OTS/Redis/MongoDB中,技术方案如下:

IoT物联网开发

首先我们在IoT物联网控制台创建产品水泵,并注册2个设备:

然后,给每个设备添加city标签,如下:

水泵监控场景中,每10分钟会定时上报运行状态到IoT平台,具体通信 Topic 和payload 如下:

// 定时上报运行状态的Topic
/${productKey}/${deviceName}/user/bizHeart/post
// 对应payload结构体
{
    status: 'RUNNING', //运行状态 RUNNING,STOP,SHUTDOWN
    speed: 3000, //当前转速
    waterOutput: 125,//当前出水量
    workingTime: 72//工作时长 xx分钟
}

表格存储数据库

我们在表格存储OTS控制台创建一个数据表,以设备deviceName为主键,扩展信息为设备当前状态属性,无需预先定义。

创建完成后,数据表基本信息,如下:

规则引擎配置

当设备上报状态数据后,需要通过预先配置规则引擎实时流转到表格存储中,规则引擎配置如下:

数据处理的SQL参考:

SELECT 
deviceName() as deviceName,
attribute('coordinate') as coordinate, 
attribute('city') as city, 
timestamp('yyyy-MM-dd HH:mm:ss') as currentTime,
status,speed,waterOutput,workingTime 
FROM 
"/a1vYwzHjT6p/+/user/bizHeart/post"

数据转发配置如下:

联机运行

当设备启动,上报状态数据后,我们在IoT控制台的日志服务里可以查看到如下消息报文记录:

以及规则引擎流转日志:

同时在表格存储数据库中,我们也可以查看到设备当前状态数据:

查询设备状态

Node.js方式从表格存储OTS中读取指定key的数据参考据代码如下:

var TableStore = require('tablestore');
var client = new TableStore.Client({
    accessKeyId: '账号accessKey',
    secretAccessKey: '账号secretAccessKey',
    endpoint: '表格存储接入点',
    instancename: '表格存储实例ID',
    maxRetries: 3
});


var params = {
    tableName: '表名',
    primaryKey: [{ 'deviceName': '设备Id' }],
    maxVersions: 1
};


client.getRow(params, function(err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }


    if (data.row.primaryKey) {
        data.row.primaryKey.forEach(function(item) {
            console.log('======> getRow: ', item.name + '=' + item.value);
        })


        data.row.attributes.forEach(function(item) {
            console.log('\t\t' + item.columnName + '=' + item.columnValue);
        })
    }


});

设备最新状态数据查看:

$ node queryOTS.js 
======> getRow:  deviceName=xxxxxx
    city=xxxxxx
    coordinate=xxxxxx
    currentTime=xxxxxx
    status=xxxxxx
    speed=xxxxxx
    waterOutput=xxxxxx
    workingTime=xxxxxx

【往期回顾】

1、39张传感器工作原理GIF图汇总

2、智能手持测温枪开发实践

3、JMeter压测MQTT服务性能实战

4、IoT物联网平台日志服务详解

5、自建MQTT集群迁移阿里云IoT实践

6、工业Modbus电力104规约接入IoT平台

7、设备免烧录三元组,即时注册解决方案

8、IoT+TSDB+Quick BI 搭建楼宇环境监控

9、JS全栈开发,构建智能家居小程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值