一.项目背景
最近几年,随着中国经济蓬勃发展,越来越多的人开始追求更安全、更舒适的生活环境,在该种时代背景之下,智能小区“顺势而生”,受到了广大民众的热爱与认可。参照国内外诸多知名专家与学者针对“智能小区”所给出的解释以及中国住宅产业办公室经过大量研讨与分析之后而总结出的概念,智能小区这一概念进行了重新定义,即通过通信技术、控制技术等手段,利用传输网络,建设由安防系统、信息服务系统、物业管理系统以及家居智能化组成的一种功能齐全、具备多样性特征的管理集成系统,可以切实提升小区的安全性,目的是让人民对高生活品质的要求得到满足。目前虽然社会的治安情况总体在变好,但是小区内仍然会发生偷盗、抢劫、诱拐儿童等犯罪事件,其主要原因之一就是小区不封闭,外来人员能够自由出入,没有实时的监控设备导致警方破案非常困难,犯罪的破案率不高,犯罪分子有恃无恐。拥有各种智能安防设备的新一代智能小区就很好的解决了上述问题,在小区入口安装停车场道闸系统和人行道闸系统并配备高清摄像机,可时刻管控出入小区人员,在小区围墙上安装电子围栏,防止人员翻墙而入,可实现整个园区为一个封闭的整体,从而达到安全防范的效果。
二.实验目的
1、通过中移OneNET物联网开放平台新建产品(MQTT);
2、根据项目场景创建产品物模型;
3、创建基于MQTT 的云平台设备;
4、查看设备运行状态及数据。
5、通过模拟工具调试设备接入;
6、通过模拟设备,实现属性上报;
7、OneNET 平台下发属性值(命令)到模拟设备;
三.实验步骤
步骤一 登录OneNET,通过中移物联网首页的“全部产品服务”菜单进入 “物联网开放平台”功能页。
步骤 2 创建产品,展开左侧菜单“产品开发”功能,点击“创建产品”按钮,进行产品添加。(如已创建了产品,则展示有产品列表,可继续点击按钮创建)
在弹出的页面中第一步,参考下图信息,填写信息中,添加必要的产品信息(标记*号的项)。其中“节点类型”选择“直连设备”,“接入协议”选择“MQTT”,“数据协议”选择“OneJson”,“联网方式”选“Wi-Fi”,“开发方案”选择“自定义方案”,完成后点击确定,即创建成功。
步骤 3 进入产品开发详情页面,点击产品开发
步骤 4 进入物模型管理页面
点击页面右侧的“设置物模型”按钮,进入物模型管理页面,按下述步骤添加系统功能点和自定义功能
点
步骤 5 添加系统功能点
在弹出的添加页面中,选择如下图所示的系统功能点,点击右下角的“添加”按钮完成添加。
步骤 4 添加自定义功能点
点击“添加自定义功能点”,在弹出的添加页面中,按如下各个字段内容,添加项目场景所需的功能点信息。多个自定义功能点,需每次新增后,再次点击添加。
步骤 5 检查并保存创建的物模型
检查页面上添加的物模型各功能点信息无误后,点击“保存”按钮,并点击弹出的确认提示“确定”。则创建的物模型在 OneNET 平台上生效。
步骤 6 进入设备管理页面
当我们完成上一步骤返回产品列表页面时,可在刚建立产品列表的操作项中点击“设备管理”,页面即进入设备列表管理页面。我们也可以点击左侧菜单的“设备接入管理”,进入下一级菜单“设备管理”,同样进入该管理页面
步骤 7 添加一个设备的信息,用于真实设备接入
目前刚创建的产品,当前设备数为 0,我们点击右侧的“添加设备”按钮
在弹出的添加设备页面中,添加单个设备,所属产品则选择刚建立的产品名称,设备名称输入Controller(其他信息可自行填写)最后点击“确定”保存当前设备的信息。
步骤 8 再添加一个设备的信息,用于模拟工具接入
再次点击“添加设备”,该设备名称输入Simulator,产品依旧选择刚建立的产品名称,最后点击“确定”保存当前设备的信息。
步骤 9 查看设备运行状态
点击左侧菜单“设备管理”,显示设备列表页面,其中“设备状态”列展示了对应设备的运行状态。初始创建的设备,显示为“未激活”,当实体设备使用该条设备信息接入到 OneNET 平台后,则显示为“在线”,断开与OneNET 平台的连接后,则显示为“离线”,且“最近在线时间”列会记录最后一次上线时间信息
步骤 10查看设备详细信息
点击设备列表右侧操作项“详情”,在设备详情页面,查看设备及归属产品的详细信息。这里的信息,后续任务步骤中会使用到。
切换到“属性”页面,可以查看当前设备下的各个物模型功能点实际数据,下图因为设备不是初次创建,所以有数据记录。
步骤 11 查看设备日志
OneNET 平台提供了核心服务全链路日志,包括设备上下线、设备上行消息、下行消息、业务处理消息(物模型调用、存储、规则引擎、HTTP 推送、MQ推送)等。日志列表提供了强大灵活的搜索功能,可查询设备日志详细信息,进行故障分析。
点击左侧菜单“运维监控”展开,“设备日志”子菜单,显示所有设备的日志列表页面,可以选择筛选条件,精细过滤快速查找日志信息。因为当前设备是初次创建,相关日志信息还没有,下图是一个已经产生日志记录的设备日志查询列表。在未来实训环节,我们将通过这里的功能方便便捷查找传输的数据值, 或者快速定位问题。
步骤 12 创建设备分组
支持设备分组功能,可以将不同产品下的不同设备组合在一起,即增加一个跨产品的自定义设备组合。每个设备最多添加进一个分组,通过用户自定义的分组,标记特征,从而实现设备资源的重新组合以方便特定应用场景下的物联网项目应用。
点击左侧“设备分组”子菜单进入分组管理页面,点击右侧“添加分组”,在弹出的页面中填写分组名称,点击“新建”完成分组创建。
点击创建好的分组信息列表操作列中的“详情”,进入当前设备分组信息页面。
步骤 13 为分组添加设备
初始时没有设备存在于该分组中,列表显示为空白。注意分组信息展示的内容,分组也有自己的key, 这个 key 可用于按分组方式接入 OneNET 平台的方式时,计算 Token 的授权凭据。
点击页面右侧“添加设备”按钮,弹出的页面展示了左右两栏设备列表。左侧列出了所有产品下的待添加设备,已加入到某个分组的设备则不会显示。选择左侧之前创建好的设备,右侧会自动出现该设备信息,表示已被选择加入到当前分组中。点击下面的“确定”按钮完成将设备加入到分组的操作。
步骤 14 获取产品、设备的必要信息
产品 ID:点击产品开发管理菜单,在具体产品列表中,找到产品 ID 列,复制其字段信息,注意保持其大小写(后文使用“{产品 ID}”来指代,即表示需用这里复制的实际的产品 ID 字段信息替换,下同)
设备名称:点击设备管理菜单,在具体设备列表中,找到设备名称列,本任务中,我们选择“Simulator”设备作为模拟对象,记录该名称,注意保持其大小写。(后文用{设备名称}来指代)
设备密钥:点击设备列表右侧操作项“详情”,在设备详情页面,点击“展开”,记录设备密钥信息,注意保持其完整性。(可直接点击“复制”用于粘贴)。
步骤 15 使用官方 Token 计算工具,获得验证 token 信息
下载并运行“实训资料包\工具包\Token 计算器”路径下的“tokenV2.0.exe”,在工具页面按下表信息填入各个字段(其中部分参数填写需用上面步骤中获得的信息替换):
步骤 16 安装并配置 MQTT.fx 工具模拟设备信息
下载并安装“实训资料包\工具包\MQTT 客户端”路径下的“mqttfx-1.7.1-windows-x64.exe”应用程序。安装完毕后,双击桌面建立的MQTT.fx 快捷方式,运行MQTT.fx 客户端:
点击界面齿轮图标,进入客户端配置页面:
(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)
点击OK 保存连接配置。
步骤 17 使用 MQTT.fx 工具模拟设备接入运行 MQTT.fx 工具,点击选择刚刚保存的连接配置列表项,点击“Connect”,如果一切正常,工具将很快登陆接入OneNET 平台,此时 Connect 按钮变灰,右侧 Disconnect 按钮处于激活状态。
提示:可以点击”Log“ 选项页,查看工具连接服务端的情况,正常连接成功则提示类似如下图红框所示信息。
当工具显示正常连接后,查看OneNET 平台中当前模拟的设备在页面显示为在线状态(提示:页面的状态不会自动刷新,可以稍微等待后手动刷新页面,确认模拟工具的连接情况与页面上对应设备的状态对应。)
步骤 18 断开 MQTT.fx 工具模拟,查看 OneNET 平台中设备的状态变化点击 MQTT 工具窗口中的 “Disconnect”按钮,断开工具的 MQTT 连接,等待一会儿后,刷新OneNET平台中设备列表页面,查看显示的设备状态信息:可以看到其状态都变为离线。
步骤 19 订阅属性上报结果通知消息
首先根据前述步骤完成模拟工具 MQTT.fx 模拟一个设备(本任务为 Simulator)接入 OneNET 平台,在平台侧页面中查看到设备为上线状态。点击模拟工具的“Subscribe”选项页表头,在其中的输入框填写属性上报结果通知topic。
这是为了确保设备上传消息确实被平台所接受处理,模拟设备通过订阅 OneNET 平台中已提前创建好的该 MQTT 设备属性上报的结果回复 topic 主题,来等待获取对应的属性上报结果消息,属性上报结果回复 topic 为:
$sys/产品 ID/设备名称/thing/property/post/reply
其中产品 ID、设备名称内容,根据实际创建的产品和设备信息替换,将替换后完整的 topic,填入模拟工具“Subscribe”选项页中的输入框,如下图所示:
点击“Subscribe”按钮向平台订阅该主题,平台返回成功后,工具左侧中的已订阅主题列表会有一条记录,且该主题下当前消息数为 0。(注:如点击后工具未反应,则需要排查是否填写了正确的产品 ID 和设备名称(当前工具接入时所用的产品和设备信息是否相一致))
步骤 20 发送属性上报消息
点击“Publish”选项页表头,切换到消息发送页,在输入框中填入属性上报 topic 主题,该 topic为:$sys/产品 ID/设备名称/thing/property/post
(同样需要将其中的产品 ID、设备名称替换为实际的信息后填入该输入框。)在下空白编辑区中,输入如下内容,输入并检查无误后,点击“Publish”按钮。
步骤 21 查看属性上报结果
点击“Subscribe”选项页表头,查看之前订阅的属性上报结果通知消息 topic 下,收到的消息如下图
步骤 22 OneNET 平台中查看设备的属性最新值
回到 OneNET 平台中设备管理页面,进入“Simulator”设备详情,查看当前设备各个属性的最新数据,确认显示出通过模拟工具上报来的 value 值:
步骤 23 订阅接收平台下发属性数据的 topic
设备侧如需要收到平台下发的数据,需要订阅接收平台下发数据的 topic,该 topic 为:$sys/产品 ID/设备名称/thing/property/set
点击模拟工具的“Subscribe”选项页表头,在其中的输入框填写平台下发属性数据的 topic。点击“Subcribe”按钮完成订阅,如下所示,成功后订阅列表会多一个新的订阅频道,当前消息数为 0。
步骤 24 OneNET 平台下发属性数据,
在“设备管理”中选择要下发属性的设备(本任务中选择前面任务中创建的产品和Simulator 设备),点击详情进入设备信息页面,切换功能为“设备调试”,在下方显示页面中选择“应用模拟器”,勾中属性功能点距离 distance,并填写一个具体数值,如 33.3,点击页面下方的 “属性设置”按钮,完成发送。可以在页面右侧的调试日志中看到下发的日志信息。
步骤 25 模拟设备中查看收到的属性数据值
点击模拟工具的“Subscribe”选项页表头,可以看到已订阅列表中,关于平台下发属性数据的topic, 当前消息数是 1。点击右侧消息列表最下方一条消息,可以看到其中的内容信息,收到的值与前一步骤中下发的值相同。
步骤 26 进入设备调试功能
在“设备管理”中选择要下发上报信息的设备(本任务中选择前面任务中创建的产品和 Simulator 设备),点击详情进入设备信息页面,切换功能为“设备调试”。(注:如果此时页面提示设备已经登陆,需要先检查,之前模拟工具是否还处于连接状态中,如是则点击模拟工具中的“Disconnect”按钮,并等待一定时间再次刷新页面,直到页面显示可以启动调试。)
步骤 27 输入当前设备的WiFi定位信息上报
刷新页面提示可以启动调试后,点击“启动调试”按钮。启动后,属性上报 Tab 页展示了当前设备可以上报的数据点,图示仅参考操作的位置示意,不代表所示信息必须保持一样。
向下浏览或通过输入关键字搜索定位到“WiFi定位”属性数据点,勾中前面的选框,并点击右侧下拉展开 箭 头 , 在 该 数 据 点 下 的 “ 热 点 mac 信 息 ” 输 入 框 中 输 入 某 个 WiFi 热 点 的 mac 地 址 信 息 , 如dc:fe:18:f2:4c:67|ac:b3:b5:1d:63:80。点击下方的“属性上报”。
观察页面右侧显示的数据上报及平台回应信息,确认数据成功上报。
步骤 28 在设备详情页面查看设备上报的热点位置信息数据
返回设备详情页面,切换“属性”页面,查看设备属性点的数据信息,已经有数据记录。
步骤 29 重复为另一个 Controller 设备上报地理位置信息数据
重复步骤 1、2、3、4,但此时选择的设备为“Controller”,其他操作方式与前述步骤一致,返回设备详情页面,查看该设备下的地理位置属性点信息,已经有数据记录。
步骤30 关键代码
A. 工程相对路径\device\src\net_device.c
B. 工程相对路径\onenet\src\onenet.c
C. 工程相对路径\applications\application.c
D. 工程相对路径\onenet\src\cmd_callback.c
步骤31 编译程序并烧写,随机设备处于在线状态,进入设备详情页面,查看属性表格页展示的各个数据点显示的信息。
步骤 32 进入 OneNET 平台 场景联动管理功能
登录 OneNET 云平台,进入 OneNET 平台 控制台页面,点击“数据流转”菜单下“场景联动”子菜单,进入场景联动管理功能页面,点击页面右上角“新建场景”,填写场景名称,这里我们需要一个“距离太近告警”的场景,点击添加进入下一步。步骤 33 编辑距离探测告警的联动规则
如果是初次创建,这里直接展示的触发条件以及执行动作编辑页面。
首先选择触发条件为:满足全部条件执行,其次在“条件一”内容中,依次选择:
1、触发方式:“设备触发”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择信息源类型:“设备功能点”
6、选择功能:选择该产品下的“距离”数据点
7、修改关系运算符:“<”
8、数值:填入“5”(双引号不要填)。
其次点击增加“执行动作”,在“动作一”内容中,依次选择:
1、选择动作类型:“设备执行”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择功能:选择该产品下的“蜂鸣器”
6、数据值选择“1”。
点击“确定”创建好改场景信息,并修改其启用状态为“开”。,再新增一个联动规则,名称可以为“距离安全取消告警”。该规则的具体条件及动作与步骤3大部分相同,除了其中的条件部分,距离逻辑判断修改为“>”,数值为“20”,执行动作部分,蜂鸣器的数值改为“0”。最后点击“确认”按钮,并同样将该条场景规则的启用状态修改为“开”,完成本次编辑内容。
设备上电运行后,近距离遮挡超声波模块的距离探测器探头,稍等一定时间后,蜂鸣器模块鸣叫,移开超声波模块遮挡, 再稍等一定时间后,蜂鸣器模块停止鸣叫。
步骤 34 创建一个可视化项目
首先新增一个可视化项目
增加数据源模板
按照图示内容进行填写
编辑可视化页面及各个组件,添加常规图表中的平滑折线图,
如图设置图表的数据来源
此时“数据源选择”下拉列表会出现一条可选的记录,形如“distance_XXXX”,代表以“distance” 模板生成的记录,平台自动追加后缀加以命名。选择该条记录作为折线图的数据源。
点击 “使用数据过滤器”前面的勾选框,去掉勾选,即不使用数据过滤器。点击“数据处理结果”按钮,结果如图所示。
设置图表的横轴列展示字段名与数据提供字段相匹配
新增一个数据源模板,如图所示
为可视化视图添加地理位置组件
设置地图控件的数据来源
点击“数据处理结果”按钮,查看弹出的窗口中展示的数据,是否形如下图所示
增加过滤代码,匹配地图控件的格式要求,将数据过滤器编辑框中,自动生成的过滤器代码全选,删除,对照下图红框部分,输入新的过滤逻辑代码,注意“[”、“{”等括号的配对关系,以及“.”、“,”等间隔符号正确性。编辑完成后点击下方的保存按钮,让过滤器生效。
再次点击“数据处理结果”按钮,查看弹出的窗口中展示的数据,是否如下图在报文字段上一致
最后结果如图所示
四. 实验中出现的问题
1.设备不上线
重新烧程序,重新接入,重新设置热点
2.POST MAN出现错误,无法成功
重新检查设备信息和Token是否正确,还有接入地址是否正确
3.可视化折线图只有一个点
上线后反复刷新