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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 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 架构模式
相关文章
|
8天前
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
41 1
|
8天前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
62 1
|
8天前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
99 0
|
8天前
|
机器人 API
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
272 5
|
7月前
在钉钉中,如何创建表单的业务实例数据?
在钉钉中,如何创建表单的业务实例数据?
69 1
|
8天前
|
数据可视化 数据挖掘 Serverless
数据推送上线 ,抢先体验,欢迎来用! 支持钉钉!
大多数业务都会有定期推送业务信息至钉钉、飞书、Teams 群的需求,有些信息要推三个群、要推两个群、有些信息要 at 人、有些要当天、有些要当月,不旦要管理多个推送的 Webhook,还要管理推送的内容、监控推送是否生效等等,DataWorks 新推出的数据推送能减轻以上问题,还能助力快速完成推送内容开发,支持规范的上线流程。
67 5
|
7月前
|
分布式计算 API MaxCompute
钉钉的OA审批数据和Odps
钉钉的OA审批数据和Odps
188 2
|
8天前
|
Kubernetes 监控 物联网
IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
|
8天前
|
存储 Kubernetes 监控
IoT 边缘集群基于 Kubernetes Events 的告警通知实现
IoT 边缘集群基于 Kubernetes Events 的告警通知实现
|
8天前
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
60 0

热门文章

最新文章