关于python:手摸手带你完成智慧路灯构建及避坑华为云至简致远

30次阅读

共计 9308 个字符,预计需要花费 24 分钟才能阅读完成。

本文的次要内容有:一 先实现筹备工作二 而后构建并归档软件包三 实现音讯告诉服务 (SMN) 四 云服务器部署初步上线五 设施接入及模拟器连贯一 🕹️ 先实现筹备工作后面登录,账号密码哪些略过,间接下载要用到资源先,回到桌面双击“Xfce 终端”关上 Terminal,输出以下命令下载保留“HubSimulator.jar”到本人的云桌面下面 cd Desktop/
wget https://sandbox-experiment-re… 而后输以下命令保留“SmartStreetLight.zip”压缩包 wget https://sandbox-experiment-re… 新建我的项目而后抉择“服务列表”->“开发与运维”->“项目管理”,进入软件开发云,如下图这样敲黑板啊:不过先晓得什软件开发平台是啥?它是集华为近 30 年研发实际、前沿研发理念、先进研发工具为一体的一站式云端 DevOps 平台,面向开发者提供的云服务,即开即用,随时随地在云端进行项目管理、代码托管、流水线、代码查看、编译构建、部署、测试、公布等,从而给开发者疾速而又轻松地开启云端开发之旅。

点击“立刻应用”按钮,跳转到 DevCloud 操作界面,它是企业级软件合作一体化 DevOps 平台,如下图这样

DevCloud 操作界面如下图:

点击上图红圈标注“新建我的项目”按钮,开始创立我的项目,如下图所示:

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

参数填写结束,点击确定按钮即可实现我的项目创立。1.2 创立代码仓库 1.2.1 新建仓库抉择导航栏“代码 > 代码托管”,进入治理页面,开展右上角“一般新建”下拉菜单,点击“按模板新建”

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

1.2.3 而后填仓库根本信息根本信息参数如下:①代码仓库名称:自定义,如:IoT_Streetlight_New_Demo ②抉择 gitignore:Java 其余选项放弃默认单击“确定”,实现仓库创立。

创立胜利后,可单击仓库名称进入仓库,查看仓库文件二 ⛳ 而后构建并归档软件包 2.1 新建编译构建工作点击导航栏“构建 & 公布 > 编译构建”,进入治理页面,点击“新建工作”,参数如下①源码源:CodeHub;②源码仓库:默认抉择 1.2 步创立的代码仓库;③分支:master;点击“下一步”进入“抉择构建模板”

2.2 抉择构建模板本我的项目是一个 Java Maven 我的项目,所以搜寻抉择“Maven”模板,单击“确定”,进入“构建步骤”页面

2.3 而后构建步骤应用零碎模板中提供的两个默认步骤、以及每个步骤中的默认配置,即可实现本例的构建。点击“新建并执行”即可实现步骤的配置并启动构建工作,如下图所示

敲黑板:构建须要 2 - 3 分钟,请急躁期待 …………… 当呈现下面图片示意的页面时,示意构建工作执行胜利。若执行失败,就查看日志信息排查问题,或通过编译构建 - 常见问题查找解决办法。2.4 验证构建工作执行后果点击导航栏“公布”,进入“软件公布库”页面,点击进入“IoT_Streetlight…”下的“202…”日期命名的文件夹,即可看到生成的软件包“huawei-0.0.1-SNAPSHOT.jar”

2.5 创立主题并订阅 SMN 在华为云控制台,开展左侧目录,抉择【服务列表】->【治理与监管】->【音讯告诉服务 SMN】,或在服务列表搜寻框中搜寻“SMN”。什么是音讯告诉服务?

留神:若提醒无权限,请确认左上角区域是否在“华北 - 北京四”即可在左侧导航栏,抉择“主题治理 > 主题”,单击“创立主题”,输出“主题名称”(自定义,例如:StreetLight)后单击“确定”实现主题创立

三 🎨 实现音讯告诉服务 (SMN) 主题创立胜利后,零碎会主动生成主题 URN,主题 URN 是主题的惟一资源标识,不可批改,后续步骤将会用到该 URN

点击主题“StreetLight”右侧操作“增加订阅”,可采纳短信或者邮件任意一种协定实现订阅。“短信协定”参数如下:①协定:短信②订阅终端:用户手机号码(需填写您的手机号实现此步)单击“确定”后,请查看手机接管短信,点击短信中的链接进行订阅确认

