1项目背景
随着城市化进程的加速和人们生活水平的提高,对小区安全的需求也在不断提高。传统的小区安防系统已经难以满足现代社会的需求,因此需要引入更加先进、智能化的技术来提升小区的安全防护水平。近年来,物联网、大数据、人工智能等技术的快速发展,为智慧小区安全防护系统的建设提供了有力的技术支持。这些技术的应用使得小区安防系统能够实现对人、事、地、物、组织等多种数据资源的融合,实现对小区综合态势的实时掌握,提升小区安全等级和智能化防控水平。智慧小区作为智慧城市建设的重要组成部分,其安全防护系统的建设也是智慧城市建设的重要一环。通过智慧小区安全防护系统的建设,可以提升整个城市的安全防护水平,为智慧城市的构建提供有力保障。
2实验目标
1、设备接入与集成:确保各类安防设备(如摄像头、门禁系统、报警器等)能够顺利接入系统,并通过标准化接口实现数据的实时传输与共享。
2、数据收集与处理:收集小区内的各类安全相关数据,包括视频流、门禁记录、报警信息等,并通过大数据和云计算技术对这些数据进行实时处理和分析,以提供决策支持。
3、智能分析与预警:利用人工智能技术对收集到的数据进行智能分析,识别潜在的安全风险,并自动触发预警机制,确保管理人员能够迅速响应。
4、远程控制与管理:实现远程监控、控制和管理功能,使得管理人员可以通过系统对小区内的安防设备进行远程操作,提高管理效率。
5、系统安全与可靠性:确保系统自身的安全性和可靠性,防止黑客攻击和数据泄露,保障小区居民的信息安全。
6、用户友好性:设计直观易用的用户界面,使得小区居民和管理人员能够方便地使用系统,并快速获取所需信息。
7、可扩展性与兼容性:系统应具有良好的可扩展性和兼容性,能够支持未来新设备的接入和技术的升级。
8、实验验证与优化:通过实验验证系统的各项功能是否达到预期目标,并根据实验结果对系统进行优化和改进,提高系统的性能和稳定性。
3实验步骤
3.1创建产品。
登录ONENET平台创建产品
其中“节点类型”选择“直连设备”,
“接入协议”选择“MQTT”,“数据协议”选择“OneJson”,“联网方式”选“Wi-Fi”,“开发方案”选择“自定义方案”。
3.2进入产品开发详情页面进入物模型管理页面点击页面右侧的“设置物模型”按钮,进入物模型管理页面,按下述步骤添加系统功能点和自定义功能点
3.3点击“添加自定义功能点”,在弹出的添加页面中,按如下各个字段内容,添加项目场景所需的功能点信息。多个自定义功能点,需每次新增后,再次点击添加。
检查页面上添加的物模型各功能点信息无误后,点击“保存”按钮,并点击弹出的确认提示“确定”。则创建的物模型在 OneNET 平台上生效。
3.4添加一个设备的信息,用于真实设备接入,在弹出的添加设备页面中,添加单个设备,所属产品则选择刚建立的产品名称,设备名称输入Controller。再次点击“添加设备”,该设备名称输入Simulator(同样请按此信息输入,确保与后续实训
任务相呼应),产品依旧选择刚建立的产品名称,最后点击“确定”保存当前设备的信息。
3.5模拟设备接入OneNET 平台
获取产品、设备的必要信息。产品 ID:点击产品开发管理菜单,在具体产品列表中,找到产品 ID 列,复制其字段信息,注意保持其大小写(后文使用“{产品 ID}”来指代,即表示需用这里复制的实际的产品 ID 字段信息替换,下同)。设备名称:点击设备管理菜单,在具体设备列表中,找到设备名称列,本任务中,我们选择“Simulator”设备作为模拟对象,记录该名称,注意保持其大小写。(后文用{设备名称}来指代)。设备密钥:点击设备列表右侧操作项“详情”,在设备详情页面,点击“展开”,记录设备密钥信息,注意保持其完整性。
3.6使用官方 Token 计算工具,获得验证 token 信息。点击“Generate”按钮,在工具下方输入框计算产生 token,不要做任何改动,全选复制全部字符串作{token}。
3.7双击桌面建立的MQTT.fx 快捷方式,运行MQTT.fx 客户端:(1) 设置 Profile Name:可设置一个便于记忆的名字,如“某某产品某某设备接入模拟”
(2) 设置 Broker Address:mqtts.heclouds.com (MQTT 设备接入平台网址)
(3) 设置 Broker 端口:1883 (本次实训任务采用非 TLS 加密的 MQTT 连接)
(4) 设置 Client ID:{设备名称}(前一个步骤中确定的设备名称填入此处)
3.8使用 MQTT.fx 工具模拟设备接入
运行 MQTT.fx 工具,点击选择刚刚保存的连接配置列表项,点击“Connect”,如果一切正常,工具将很快登陆接入OneNET 平台,此时 Connect 按钮变灰,右侧Disconnect 按钮处于激活状态。
3.8.1可以点击”Log“ 选项页,查看工具连接服务端的情况。当工具显示正常连接后,查看OneNET 平台中当前模拟的设备在页面显示为在线状态。
3.8.2模拟设备接入OneNET 平台实现属性上报
$sys/产品 ID/设备名称/thing/property/post/reply
其中产品 ID、设备名称内容,根据实际创建的产品和设备信息替换,将替换后完整的 topic,填入模拟工具“Subscribe”选项页中的输入框,点击“Subscribe”按钮向平台订阅该主题,平台返回成功后,工具左侧中的已订阅主题列表会有一条记录,且该主题下当前消息数为 0。
3.8.3发送属性上报消息
点击“Publish”选项页表头,切换到消息发送页,在输入框中填入属性上报 topic 主题,该 topic为:
sys/产品 ID/设备名称/thing/property/post
同样需要将其中的产品 ID、设备名称替换为实际的信息后填入该输入框。
在下空白编辑区中,输入如下内容:
{
"id": "123",
"version": "1.0",
"params": {
"distance": {
"value": 28.88,
"time": 1599534283111
}
}
}
输入并检查无误后,点击“Publish”按钮。
3.8.3查看属性上报结果
点击“Subscribe”选项页表头,查看之前订阅的属性上报结果通知消息 topic 下,收到的消息如下图
示例:可以看到最新的一条消息,标识了消息的 id 和 code,其中 id 的值为发送时的 id 值,code 值为 200表示该条消息成功送达 OneNET 平台。
3.9修改设备程序的 OneNET 平台网络接入配置参数
修改如下几处代码,让工程具备正确的网络访问以及 OneNET 平台接入验证和适配本次实训任务所需的物模型数据属性上报、写入能力。工程相对路径\device\src\net_device.c 约 677 行处,将{wifi}、{password}替换为设备所在 Wifi 网络用户名和密码。
#if(PHONE_AP_MODE == 1)
UsartPrintf(USART_DEBUG, "Tips: AT+CWJAP\r\n");
if(!NET_DEVICE_SendCmd("AT+CWJAP=\"wifi\",\"密码\"\r\n", "GOT IP", 400))
//1.更改此处为热点名称和密码 2021-6-15
#endif
3.9.1工程相对路径\onenet\src\onenet.c 约 56 行处,依次修改{设备密钥}、{产品 id}、{设备名称}为之前步骤中在 OneNET 平台 中所创建的产品、设备相关信息,本例中设备名称就是之前步骤中创建的“Controller”设备,并对应填入其设备密钥。
ONETNET_INFO onenet_info = {"", "设备密钥", "",
"产品ID", "", "",
"183.230.40.96", "1883", 0,
0, 0, 1, 0, 0, 0, 0, 0, 0};
char devicename[32]="Controller";
//2、更改此处产品id,设备名称,设备key,备注:设备key可以用产品key替换,权限更高。
3.9.2OneNET 平台侧查看设备状态
登录 OneNET 平 台 ,查看“Controller”设备运行状态为在线,具体操作与前述步骤中查看设备状态相同。
3.10打开设备管理列表页面,选择之前步骤中创建的MQTT产品下的“Controller”设备,点击“详情”进入设备详情页面,并点击 “设备调试”选项,进入 OneNET 平台 的设备调试功能页面。本任务中,需要切换调试方式为“应用模拟器”
3.10.1先勾选一个功能点,然后设置下发的数值。(以蜂鸣器为例,这是一个 bool 型功能点,勾选后,可设置值为 true、false 两个之一,本次任务选择 true 作为下发数值)点击页面下方的“属性设置”按钮,右侧调试日志展示了下发的报文,设备端也同时将该数值执行生效。
3.11进入“API 调试”功能页面
点击“运维监控”菜单下“API 调试”子菜单,并展开工作页面左列显示的大类调试类别中的“物模型使用”下拉列表,选择“设置设备属性”API项。在中间页面展示的必填参数中,填写页面中输入必要的参数,如下图所示,本次任务中,填入真实接入的设备“Controller”所对应的相关信息。
3.11.1其中的params内容填写要设置的属性标识符以及对应设置值,本次任务中设置蜂鸣器状态为true,文本示例参考如下:
{
"beep": true
}
点击下方的“执行”按钮,等待一会儿后,设备端执行下发的属性值(蜂鸣器响),同时右侧列页面刷新显示出调用结果,也就是整个API 模拟调用的报文交互结果。
3.12准备 API 接口调试工具 Postman。查阅接口文档,了解有关属性下发的 API 调用方式。
3.12.1填入必要参数
1、根据API文档的信息,确定设备属性设置的请求方式、请求 url ,填入到 Postman 工具url填写栏,将 Postman工具url填写栏前面的下拉选项为“POST”。
2、确定请求 body 内容及格式,以蜂鸣器属性值(beep)下发为例, product_id为产品ID,device_name为设备名称,params 为需要下发的结构化数据,同时包含了要下发的“beep”属性点的值,示例中为 true 数据。以键值对形式将上述需要设置的具体参数组装为 body 报文内容,最终填入 Postman 工具的 Body 选项页内。
{
"product_id": "*********",
"device_name": "Controller",
"params":
{
"beep": true
}
}
3、确定请求的 Header 内容,这里需要一个向 OneNET 平台鉴权所需的必要信息字段,就是“authorization ”信息,下面是该信息的一个生成示例,具体生成方式可参考其他实训任务环节中的操作步骤指导,应用侧请求鉴权,res 参数须以“userid/ 用户 ID”的格式填入,版本号须为“2022-05-01”,字段具体内容根据实际情况进行填入。
3.12.2发起 API 请求,查看结果
发起请求前确认当前真实设备已在线,以蜂鸣器属性值(beep)下发为例,通过 postman 发起请求, 通过平台鉴权后,该请求会下发到对应的真实设备,打开蜂鸣器开关,蜂鸣器会按照程序里预置的逻辑进行鸣响。
3.12.3发起请求前确认当前真实设备已在线,以蜂鸣器属性值(beep)下发为例,通过 postman 发起请求, 通过平台鉴权后,该请求会下发到对应的真实设备,打开蜂鸣器开关,蜂鸣器会按照程序里预置的逻辑进行鸣响。
{
"product_id": "***********",
"device_name": "Controller",
"params": {
"beep": false
}
}
再次通过 postman 发起请求,通过平台鉴权后,该请求会下发到对应的真实设备,蜂鸣器关闭。
3.13进入 OneNET 平台 场景联动管理功能
3.13.1创建场景联动规则
场景联动是一种开发自动化业务逻辑的编程方式,目前支持设备、时间、第三方数据源等多维度的条件触发,这些触发条件以及执行动作组合起来,形成一套规则。点击页面右上角“新建场景”,填写场景名称,这里我们需要一个“距离太近告警”的场景,点击添加进入下一步。
3.13.2编辑距离探测告警的联动规则
1、触发方式:“设备触发”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择信息源类型:“设备功能点”
6、选择功能:选择该产品下的“距离”数据点
7、修改关系运算符:“<”
8、数值:填入“5”(双引号不要填)。
其次点击增加“执行动作”,在“动作一”内容中,依次选择:
1、选择动作类型:“设备执行”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择功能:选择该产品下的“蜂鸣器”
6、数据值选择“1”。
点击“确定”创建好改场景信息,并修改其启用状态为“开”。
近距离遮挡超声波模块的距离探测器探头,稍等一定时间后,蜂鸣器模块鸣叫,移开超声波模块遮挡, 再稍等一定时间后,蜂鸣器模块停止鸣叫。
4创建一个可视化项目
可视化能力是 OneNET 平台重点打造的基于物联网设备大数据的增值服务能力,可以从平台全部产品服务的菜单列表中,点击”数据可视化 view“菜单后,点击“立即试用”按钮进入。
首先新增一个可视化项目,在弹出的模板选择页面,选择一个 2D 项目模板下的“空白模板”作为
本次项目可视化的基础模板,填写位于右侧的项目名称、项目描述后,点击“确定”完成可视化项目创建
2 增加数据源模板
点击左侧菜单“数据管理”下“数据源模板”子菜单,右侧页面中,点击“创建数据源模板”,预先为界面展示距离的变化图表建立一个数据来源模板。
在展开的配置项中,先设定第一项的“数据类 ”型为“物联网平台”,这时页面会切换为配置从“物联网平台”抓取数据所需的必要信息。依次填写带“*”的所有项:
(1) 名称,设置数据源的名称,注意不能是中文,该名称将作为关键字与数据一起传递到可视化组件页面中解析。比如下图所示,设为“distance”。
(2) userId:填写用户ID;
(3) accessKey:填写用户的accessKey;该项与上一项均需进入用户中心、“访问权限”页面查看获取。
(4) 产品ID:为之前任务中创建的产品ID;
(5) 设备名称:点选输入框,等待平台将上述已经填写的3项内容作为条件匹配查找设备,并将符合的设备以下拉的方式展示,以本次任务为例,显示了之前实训环节的设备“Controller”,选中该设备。注:如这里提示获取设备列表失败,则相应检查(2)、(3)、(4)中填写的信息是否正确。
(6) 数据流:选择一个设备中可以用于读取的属性功能名作为数据产生点。本例中选择“距离”。点击“创建”按钮,耐心等待平台返回创建结果。
3 编辑可视化页面及各个组件
回到可视化项目列表展示页面,点击已创建好可视化项目缩略图下方的“编辑”按钮,进入页面编辑状态,如果是采用已有模板,则需将页面多余的控件加以删除,保留背景等基础效果,如果是空白模板,则直接添加本次实训所需的控件:常规图表中的平滑折线图,如下图,添加后效果如图所示。
4 设置图表的数据来源
保持折线图处于选择状态(可再次双击折线图,右侧出现属性修改页),现在切换到“数据”属性 Tab页。选择“数据绑定方式”为“数据源”,此时“数据源选择”下拉列表为“请选择”状态,点击“管理数据源”按钮,弹出“数据源管理”页面。
点击“数据源模板”Tab 页,展示目前所有的数据源模板,可以看到一条在之前步骤中已经创建好的记录(名称为 distance),点击该记录操作列中最右图标:“以此模板创建数据源”。关闭窗口回到视图编辑页面。
5 设置不使用数据过滤器
点击 “使用数据过滤器”前面的勾选框,去掉勾选,即不使用数据过滤器。点击“数据处理结果”按钮,查看弹出的窗口中展示的数据,这些数据就是设备定时上报的属性点形成的(图例中的 value对应的值,就是上报的间隔距离值)。关闭弹出窗口继续下一步。
6 设置图表的横轴列展示字段名与数据提供字段相匹配
现在切换回“样式”属性 Tab 页。展开“数据系列”的节点,修改列字段名为“value”,保持与数据源中提供的数值字段“value”相一致。
7 保存视图,完成可视化项目
4实验总结
本次智慧小区安全防护系统实训为我们提供了一个宝贵的实践机会,让我们深入了解了智慧小区安全防护系统的基本原理和技术构成,提高了我们的实践能力和创新思维。同时,我们也认识到了自身在系统设计、部署、管理等方面的不足和需要改进的地方。展望未来,我们将继续深入学习相关知识和技能,不断提高自身的综合素质和能力水平,为智慧小区的安全防护事业做出更大的贡献。