钉钉群中如何接收IoT温控器数据告警通知
1. 温控器接入物联网平台开发
本次物联网开发实验,将带你学会如何把温控器设备以MQTT协议接入阿里云IoT物联网平台,并通过配置云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
其中温控器上报温湿度数据格式如下:
Topic格式 /${productKey}/${deviceName}/user/update Payload格式示例 {"temperature":23,"humidity":65}
在物联网平台控制台操作如下:
- 您需要先登录阿里云账号,进入物联网平台https://iot.console.aliyun.com/。
说明:如果您未开通物联网平台,请您根据页面提示,开通物联网平台。
- 在实例概览页面,选择您的实例。
说明:本实验以公共实例为例,您也可以购买企业实例进行实验操作。
- 在左侧导航栏中,选择设备管理>产品。
- 在产品页面,单击创建产品。
- 在新建产品页签,产品名称输入温控器,所属品类选择自定义品类,其他配置保持默认即可,单击确认。
- 创建完成后,单击查看产品详情。
- 在Topic类列表的自定义Topic页签,检查是否有/g*****M/${deviceName}/user/update,操作权限为发布,该Topic的作用为设备端传感器数据采集上报。
- 检查完成之后,你可以在产品详情页面单击前往管理,添加具体设备。
- 在设备管理页面,单击添加设备。
- 在添加设备对话框中,输入设备名字tado001,单击确认。
- 在设备详情页,你可以查看设备基本信息,点击DeviceSecret的查看链接,可以看到设备身份证书。
- 设备身份证书用于生成MQTT连接请求的clientId、username、password三个参数。详细内容请查看https://help.aliyun.com/document_detail/73742.html#section-4cb-emx-i4f。
2. 在函数计算编写消息推送脚本
本步骤指导您如何在函数计算编写消息推送脚本。
说明:如果您为开通函数计算,请您先开通函数计算服务,详情请参见开通服务。函数计算有一定的免费额度,超出免费额度的,会进行扣费,详情请参见计费概述。
- 前往函数计算控制台。
- 在左侧导航栏中,单击服务及函数。
- 在服务列表页面,切换地域为华东2(上海),单击创建服务。
- 在创建服务面板中,名称输入IoT2Dingtalk,单击确定。
- 在函数管理页签,单击创建函数。
- 在创建函数页面,选择使用内置运行时创建,函数名称postDingtalk,请求处理程序类型选择处理时间请求,运行环境选择Nodejs语言,单击创建。
创建完成后如下。
3. 配置云产品流转函数计算
配置云产品流转函数计算,你需要先创建数据源,数据目的地,再通过解析器串联起数据源和数据目的地。
- 在物联网平台控制台的导航栏中,选择规则引擎>云产品流转。
- 在数据源页签,单击创建数据源。
- 在创建数据源对话框中,数据源名称输入温控器数据上报,单击确定。
- 在数据源详情页面,单击添加Topic。
- 在添加Topic对话框中,按照下图配置参数,单击确定。
添加完成后,可以看到如下Topic列表。
至此,完成温控器设备的数据源配置。
- 在左侧导航栏中,选择规则引擎>云产品流转。
- 在数据目的地页签,单击创建数据目的。
- 在创建数据目的对话框中,选择发送数据到函数计算FC中,并勾选上一步创建好的函数计算服务,可参考下图,单击确定。
完成后,你会看到数据目的地列表,如下图。
- 接下来,在解析器页签,单击创建解析器。
- 在创建解析器对话框中, 解析器名称输入钉钉告警推送,单击确定。
- 在数据源中,单击关联数据源。
- 在关联数据源对话框中,数据源选择温控器数据上报,单击确定。
- 在数据目的中,单击关联数据目的。
- 在关联数据目的对话框中,数据目的选择温控器流转FC,单击确定。
- 在解析器脚本的编辑脚本区域中,输入如下脚本,单击发布。
参考文档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)
至此,完成了解析器配置。
- 最后,在解析器页签,我们启动解析器脚本,状态为运行中。
4. 配置钉钉群机器人
接下来我们从钉钉群获取钉钉群机器人接口地址。
- 选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手。
- 在机器人管理页面选择自定义机器人。
- 在机器人管理对话框中,输入机器人名字,勾选自定义关键词,并输入温度,同时可以为机器人设置机器人头像,单击完成。
- 完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下。
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
5. 编写函数计算脚本
当我们配置好物联网平台解析器,获取到钉钉群机器人地址后,我们就可以编写函数计算处理脚本了。
- 前往函数计算控制台 https://fcnext.console.aliyun.com/cn-shanghai/services。
- 在函数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. 启动设备并在钉钉群收到消息
当我们完成以上物联网平台、函数计算、钉钉群机器人配置后,就可以测试完整物联网场景了。
- 我们在物联网平台控制台的导航栏中,选择设备管理>设备模拟器,启动温控器设备tado001。
- 选择消息上报主题,并输入数据内容,单击消息上报
Payload数据参考如下
{"temperature":23,"humidity":65}
- 同时,我们会在钉钉群收到一条消息推送。
当然您也可以调整模拟数据的温湿度值,观察钉钉群推送的变化。
- 最后,在物联网平台控制台,运维监控的日志服务里,可以查看到消息处理记录。
7. 总结
恭喜你,完成了本次物联网开发实战。
让我们再回顾一下完整开发过程:
- 在阿里云IoT物联网平台创建温控器,并注册新设备。
- 在函数计算添加新函数,用于处理物联网平台流转过来的温控器上报的数据
- 配置云产品流转规则,把IoT数据流转到函数计算
- 配置钉钉群机器人获取到接口API
- 在函数计算编写脚本
- 启动设备模拟器,模拟温湿度数据上报,钉钉群中实时接收温湿度数据。
欢迎加入阿里云IoT物联网在线交流群,如果实验有任何问题,可以进群咨询。
实验链接:https://developer.aliyun.com/adc/scenario/f4c51405985c4dd58ad89294f4686bd8