“邮件协定”参数如下:①协定:邮件②订阅终端:用户邮箱地址(需填写您的邮箱实现此步)单击“确定”后,请查收邮件,点击邮件中的链接进行订阅确认

四 🤩 云服务器部署初步上线 4.1 网络配置点击“返回控制台创立”,就能跳转到虚构公有云控制台页面

在虚构公有云控制台,点击“创立虚构公有云”,区域抉择“华北 - 北京四”,名称自定义(如:vpc-iot),默认子网名称自定义(如:subnet-iot), 其余参数均可默认,点击“立刻创立”实现后,即可返回网络配置页面;

返回网络配置页面,刷新后,抉择刚创立的虚构公有云 VPC(如:vpc-iot)和子网(如:subnet-iot),主动调配 IP 地址,如下图所示

②扩大网卡:默认配置③平安组:默认配置④弹性公网 IP:当初购买⑤线路:默认配置⑥公网带宽:按带宽计费⑦带宽大小:1Mbit/s

4.2 高级配置实现网络配置后单击“下一步:高级配置”,参数如下:①云服务器名称:自定义,如:ecs-iot②登录凭证:明码③明码 / 确认明码:自定义,如:SM1$b9Zs1#⑥其余参数:默认配置

实现高级配置后点击“下一步:确认配置”,浏览并勾选批准协定,单击“立刻购买”后,点击返回云服务器列表。当状态为“运行中”示意已创立实现;

4.3 主机授信配置创立的弹性云服务器 ECS 的“弹性公网 IP”信息将在后续步骤 4.1 增加授信主机的配置中用到;

4.4 增加平安组入方向规定点击新创建的弹性云服务器 ECS 的名称进入详情页,抉择“平安组”页签,点击 Sys-WebServer 平安组右侧的【配置规定】进入规定配置页面。

在新关上的平安组管制界面,抉择“入方向规定”,单击“增加规定”,如下图所示:① 优先级:1② 策略:容许③ 协定端口:8080;④ IP 地址设为 0.0.0.0/0。点击“确定”。

敲黑板:SSH 协定端口(22)的入方向 TCP 协定默认凋谢,无需批改。将智慧路灯利用端口(8080)的入方向放开限度,用于后续拜访智慧路灯利用。出方向规定默认不做限度,无需批改;4.5 配置零碎防火墙规定返回试验桌面双击“Xfce 终端”关上 Terminal,输出以下命令,并依照操作阐明执行,登录云服务器:操作阐明:①应用弹性云服务器 ECS 的弹性公网 IP 替换命令中的 [EIP] 阐明: 云服务器的弹性公网 IP 地址能够通过点击“控制台”->“服务列表”->“计算”->“弹性云服务器 ECS”进入服务器列表,进行查看并复制 ssh root@EIP

②承受秘钥输出“yes”,回车;③输出明码:SM1$b9Zs1#(输出明码时,命令行窗口不会显示明码,输完之后间接键入回车)。胜利登录云服务器之后如下图所示

④执行 sudo ufw enable 开启 ufw 服务,输出“y”确认。sudo ufw enable⑤执行 sudo ufw allow 22/tcp 启用 22 端口。sudo ufw allow 22/tcp⑥执行 sudo ufw allow 8080/tcp 启用 8080 端口。sudo ufw allow 8080/tcp

4.6 部署智慧路灯利用增加授信主机“智慧路灯”是一个 Web 我的项目,须要部署到服务器上才能够运行,本例采纳部署服务器是华为云弹性云服务器 DevCloud 在应用弹性云服务器之前须要先对其授信回到软件开发平台 DevCloud, 这个结尾我介绍过 若不晓得到结尾相熟先,点击已创立的我的项目,如 QuickStart,如下图所示

单击导航栏“更多 > 设置 > 通用设置”,抉择左侧栏“主机组治理”,而后点击“新建主机组”,参数如下:①主机组名:自定义,如:iot②操作系统:Linux 点击“保留”实现主机组的创立,并进入该主机组。

在创立的主机组内,点击“增加主机”,参数如下:①主机名:自定义,可与创立的 ECS 名称保持一致,如:ecs-iot②IP:创立弹性云服务器 ECS 的弹性公网 IP(见步骤 3.2)③认证形式:明码④用户名:root⑤明码:填创立弹性云服务器 ECS 的用户明码;如:SM1$b9Zs1#⑥ssh 端口:22 勾选浏览并批准申明,点击“增加”实现主机的增加。当主机连通性验证显示“验证胜利”时,阐明主机胜利增加

