项目四 智慧小区安全防护系统实训报告

智慧小区安全防护系统实训报告

实训任务 1 创建智慧小区安全防护系统产品设备

一、项目背景

随着科技的飞速发展,物联网技术已广泛应用于各个领域。智能小区作为智慧城市的重要组成部分,其安全防护系统显得尤为重要。传统的安全防护手段已难以满足现代小区的安全需求,因此,开发一套高效、智能的安全防护系统势在必行。本项目旨在利用物联网技术,构建一套集监控、报警、管理于一体的智能小区安全防护系统,提升小区的安全防范能力,为居民提供更加安全、舒适的生活环境。通过本项目的实施,不仅能够提高小区的安全管理水平,还能够推动物联网技术在安全防护领域的广泛应用,具有重要的现实意义和应用价值。

二、实训目标

1.通过移物联网开放平台新建产品并能查看数据

2.模拟设备接入

3.基于真实设备接入移动物联网平台

4.防护系统的可视化实现

三、实训过程

1.在物联网平台创建产品

①.展开左侧菜单“产品开发”功能,点击“创建产品”按钮,进行产品添加。
②.选择产品品类
③.添加必要的产品信息(标记*号的项)。其中“节点类型”选择“直连设备”,“接入协议”选择“MQTT”,“数据协议”选择“OneJson”,“联网方式”选“Wi-Fi”,“开发方案”选择“自定义方案”。
④.最后点击确定,保存各项信息,稍等页面提示产品创建成功。

物联网云平台.png

2.添加物模型

①. 进入产品开发详情页面
②.进入物模型管理页面
③.添加系统功能点
④.添加自定义功能点
⑤.按着下表添加功能点并保存


功能点png

添加完成如图所示


产品开发.png

3.创建基于 MQTT 的设备

①.进入设备管理页面
②.添加一个设备的信息,用于真实设备接入。在弹出的添加设备页面中,添加单个设备,所属产品则选择刚建立的产品名称,设备名称输入Controller(注:须按英文信息输入,确保与后续步骤填写信息相一致),其他信息可自行填写,
最后点击“确定”保存当前设备的信息。
③.再添加一个设备的信息,用于模拟工具接入。再次点击“添加设备”,该设备名称输入Simulator。


添加的设备.png

4.模拟设备接入OneNET 平台

①.获取产品、设备的必要信息(产品 ID、设备名称、设备密钥)
②.使用官方 Token 计算工具,获得验证 token 信息


Token工具.png

③.安装并配置 MQTT.fx 工具模拟设备信息(下载并安装“实训资料包\工具包\MQTT 客户端”路径下的“mqttfx-1.7.1-windows-x64.exe”应用程序。安装完毕后,双击桌面建立的MQTT.fx 快捷方式,运行MQTT.fx 客户端:)

点击界面齿轮图标,进入客户端配置页面:
MQTT.fx客户端.png

(1) 设置 Profile Name:可设置一个便于记忆的名字,如“某某产品某某设备接入模拟”
(2) 设置 Broker Address:mqtts.heclouds.com (MQTT 设备接入平台网址)
(3) 设置 Broker 端口:1883 (本次实训任务采用非 TLS 加密的 MQTT 连接)
(4) 设置 Client ID:{设备名称}(前一个步骤中确定的设备名称填入此处)在下方
的第一个选项页“General”中设置。
(5)MQTT 协议版本号:取消默认勾中,确保下方版本选择下拉框可选,并选择为 3.1.1点击 “User Credentials”选项页,继续设置。
(6) 设置 User Name:{产品 ID}(前一个步骤中确定的产品 ID)
(7) 设置 Password:{token} (前一个步骤中计算得到的 token)
(8)点击OK 保存连接配置。
④.使用 MQTT.fx 工具模拟设备接入(运行 MQTT.fx 工具,点击选择刚刚保存的连接配置列表项,点击“Connect”,如果一切正常,工具将很快登陆接入OneNET 平台,此时 Connect 按钮变灰,右侧 Disconnect 按钮处于激活状态。)


