钉钉机器人接收阿里云物联网平台转发的数据

开篇先献上效果图:
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
在这里插入图片描述
现在钉钉已经成为跟微信一样流行的APP了,社交端微信占了,企业端现在的老大应该是非钉钉莫属了,现在用户数量应该已经超过4亿了吧~~疫情期间钉钉可是真火了一把!😄


好了,下面进入正题


1. 数据获取

首先数据的来源是接入到阿里物联网平台的IoT设备,我这里是采用物模型透传的方式上报设备数据的。

2. 数据解析

透传的物模型数据需要通过数据解析脚本解析为Json格式的数据。

数据解析脚本相关内容参考我的另一个帖子,链接如下↓
阿里云物联网平台物模型数据解析脚本

设备上报的数据经过数据解析脚本后的Json格式的数据:

{
  "method": "thing.event.property.post",
  "id": "4",
  "params": {
    "TotalPower": 199.99,
    "FuelTankLiquidLevel": 55,
    "OutVoltage": 24.4,
    "RunningStatus": 8,
    "OutPower": 665.8,
    "TotalRuntime": 12033,
    "OutCurrent": 2.4,
    "FuelBoxLiquidLevel": 19,
    "TotalStartTime": 10760
  },
  "version": "1.0"
}

3. 数据查询

上报的Json格式的属性数据经规则引擎解析后,数据格式如下:
设备属性上报数据格式参考说明

{	
	"deviceType":"CustomCategory",	
	"iotId":"OKVxD4DYdSh3J1QE2TZ9000100",
	"requestId":"4",
	"productKey":"a1dI2NaLua6",
	"gmtCreate":1585290093636,
	"deviceName":"DEV-1372",
	"items":{
		"TotalPower":{
			"value":178.17,
			"time":1585290093642
		},
		"FuelTankLiquidLevel":{
			"value":55,
			"time":1585290093642
		},
		"OutVoltage":{
			"value":47.8,
			"time":1585290093642	
		},
		"RunningStatus":{
			"value":8,
			"time":1585290093642
		},
		"OutPower":{
			"value":665.8,
			"time":1585290093642
		},
		"TotalRuntime":{
			"value":9851,
			"time":1585290093642
		},
		"OutCurrent":{
			"value":2.4,
			"time":1585290093642
		},
		"FuelBoxLiquidLevel":{
			"value":19,
			"time":1585290093642
		},
		"TotalStartTime":{
			"value":8578,
			"time":1585290093642
		}
	}
}

规则引擎中云产品流转的规则查询语句:
这里我们只取了一部分的数据用来测试效果,可根据自己的需要调整查询参数的个数,这里要注意的是:数据值采用如下方式获取items.OutCurrent.value,如不太确定数据查询后的数据格式,可通过SQL调试来验证。

SELECT deviceName() as deviceName,attribute('deviceISN') as isn,items.RunningStatus.value as RunningStatus ,items.OutPower.value as OutPower,items.OutVoltage.value as OutVoltage,items.OutCurrent.value as OutCurrent,items.FuelBoxLiquidLevel.value as FuelBoxLiquidLevel,timestamp('yyyy-MM-dd HH:mm:ss') as time 
FROM "/a1dI2NaLua6/+thing/event/property/post" 
WHERE items.OutVoltage.value<48

规则查询语句:
在这里插入图片描述

4. 函数计算

  • 函数计算,是一个事件驱动的全托管计算服务,目前支持的语言Java、NodeJS、Python等语言。
  • 编写函数脚本,此处选择Nodejs执行环境,从上游物联网平台处获取到设备编号,运行状态,输出功率,输出电压和上报时间,依据钉钉消息格式组装,并用https模块post数据到钉钉群机器人的webhook接口。

在函数计算中创建一个IoT_Service服务,然后在服务中配置和编写好pushData2DingTalk函数:
在这里插入图片描述

函数pushData2DingTalk完整脚本如下:


const https = require('https');
const accessToken = '87330309684aa801896f3f479e835cd91a8d70daf8f5be0a13fa015f110c4939';
module.exports.handler = function(event, context, callback) {
    var eventJson = JSON.parse(event.toString());

    //钉钉消息格式
    const postData = JSON.stringify({
        "msgtype": "markdown",
        "markdown": {
        "title": "摩氢设备云监控",
        "text": "### 摩氢设备云监控参数上报\n" +
        "> ![screenshot](https://img-blog.csdnimg.cn/20200326220445334.png)\n\n"+
        "> 设备编号:" + eventJson.deviceName+ "\n\n" +
        "> 运行状态:" + eventJson.RunningStatus + "\n\n" +
        "> 输出功率:" + eventJson.OutPower + "W\n\n" +
        "> 输出电压:" + eventJson.OutVoltage + "V\n\n" +
        "> 输出电流:" + eventJson.OutCurrent + "A\n\n" +
        "> 剩余燃料:" + eventJson.FuelBoxLiquidLevel + "mm\n\n" +
        "> ###### " + "2020-03-26 21:29:00" + " 发布 by [物联网平台](https://www.aliyun.com/product/iot) \n"
        },

        "at": {
            "isAtAll": false
        }
    });

    const options = {
        hostname: 'oapi.dingtalk.com',
        port: 443,
        path: '/robot/send?access_token=' + accessToken,
        method: 'POST',
        headers: {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(postData)
        }
    };
    const req = https.request(options, (res) => {
        res.setEncoding('utf8');
        res.on('data', (chunk) => {});
        res.on('end', () => {
        callback(null, 'success');
        });
    });

    // 异常返回
    req.on('error', (e) => {
        callback(e);
    });

    // 写入数据
    req.write(postData);
        req.end();
};

注意:
这里的accessToken 是从钉钉机器人那里获取到的

accessToken = '87330309684aa801896f3f479e835cd91a8d70daf8f5be0a13fa015f110c4939';

在这里插入图片描述

5.数据目的地:

将数据传入到函数计算(FC)中:pushData2DingTalk
在这里插入图片描述

6.启动数据转发规则:

在这里插入图片描述
最后你就得到的是最上面的效果图了~~
在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0.零点开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值