新建部署工作点击导航栏“构建 & 公布 > 部署”进入,而后点击“新建工作”,输出工作名称(可应用默认值),单击“下一步”进入“抉择部署模板”。

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

4.3 配置部署步骤并执行 SpringBoot 利用部署模板默认蕴含以下步骤:装置 JDK、进行 SpringBoot 服务、抉择部署起源、启动 SpringBoot 服务、URL 衰弱测试 4.3.1 删除“进行 SpringBoot 服务”和“URL 衰弱测试”;4.3.2 选中“装置 JDK”,主机组:抉择增加授信主机是创立的主机组(如:iot),弹框提醒点击“确定”,jdk 版本:openjdk-1.8.0;敲黑板啊:部署失败怎么办?答案:请依据试验步骤逐渐查看:1、主机是否增加胜利并实现了连通性验证 2、所有步骤的参数是否配置正确,手动输出的参数是否多了个空格,少了个符号等等。3、不必的步骤和参数是否都已删除。

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

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

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

切换到“参数设置”页签,逐个删除全副参数

点击“保留并执行”,实现部署工作的配置,并执行部署工作;页面显示“部署胜利”,示意工作执行结束。若工作执行失败,可通过页面中的起因提醒及链接来排查解决;五 🍉 设施接入及模拟器连贯 5.1 创立产品在华为云控制台,开展左侧导航,抉择“服务列表”->“物联网”->“设施接入 IoTDA”,如下图所示敲黑板啊:设施接入服务是什么?它是华为云的物联网平台,提供海量设施连贯上云、设施和云端双向音讯通信、批量设施治理、近程管制和监控、OTA 降级、设施联动规定等能力,并可将设施数据灵便流转到华为云其余服务。物联网平台中,某一类具备雷同能力或特色的设施的合集被称为一款产品。您可为产品定义产品模型,产品模型用于形容设施具备的能力和个性。定义产品模型,即在物联网平台构建一款设施的形象模型,使平台了解该款设施反对的服务、属性、命令等信息;

在左侧栏中抉择“产品”,点击“创立产品”,参数如下

①所属资源空间:Default_APP_Sandbox_user_iot②产品名称:自定义,如:StreetLight③协定类型:MQTT④数据格式:JSON⑤厂商名称:自定义,如:Huawei_IoT⑥设施类型:自定义,如:StreetLight 填写实现,点击“立刻创立”,产品创立胜利,请记录“产品 ID”信息,并查看“详情”

5.2 上传模型文件点击创立的产品进入详情,而后点击“上传模型文件”,抉择 SmartStreetLight.zip 文件,点击“确认”实现上传

5.3 拜访智慧路灯 Web 界面新建浏览器标签页,输出 http://EIP:8080/index.html(应用步骤 3.2 中弹性云服务器的弹性公网 IP 替换地址中的“EIP”),拜访智慧路灯 Web 页面。6.2 参数设置在弹出的“参数设置”窗口,参数填写如下:①数据起源:参数设置页面下拉框抉择“订阅推送”;②本机 IP:“控制台”->“服务列表”->“计算”->“弹性云服务器 ECS”进入服务器列表,进行查看并复制弹性公网 IP;敲黑板啊:为什么要配置这些参数?智慧路灯利用通过 API 形式和华为云对接,注册设施、获取设施数据和下发命令,这些参数在调用 API 时才用;

③主题 URN:“控制台”->“服务列表”->“治理与监管”->“音讯告诉服务 SMN”进入主题列表,进行查看并复制主题 URN

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

⑤账号名:零碎为您调配的华为云试验账号名⑥IAM 用户名:零碎为您调配的华为云试验用户名⑦IAM 用户明码:零碎为您调配的华为云试验明码

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

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

填写实现后点击“确定”,弹窗提醒如下,示意参数设置胜利

5.4 注册设施输出设施标识(自定义,如 123456789f),点击“注册设施”

敲黑板啊:弹窗提醒如下,示意注册设施胜利。请记录“设施 Id”和“密钥”信息,用于后续验证,请记录设施 id 以及密钥,便于前期应用!