MQTT.fx客户端.png
点击”Log“ 选项页,查看工具连接服务端的情况,正常连接成功则提示类似如下图红框所示信息。
Log.png

Log.png
当工具显示正常连接后,查看OneNET 平台中当前模拟的设备在页面显示为在线状态
物联网云平台.png

⑤.断开 MQTT.fx 工具模拟,查看 OneNET 平台中设备的状态变化(点击 MQTT 工具窗口中的 “Disconnect”按钮,断开工具的 MQTT 连接,等待一会儿后,刷新OneNET平台中设备列表页面,查看显示的设备状态信息:可以看到其状态都变为离线。)


断开链接.png

5.模拟设备接入OneNET 平台实现属性上报

①.订阅属性上报结果通知消息
(1)首先根据前述步骤完成模拟工具 MQTT.fx 模拟一个设备(本任务为 Simulator)接入 OneNET 平台,在平台侧页面中查看到设备为上线状态。点击模拟工具的“Subscribe”选项页表头,在其中的输入框填写属性上报结果通知topic。
这是为了确保设备上传消息确实被平台所接受处理,模拟设备通过订阅 OneNET 平台中已提前创建好的该 MQTT 设备属性上报的结果回复 topic 主题,来等待获取对应的属性上报结果消息,属性上报结果回复 topic 为:$sys/产品 ID/设备名称/thing/property/post/reply

其中产品 ID、设备名称内容,根据实际创建的产品和设备信息替换,将替换后完整的 topic,填入模拟工具“Subscribe”选项页中的输入框,如下图所示:


“Subscribe”.png

(2)点击“Subscribe”按钮向平台订阅该主题,平台返回成功后,工具左侧中的已订阅主题列表会有一条记录,且该主题下当前消息数为 0。


image.png

注:如点击后工具未反应,则需要排查是否填写了正确的产品ID和设备名称(当前工具接入时所用的产品和设备信息是否相一致)。

②.发送属性上报消息
(1)点击“Publish”选项页表头,切换到消息发送页,在输入框中填入属性上报topic主题,该topic 为:$sys/产品ID/设备名称/thing/property/post
注:同样需要将其中的产品ID、设备名称替换为实际的信息后填入该输入框。


image.png

(2)在下空白编辑区中,输入如下内容:
{
"id": "123",
"version": "1.0",
"params": {
"distance": {
"value": 28.88,
"time": 1599534283111
}
}
}
(3)输入并检查无误后,点击“Publish”按钮。


image.png

③.查看属性上报结果
(1)点击“Subscribe”选项页表头,查看之前订阅的属性上报结果通知消息 topic 下,收到的消息如下图示例:


image.png

④.OneNET 平台中查看设备的属性最新值
回到 OneNET 平台中设备管理页面,进入“Simulator”设备详情,查看当前设备各个属性的最新数据,确认显示出通过模拟工具上报来的 value 值:


image.png

6.OneNET 平台下发属性值到模拟工具

①.订阅接收平台下发属性数据的 topic
设备侧如需要收到平台下发的数据,需要订阅接收平台下发数据的 topic,该 topic 为:
$sys/产品 ID/设备名称/thing/property/set
(1)点击模拟工具的“Subscribe”选项页表头,在其中的输入框填写平台下发属性数据的 topic。点击“Subcribe”按钮完成订阅,如下所示,成功后订阅列表会多一个新的订阅频道,当前消息数为 0。


image.png

②.OneNET 平台下发属性数据
在“设备管理”中选择要下发属性的设备(本任务中选择前面任务中创建的产品和
Simulator 设备),点击详情进入设备信息页面,切换功能为“设备调试”


image.png

在下方显示页面中选择“应用模拟器”,勾中属性功能点距离 distance,并填写一个具体数值,如 33.3,点击页面下方的 “属性设置”按钮,完成发送。可以在页面右侧的调试日志中看到下发的日志信息。
image.png

