0。背景介绍场景:已经部署在办公室的温湿度计设备向钉钉群机器人上报数据。思路:温湿度计通过MQTT协议接入物联网套件。规则引擎将数据上报Topic配置转发给FunctionComputer中编写的函数pushData2DingTalk。加入温湿度机器人钉钉群接收消息。1、钉钉群机器人配置钉钉电脑版①、登录钉钉电脑版;②、找到机器人?群聊窗口右上角图标,点击图标。③.选择自定义Webhook机器人,根据向导添加名称和图标,确认完成。添加完成后对应的机器人设置页面如下,其中红框中的webhook地址已经包含了access2的accessToken。函数计算脚本编写2.1开通阿里云函数计算服务函数计算是一种事件驱动的全托管计算服务。目前支持的Java、NodeJS、Python等语言,见。2.2编写函数脚本这里我们选择Nodejs执行环境,从上游物联网套件获取设备位置、设备编号、实时温度、相对湿度和上报时间,按照钉钉消息格式组装,使用https模块将数据发布到钉钉群机器人的webhook接口。2.2.1创建函数我们选择华东2,创建一个服务IoT_Service,创建一个空白的Nodejs函数pushData2DingTalk。2.2.2函数pushData2DingTalk的完整脚本如下:consthttps=require('https');constaccessToken='这里填写钉钉webhook的accessToken';module.exports.handler=function(event,context,callback){vareventJson=JSON.parse(event.toString());//钉钉消息格式constpostData=JSON.stringify({"msgtype":"markdown","markdown":{"title":"温湿度传感器","text":"####温湿度传感器report\n"+">设备位置:"+eventJson.tag+"\n\n"+">设备编号:"+eventJson.isn+"\n\n"+">实时温度:"+eventJson.temperature+"℃\n\n"+">相对湿度:"+eventJson.humidity+"%\n\n"+">######"+eventJson.time+"由[InternetofThingsSuite](https://www.aliyun.com/product/iot)\n"},"at":{"isAtAll":false}});constoptions={hostname:'oapi.dingtalk.com',port:443,path:'/robot/send?access_token='+accessToken,method:'POST',headers:{'Content-Type':'application/json','Content-Length':Buffer.byteLength(postData)}};constreq=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.物联网套件配置首先我们需要激活物联网套件服务3.1创建产品和设备①,我们现在在物联网套件控制台创建一个温湿度计产品,系统会生成productKey②,在温湿度计产品中创建一个具体的设备,并获取deviceName和deviceSecret进行身份验证,③,为设备添加两个设备属性3.2创建并订阅Topic这里我们选择温湿度计产品,在左侧消息通信下创建一个Topic为/productKey/${deviceName}/data,并设置设备操作权限:release3.3创建并启用规则引擎一个完整的规则包括三部分:基本信息、处理数据、转发数据。转发数据支持配置多个转发动作。3.3.1配置数据处理脚本规则引擎SQL脚本支持特定SQL和函数查询:我们从设备本身信息中提取设备名称(deviceName),从自定义属性中获取:标签(tag)和序列号(deviceISN),从温湿度采集设备上报的数据报文的载荷中获取温度值(temperature)和湿度值(humidity)。具体SQL如下:SELECTdeviceName()asdeviceName,attribute('tag')astag,attribute('deviceISN')asis,temperature,humidity,timestamp('yyyy-MM-ddHH:mm:ss')astimeFROM"/hereistheproductproductKey/+/data"3.3.2配置转发到函数计算的动作3.3.3完整的规则如下我们定义到FC的规则的完整信息如下:3.3.4启用规则引擎在这里找到定义好的规则到FC,并启用。4.温湿度计设备为了方便联调,我们先用Nodejs程序模拟温湿度计,并上报采集到的数据。这依赖于aliyun-iot-mqtt库。demo.js完整代码如下:constmqtt=require('aliyun-iot-mqtt');constclient=mqtt.getAliyunIotMqttClient({productKey:"productKey",deviceName:"devicedeviceName",deviceSecret:"devicesecret"});consttopic='添加了转发函数计算规则的Topic';const数据={温度:18,湿度:63,};client.publish(主题,JSON.stringify(数据));5。完整demo5.1程序模拟发送数据:$npminstall$nodedemo.js5.2钉钉群消息效果:物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn阿里云物联网平台客户交流群