设施注册胜利后是“未激活”状态,请抉择“服务列表”->“物联网”->“设施接入服务”,在左侧栏抉择“设施 > 所有设施”,点击设备标识码进入,查看设施 Id,或批改密钥。后果验证(设施属性上报 / 订阅 / 设施命令下发);5.5 模拟器与平台建设连贯 7.1.1 关上 MQTT 设施模拟器在试验桌面双击“Xfce 终端”关上 Terminal,执行以下命令关上设施接入模拟器(HubSimulator.jar),而后切换到 MQTT 设施模拟器页签敲黑板啊:HubSimulator.jar 是什么工具?HubSimulator.jar 是设施接入服务提供的多功能模拟器,本试验中咱们用它来模仿 MQTT 设施接入;连贯失败怎办呢,请查看服务 IP(域名),设施 ID 和设施秘钥的填写是否都正确,有无多余的空格根本就能够解决了哈;cd Desktop/
/usr/local/share/jre1.8.0_181/bin/java -jar HubSimulator.jar

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

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

②设施 ID:配置智慧路灯利用,注册设施胜利后返回的设施 Id③设施密钥:配置智慧路灯利用,注册设施胜利后返回的密钥配置好以上参数后,点击“建设连贯”按钮。

建设连贯胜利后,右侧日志显示 MQTT 服务连贯胜利,如下图所示:

若无奈建设连贯,请关上“命令提示符”窗口,输出“ping 服务 IP”查看您的主机是否能和华为云物联网平台失常通信,若无奈失常通信,请更换主机的网络环境 5.7 查看设施状态回到物联网所有设施列表(“服务列表”->“物联网”->“设施”→“所有设施”),设施状态变更为“在线”,如下图所示

5.8 模拟器设施属性上报 7.2.1 模拟器发送音讯,上报设施属性①在模拟器窗口中的 Topic 栏中输出以下代码:$oc/devices/{device_id}/sys/properties/report,其中的 {device_id} 须要替换成理论设施 ID 敲黑板啊:利用界面不显示上报的数据怎么办?首先查看上报数据的 Topic 填写是否正确,而后查看上报数据是否合乎 JSON 格局。如果以上两点都查看没问题,再查看之前参数设置的是否都正确 $oc/devices/{device_id}/sys/properties/report②音讯内容:其中,光感强度可自定义,灯状态倡议为 OFF。在模拟器窗口中的音讯编辑栏中输出以下代码:{“services”:[{“service_id”:”Sensor”,”properties”:{“luminance”:”200″,”light_state”:”OFF”}}]}

发送音讯胜利后,右侧日志显示信息推送胜利(图片仅为示意,请以你上报理论数据为准哈)5.9 查看利用界面变动返回智慧路灯 Web 界面,此时显示“环境亮度”为 200LUX,“灯状态”为关。

敲黑板啦:模拟器与 Web 页面之间会有短暂提早,不必刷新页面,几秒钟后可发现页面会随之变动!5.10 模拟器订阅 Topic 切换到“订阅 Topic”页签,并在 Topic 栏中输出以下代码:$oc/devices/{device_id}/sys/commands/#,其中的 {device_id} 须要替换成理论设施 ID。输出结束后,点击“订阅”按钮可实现订阅。$oc/devices/{device_id}/sys/commands/#

订阅胜利后,右侧日志显示订阅 Topic 胜利 5.11 平台下发设施命令 / 模拟器响应 7.4.1 终端联控模式配置返回智慧路灯 Web 界面,“路灯管制”抉择“终端联控模式”,开关抉择“开”,单击“设置”,而后点击”确认”。①若以后灯状态为“关”,开关抉择为“开”,服务后盾会实时下发一条开灯命令,弹窗提醒会有 5 -10 秒左右提早,请急躁期待。②若以后灯状态为“关”,开关抉择为“关”,不会触发命令下发,间接弹窗提醒设置胜利;即“灯状态”与“开关抉择”统一时,不会触发命令下发;“灯状态”与“开关抉择”不统一时,会触发实时命令下发;收不到命令怎么办?

5.12 命令接管因为以后“灯状态”为关,“开关抉择”为开,查看模拟器日志区域,会收到一条开灯命令。(payload 的值通过 base64 加密,解密后即可失去命令内容)

5.13 模拟器发送音讯,上报变更后的设施属性①Topic:$oc/devices/{device_id}/sys/properties/report,其中的 {device_id} 须要替换成理论设施 ID。$oc/devices/{device_id}/sys/properties/report②音讯内容:其中,光感强度可自定义,灯状态倡议为 ON。{“services”:[{“service_id”:”Sensor”,”properties”:{“luminance”:”110″,”light_state”:”ON”}}]}5.14 查看利用界面变动如下图所示,应该显示“环境亮度”为 110LUX,“灯状态”为开。