③.模拟设备中查看收到的属性数据值
点击模拟工具的“Subscribe”选项页表头,可以看到已订阅列表中,关于平台下发属性数据的topic, 当前消息数是 1。点击右侧消息列表最下方一条消息,可以看到其中的内容信息,收到的值与前一步骤中下发的值相同。
image.png

7.基于真实设备接入 OneNET 平台

①.基于 OneNET 物联网实验箱搭建实训项目终端硬件平台
②. 终端设备软件系统搭建
(1) 运行 Keil uVision5 应用程序
(2) 载入项目三终端设备侧代码工程
③.修改设备程序的 OneNET 平台网络接入配置参数

修改如下几处代码,让工程具备正确的网络访问以及 OneNET 平台接入验证和适配本次实训任务所需的物模型数据属性上报、写入能力。具体代码文件在工程中的位置如下图所示:
需要修改的代码文件.png

(1)工程相对路径\device\src\net_device.c 约 677 行处,将{wifi}、{password}替换为设备所在 Wifi 网络用户名和密码(将{}括号一起替换,下同)
代码1.png

(2)工程相对路径\onenet\src\onenet.c 约 56 行处,依次修改{设备密钥}、{产品 id}、{设备名称}为之前步骤中在 OneNET 平台 中所创建的产品、设备相关信息,本例中设备名称就是之前步骤中创建的“Controller”设备,并对应填入其设备密钥
代码2.png

④.修改设备程序的上报属性值映射关系以及 OneNET 平台下发属性生效命令处理代码

(1)工程相对路径\applications\application.c 约 132 行处,根据之前步骤中在 OneNET 平台中所创建的物模型信息,依次增加属性点标识符以及对应需上报的设备数据变量,如下所示:
代码3.png

(2)工程相对路径\onenet\src\cmd_callback.c 约 51 行处,根据之前步骤中在OneNET 平台 中所创建的物模型信息,增改此处的属性点标识符,对应设置需写入生效的设备数据处理函数名,并同时实现该函数的声明以及具体函数代码,完成写入信息在本地设备上的实际生效逻辑
代码4.png

(3)在文件适当位置增加该方法的具体实现逻辑代码:
代码5.png

⑤.编译工程,连接下载器烧写程序到设备中
⑥.OneNET 平台侧查看设备状态
查看物联网云平台信息.png

⑦.OneNET 平台侧查看设备上报数据信息


物联网云平台.png

8. 真实设备接入实现场景联动

8.1下发属性在终端设备上执行生效(设备调试)

①. 设备端软硬件环境准备
沿用上一个实训任务中搭建的设备硬件系统,以及继续使用 Keil5 开发工具载入的项目三终端设备侧代码工程(该工程代码在完成上一实训任务后,已经能够接入 OneNET 平台并上报属性点数据)。
将设备上电,等待OneNET 平台 中显示该设备处于上线状态,进入下一实训步骤。
②.通过 OneNET平台 的设备调试方式进行属性下发
打开设备管理列表页面,选择之前步骤中创建的MQTT产品下的“Controller”设备,点击“详情”进入设备详情页面,并点击 “设备调试”选项,进入 OneNET 平台 的设备调试功能页面。本任务中,需要切换调试方式为“应用模拟器”,下方页面展示了可以设置的属性(物模型中可写的属性功能点)。


image.png

image.png

先勾选一个功能点,然后设置下发的数值。(以蜂鸣器为例,这是一个 bool 型功能点,勾选后,可设置值为 true、false 两个之一,本次任务选择 true 作为下发数值)点击页面下方的“属性设置”按钮,右侧调试日志展示了下发的报文,设备端也同时将该数值执行生效。


image.png

8.2下发属性在终端设备上执行生效(API 调试)

