最近入手了新玩具 HaaS EDU K1,它丰富的传感器支持、支持python和js语言的轻应用开发非常吸引我,得益于HaaS云端一体开发框架,我这种非嵌入式开发出身的小白也能够体验物联网平台开发的魅力。今天结合官方案例体验阿里云物联网平台开发。
开箱及简介
HaaS EDU K1主打教育市场,适合初学者探索使用。通体简洁大方,自带锂电池和基础外设。
配置也是相当豪华:定制的四核(Cortex-A7双核1GHz和Cortex-M33双核300MHz)高性能MCU-HaaS1000芯片,自带16M Bytes FLASH、16M Bytes PSRAM和2.5M Bytes SRAM,内置双频Wi-Fi和BT5.0天线,板载丰富的物联网传感器(加速度、陀螺仪、磁力计、温湿度、大气压、环境光和声音等),在此基础上我们可开发丰富的AIoT应用场景或解决方案。
体验案例
本文阿里云物联网平台开发体验基于【花卉养殖】案例,在本案例中我们仅需HaaS Edu开发板即可体验物联网开发。
开发准备
装载VS code 的Windows PC 一台
HaaS EDU K1开发板 一台
Type-C USB数据线 一条
小提示
- PC亦可选苹果设备。
- 近年的Windows PC 往往会默认屏蔽通讯端口设备,这会导致你无法烧录程序到开发板。因此,你需要在设备管理器中手动启用。
步骤:在任务栏上的搜索框中,键入“设备管理器”,然后在菜单中进行选择。
在设备管理器的菜单栏中点击操作中的“扫描检测硬件改动”或者选择“添加过时硬件”来手动添加端口设备。
添加完成示意如下
案例简介
本案例按照花卉的生长习性,打造一个最适合花卉生长的花卉养植监控系统。该系统可以结合培育温室的环境控制设备(例如加湿器和空气调节器)来联动提高花卉养殖和物种保育的工作效率。
最适宜该花卉的生长环境变量控制如下:
温度:20~28度
湿度:~70%
光照:不能太强
相应场景设计的行为如下:
通过温度传感器测量环境温度,并在温度过高时打开空调进行降低环境温度(蓝色LED模拟空调的开关)
通过湿度传感器测量环境湿度,并在湿度过低的时候控制加湿器进行加湿操作(绿色LED模拟加湿器的开关)
物联网平台开发
在这里都是图形化交互操作,易于操作上手。
开通公共实例
第一次使用物联网平台需要开通实例来使用物联网平台的功能。
我们可以使用免费的公共实例进行开发。当然企业实例功能更强大,现可免费试用。
在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。
创建云端产品
点击上图中的“公共实例”,即可进入控制台进行产品创建。然后,点击创建产品按钮,如下图所示。
在新建产品页面,我们完成必填信息的设置,如图所示。
选择之后,点击“确认”按钮,即可完成产品创建。返回“产品”页面之后可以看到产品类表中会出现刚刚创建的“温湿度检测装置”的产品,如下图所示。
创建产品属性(物模型)
点击上图中的“查看”按钮,即可看到产品信息,Topic列表,功能定义,数据解析等跟产品相关功能的设定。点开“功能定义”标签页,可以看到设备物模型定义。
由于本文选择了标准的物模型,因此无需额外自定义功能,我们所需的温湿度已由模板定义完成。后续联动所需的物模型改动放在后文说。
物模型创建完成后下一步就是创建这个产品的云端设备了。
创建云端设备(获取三元组)
在“设备”页面选中需要添加设备的产品并点击“添加设备”按钮,如下图所示。
在“添加设备”页面中设定“deviceName”,这里开发者可以自己填入自己想设定的设备名称,也可以不填任何内容让系统自动生成设备名称,如下图所示。
设备添加完成后,点击“前往查看”按钮,就可以看到此设备端详细信息了。
设备信息中【三元组(设备证书)】和【物模型属性信息】需要和设备端开发相匹配。
获取设备三元组
如上图所示,点击“查看”按钮,就可以看到设备的三元组信息,三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。
查看设备属性信息
设备详情信息页中的“物模型数据”标签页中可以看到设备的所有属性信息、设备时间上报情况及设备服务调用情况,如下图所示。待物联网设备按照设备属性对应的标识符上报设备属性的时候,本图片中的“当前温度“,”当前湿度“等属性值就会显示设备最新的属性信息。
创建产品和设备的过程是按照面向对象的思想进行设计的,其中创建产品可以看成是新建一个类,其中的物模型则是类的对象,创建设备则是进行类的实例化。
云端物模型补充
在此产品的【物模型】中新增两个bool类型的属性,命名为"airconditioner"和"humidifier"分别用来控制空调和加湿器。
• 当需要打开空调时,云端将“airconditioner”的属性值设置为True;需要关闭空调时,将其设置为False。
• 当需要打开加湿器时,云端将“humidifier”的属性值设置为True;需要关闭空调时,将其设置为False。
添加物模型属性的过程下所述:
1. 在产品的“功能定义”标签页中点击"编辑草稿",如果没有“编辑草稿”的按钮,说明此产品的物模型已经发布,需要点击右上角的“取消发布”按钮才能添加或删除属性。
2. 点击“添加自定义功能”按钮,如下图所示:
3. 添加属性名称、标识符、类型等信息,如下图所示:
• 添加“airconditioner”属性
• 添加“humidifier”属性
添加完属性之后,点击左下角的“发布上线”按钮 ,根据系统提示进行确认即可,如下图所示:
多设备场景联动设定
控制逻辑有两种实现方式:
1. 使用物联网平台的规则引擎功能
2. 使用IoT Studio的业务逻辑功能
本例使用物联网平台的规则引擎来完成此控制逻辑的设定。
按照下图所示的步骤创建场景联动的规则:
点击“创建规则”之后,填入场景规则名称,这里我们先创建第一个“温度过高开启空调”的规则。
规则创建完成后,等待几秒钟系统会自动跳转到规则编辑页面,这里需要配置如下两步完整一整条规则的创建:
1. 设置“触发器”为温湿度监控器的“当前温度”属性高于茶花最适宜生长的温度28度触发此规则的执行,设置“执行动作”为控制设备打开“空调开关”属性。
触发器 |
设备触发 |
属性触发 |
当前温度大于等于28度 |
执行动作 |
设备输出 |
空调开关 |
开空调 |
点击保存之后温度过高打开空调的场景联动规则就创建好了。
用相同的方式创建另外三条场景联动规则:
温度合适关闭空调:
触发器 |
设备触发 |
属性触发 |
当前温度小于等于26度 |
执行动作 |
设备输出 |
空调开关 |
关空调 |
湿度适合关闭加湿器:
触发器 |
设备触发 |
属性触发 |
当前湿度大于70 |
执行动作 |
设备输出 |
加湿器 |
关加湿器 |
湿度过低打开加湿器:
触发器 |
设备触发 |
属性触发 |
当前湿度大于70 |
执行动作 |
设备输出 |
加湿器 |
开加湿器 |
创建完这几条规则之后,在【场景联动】页面中点击规则后面的启动按钮,则所有的规则都会运行起来。
设备端开发
开发环境预备
- 安装VScode:安装包下载网站: https://code.visualstudio.com/
- 安装HaaS插件,在VScode中按shift+ctrl+x,左边栏插件市场搜索haas-studio插件并安装。插件功能菜单如下:
- 下载并烧录固件:
HaaS Python v2.2 固件下载:https://hli.aliyuncs.com/o/config/HaaS_Python/HaaSPython-HaaSEDUK1-v2.2.0.zip
固件文件:HaaSPython-HaaSEDUK1-v2.2.0.bin
文件系统:littlefs.bin
配置完成点击开始烧录即可,烧录完成,终端日志中会提示"Burn xxxx success."。中途可能需要按一下开发板复位键。
创建模板项目
在Haas Studio主页中点击【创建项目】。先选择左侧的“开发板型号”再从右侧的案例中选择“花卉养植”案例点击“立即创建”即可。
1. 修改路由器名称及密码
修改main.py中wifiSsid和wifiPassword的值为实际要连接的路由器的名称及密码。
释义:修改完成之后get_wifi_status函数中的wlan.connect(wifiSsid, wifiPassword)语句就会连接读者自己设定的路由器。
2. 修改设备端三元组
修改humiture工程里main.py中productKey、deviceName和deviceSecret的值为读者创建的物联网设备的三元组信息,如下图所示:
3. 确认设备端上报温湿度信息所用标识符
humiture工程里main.py中下面的代码实现的是上传温湿度值到云端的功能。其中CurrentTemperature和CurrentHumidity便是温湿度值上报时所用的标识符。
# 上传温度信息和湿度信息到物联网平台
def upload_temperature_and_Humidity():
确保这两个标识符和物联网产品的物模型中属性标识符是一样的,如下图所示:
运行结果
点击【部署运行——本地更新——设备端口】,推送此脚本到HaaS EDU K1之后,会自动运行此脚本,点击【串口】选择设备串口,选择【波特率1500000】与设备通讯连接。
HaaS EDU K1串口会周期性的打印日志。其中:
• 物联网平台连接成功 代表成功连接到物联网平台
• "uploading data:"之后跟着的为设备端向云端发布的温湿度属性信息,其中CurrentTemperature后面的数值为温度值,单位:摄氏度;CurrentHumidity后面数值为相对湿度值。
• 设备端解析到云端送下来的控制指令中包含“{"humidifier":1}”之后会打印"打开加湿器"并点亮绿色LED模拟打开控制加湿器的继电器的动作
• 设备端解析到云端送下来的控制指令包含"{"airconditioner":1}"之后会打印"打开空调"并点亮蓝色LED模拟打开控制空调的继电器的动作
如图,温度高于阈值,湿度低于阈值,蓝绿LED灯均亮起。达到了最初的设计效果。
物联网平台端设备信息查看
物联网设备的系统启动成功并连接到物联网平台之后,物联网平台上对应的设备状态会从”未激活状态“变为”上线“,在物模型数据标签页上会显示设备上报到物联网平台的属性值。
此时如果开发板温度和周围湿度发生变化,物联网平台的物模型数据会更新为设备上报的最新的属性值。
点击查看数据可以以图表形式查看历史数据,非常直观。
总结
阿里云物联网已日趋成熟,不仅有自研的开发框架和开发板硬件,还提供了阿里云物联网平台,阿里云物联网平台提供了高可用、低成本、易运维和可视化扩展搭建数据看板的能力。在智能制造和互联网+日渐普及的今天,阿里云提供了可靠的物联网平台解决方案,省去了自研自搭的成本,基于云原生架构并依托阿里云的能力,让海量设备并发成为了可能。
本次借助HaaS EDU K1从小白的视角初窥了物联网的世界,日后会继续学习,交流进步~