需求:通过阿里云物联网开发平台实现温室大棚智能控制策略。
温室大棚智能控制系统要求的功能:
- 当大棚内的温度高于阈值(如27℃),就主动打开设备(如风机和湿帘降温);
- 当大棚内的湿度度高于阈值(如50%),就主动打开设备(如环流风机);
- 当大棚内的光照度低于阈值(如500 lux),就主动打开设备(如补光灯);
实现方法如下:
目录
1.建立业务逻辑链条
2.详细配置
3.添加钉钉推送
4.测试功能
5.如何联动钉钉?
6.后续待完善
1.建立业务逻辑链条
进入阿里云IOT Studio平台,选择“业务逻辑”,点击新建。
![](https://img6.php1.cn/3cdc5/c273/c5a/a6b35306f4aef949.jpeg)
先说下大概的控制逻辑,设备上报数据->判断数据是否超过阈值->超过则打开调节设备->然后通知钉钉机器人在钉钉里推送一个报警消息。
![](https://img6.php1.cn/3cdc5/c273/c5a/e1cab9cd1704c059.jpeg)
2.详细配置
控件从界面的左侧拖到控制台,我选择了最底部,我的设备“千夫长S3”(是一个采集温湿度光照度、控制设备的物联网盒子)作为触发源。
![](https://img6.php1.cn/3cdc5/c273/c5a/c62e5e6aefbe3b04.jpeg)
配置他的属性:
![](https://img6.php1.cn/3cdc5/c273/c5a/a228b87f2d4c9770.jpeg)
拉出一个条件判断的控件&#xff0c;命名为“温度过高”&#xff08;方便理解&#xff0c;可以任意命名&#xff09;&#xff0c;条件判断的设置&#xff1a;条件配置&#xff0c;选择设备的某个属性&#xff0c;选择判断条件&#xff08;<><&#61;&#xff09;&#xff0c;输入阈值。
![](https://img6.php1.cn/3cdc5/c273/c5a/496737f42c8f9972.jpeg)
再把设备控件拉出来&#xff0c;名字改为动作的词“打开风机”&#xff0c;选择动作的设备和控制的开关号码。
![](https://img6.php1.cn/3cdc5/c273/c5a/339676e0ba641e61.jpeg)
3.添加钉钉推送
在钉钉机器人的环节&#xff0c;拉进来一个 钉钉机器人控件&#xff0c;这个要在钉钉群里建立一个自定义机器人&#xff0c;得到一个webhook地址&#xff0c;这里先假设已经建了&#xff0c;到最后再说如何建立&#xff0c;配置如下
![](https://img6.php1.cn/3cdc5/c273/c5a/c26d1e99d5d966db.jpeg)
然后点击“部署”,"发布"&#xff0c;就可以了。
![](https://img6.php1.cn/3cdc5/c273/c5a/4952787c4e75ca46.jpeg)
4.测试功能
测试可以通过后台的“模拟调试”功能来调试&#xff0c;但是我选择了用python程序来验证&#xff0c;之前就写了一个模拟设备的python程序&#xff0c;放到云服务器上运行&#xff0c;然后在我设置的27度做了一个随机数&#xff0c;让30%的温度数据大于27度。
Temperature&#61;str(23&#43;round(random.random()*7,2))
Humidity&#61;str(45&#43;round(random.random()*7,2))
mlux&#61;str(450&#43;int(round(random.random()*300,2)))
CO2Value&#61;str(365&#43;int(round(random.random()*100,2)))
STp1Value&#61;str(22&#43;round(random.random()/4,2))
SHm1Value&#61;str(40&#43;round(random.random()/4,2))
myplayload&#61;"{&#39;id&#39;:12345,&#39;params&#39;:{&#39;temp1&#39;:"&#43;Temperature&#43;",&#39;humi1&#39;:"&#43;Humidity&#43;",&#39;mlux1&#39;:"&#43;mlux&#43;",&#39;CO21&#39;:"&#43;CO2Value&#43;",&#39;STp1&#39;:"&#43;STp1Value&#43;",&#39;SHm1&#39;:"&#43;SHm1Value&#43;"},&#39;version&#39;:&#39;1.0&#39;,&#39;method&#39;:&#39;thing.event.property.post&#39;}"
mqttc.publish("/sys/"&#43;ProductKey&#43;"/"&#43;DeviceName&#43;"/thing/event/property/post",myplayload,0)
time.sleep(60)
然后不久就看到钉钉群里发来了信息&#xff1a;
![](https://img6.php1.cn/3cdc5/c273/c5a/4614f2c71d7b297f.jpeg)
钉钉已经发出来消息&#xff0c;上一级的动作说明已经下发动作。至此&#xff0c;完成了自动控制的功能。
5.如何联动钉钉&#xff1f;
也就是刚才提到的&#xff0c;如何有一个钉钉机器人的webhook&#xff0c;我们打开一个钉钉群&#xff0c;点击齿轮打开配置&#xff0c;选择“智能群助手”。
![](https://img6.php1.cn/3cdc5/c273/c5a/474fe4787d918b6e.jpeg)
点击添加机器人。
![](https://img6.php1.cn/3cdc5/c273/c5a/c33e2b73e337eb28.jpeg)
选择添加自定义机器人
![](https://img6.php1.cn/3cdc5/c273/c5a/e315a59475f6fc74.jpeg)
记得要勾选自定义关键词&#xff0c;写上“设备”&#xff0c;不要写别的&#xff0c;因为消息模板中要出现这个词&#xff0c;而消息模板用默认的就可以&#xff0c;自己编辑又要看语法规则。我之前写别的关键词&#xff0c;不能通过验证的。
![](https://img6.php1.cn/3cdc5/c273/c5a/0e8e3507fefa9cf4.jpeg)
点“确定”就可以看到这个机器人的webhook地址了&#xff0c;保存起来&#xff0c;在业务编辑添加钉钉机器人的时候填进去。
6.后续待完善
1.不知道是不是可以把几个策略合并成一个&#xff0c;因为比较费规则&#xff0c;总共有十几条规则&#xff1b;
2.通过web页面启动和停止业务逻辑&#xff0c;客户不一定希望一直用自动控制逻辑&#xff1b;
3.现在设置的阈值&#xff0c;都是写死的&#xff0c;在ioT studio界面上可以用户输入的文本框内容&#xff0c;如何关联到这里来&#xff1f;
已经发了工单问阿里云的客服&#xff0c;下周有解决方案&#xff0c;再更新上来。