温湿度计设备通过阿里云IoT物联网套件上报数据到钉钉群机器人实践

简介: 温湿度计通过MQTT协议连接到IoT套件,规则引擎针对数据上报Topic配置转发到函数计算(FunctionComputer)中编写好的函数pushData2DingTalk,Nodejs脚本函数处理数据,post到钉钉群机器人

0. 背景介绍

场景:办公室中已经布点的温湿度计设备上报数据到钉钉群机器人。

思路:温湿度计通过MQTT协议连接到IoT套件,规则引擎针对数据上报Topic配置转发到函数计算(FunctionComputer)中编写好的函数pushData2DingTalk,函数Nodejs脚本处理数据,post到钉钉群机器人的Webhook,配置了温湿度机器人的钉钉群组即可收到消息。

关系图.png

1. 钉钉群机器人配置

钉钉PC端
①、登录钉钉电脑版;
②、群聊天窗口右上角找到机器人?图标,点击图标。
③、选择自定义Webhook机器人,按指引添加名字和图标,并确认完成。
添加完成后,对应的机器人设置页面如下,其中红框中的webhook地址已经包含了访问用的accessToken

钉钉群机器人配置.png

2. 函数计算脚本编写

2.1 开通阿里云函数计算服务

函数计算,是一个事件驱动的全托管计算服务,目前支持的语言Java、NodeJS、Python等语言,详见

2.2 编写函数脚本

这里我们选择Nodejs执行环境,从上游IoT套件处获取到设备位置,设备编号,实时温度,相对湿度和上报时间,依据钉钉消息格式组装,并用https模块post数据到钉钉群机器人的webhook接口。

2.2.1 创建函数

我们选择华东2区,创建服务IoT_Service,新建空白Nodejs函数pushData2DingTalk。

函数计算.png

2.2.2 函数pushData2DingTalk完整脚本如下:

const https = require('https');
const accessToken = '此处填写钉钉机器人webhook的accessToken';
module.exports.handler = function(event, context, callback) {
    var eventJson = JSON.parse(event.toString());
    //钉钉消息格式
    const postData = JSON.stringify({
        "msgtype": "markdown",
        "markdown": {
            "title": "温湿度传感器",
            "text": "#### 温湿度传感器上报\n" +
                "> 设备位置:" + eventJson.tag + "\n\n" +
                "> 设备编号:" + eventJson.isn+ "\n\n" +
                "> 实时温度:" + eventJson.temperature + "℃\n\n" +
                "> 相对湿度:" + eventJson.humidity + "%\n\n" +
                "> ###### " + eventJson.time + " 发布  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();

};

3. IoT套件配置

首先我们要开通物联网套件服务

3.1 创建产品和设备

①、我们现在物联网套件控制台创建温湿度计产品,系统会生成productKey
②、在温湿度计产品创建一个具体设备,获得deviceName和deviceSecret用于身份验证,
③、给设备添加两个设备属性

属性 属性值 描述
tag 云栖小镇 2号楼3层007S 设备所在位置
deviceISN T20180102XnbKjmoAnUb 设备序列号

设备信息.png

3.2 创建并订阅Topic

这里我们选择温湿度计产品,在左侧消息通信下创建一个Topic为/productKey/${deviceName}/data,设备操作权限设置:发布。

topic设置.png

3.3 创建并启用规则引擎

一条完整的规则包括基本信息,处理数据,转发数据三部分,其中转发数据支持配置多个转发动作。

3.3.1 配置数据处理脚本

规则引擎SQL脚本支持特定SQL和函数查询
我们从设备本身信息中抽取设备名(deviceName),自定义属性中获取:标签(tag)和序列号(deviceISN),
从温湿度采集设备上报数据消息的payload中获取温度值(temperature)和湿度值(humidity)。

规则引擎SQL.png

具体SQL如下:

SELECT 
deviceName() as deviceName, 
attribute('tag') as tag, 
attribute('deviceISN') as isn, 
temperature, 
humidity,
timestamp('yyyy-MM-dd HH:mm:ss') as time 
FROM 
"/此处为产品productKey/+/data"

3.3.2 配置转发动作到函数计算

FC转发配置.png

3.3.3 完整规则如下

我们定义好的规则toFC完整信息如下:
一条规则引擎.png

3.3.4 启用规则引擎

这里找到我们定义好的规则toFC,并启用。
规则引擎启用.png

4. 温湿度计设备

为了方便联调我们先用Nodejs程序模拟温湿度计,上报采集到的数据。
这里依赖了aliyun-iot-mqtt库
demo.js完整代码如下:

const mqtt = require('aliyun-iot-mqtt');

const client = mqtt.getAliyunIotMqttClient({
    productKey: "产品productKey",
    deviceName: "设备deviceName",
    deviceSecret: "设备的secret"
});
const topic = '添加了转发函数计算规则的Topic';

const data = {
    temperature: 18,
    humidity: 63,
};

client.publish(topic, JSON.stringify(data));

5. 完整演示

5.1 程序模拟发送数据:

$ npm install
$ node demo.js

执行.png

5.2 钉钉群消息效果:

钉钉群效果.png

IoT套件技术交流群
iot套件交流群-钉钉.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
19天前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
36 1
|
2天前
|
传感器 监控 物联网
物联网卡在不同应用设备中的基本操作
物联网卡(IoT SIM卡)在物联网(IoT)设备中扮演着至关重要的角色,它们为设备提供网络连接能力,使得设备能够远程交换数据。物联网卡的应用设备广泛,涵盖了从智能家居、智能城市、工业自动化到远程监控等多个领域。以下是物联网卡在不同应用设备中的基本操作流程概述:
|
1天前
|
监控 安全 物联网
智能家居安全:物联网设备的风险与防护
在智能家居的便捷背后,潜藏着不容忽视的安全风险。本文旨在揭示物联网设备可能遭遇的网络攻击类型,并探讨如何通过合理的预防措施来加固我们的智能家园。从技术角度出发,我们将深入分析黑客入侵的途径,并提出有效的防御策略,以期为打造一个更安全的智能家居环境提供指导。
8 1
|
13天前
|
机器学习/深度学习 安全 物联网
智能家居安全:物联网设备的双刃剑
【8月更文挑战第28天】 随着物联网技术的飞速发展,智能家居已成为现代生活的一部分。然而,随之而来的安全问题也日益凸显。本文将深入探讨智能家居中的安全挑战,分析物联网设备如何成为一把双刃剑,既带来便利也可能引发风险。通过案例分析和专家建议,为读者提供实用的防护措施和未来趋势的展望。
|
6天前
|
机器学习/深度学习 人工智能 算法
物联网(IoT)就像是一个大型派对,无数的设备都在欢快地交流着信息
【9月更文挑战第4天】在这个万物互联的时代,物联网(IoT)犹如一场盛大的派对,各类设备欢聚一堂。然而,如何让这些设备互相理解并协同工作呢?这就需要机器学习与人工智能的助力。例如,智能空调通过学习你的使用习惯来调节温度,使你更加舒适;智能安防系统则能识别异常行为并及时报警,保障家庭安全。此外,智能农业、交通等领域也因机器学习和人工智能的应用变得更加高效。下面通过一个简单的温度预测代码示例,展示机器学习在物联网中的实际应用,让我们一起感受其强大潜力。
12 0
|
18天前
|
物联网 C语言
C语言与物联网:设备间的通信与控制
C语言与物联网:设备间的通信与控制
32 0
|
20天前
|
监控 安全 物联网
智能家居安全:物联网设备的风险与防护
随着物联网技术的飞速发展,智能家居设备已步入千家万户。然而,随之而来的安全问题也日益凸显。本文将深入探讨智能家居面临的安全挑战,并提供实用的防护措施,旨在帮助用户构建一个更加安全的智能生活环境。
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
360 0
|
移动开发 物联网 Go
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
|
移动开发 物联网 智能硬件
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例
242 0
SAP Business ByDesign 和支付宝与钉钉集成的一个原型开发案例

相关产品

  • 物联网平台
  • 下一篇
    DDNS