基于IoT平台构建智慧路灯应用【拜托了,物联网!】

运气男孩 发表于 2021/10/17 17:32:05 2021/10/17
【摘要】 “智慧路灯”是一个Web项目,需要部署到服务器上才可以运行,我这里采用部署服务器是华为云弹性云服务器,通过华为云的软件开发平台的项目管理,代码托管,在线部署发布和物联网平台的创建产品、导入产品模型,成功构建了一个简易的智慧路灯小项目。上面是关于这次实操的拓扑图,清晰的展示了智慧路灯这一小项目的架构和需要的产品支持。话不多说,随我一起实操一波,构建有趣的IOT智慧路灯。资源下载首先先下载在命令...

“智慧路灯”是一个Web项目,需要部署到服务器上才可以运行,我这里采用部署服务器是华为云弹性云服务器,通过华为云的软件开发平台的项目管理,代码托管,在线部署发布和物联网平台的创建产品、导入产品模型,成功构建了一个简易的智慧路灯小项目。

上面是关于这次实操的拓扑图,清晰的展示了智慧路灯这一小项目的架构和需要的产品支持。话不多说,随我一起实操一波,构建有趣的IOT智慧路灯。

资源下载

首先先下载在命令行窗口下载

cd Desktop/
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/internet-wisdom-lamp/HubSimulator.jar

输入以下命令保存“SmartStreetLight.zip”压缩包

wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/internet-wisdom-lamp/SmartStreetLight.zip

编译构建智慧路灯应用

新建项目

选择“服务列表”->“开发与运维”->“项目管理”,进入软件开发云,如下图:

点击“立即使用”按钮,跳转到DevCloud操作界面

点击上图红圈标注“新建项目”按钮,开始创建项目

点击标注的“Scrum”区域,创建“Scrum”类型项目,参数如下:项目设置模板:Scrum项目名称:QuickStart

参数填写完毕,点击确定按钮即可完成项目创建。

创建代码仓库

新建仓库选择导航栏“代码 > 代码托管”,进入管理页面,展开右上角“普通新建”下拉菜单,点击“按模板新建”

选择模板

在搜索框中输入“IoT_Streetlight_New_Demo”,如下图所示选择“华北-北京四”,选中该模板,单击“下一步”。

填写仓库基本信息

基本信息参数如下:①代码仓库名称:自定义,如:IoT_Streetlight_New_Demo②选择gitignore:Java其他选项保持默认。单击“确定”,完成仓库创建。

创建成功后,可单击仓库名称进入仓库,查看仓库文件。

构建并归档软件包

新建编译构建任务点击导航栏“构建&发布 > 编译构建”,进入管理页面,点击“新建任务”,参数如下:①源码源:DevCloud;②源码仓库:默认选择前面创建的代码仓库;③分支:master;点击“下一步”进入“选择构建模板”。

选择构建模板

使用系统模板中提供的两个默认步骤、以及每个步骤中的默认配置,即可完成本例的构建。点击“新建并执行”即可完成步骤的配置并启动构建任务,如下图所示:

验证构建任务执行结果

点击导航栏“发布”,进入“软件发布库”页面,点击进入“IoT_Streetlight...”下的“202…”日期命名的文件夹,即可看到生成的软件包“huawei-0.0.1-SNAPSHOT.jar”。

创建主题并订阅 SMN

在华为云控制台,展开左侧目录,选择【服务列表】->【管理与监管】 -> 【消息通知服务SMN】,或在服务列表搜索框中搜索“SMN”。

在左侧导航栏,选择“主题管理 > 主题”,单击“创建主题”,输入“主题名称”(自定义,例如:StreetLight)后单击“确定”完成主题创建。

订阅 SMN

主题创建成功后,系统会自动生成主题URN

点击主题“StreetLight”右侧操作“添加订阅”,可采用短信或者邮件任意一种协议完成订阅。这里我们采用的短信协议

创建弹性云服务器 ECS

