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

简介: 本实验主要介绍如何将温控器设备以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


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
6月前
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
94 1
|
6月前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
110 1
|
6月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
193 0
|
6月前
|
机器人 API
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
499 5
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
106 1
|
2月前
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
|
3月前
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。
|
3月前
|
JSON 机器人 Go
go接收alertmanager告警并发送钉钉
go接收alertmanager告警并发送钉钉
|
3月前
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
163 0
|
5月前
|
JSON 分布式计算 DataWorks
DataWorks产品使用合集之能否支持从结果表取出示警信息并且打通钉钉进行告警
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。