钉钉群中如何接收IoT温控器数据告警通知

本文涉及的产品
云服务器 ECS,u1 4核16GB 1个月
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核8GB 1个月
简介: 本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。

钉钉群中如何接收IoT温控器数据告警通知


1. 温控器接入物联网平台开发

本次物联网开发实验,将带你学会如何把温控器设备以MQTT协议接入阿里云IoT物联网平台,并通过配置云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。

其中温控器上报温湿度数据格式如下:

Topic格式
/${productKey}/${deviceName}/user/update
Payload格式示例
{"temperature":23,"humidity":65}

在物联网平台控制台操作如下:

  1. 您需要先登录阿里云账号,进入物联网平台https://iot.console.aliyun.com/

说明:如果您未开通物联网平台,请您根据页面提示,开通物联网平台。

  1. 实例概览页面,选择您的实例。

说明:本实验以公共实例为例,您也可以购买企业实例进行实验操作。

  1. 在左侧导航栏中,选择设备管理>产品

  1. 产品页面,单击创建产品

  1. 新建产品页签,产品名称输入温控器,所属品类选择自定义品类,其他配置保持默认即可,单击确认

  1. 创建完成后,单击查看产品详情

  1. Topic类列表自定义Topic页签,检查是否有/g*****M/${deviceName}/user/update,操作权限为发布,该Topic的作用为设备端传感器数据采集上报。

  1. 检查完成之后,你可以在产品详情页面单击前往管理,添加具体设备。

  1. 在设备管理页面,单击添加设备

  1. 添加设备对话框中,输入设备名字tado001,单击确认

  1. 在设备详情页,你可以查看设备基本信息,点击DeviceSecret的查看链接,可以看到设备身份证书。

  1. 设备身份证书用于生成MQTT连接请求的clientId、username、password三个参数。详细内容请查看https://help.aliyun.com/document_detail/73742.html#section-4cb-emx-i4f


2. 在函数计算编写消息推送脚本

本步骤指导您如何在函数计算编写消息推送脚本。

说明:如果您为开通函数计算,请您先开通函数计算服务,详情请参见开通服务。函数计算有一定的免费额度,超出免费额度的,会进行扣费,详情请参见计费概述

  1. 前往函数计算控制台
  2. 在左侧导航栏中,单击服务及函数

  1. 服务列表页面,切换地域为华东2(上海),单击创建服务

  1. 创建服务面板中,名称输入IoT2Dingtalk,单击确定

  1. 函数管理页签,单击创建函数

  1. 创建函数页面,选择使用内置运行时创建函数名称postDingtalk,请求处理程序类型选择处理时间请求,运行环境选择Nodejs语言,单击创建

创建完成后如下。


3. 配置云产品流转函数计算

配置云产品流转函数计算,你需要先创建数据源,数据目的地,再通过解析器串联起数据源和数据目的地。

  1. 在物联网平台控制台的导航栏中,选择规则引擎>云产品流转

  1. 数据源页签,单击创建数据源

  1. 创建数据源对话框中,数据源名称输入温控器数据上报,单击确定

  1. 在数据源详情页面,单击添加Topic

  1. 添加Topic对话框中,按照下图配置参数,单击确定

添加完成后,可以看到如下Topic列表。

至此,完成温控器设备的数据源配置。

  1. 在左侧导航栏中,选择规则引擎>云产品流转

  1. 数据目的地页签,单击创建数据目的

  1. 创建数据目的对话框中,选择发送数据到函数计算FC中,并勾选上一步创建好的函数计算服务,可参考下图,单击确定

完成后,你会看到数据目的地列表,如下图。

  1. 接下来,在解析器页签,单击创建解析器

  1. 创建解析器对话框中, 解析器名称输入钉钉告警推送,单击确定

  1. 数据源中,单击关联数据源

  1. 关联数据源对话框中,数据源选择温控器数据上报,单击确定


  1. 数据目的中,单击关联数据目的

  1. 关联数据目的对话框中,数据目的选择温控器流转FC,单击确定


  1. 解析器脚本编辑脚本区域中,输入如下脚本,单击发布

参考文档https://help.aliyun.com/document_detail/270937.html

// 1.将设备上报的消息内容转换为JSON格式
var data = payload("json");
// 2.构造流转到FC的数据体
var info = {};
info.put("deviceName", deviceName());
info.put("timestamp", timestamp());
info.put("payload", data);
// 3.推送到FC
writeFc(替换成目的地id, info)

至此,完成了解析器配置。

  1. 最后,在解析器页签,我们启动解析器脚本,状态为运行中


4. 配置钉钉群机器人

接下来我们从钉钉群获取钉钉群机器人接口地址。


  1. 选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手。

  1. 在机器人管理页面选择自定义机器人。

  1. 在机器人管理对话框中,输入机器人名字,勾选自定义关键词,并输入温度,同时可以为机器人设置机器人头像,单击完成。

  1. 完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下。
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX


5. 编写函数计算脚本

当我们配置好物联网平台解析器,获取到钉钉群机器人地址后,我们就可以编写函数计算处理脚本了。

  1. 前往函数计算控制台 https://fcnext.console.aliyun.com/cn-shanghai/services
  2. 在函数postDingtalk中,编写如下脚本。

我们知道IoT物联网平台流转过来的数据格式。

{
    "payload":{
        "temperature":29,
        "humidity":60
    },
    "deviceName":"tado001",
    "timestamp":1664461440511
}

参考钉钉机器人文档 https://open.dingtalk.com/document/robots/custom-robot-access,编写处理脚本。

const https = require('https');
//钉钉群机器人token
const accessToken = '替换钉钉机器人token';
module.exports.handler = function(event, context, callback) {
    var eventJson = JSON.parse(event.toString());
    //{"payload":{"temperature":29,"humidity":60},"deviceName":"tado001","timestamp":1664461440511}
    var date = new Date( eventJson.timestamp + 8* 60*60*1000 );
    var time= date.getHours()+":"+ date.getMinutes()+":"+ date.getSeconds();
    const postData = JSON.stringify({
        "msgtype": "markdown",
        "markdown": {
            "title": "室内温度异常",
            "text": "#### "+"温控器 "+eventJson.deviceName+" 实时数据 \n > 当前温度: "+eventJson.payload.temperature+" ℃,湿度: "+eventJson.payload.humidity+" % \n > 请适当开启空调!\n > ###### "+time+" 发布"
        },
        "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();
};

编辑完成后,提交保存

6. 启动设备并在钉钉群收到消息

当我们完成以上物联网平台、函数计算、钉钉群机器人配置后,就可以测试完整物联网场景了。

  1. 我们在物联网平台控制台的导航栏中,选择设备管理>设备模拟器,启动温控器设备tado001。

  1. 选择消息上报主题,并输入数据内容,单击消息上报

Payload数据参考如下

{"temperature":23,"humidity":65}
  1. 同时,我们会在钉钉群收到一条消息推送。

当然您也可以调整模拟数据的温湿度值,观察钉钉群推送的变化。

  1. 最后,在物联网平台控制台,运维监控日志服务里,可以查看到消息处理记录。


7. 总结

恭喜你,完成了本次物联网开发实战。

让我们再回顾一下完整开发过程:

  1. 在阿里云IoT物联网平台创建温控器,并注册新设备。
  2. 在函数计算添加新函数,用于处理物联网平台流转过来的温控器上报的数据
  3. 配置云产品流转规则,把IoT数据流转到函数计算
  4. 配置钉钉群机器人获取到接口API
  5. 在函数计算编写脚本
  6. 启动设备模拟器,模拟温湿度数据上报,钉钉群中实时接收温湿度数据。

欢迎加入阿里云IoT物联网在线交流群,如果实验有任何问题,可以进群咨询。

实验链接:https://developer.aliyun.com/adc/scenario/f4c51405985c4dd58ad89294f4686bd8


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
59 1
|
2月前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
76 1
|
2月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
130 0
|
2月前
|
机器人 API
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
337 5
|
9月前
在钉钉中,如何创建表单的业务实例数据?
在钉钉中,如何创建表单的业务实例数据?
78 1
|
1月前
|
JSON 分布式计算 DataWorks
DataWorks产品使用合集之能否支持从结果表取出示警信息并且打通钉钉进行告警
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
73 0
|
2月前
|
数据可视化 数据挖掘 Serverless
数据推送上线 ,抢先体验,欢迎来用! 支持钉钉!
大多数业务都会有定期推送业务信息至钉钉、飞书、Teams 群的需求,有些信息要推三个群、要推两个群、有些信息要 at 人、有些要当天、有些要当月,不旦要管理多个推送的 Webhook,还要管理推送的内容、监控推送是否生效等等,DataWorks 新推出的数据推送能减轻以上问题,还能助力快速完成推送内容开发,支持规范的上线流程。
87 5
|
9月前
|
分布式计算 API MaxCompute
钉钉的OA审批数据和Odps
钉钉的OA审批数据和Odps
196 2
|
2月前
|
监控 机器人 BI
基于钉钉的阿里云管理实践(二)之消息接收
在企业云资源的日常管理中,实时监控和报警通知对于维持系统稳定性至关重要。阿里云提供了一系列的监控服务,可以对云资源进行实时监控,并在出现问题时发送报警。将这些报警消息及时推送到钉钉,可以让团队成员迅速响应,采取必要的措施。本教程将指导您如何将阿里云账号的报警监控消息推送到钉钉上。
210 1
基于钉钉的阿里云管理实践(二)之消息接收