①.设备端软硬件环境准备(同上)
②.进入“API 调试”功能页面
点击“运维监控”菜单下“API 调试”子菜单,并展开工作页面左列显示的大类调试类别中的“物模型使用”下拉列表,选择“设置设备属性”API项,如下图所示:


image.png

在中间页面展示的必填参数中,填写页面中输入必要的参数,如下图所示,本次任务中,填入真实接入的设备“Controller”所对应的相关信息:


image.png

其中的params内容填写要设置的属性标识符以及对应设置值,本次任务中设置蜂鸣器状态为true,文本示例参考如下:
{
"beep": true
}
image.png

8.3基于API 方式实现设备属性下发

①.准备 API 接口调试工具 Postman
②.查阅接口文档,了解有关属性下发的 API 调用方式
点击前面任务中API“设置设备属性”参数填写页面左上角的“查看API文档”链接,查看右侧显示的API文档,了解“设置设备属性”这个API的调用方式及对应的请求、响应相关参数信息。


image.png

③.填入必要参数
1、根据API文档的信息,确定设备属性设置的请求方式、请求 url ,填入到 Postman 工具url填写栏,将 Postman工具url填写栏前面的下拉选项改为“POST”。
2、确定请求 body 内容及格式,以蜂鸣器属性值(beep)下发为例, product_id为产品ID,device_name为设备名称,params 为需要下发的结构化数据,同时包含了要下发的“beep”属性点的值,示例中为 true 数据。以键值对形式将上述需要设置的具体参数组装为 body 报文内容,最终填入 Postman 工具的 Body 选项页内。
{
"product_id": "84qVvid4b5",
"device_name": "Controller",
"params":
{
"beep": true
}

3、确定请求的 Header 内容,这里需要一个向 OneNET 平台鉴权所需的必要信息字段,就
是“authorization ”信息,下面是该信息的一个生成示例,具体生成方式可参考其他实训任务
环节中的操作步骤指导,应用侧请求鉴权,res 参数须以“userid/ 用户 ID”的格式填入,版本
号须为“2022-05-01”,字段具体内容根据实际情况进行填入。


image.png

④.发起 API 请求,查看结果
发起请求前确认当前真实设备已在线,以蜂鸣器属性值(beep)下发为例,通过 postman 发起请求, 通过平台鉴权后,该请求会下发到对应的真实设备,打开蜂鸣器开关,蜂鸣器会按照程序里预置的逻辑进行鸣响。
image.png

⑤.更改 api 报文,对同样属性点,设置新的属性值,并下发

以蜂鸣器属性值(beep)下发为例,更改下发的属性值为 false,报文如下:
{
"product_id": "***********",
"device_name": "Controller",
"params": {
"beep": false
}
}
再次通过 postman 发起请求,通过平台鉴权后,该请求会下发到对应的真实设备,蜂鸣器关闭。


image.png

8.4基于OneNET 云平台的场景联动

①.进入 OneNET 平台 场景联动管理功能
检查实验箱目前搭建的硬件系统是“核心模块”以及“Wifi 模块”、“蜂鸣器模块”、 “超声波模块”等模块,烧写程序上电运行。
确保用户已登录 OneNET 云平台,进入 OneNET 平台 控制台页面,点击“数据流转”菜单下“场景联动”子菜单,进入场景联动管理功能页面。
②.创建场景联动规则

场景联动是一种开发自动化业务逻辑的编程方式,目前支持设备、时间、第三方数据源等多维度的条件触发,这些触发条件以及执行动作组合起来,形成一套规则。点击页面右上角“新建场景”,填写场景名称,这里我们需要一个“距离太近告警”的场景,点击添加进入下一步。
image.png

③.编辑距离探测告警的联动规则
如果是初次创建,这里直接展示的触发条件以及执行动作编辑页面。
首先选择触发条件为:满足全部条件执行,其次在“条件一”内容中,依次选择:
1、触发方式:“设备触发”

2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择信息源类型:“设备功能点”
6、选择功能:选择该产品下的“距离”数据点
7、修改关系运算符:“<”
8、数值:填入“5”(双引号不要填)。


image.png

其次点击增加“执行动作”,在“动作一”内容中,依次选择:
1、选择动作类型:“设备执行”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择功能:选择该产品下的“蜂鸣器”
6、数据值选择“1”。
image.png

点击“确定”创建好改场景信息,并修改其启用状态为“开”。
image.png

④.再新增一个联动规则,实现距离安全时取消告警

参考步骤 3 描述,再新增一个联动规则,名称可以为“距离安全取消告警”。该规则的具体条件及动作与步骤3大部分相同,除了其中的条件部分,距离逻辑判断修改为“>”,数值为“20”,执行动作部分,蜂鸣器的数值改为“0”。最后点击“确认”按钮,并同样将该条场景规则的启用状态修改为“开”,完成本次编辑内容。


image.png

⑤.设备上线,观察场景实现效果
image.png

9.安全防护系统的可视化实现

9.1物联网云平台可视化组件配置运用

①.创建一个可视化项目
点击”数据可视化 view“菜单后,点击“立即试用”按钮进入。新增一个可视化项目,在弹出的模板选择页面,选择一个 2D 项目模板下的“空白模板”作为本次项目可视化的基础模板,填写位于右侧的项目名称、项目描述后,点击“确定”完成可视化项目创建。


image.png

②.增加数据源模板


image.png

(1) 名称,设置数据源的名称,注意不能是中文,该名称将作为关键字与数据一起传递到可视化组件页面中解析。比如下图所示,设为“distance”。
(2) userId:填写用户ID;
(3) accessKey:填写用户的accessKey;该项与上一项均需进入用户中心、“访问权限”页面查看获取。

(4) 产品ID:为之前任务中创建的产品ID;
(5) 设备名称:点选输入框,等待平台将上述已经填写的3项内容作为条件匹配查找设备,并将符合的设备以下拉的方式展示,以本次任务为例,显示了之前实训环节的设备“Controller”,选中该设备。
(6) 数据流:选择一个设备中可以用于读取的属性功能名作为数据产生点。本例中选择“距离”。点击“创建”按钮,耐心等待平台返回创建结果。


image.png

③.选择一个模板自定义页面和组件
3d907238-807b-4c8e-99ee-86a262e110b9.png

④.设置图表的数据来源


image.png

image.png

image.png

注:设置不使用数据过滤器

⑤.点击“数据处理结果”按钮,查看弹出的窗口中展示的数据,这些数据就是设备定时上报的属性点形成的(图例中的 value对应的值,就是上报的间隔距离值)。关闭弹出窗口继续下一步。
image.png

⑥.设置图表的横轴列展示字段名与数据提供字段相匹配
现在切换回“样式”属性 Tab 页。展开“数据系列”的节点,修改列字段名为“value”,保持与数据源中提供的数值字段“value”相一致。
⑦.预览可视化视图并回到编辑状态迭代优化视图效果
编辑视图界面,可以看到折线图已显示出实际的折线数据图表,可以点击右上角“预览”按钮,在全页面状态下查看整个可视化视图的效果。

⑧.保存视图,完成可视化项目


可视化结果.png

四、实训总结

1、通过中移OneNET物联网开放平台 新建产品(MQTT);
2、根据项目场景创建产品物模型;
3、创建基于MQTT 的云平台设备;
4、查看设备运行状态及数据。
5、通过模拟工具调试设备接入;
6、通过模拟设备,实现属性上报;
7、OneNET 平台下发属性值(命令)到模拟设备;
8、基于设备工程,实现 OneNET 平台下发属性在终端设备上执行生效;
9、基于API 方式实现设备属性下发;
10、学会OneNET 平台数据可视化编辑器的使用;
11、能够进行可视化数据源的配置;
12、对智慧小区安全防护系统进行可视化展现。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容