0. 背景介绍
场景:办公室中已经布点的温湿度计设备上报数据到钉钉群机器人。
思路:温湿度计通过MQTT协议连接到IoT套件,规则引擎针对数据上报Topic配置转发到函数计算(FunctionComputer)中编写好的函数pushData2DingTalk,函数Nodejs脚本处理数据,post到钉钉群机器人的Webhook,配置了温湿度机器人的钉钉群组即可收到消息。
1. 钉钉群机器人配置
钉钉PC端
①、登录钉钉电脑版;
②、群聊天窗口右上角找到机器人?图标,点击图标。
③、选择自定义Webhook机器人,按指引添加名字和图标,并确认完成。
添加完成后,对应的机器人设置页面如下,其中红框中的webhook地址已经包含了访问用的accessToken
2. 函数计算脚本编写
2.1 开通阿里云函数计算服务
函数计算,是一个事件驱动的全托管计算服务,目前支持的语言Java、NodeJS、Python等语言, 详见。
2.2 编写函数脚本
这里我们选择Nodejs执行环境,从上游IoT套件处获取到设备位置,设备编号,实时温度,相对湿度和上报时间,依据 钉钉消息格式组装,并用https模块post数据到钉钉群机器人的webhook接口。
2.2.1 创建函数
我们选择华东2区,创建服务IoT_Service,新建空白Nodejs函数pushData2DingTalk。
2.2.2 函数pushData2DingTalk完整脚本如下:
3. IoT套件配置
首先我们要开通 物联网套件服务
3.1 创建产品和设备
①、我们现在物联网套件控制台创建
温湿度计产品,系统会生成productKey
②、在温湿度计产品创建一个具体设备,获得deviceName和deviceSecret用于身份验证,
③、给设备添加两个设备属性
属性
|
属性值
|
描述
|
tag
|
云栖小镇 2号楼3层007S
|
设备所在位置
|
deviceISN
|
T20180102XnbKjmoAnUb
|
设备序列号
|
3.2 创建并订阅Topic
这里我们选择 温湿度计产品,在左侧 消息通信下创建一个Topic为/productKey/${deviceName}/data,设备操作权限设置:发布。
3.3 创建并启用规则引擎
一条完整的规则包括 基本信息,处理数据,转发数据三部分,其中 转发数据支持配置多个转发动作。
3.3.1 配置数据处理脚本
规则引擎SQL脚本支持
特定SQL和函数查询:
我们从设备本身信息中抽取设备名(deviceName),自定义属性中获取:标签(tag)和序列号(deviceISN),
从温湿度采集设备上报数据消息的payload中获取温度值(temperature)和湿度值(humidity)。
具体SQL如下:
3.3.2 配置转发动作到函数计算
3.3.3 完整规则如下
我们定义好的规则toFC完整信息如下:
3.3.4 启用规则引擎
这里找到我们定义好的规则toFC,并启用。
4. 温湿度计设备
为了方便联调我们先用Nodejs程序模拟温湿度计,上报采集到的数据。
这里依赖了
aliyun-iot-mqtt库demo.js完整代码如下:
5. 完整演示
5.1 程序模拟发送数据:
5.2 钉钉群消息效果:
物联网平台产品介绍详情: https://www.aliyun.com/product/iot/iot_instc_public_cn
阿里云物联网平台客户交流群