5.15 短信 / 邮件告诉在模拟器上单击“断开连接”后,反复 7.4.1,“路灯管制”抉择“终端联控模式”,开关抉择“关”,单击“设置”。因为灯状态为“开”,开关抉择为“关”,服务后盾会实时下发一条关灯命令;而设施处于离线状态,导致命令下发失败此时,零碎会发送短信 / 邮件告诉告知订阅用户命令下发失败;告诉内容为命令下发失败的错误信息告诉示例:【华为云】错误信息:{“error_code”:”IOTDA.014016″,”error_msg”:”Operation not allowed. The device is not online.”}设施变更为“离线”状态,请登录华为云控制台,抉择“物联网 > 设施接入服务”,在左侧导航栏,抉择“设施 > 所有设施”,依据设施标识码查看设施状态

5.16(可选)主动调光模式主动调光模式参数配置在模拟器上单击“建设连贯”,将设施从新上线。返回智慧路灯 Web 界面,“路灯管制”抉择“主动调光模式”,设置亮度阈值为 100

5.17 模拟器接管反馈因为以后“环境亮度”为 110LUX,“灯状态”为开,查看模拟器日志区域,应该会收到关灯命令。①若以后“环境亮度”大于“亮度阈值”,且“灯状态”为“开”,服务后盾会实时下发一条关灯命令,弹窗提醒会有 5 -10 秒左右提早,请急躁期待。②若以后“环境亮度”小于“亮度阈值”,且“灯状态”为“开”,不会触发命令下发,间接弹窗提醒设置胜利即“环境亮度”小于“亮度阈值”,且“灯状态”为“开”或“环境亮度”大于“亮度阈值”,且“灯状态”为“关”时,不会触发命令下发;反之,则会触发实时命令下发

模拟器发送音讯,上报变更后的设施属性。①Topic:$oc/devices/{device_id}/sys/properties/report,其中的 {device_id} 须要替换成理论设施 ID$oc/devices/{device_id}/sys/properties/report②音讯内容:其中,光感强度 <100,灯状态为 OFF{“services”:[{“service_id”:”Sensor”,”properties”:{“luminance”:”80″,”light_state”:”OFF”}}]}5.18 查看 Web 界面返回智慧路灯 Web 界面,单击“设置”,查看模拟器日志区域,会收到一条开灯命令

5.19(可选)分段定时模式分段定时模式参数配置返回智慧路灯 Web 界面,“路灯管制”抉择“分段定时模式”,设置关灯时间段为 06:30-18:30。敲黑板啦:“关灯时间段”和“亮度曲线”横轴工夫均为弹性云服务器零碎工夫,即为 GMT+0:00 时区

后果断定,因为以后“灯状态”为关,需依据弹性云服务器零碎工夫(参考“亮度曲线”横轴工夫)判断后果;①若零碎工夫位于“关灯时间段”之外,且“灯状态”为“关”,服务后盾会实时下发一条开灯命令,弹窗提醒会有 5 -10 秒左右提早,请急躁期待

②若零碎工夫位于“关灯时间段”之内,且“灯状态”为“关”,不会触发命令下发,间接弹窗提醒设置胜利啦开心 5.20 (可选)如何正确删除应用服务首先删弹性云服务器 ECS 在华为云控制台,抉择“服务列表”->“计算”->“弹性云服务器 ECS”进入,勾选待删除 ECS 服务器,如 ecs-iot,抉择“更多 > 删除”,在弹窗中请勾选删除弹性公网 IP 和数据盘后,点击“是”实现删除而后删设施接入服务 IoTDA 在华为云控制台,抉择“服务列表”->“物联网”->“设施”→“所有设施”进入所有设施列表,依据设施标识码删除设施,如 123456789f。而后在左侧栏抉择“产品”,删除产品,如 StreetLight 最初删桌面下载的资源包桌面双击“Xfce 终端”关上 Terminal,输出以下命令下载删除“HubSimulator.jar”文件。cd Desktop/
rm HubSimulator.jar 接下来删除“SmartStreetLight.zip”压缩包。命令如下:rm SmartStreetLight.zip【华为云至简致远】有奖征文炽热进行中:https://bbs.huaweicloud.com/b…
想理解更多的华为云产品相干信息,请分割咱们:电话:950808 按 0 转 1

正文完
 0