在华为云控制台,展开左侧导航,选择“服务列表”-> “计算”-> “弹性云服务器”进入,然后点击右上角“购买弹性云服务器”,建议配置:①计费模式:按需计费②区域:华北-北京四③可用区:随机分配④CPU架构:x86计算⑤规格:选择“通用入门型 | t6.small.1”什么是弹性云服务器?注意:如t6.small.1规格的已售罄,选择通用入门型的【t6.medium.2】,或通用计算型下的【s6.small.1】/【s6.medium.2】均可⑥镜像:公共镜像 | Ubuntu | Ubuntu 16.04 server 64bit⑦主机安全:不勾选“开通主机安全”⑧系统盘:高IO | 40GB

基础配置完成后点击 “下一步:网络配置”   

网络配置就正常的创建一下虚拟私有云并命名,其他默认,然后选择合适的带宽即可

用户名为root,密码自己设置,其他默认,然后完成高级配置后点击“下一步:确认配置”,阅读并勾选同意协议,单击“立即购买”后,点击返回云服务器列表。当状态为“运行中”表示已创建完成。

主机授信配置

点击新创建的弹性云服务器ECS的名称进入详情页,选择“安全组”页签,点击Sys-WebServer安全组右侧的【配置规则】进入规则配置页面。

添加入方向规则

配置系统防火墙规则

ssh root@EIP   

  这里的EIP就是下面框选的上面你创建的云服务器的公网ip

输入yes,然后再输入你设置的密码即可成功登录ecs云服务器

然后执行以下代码

sudo ufw enable      //开启ufw服务

sudo ufw allow 22/tcp     //启用22端口。

sudo ufw allow 8080/tcp    //启用8080端口。

部署智慧路灯应用

回到软件开发平台DevCloud,点击已创建的项目QuickStart,如下图所示:

单击导航栏“更多 > 设置 > 通用设置”,选择左侧栏“主机组管理”,然后点击“新建主机组”,参数如下:①主机组名:自定义,如:iot②操作系统:Linux点击“保存”完成主机组的创建,并进入该主机组。

在创建的主机组内,点击“添加主机”,参数如下:①主机名:自定义,可与创建的ECS名称保持一致,如:ecs-iot②IP:创建弹性云服务器ECS的弹性公网IP(见步骤3.2)③认证方式:密码④用户名:root⑤密码:填创建弹性云服务器ECS的用户密码;如:Huawei@123#⑥ssh端口:22勾选阅读并同意声明,点击“添加”完成主机的添加。当主机连通性验证显示“验证成功”时,说明主机成功添加。

新建部署任务

点击导航栏“构建&发布 > 部署”进入,然后点击“新建任务”,输入任务名称(可使用默认值),单击“下一步”进入“选择部署模板”。

选择模板“SpringBoot应用部署”,单击“下一步”,进入“部署步骤”页面。

配置部署步骤并执行

SpringBoot应用部署模板默认包含以下步骤:安装JDK、停止SpringBoot服务、选择部署来源、启动SpringBoot服务、URL健康测试。删除“停止SpringBoot服务”和“URL健康测试”;选中“安装JDK”,主机组:选择添加授信主机是创建的主机组(如:iot),弹框提示点击“确定”,jdk版本:openjdk-1.8.0;

选中“选择部署来源”,参数如下:①选择源类型:软件包;②选择软件包:点击右侧“…”,选择构建包,路径如下图所示;

下载到主机的部署目录:按需填写,如/usr/local

选中“启动SpringBoot服务”,参数如下:①服务操作类型:保持默认值②服务对应的绝对路径:由“下载到主机的部署目录”和软件包包名组成,如/usr/local/huawei-0.0.1-SNAPSHOT.jar

点击“保存并执行”,完成部署任务的配置,并执行部署任务。页面显示“部署成功”,表示任务执行完毕。

导入产品模型

在华为云控制台,展开左侧导航,选择“服务列表”-> “物联网”->“设备接入IoTDA”,如下图所示

