1.项目目标
1、通过中移OneNET物联网开放平台新建产品(MQTT);根据项目场景创建产品物模型;创建基于MQTT 的云平台设备;查看设备运行状态及数据。
2、通过模拟工具调试设备接入;通过模拟设备,实现属性上报;OneNET 平台下发属性值(命令)到模拟设备。
3、基于真实设备,搭建软硬件环境,接入 OneNET 平台并实现设备属性上报;通过OneNET 平台的“设备调试”实现设备属性下发;通过OneNET 平台的“API 调试”实现设备属性下发;直接基于API 方式实现设备属性下发;
4、学会OneNET 平台数据可视化编辑器的使用;能够进行可视化数据源的配置;对智慧小区安全防护系统进行可视化展现。
2.任务一
2.1 创建基于 MQTT 协议的产品
步骤一 通过中移物联网首页的“全部产品服务”菜单进入 “物联网开放平台”功能页
注 1:如提示用户需登录,则先登录后再进入;
注 2:如用户账号未开通物联网开放平台功能,可即时开通后再进入。
步骤二
展开左侧菜单“产品开发”功能,点击“创建产品”按钮,进行产品添加。(如已创建了产品,则展示有产品列表,可继续点击按钮创建)
在弹出的页面中第一步,参考下图信息,选择产品品类(不一定必须一致,符合项目任务背景即可)。
第二步选择智能化方式为“设备接入”方式。
在第三步填写信息中,添加必要的产品信息(标记*号的项)。其中“节点类型”选择“直连设备”,“接入协议”选择“MQTT”,“数据协议”选择“OneJson”,“联网方式”选“Wi-Fi”,“开发方案”
选择“自定义方案”。其他信息字段,对本次任务实际完成效果没有影响可自行填入合适信息。
最后点击确定,保存各项信息,稍等页面提示产品创建成功。
2.2 根据项目场景创建产品物模型
步骤 1 进入产品开发详情页面
步骤 2 进入物模型管理页面
点击页面右侧的“设置物模型”按钮,进入物模型管理页面,按下述步骤添加系统功能点和自定义功能
点。
步骤 3 添加系统功能点
在弹出的添加页面中,选择如下图所示的系统功能点,点击右下角的“添加”按钮完成添加。
步骤 4 添加自定义功能点
点击“添加自定义功能点”,在弹出的添加页面中,按如下各个字段内容,添加项目场景所需的功能点信息。多个自定义功能点,需每次新增后,再次点击添加。注:标识符字段输入内容,与下表一致。
步骤 5 检查并保存创建的物模型检查页面上添加的物模型各功能点信息无误后,点击“保存”按钮,并点击弹出的确认提示“确定”。则创建的物模型在 OneNET 平台上生效。
2.3 创建基于 MQTT 的设备
步骤 1 进入设备管理页面
当我们完成上一步骤返回产品列表页面时,可在刚建立产品列表的操作项中点击“设备管理”,页面即进入设备列表管理页面。我们也可以点击左侧菜单的“设备接入管理”,进入下一级菜单“设备管理”,同样进入该管理页面。
步骤 2 添加一个设备的信息,用于真实设备接入目前刚创建的产品,当前设备数为 0,我们点击右侧的“添加设备”按钮
在弹出的添加设备页面中,添加单个设备,所属产品则选择刚建立的产品名称,设备名称输入Controller(注:须按此加黑信息输入,确保与后续步骤填写信息相一致),其他信息可自行填写,最后点击“确定”保存当前设备的信息。
步骤 3 再添加一个设备的信息,用于模拟工具接入
再次点击“添加设备”,该设备名称输入Simulator(同样请按此信息输入,确保与后续实训任务相呼应),产品依旧选择刚建立的产品名称,最后点击“确定”保存当前设备的信息。
3.任务二
3.1 模拟设备接入OneNET 平台
步骤 1 获取产品、设备的必要信息
1、产品 ID:点击产品开发管理菜单,在具体产品列表中,找到产品 ID 列,复制其字段信息,注意保持其大小写(后文使用“{产品 ID}”来指代,即表示需用这里复制的实际的产品 ID 字段信息替换,下同)。
2、设备名称:点击设备管理菜单,在具体设备列表中,找到设备名称列,本任务中,我们选择“Simulator”设备作为模拟对象,记录该名称,注意保持其大小写。(后文用{设备名称}来指代)
3、设备密钥:点击设备列表右侧操作项“详情”,在设备详情页面,点击“展开”,记录设备密钥信息,注意保持其完整性。(可直接点击“复制”用于粘贴)。
步骤 2 使用官方 Token 计算工具,获得验证 token 信息下载并运行“实训资料包\工具包\Token 计算器”路径下的“tokenV2.0.exe”,在工具页面按下表信息填入各个字段(其中部分参数填写需用上面步骤中获得的信息替换):
点击“Generate”按钮,在工具下方输入框计算产生 token,不要做任何改动,全选复制全部字符串作为{token}。
步骤 3 安装并配置 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 保存连接配置。
步骤 4 使用 MQTT.fx 工具模拟设备接入
运行 MQTT.fx 工具,点击选择刚刚保存的连接配置列表项,击“Connect”,如果一切正常,工具将很快登陆接入OneNET 平台,此时 Connect 按钮变灰,右侧 Disconnect 按钮处于激活状态。
提示:可以点击”Log“ 选项页,查看工具连接服务端的情况,正常连接成功则提示类似如下图红框所示信息。
如有如下图红框所示信息,则相应检查上一步骤中填入的连接配置信息是否正确,并进一步追溯 token计算是否正确,或者更前一步中各个关键信息获取是否正确。当工具显示正常连接后,查看OneNET 平台中当前模拟的设备在页面显示为在线状态
提示:页面的状态不会自动刷新,可以稍微等待后手动刷新页面,确认模拟工具的连接情况与页面上对应设备的状态对应。
步骤 5 断开 MQTT.fx 工具模拟,查看 OneNET 平台中设备的状态变化点击 MQTT 工具窗口中的 “Disconnect”按钮,断开工具的 MQTT 连接,等待一会儿后,刷新OneNET平台中设备列表页面,查看显示的设备状态信息:可以看到其状态都变为离线。
4.任务三
4.1 真实设备接入OneNET 平台实现属性上报
步骤 1 基于 OneNET 物联网实验箱搭建实训项目终端硬件平台根据实训场景,选取 OneNET 物联网实验箱“核心模块”以及“Wifi 模块”、“蜂鸣器模块”、 “超声波模块”等场景所需的模块进行搭建(建议实验箱背板上只插上这四个模块,其他项目中已经使用过的模块可以取下,确保模块数据干扰)。具体搭建操作介绍参考其他实训项目,此处略。
步骤 2 终端设备软件系统搭建
(1) 运行 Keil uVision5 应用程序(有关Keil uVision5 应用程序的安装、芯片编译环境配置等步骤参考前述实训项目任务中有关指导说明)。
(2) 载入项目三终端设备侧代码工程(该工程代码已经包含了根据实验箱各模块基础集成框架,以及基于 MQTT 的 OneNET 云平台接入能力),载入后直接全编译工程,查看编译结果。具体工程的打开以及编译等操作参考前述实训项目中操作描述。如下图所示表示编译没有错误。
注:若编译结果 Error 数不为 0,则查看具体编译日志,对应分析代码报错原因,排除后再次编译,确保无误后进入下一步。
步骤 3 修改设备程序的 OneNET 平台网络接入配置参数修改如下几处代码,让工程具备正确的网络访问以及 OneNET 平台接入验证和适配本次实训任务所需的物模型数据属性上报、写入能力。具体代码文件在工程中的位置如下图所示
A. 工程相对路径\device\src\net_device.c 约 677 行处,将{wifi}、{password}替换为设备所在 Wifi 网络用户名和密码(将{}括号一起替换,下同);
UsartPrintf(USART_DEBUG, "Tips: AT+CWJAP\r\n");
if(!NET_DEVICE_SendCmd("AT+CWJAP=\"eeee\",\"jwdv2157\"\r\n", "GOT IP", 400))
B. 工程相对路径\onenet\src\onenet.c 约 56 行处,依次修改{设备密钥}、{产品 id}、{设备名称}为之前步骤中在 OneNET 平台 中所创建的产品、设备相关信息,本例中设备名称就是之前步骤中创建的“Controller”设备,并对应填入其设备密钥
ONETNET_INFO onenet_info = {"", "******************************key", "",
"sjh6JzlF07", "", "",
"183.230.40.96", "1883", 0,
0, 0, 1, 0, 0, 0, 0, 0, 0};
char devicename[32]="Controller";
步骤 4 修改设备程序的上报属性值映射关系以及 OneNET 平台下发属性生效命令处理代码C. 工程相对路径\applications\application.c 约 132 行处,根据之前步骤中在 OneNET 平台中所创建的物模型信息,依次增加属性点标识符以及对应需上报的设备数据变量,如下所示;
{"beep", &beep_info.beep_status[0], TYPE_BOOL, 1}, {"distance",&Sonic_Info.sonic_distance,TYPE_FLOAT,1},
D. 工程相对路径\onenet\src\cmd_callback.c 约 51 行处,根据之前步骤中在OneNET 平台 中所
创建的物模型信息,增改此处的属性点标识符,对应设置需写入生效的设备数据处理函数名,并同时实现该函数的声明以及具体函数代码,完成写入信息在本地设备上的实际生效逻辑;
以蜂鸣器写入为例,对应修改该变量定义段内某行形如“{“beep”,CALLBACK_Beep},”的信息,逗号前面的字符串标识符为"beep",逗号后的处理方法名为 CALLBACK_Beep。同时在该文件头部,增加 void CALLBACK_Beep(int value);这样的方法声明:
在文件适当位置增加该方法的具体实现逻辑代码:
步骤 5 编译工程,连接下载器烧写程序到设备中
下载器的连接以及烧写过程略。下载成功后设备重新加电,等待一定时间,进入下一步。
步骤 6 OneNET 平台侧查看设备状态
登录 OneNET 平 台 ,查看“Controller”设备运行状态为在线,具体操作与前述步骤中查看设备状态相同,图略。若此时设备显示为不在线,则排查前面关于网络接入、OneNET 鉴权等代码修改处是否有误。重复步骤 3、4、5,再次检查并修改,直到本步骤查看状态为上线。
步骤 7 OneNET 平台侧查看设备上报数据信息
进入设备详情页面,查看属性表格页展示的各个数据点显示的信息。(下图仅为示例参考)
重点关注距离(标识符“distance”)、蜂鸣器状态(标识符“beep”)等属性点,是否已经有数值上报,记录有关数值作为实训考核结果之一。
4.2 下发属性在终端设备上执行生效(设备调试)
步骤 1 设备端软硬件环境准备
沿用上一个实训任务中搭建的设备硬件系统,以及继续使用 Keil5 开发工具载入的项目三终端设备侧代码工程(该工程代码在完成上一实训任务后,已经能够接入 OneNET 平台并上报属性点数据)。将设备上电,等待OneNET 平台 中显示该设备处于上线状态,进入下一实训步骤。
步骤 2 通过 OneNET平台 的设备调试方式进行属性下发
打开设备管理列表页面,选择之前步骤中创建的MQTT产品下的“Controller”设备,点击“详情”进入设备详情页面,并点击 “设备调试”选项,进入 OneNET 平台 的设备调试功能页面。本任务中,需要切换调试方式为“应用模拟器”,下方页面展示了可以设置的属性(物模型中可写的属性功能点)。
先勾选一个功能点,然后设置下发的数值。(以蜂鸣器为例,这是一个 bool 型功能点,勾选后,可设置值为 true、false 两个之一,本次任务选择 true 作为下发数值)点击页面下方基于 OneNET 的智慧小区安全防护系统 第 3 页的“属性设置”按钮,右侧调试日志展示了下发的报文,设备端也同时将该数值执行生效。
注 1:如设备端没有生效,需要具体分析原因,包括设备是否上线,以及上一实训任务中,有关属性下发的命令执行代码是否正确添加。
注 2:设备执行属性设置动作生效,则蜂鸣器响,此时修改设置值为“false”, 再次下发,使设备端生效新的值(蜂鸣器静音)。
5.任务3-1
5.1下发属性在终端设备上执行生效(API 调试)
步骤 1 设备端软硬件环境准备沿用上一个实训任务中搭建的设备硬件系统,以及继续使用 Keil5 开发工具载入的项目三终端设备侧代码工程(该工程代码在完成上一实训任务后,已经能够接入 OneNET 平台并上报属性点数据)。将设备上电,等待OneNET 平台 中显示该设备处于在线状态,进入下一实训步骤。
步骤 2 进入“API 调试”功能页面
点击“运维监控”菜单下“API 调试”子菜单,并展开工作页面左列显示的大类调试类别中的“物模型使用”下拉列表,选择“设置设备属性”API项,如下图所示:
在中间页面展示的必填参数中,填写页面中输入必要的参数,如下图所示,本次任务中,填入真实接入的设备“Controller”所对应的相关信息:
其中的params内容填写要设置的属性标识符以及对应设置值,本次任务中设置蜂鸣器状态为true,文本示例参考如下:
{
"beep": true
}
点击下方的“执行”按钮,等待一会儿后,设备端执行下发的属性值(蜂鸣器响),同时右侧列页面刷新显示出调用结果,也就是整个API 模拟调用的报文交互结果。
5.2基于API 方式实现设备属性下发
步骤 1 准备 API 接口调试工具 Postman
推荐使用 Postman 工具,下文的操作均以该工具作为实训操作对象,其他支持 http 协议的工具也可以使用,可参考下文描述对应调整参数填写方式。
注:Postman 具体的安装和使用说明可参考公开资料和前述实训任务的操作步骤,此处略。
步骤 2 查阅接口文档,了解有关属性下发的 API 调用方式
点击前面任务中API“设置设备属性”参数填写页面左上角的“查看API文档”链接,查看右侧显示的API文档,了解“设置设备属性”这个API的调用方式及对应的请求、响应相关参数信息。
也可以访问OneNET 官网的“开发中心”,OneNET 平台 专题,通过左侧菜单定位到“设备属性设置”的API接口使用文档页面详细了解相关请求方式以及请求参数填写说明。
以“设置设备属性”为例,对应文档地址为:
https://open.iot.10086.cn/doc/v5/fuse/detail/1418该帮助页面详细说明了请求方式以及请求参
数填写说明,如下图所示:
步骤 3 填入必要参数
1、根据API文档的信息,确定设备属性设置的请求方式、请求 url ,填入到 Postman 工具url
填写栏,将 Postman工具url填写栏前面的下拉选项改为“POST”。
2、确定请求 body 内容及格式,以蜂鸣器属性值(beep)下发为例, product_id为产品ID,device_name为设备名称,params 为需要下发的结构化数据,同时包含了要下发的“beep”属性点的值,示例中为 true 数据。以键值对形式将上述需要设置的具体参数组装为 body 报文内容,最终填入 Postman 工具的 Body 选项页内。
{
"product_id": "sjh6JzlF07",
"device_name": "Controller",
"params":
{
"beep": true
}
}
3、确定请求的 Header 内容,这里需要一个向 OneNET 平台鉴权所需的必要信息字段,就是“authorization ”信息,下面是该信息的一个生成示例,具体生成方式可参考其他实训任务环节中的操作步骤指导,应用侧请求鉴权,res 参数须以“userid/ 用户 ID”的格式填入,版本号须为“2022-05-01”,字段具体内容根据实际情况进行填入。
步骤 4 发起 API 请求,查看结果
发起请求前确认当前真实设备已在线,以蜂鸣器属性值(beep)下发为例,通过 postman 发起请求, 通过平台鉴权后,该请求会下发到对应的真实设备,打开蜂鸣器开关,蜂鸣器会按照程序里预置的逻辑进行鸣响。
步骤 5 更改 api 报文,对同样属性点,设置新的属性值,并下发
以蜂鸣器属性值(beep)下发为例,更改下发的属性值为 false,报文如下:
{
"product_id": "***********",
"device_name": "Controller",
"params": {
"beep": false
}
}
再次通过 postman 发起请求,通过平台鉴权后,该请求会下发到对应的真实设备,蜂鸣器关闭。
5.3 基于OneNET 云平台的场景联动
步骤 1 进入 OneNET 平台 场景联动管理功能
检查实验箱目前搭建的硬件系统是“核心模块”以及“Wifi 模块”、“蜂鸣器模块”、 “超声波模块”等模块,烧写程序上电运行。确保用户已登录 OneNET 云平台,进入 OneNET 平台 控制台页面,点击“数据流转”菜单下“场景联动”子菜单,进入场景联动管理功能页面。
步骤 2 创建场景联动规则
场景联动是一种开发自动化业务逻辑的编程方式,目前支持设备、时间、第三方数据源等多维度的条件触发,这些触发条件以及执行动作组合起来,形成一套规则。点击页面右上角“新建场景”,填写场景名称,这里我们需要一个“距离太近告警”的场景,点击添加进入下一步。
步骤 3 编辑距离探测告警的联动规则
如果是初次创建,这里直接展示的触发条件以及执行动作编辑页面。
首先选择触发条件为:满足全部条件执行,其次在“条件一”内容中,依次选择:
1、触发方式:“设备触发”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择信息源类型:“设备功能点”
6、选择功能:选择该产品下的“距离”数据点
7、修改关系运算符:“<”
8、数值:填入“5”(双引号不要填)。
其次点击增加“执行动作”,在“动作一”内容中,依次选择:
1、选择动作类型:“设备执行”
2、选择产品分组:“选择产品”
3、选择具体产品:选择之前实训任务中创建的MQTT产品名称
4、选择设备: 选择该产品下的Controller设备
5、选择功能:选择该产品下的“蜂鸣器”
6、数据值选择“1”。
点击“确定”创建好改场景信息,并修改其启用状态为“开”。
步骤 4 再新增一个联动规则,实现距离安全时取消告警
参考步骤 3 描述,再新增一个联动规则,名称可以为“距离安全取消告警”。该规则的具体条件及动
作与步骤3大部分相同,除了其中的条件部分,距离逻辑判断修改为“>”,数值为“20”,执行动作部分,
蜂鸣器的数值改为“0”。最后点击“确认”按钮,并同样将该条场景规则的启用状态修改为“开”,完成本次编辑内容。
步骤 5 设备上线,观察场景实现效果
检查实验箱目前搭建的硬件系统是“核心模块”以及“Wifi 模块”、“蜂鸣器模块”、 “超声波模块”等模块,烧写程序为项目三配套工程代码,上电运行。
近距离遮挡超声波模块的距离探测器探头,稍等一定时间后,蜂鸣器模块鸣叫,移开超声波模块遮挡, 再稍等一定时间后,蜂鸣器模块停止鸣叫。
注:如设备未按场景联动的规则逻辑执行,可通过场景列表该条场景的“查询日志”进入查看场景。
6.任务四
6.1 物联网云平台可视化组件配置运用
步骤 1 创建一个可视化项目
可视化能力是 OneNET 平台重点打造的基于物联网设备大数据的增值服务能力,可以从平台全部产品服务的菜单列表中,点击”数据可视化 view“菜单后,点击“立即试用”按钮进入。
首先新增一个可视化项目,在弹出的模板选择页面,选择一个 2D 项目模板下的“空白模板”作为本次项目可视化的基础模板,填写位于右侧的项目名称、项目描述后,点击“确定”完成可视化项目创建。
注:也可以选择具有一定页面效果的模板比如“模板-智慧园区“,后续根据需要删减部分控件。
步骤 2 增加数据源模板
点击左侧菜单“数据管理”下“数据源模板”子菜单,右侧页面中,点击“创建数据源模板”,预先为界面展示距离的变化图表建立一个数据来源模板。
在展开的配置项中,先设定第一项的“数据类 ”型为“物联网平台”
这时页面会切换为配置从“物联网平台”抓取数据所需的必要信息。依次填
写带“*”的所有项:
(1) 名称,设置数据源的名称,注意不能是中文,该名称将作为关键字与数据一起传递到可视化组件页面中解析。比如下图所示,设为“distance”。
(2) userId:填写用户ID;
(3) accessKey:填写用户的accessKey;该项与上一项均需进入用户中心、“访问权限”页面查看获取。
(4) 产品ID:为之前任务中创建的产品ID;
(5) 设备名称:点选输入框,等待平台将上述已经填写的3项内容作为条件匹配查找设备,并将符合的设备以下拉的方式展示,以本次任务为例,显示了之前实训环节的设备“Controller”,选中该设备。注:如这里提示获取设备列表失败,则相应检查(2)、(3)、(4)中填写的信息是否正确。
(6) 数据流:选择一个设备中可以用于读取的属性功能名作为数据产生点。本例中选择“距离”。点击“创建”按钮,耐心等待平台返回创建结果。
步骤 3 编辑可视化页面及各个组件
回到可视化项目列表展示页面,点击已创建好可视化项目缩略图下方的“编辑”按钮,进入页面编辑状态,如果是采用已有模板,则需将页面多余的控件加以删除,保留背景等基础效果,如果是空白模板,则直接添加本次实训所需的控件:常规图表中的平滑折线图,如下图,添加后效果如图所示。
双击添加的控件,右侧出现对应控件的“样式”属性修改 Tab 页,根据项目看板展示效果所需,自行展开具体的属性列表项,调整各项属性,达到最优显示效果。
步骤 4 设置图表的数据来源
保持折线图处于选择状态(可再次双击折线图,右侧出现属性修改页),现在切换到“数据”属性 Tab页。选择“数据绑定方式”为“数据源”,此时“数据源选
择”下拉列表为“请选择”状态,点击“管理数据源”按钮,弹出“数据源管理”页面。
点击“数据源模板”Tab 页,展示目前所有的数据
源模板,可以看到一条在之前步骤中已经创建好的记录
(名称为 distance),点击该记录操作列中最右图标:
“以此模板创建数据源”。
关闭窗口回到视图编辑页面。
此时“数据源选择”下拉列表会出现一条可选的记录,如“distance_XXXX”,代表以“distance” 模板生成的记录,平台自动追加后缀加以命名。选择该条记录作为折线图的数据源。
步骤 5 设置不使用数据过滤器
点击 “使用数据过滤器”前面的勾选框,去掉勾选,即不使用数据过滤器。点击“数据处理结果”按钮,查看弹出的窗口中展示的数据,这些数据就是设备定时上报的属性点形成的(图例中的 value对应的值,就是上报的间隔距离值)。关闭弹出窗口继续下一步。
步骤 6 设置图表的横轴列展示字段名与数据提供字段相匹配
现在切换回“样式”属性 Tab 页。展开“数据系列”的节点,修改列字段名为“value”,保持与数据源中提供的数值字段“value”相一致。
步骤 7 预览可视化视图并回到编辑状态迭代优化视图效果
编辑视图界面,可以看到折线图已显示出实际的折线数据图表,可以点击右上角“预览”按钮,在全页面状态下查看整个可视化视图的效果。
如需要修改视图,可以点击顶部右侧出现的“继续编辑”按钮,回到可编辑状态继续修改。
步骤 8 保存视图,完成可视化项目
完成视图编辑后,点击顶部的“保存”按钮(编辑状态和预览状态均可),完成项目保存。
项目总结
通过模拟工具调试设备接入;通过模拟设备,实现属性上报;OneNET 平台下发属性值(命令)到模拟设备;基于设备工程,实现 OneNET 平台下发属性在终端设备上执行生效;基于API 方式实现设备属性下发;学OneNET 平台数据可视化编辑器的使用;能够进行可视化数据源的配置;对智慧小区安全防护系统进行可视化展现。