所属资源空间:Default_APP_Sandbox_user_iot②产品名称:自定义,如:StreetLight③协议类型:MQTT④数据格式:JSON⑤厂商名称:自定义,如:Huawei_IoT⑥设备类型:自定义,如:StreetLight填写完成,点击“立即创建”,产品创建成功,记住id

上传模型文件

点击创建的产品进入详情,然后点击“上传模型文件”,选择SmartStreetLight.zip文件,点击“确认”完成上传。

配置智慧路灯应用

访问智慧路灯Web界面新建浏览器标签页,输入http://EIP:8080/index.html(使用上面弹性云服务器的弹性公网IP替换地址中的“EIP”),访问智慧路灯Web页面。参数设置在弹出的“参数设置”窗口,参数填写如下:①数据来源:参数设置页面下拉框选择“订阅推送”。②本机IP:“控制台”->“服务列表”->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制弹性公网IP。

③主题URN:“控制台”->“服务列表”->“管理与监管”->“消息通知服务SMN”进入主题列表,进行查看并复制主题URN。

④APPID:“控制台”->“服务列表”-> “物联网”->“设备接入IoTDA”,在左侧导航栏选择“资源空间”,复制获取产品所需的“APPID”。

⑤账号名:系统为您分配的华为云实验账号名。⑥IAM用户名:系统为您分配的华为云实验用户名。⑦IAM用户密码:系统为您分配的华为云实验密码。

⑧项目ID:控制台在右上角用户名下拉框中选择“我的凭证->API凭证”页面复制获取所属区域为“华北-北京四”的项目ID。

⑨产品ID:“控制台”->“服务列表”-> “物联网”->“设备接入IoTDA”,在左侧导航栏选择“产品”,复制获取产品所需的“产品ID”。

填写完成后点击“确定”,弹窗提示如下,表示参数设置成功。

注册设备

输入设备标识(自定义,如123456789f),点击“注册设备”。注意:请记录设备id以及密钥,便于后期使用!

模拟器与平台建立连接

在实验桌面双击“Xfce终端”打开Terminal,执行以下命令打开设备接入模拟器(HubSimulator.jar),然后切换到MQTT设备模拟器页签。

cd Desktop//usr/local/share/jre1.8.0_181/bin/java -jar HubSimulator.jar

在MQTT设备模拟器页签下,填写参数如下:①服务IP:进入“服务列表”-> “物联网”->“设备接入IoTDA”,在左侧栏选择“总览”,点击“平台接入地址”。

复制使用MQTT/MQTTS接入信息的域名。

②设备ID:配置智慧路灯应用,注册设备成功后返回的设备Id③设备密钥:配置智慧路灯应用,注册设备成功后返回的密钥配置好以上参数后,点击“建立连接”按钮。

模拟器设备属性上报

在模拟器窗口中的Topic栏中输入以下代码:$oc/devices/{device_id}/sys/properties/report,其中的{device_id}需要替换成实际设备ID。

$oc/devices/{device_id}/sys/properties/report

消息内容:其中,光感强度可自定义,灯状态建议为OFF。在模拟器窗口中的消息编辑栏中输入以下代码:

{"services":[{"service_id":"Sensor","properties":{"luminance":"200","light_state":"OFF"}}]}

意思是将光亮度调整为200lux 状态为关

返回智慧路灯Web界面,此时显示“环境亮度”为200LUX,“灯状态”为关。

注意:模拟器与Web页面之间会有短暂延迟,不用刷新页面,几秒钟后可发现页面会随之变化!

实现功能

此次IoT平台构建智慧路灯应用,还可以实现下面两种功能,就不一一演示了,感兴趣的开发者伙伴可以查阅一下官方文档。

  1. 自动调光模式
  2. 分段定时模式

总结

通过这次指导实操,我对物联网平台如何利用设备数据有了深刻理解,掌握了设备上报数据到物联网平台的原理和方法并能够开发应用控制物联网设备,这多亏了华为云的在线部署和产品的强大功能,很方便的就展现了IOT的有趣一面,后面会多多关注这方面的知识,继续学习。

【拜托了,物联网!】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/299476

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。