分类 默认分类 下的文章

“ 5月19日,IOTE 2023 第十九届国际物联网展·上海站圆满落幕!五月的上海,迎来了一场盛大的科技盛宴,5月17-19日三天,IOTE 国际物联网展吸引了世界各地的企业和友人在沪相识,展示了最前沿的物联网技术及应用,成为了物联网人必来的行业盛典。”

此次物联网展,亿琪软件公司展示了一整套解决方案:

  • 智能硬件
  • 边缘计算
  • 物联网平台

整体方案

2023-05-21T12:54:26.png

参展团队

2023-05-21T12:55:42.png

YiFUSION工业边缘智能融合一体机

2023-05-21T12:55:57.png

客户对于边缘计算的热衷

2023-05-21T12:56:07.png

聆听客户的需求

2023-05-21T12:56:16.png

展会视频剪辑

前言

在物联网开发中对于数据可视是必须的一项工作,大家都清楚国内对于很数据驾驶仓和大屏展示有着效高的需求,如果用传统的方式来可视化需要逐句代码编写进行实现,这使得开发工作内容繁重且重复很多还不能应对各种需求的变化,
如果我们使用ThingsBoard的可视化进行开发这样就会极大的减少工作量提高效率和产出,我们可以通过部件方式将传统的HTML,JS,CSS进行代码开发做成自定义基础部件为后面我们的可视化添砖加瓦,效果图如下

2023-05-10T07:07:20.png

创建部件

导航部件库然后打开现有的部件包或创建一个新在部件包视图中单击屏幕右下角的大“ +”按钮然后单击“创建新的窗口部件类型”按钮。

2023-05-10T07:10:45.png

选择部件

选择窗口部件类型会弹出窗口选择你要开发的相应部件类型之后将根据先前选择的窗口部件类型打开“窗口部件编辑器”页面,该页面预填充了启动器窗口部件模板。

2023-05-10T07:11:08.png

编辑器

编辑器由工具栏和四个主要部分组成:

2023-05-10T07:12:03.png

  1. HTML面板:可以添加CSS,JS相关代码
  2. JavaScript:编写一些JS函数
  3. 设置:主要是JSON代码用于在部件中设置一些个性配置
  4. 预览:类型于仪表板的形式展示当前窗口部件

部件API

所有与部件相关的代码都位于JavaScript部分并提供了对部件实例的引用的内置变量self部件函数都必须定义主self变量的属性,self变量有ctx属性引用部件实例使用的所有API和数据的WidgetContext上下文对象。

参见以下表格:

属性 类型 描述
$container jQuery Object 部件的容器元素。可用于使用jQuery API动态访问或修改部件DOM。
$scope 动态部件组件 当前部件元素的角度范围对象。使用Angular方法构建窗口小部件时,可用于访问/修改范围属性。
width Number 部件容器的当前宽度(以像素为单位)。
height Number 部件容器的当前高度(以像素为单位)。
isEdit Boolean 指示仪表板是处于视图状态还是处于编辑状态。
isMobile Boolean 指示仪表板视图是否小于960px宽度(默认移动断点)。
widgetConfig Object 常见的窗口小部件配置,其中包含诸如颜色(文本颜色),backgroundColor(小部件背景颜色)等属性。
settings Object 根据定义的json模式包含小部件特定属性的小部件设置
units String 定义窗口小部件显示的值的单位文本的可选属性。对于简单的小部件(如卡片或仪表)很有用。
decimals Number 可选属性,用于定义应使用多少个位置来显示数值的小数部分。
hideTitlePanel Boolean 管理窗口小部件标题面板的可见性。对于具有自定义标题面板或不同状态的小部件很有用。
widgetTitle String 如果设置,将覆盖配置的窗口小部件标题文本。更改此属性后,必须调用updateWidgetParams()函数。
detectChanges() Function 介绍触发当前小部件的更改检测。由于窗口小部件数据更改而应更新窗口小部件HTML模板绑定时,必须调用此方法。
updateWidgetParams() Function 介绍使用运行时集属性(例如widgetTitlehideTitlePanel等)更新小部件。必须调用这些属性才能使这些属性更改生效。
defaultSubscription Object 请参阅对象订阅
timewindowFunctions Object 请参阅Timewindow功能
controlApi Object 请参阅Control API
actionsApi Object 请参阅Actions API
stateController Object 请参阅状态Controller
datasources 数组<数据源> 解析的窗口小部件数据源的数组。请参见订阅对象.

函数说明

函数 描述
onInit() 当widget准备好初始化时调用的第一个函数。应该用于准备小部件DOM,处理小部件设置和初始订阅信息。
onDataUpdated() 在部件订阅中有新数据可用时调用。可以从窗口部件上下文(ctx)的defaultSubscription object访问最新数据。
onResize() 调整窗口小部件容器的大小时调用。可以从窗口小部件上下文(ctx)获得最新的宽度和高度。
onEditModeChanged() 更改仪表板编辑模式时调用。最新模式由ctx的isEdit属性处理。
onMobileModeChanged() 当仪表板视图宽度超过移动断点时调用。最新状态由ctx的isMobile属性处理。
onDestroy() 当部件元素被销毁时调用。如有必要,应使用它来清理所有资源。
getSettingsSchema() 返回窗口小部件设置架构json的可选函数以替代设置部分设置标签
getDataKeySettingsSchema() 返回特定数据密钥设置方案json的可选函数,替代设置部分Settings schema section的数据密钥设置方案标签。
typeParameters() 检索描述窗口小部件数据源参数的对象。请参阅类型参数对象类型参数对象。
actionSources() 调用对象,该对象描述用于定义用户操作的可用窗口小部件操作源。请参阅操作源对象

部件开发

通过对前面了我们可以根据自身的需求开发一个部件,这里小编用一个静态部件展示开发过程。

  1. 编写HTML
<div class="header">
    <div class="header-left fl" id="time"></div>
    <div class="header-center fl">
        <div class="header-title" id="header-title" style=" font-size:{{font_size}}px">
            {{text}}
        </div>
        <div class="header-img"></div>
    </div>
    <div class="header-right fl"></div>
    <div class="header-bottom fl"></div>
</div>
  1. 编写JSON
{
    "schema": {
        "type": "object",
        "title": "Settings",
        "properties": {
            "text": {
                "title": "标题文本",
                "type": "string",
                "default": "可视化大屏"
            },
            "font_size": {
                "title": "标题字号",
                "type": "integer",
                "default": "18"
            }
        }
    },
    "form": [
        "text",
        "font_size"
    ]
}
  1. 编写JavaScript
self.onInit = function() {

    var settings=self.ctx.settings;
    self.ctx.$scope.text = settings.text || "可视化大屏";//京州省智慧城市大屏
    self.ctx.$scope.font_size = settings.font_size || 48;
}
  1. 效果图
    2023-05-10T07:47:31.png

注意事项:

  1. 如果部件中用到的静态资源(图片,css)可以放在前端项目
  2. 设置有时候可能不正确,请多尝试几次。

关于 亿琪软件

上海亿琪软件有限公司成立于2016年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

2023年,公司发布“YiFUSION|工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI能力:高性能数据采集、多类型数据融合、AI算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

2022年公司推出 “YiCLOUD|亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动OCP认证,公司还是边缘计算产业联盟ECC成员。

感知物联,畅快无限。

联系我们
网站:http://yiqisoft.cn
邮件:support@yiqisoft.cn
电话:021-68863086
手机:186-1666-9123

目录

最近做的几个项目中,客户都想自己组建团队来完成自以为简单的物联网项目,不仅造成项目延迟,而且还有失败的风险。
前期,写了一篇:开源|ThingsBoard 项目实施及二次开发要点总结,收到很多的的反馈。
今天,特来总结一下。

物联网技术应用是一项复杂且多元化的路线,不仅不含了传统的 IT 技术,而且还蕴含着 IT 与 OT 的融合。很多企业和团队都只具备某一单方面的能力,IT 技术团队认为 OT 是比较简单而容易实现的,另一方面,OT 团队认为自己应该有能力驾驭自己并不擅长的 IT 技术。读者可能会觉得笔者在危言耸听,那且看下面我的解释说明。

典型的例子:
1、曾经在 IT 领域风生水起的人,天真的认为物联网不就是几个嵌入式设备,几十块钱几百块钱的小玩意儿,招几个人画画图纸、网上打样几张 PCB 电路板,轻松搞定了,果然是天真可爱,笔者从事 IT 领域多年,就是走过了这个线路,碰的鼻青脸肿,时间、精力、财力、物力,浪费了。同时,身边也有一些类似的人,做了同样的傻事,最后放弃的也有不少。

2、嵌入式,单片机,工业控制,等,这些领域也有不少自以为是的人,把物联网应用简单理解为就是插上一块物联网模组,分分钟搞定了物联网技术,殊不知,自己的想法却是一条不归路。聪明的团队,很快试错后就果断放弃了,重操旧业,继续干自己的嵌入式。

3、笔者也见过很多集成商,方案商,买东买西,拼凑一下,也是像模像样的物联网应用,风生水起,热火朝天。毕竟不像前两个例子投入那么大,集成商通过口才和 PPT 就能够变现,着实让人羡慕不已,且不说到底是不是技术能力的体现,但是他们的软实力的确是可以皆大欢喜。供应商出货了,客户满意。

言归正传,一起来看看组建这么一个团队需要具备哪些条件。

具备物联网技术的团队

通信技术能力在各个能力领域都有这重要作用,这里不作单独的说明。这是基础能力范畴,既然是物联网,肯定离不开通信网络,也是非常重要的一个环节。

解决方案能力

这项能力算是综合能力的体现,纵览大局,不仅仅是技术能力,还有管理经验,协调能力,项目管理,故障分析,等,是非常有挑战性的领域。
以下角色都是不可或缺且经验丰富的人才:

  • 项目经理:不管哪个项目都需要至少一个项目经理,他是整个项目的主导力量,进度把控能力强,综合素质高;
  • 产品经理:虽说物联网项目中的产品不一定是自己开发生产,产品选型也是一项非常重要的事情,不同的供应商都要经过他的把关,任何一个产品都有可能是项目成败的关键;
  • 需求分析师:项目经理和产品经理完全有可能担任此岗位,但是人的精力是有限的,知识也是有限的,那么,在业务需求转换成技术需求是一项目复杂的过程,需要专业的人做,对业务的理解能力需要深入业务,对技术转化也需要稍微理解技术知识。复杂的搞简单了不满足业务需求,简单的搞复杂了造成资源浪费。

笔者所在的公司从事物联网解决方案多年积累了几十个案例,涵盖了8大领域,详情请看公司网站:行业解决方案
2023-04-15T10:06:17.png

平台端能力

物联网平台,可以算是整个项目的神经中枢,简单理解,可以算是一个软件系统,只是不同于其他的行业软件解决行业问题,物联网平台只是解决了设备管理、规则引擎、数据存储、数据分析,等,不针对于某个行业,可以理解为一个通用的平台类软件

  • 作为平台类产品,既要满足稳定可靠的运行,也需要满足随着业务扩大而能够平滑扩展;
  • 平台层,Platform,应该跟业务无关,这样才能做到兼容各类物联网应用的高度适用性
  • 多租户,租户与租户之间的逻辑隔离是最基本的需求,当然如果能做到处理隔离、数据隔离、权限隔离,那是更好了;
  • 微服务,在日益增长的物联网需求下,微服务化已经成了 Platform 平台类产品的标配。

我司基于多年经验积累和总结,开发和落地了多个物联网平台项目,Yi 系列平台产品 XaaS 群族帮助客户解决了很多应用场景落地,参考公司网站:XaaS 平台
2023-04-15T13:44:23.png

边缘端能力

很多客户提出一个疑问:为什么我们的平台不支持云端解析各种边缘设备的协议
我们从一开始设计之初,就把平台定义为通用性为主,只是负责标准通信协议的接入服务,工业现场协议解析的工作交给边缘端来处理,一是,释放出平台端的处理资源,负责接入、规则、入库和分析;二是,把各式各样的协议解析下沉到边缘设备上处理,现在的边缘设备处理能力已经很强大。

数采网关

市面上已经出现了种类繁多,协议解析能力强的产品,完全满足各种工业协议处理,如:PLC、OPC、Modbus、TCP/UDP,等,纯数采需求,直接用已有产品更加经济和方便,况且很多客户现场已经具备了各家的网关产品。
目前,支持512、1024、2048个测点的数采网关非常稳定可靠,价格优惠,只是性能上无法满足更高要求的实时数采,比如秒级处理,还是比较吃力。由此,我们设计出更高新能的边缘计算网关。
2023-04-15T13:44:52.png

边缘计算网关

边缘计算网关相对于数采网关,其性能更强、容量更大、接口更多、可定制化更强,等,诸多因素。
一套边缘计算框架,尤其是在日新月异高速发展时期,传统的单片机处理方式已经不能满足日综复杂的应用环境。
典型的例子:

  • 秒级完成成千上万测点的采集和处理
  • 本地化存储和计算,总线要求更高;
  • 强烈的扩展性和伸缩性需求;
  • 本地 WEB SCADA 和 HMI

我司基于 YiEDGE 软件框架,可完成强大的数采需求,更高的处理能力,更方便的部署。支持嵌入式主机部署,也支持服务器部署,更加灵活。参考公司网站:边缘计算网关
2023-04-15T13:46:12.png

AI 网关

网络摄像头(IPC)产品在边缘计算领域越来越多,AI 推理工作也被客户重视,纯粹的 AI 网关并不能完成数采功能,由此可见,边缘计算网关集成 AI 算力已经迫在眉睫。
看几个例子:

  • 视频点播:IPC 在 NAT(网络地址转换) 网络下,云端或平台无法点播视频,只能登陆视频录像机 NVR 或 DVR ,非常不便;
  • 视频分析:无人值守站,对于异常行为需要使用 AI 算法来辅助管理,绝大部分网关都不具备这个能力;
  • 视频存储:在没有 NVR的情境下,客户也需要对本地视频做一周或一个月的留底。

我司在以上需求的基础上,开发了 YiAI 引擎,支持自定义算法和模型导入,方便视频分析。参考公司网站:AI 网关
2023-04-15T13:46:51.png

融合网关

那么,鉴于以上的需求分析和客户应用,把数采能力和 AI 能力结合被提上日程,客户现场有时候有很多网关设备,管理成了难题。
如果能将这些能力结合在一起,并且还能植入其他应用到一台网关,那就帮客户解决了非常多的问题。
由此,我司研发了 YiFUSION 工业边缘智能融合一体机,完美的解决了难题,微服务化部署应用,强大的处理能力。当然,融合网关的成本会比其他多种网关并行的系统要高出很多,这也是很多客户一直徘徊不定的原因。等到越来越多的客户接受了这样的网关,成本机会就来了,将会大规模应用。参考公司网站:融合网关
2023-04-15T13:47:10.png

智能硬件能力

有些客户现场,传感器采集需求多,分布广,全部采用网关+传感器必然不是一个好的选择,那就需要有自主上网能力,集成传感器的智能硬件来支撑。
典型的例子:

  • 仓库里只需要温湿度采集,其实用一个智能温湿度即可搞定;
  • 无人值守的站点,不方便布线和联网的地方;
  • 传输频率低,要求待机时间长的场景;
  • 数量庞大,没有专业安装人员;

智能模组是智能硬件的基础,参考公司网站:智能模组
2023-04-15T13:47:47.png

我司经过多年研发和实施经验,积累了几十种智能传感器,即插即用,方便快捷,待机时间长,无需专业人员,自动联网,与平台无缝衔接。电池电量,信号质量,都在平台端直接管理。参考公司网站:智能硬件
2023-04-15T13:48:41.png

部分具备物联网技术的团队

很多团队已经具备以上一些能力和经验,那就可以采用以下几种方式,与经验丰富的团队合作,快速完成物联网团队的建设,尽快为业务部门带来帮助。

联合开发

借助有经验的团队经验,快速完成物联网应用的搭建,毕竟专业的事交给专业的人更合适

传帮带

假如一次性投入太大,又怕会产生不良影响,可以从小型 POC项目开始,逐步形成传帮带:授,助,动的方式来融合,避免了很多风险。

暂无物联网技术的团队

其实,如果没有任何物联网技术积累,又有业务需求的情况下,不建议立马招标采购,可以逐步来熟悉物联网整个过程,从以下几个方向入手:

购买咨询服务

购买专业的咨询服务,以学习的方式来了解物联网应用的来龙去脉,积累一些经验,通过不断的学习和交流,找到适合自己的方式进行下去。

深入业务需求做预研

业务驱动是最直接的,不了解业务需求,纯粹建一套物联网应用其实是没有意义的,浪费人力财力不说,自信心也受到伤害,得不偿失。
做一个 POC,试试水,不仅是对自己业务理解的过程,也是考察供应商和合作伙伴的机会,为物联网应用成功迈出一小步。

POC ( Proof of Concept 的缩写,中文意思是概念验证)

大概过程:

  • 整理一些业务需求,至少这些需求都是能落地的,跟业务结合紧密,形成需求文档,这个很重要,也是 POC 的参考材料;
  • 准备人员储备,把能调动的人员安排到 POC 小组,共同完成整个验证过程;
  • 设定验证范围,建议是越全越好,多多益善,但是要控制深入程度,不能陷入困境
  • 设定验证时间,毕竟时间越长耗费的资源就越多,要结合业务需求,尽量贴着业务来做,不能钻牛角尖,适可而止
  • 准备好心态,要充分理解,POC 不一定是完全能够成功的,要做好失败的准备;
  • 最后,当然是准备好资金,肯定是要花钱才能把事情做好。
function POC_DO_IT(
    business_requirements list, 
    tech_details list,
    exports list, 
    start_time datetime, 
    expire_time datetime)
{
  ...
  if poc_success:
    print "皆大欢喜,准备做一场更大的";
  else 
    print "虽然失败了,但是过程一定很刺激";
}

关于 亿琪软件

上海亿琪软件有限公司成立于2016年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

2023年,公司发布“YiFUSION|工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI能力:高性能数据采集、多类型数据融合、AI算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

2022年公司推出 “YiCLOUD|亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动OCP认证,公司还是边缘计算产业联盟ECC成员。

感知物联,畅快无限。

联系我们
网站:http://yiqisoft.cn
邮件:support@yiqisoft.cn
电话:021-68863086
手机:186-1666-9123

目录

众所周知,我们软件读取 PLC 数据时按照 Bool/Byte/Word/Real 等类型进行通讯,有时候,需要频繁读取 PLC 多个数据字段偏移量时,就会造成传输效率低下的问题。

需求/故障现场

  • PLC 上有 100 个 word 需要读取,偏移量顺序排列,比如:从 0 - 200;
  • 需要 1 秒读取 1 次数据;
  • 转换后,数据转发到第三方系统:MQTT,SQL等;
  • 逐个读取每个 word,两个字节,需要在一个 TCP 会话中执行 100 次请求;
  • 每次请求,三个 TCP 数据传输,每次需要 15ms(423行-421行:3.614448-3.598902=0.015546s);
    2023-03-30T07:43:07.png
  • 这样的话,100次请求需要1.5546s,算上网络延迟和处理性能问题,整个过程需要2秒以上;
  • 结果就是:完全达不到 1秒1次 采集的需求。

分析过程

winCC 数据采集抓包

分析过程1:采集20个 real 数据字段

  • winCC 将数据包分解成 3个 item
    2023-03-30T07:52:38.png

分析过程2:采集10个 word 数据字段

  • 同样原理,winCC 将数据包按照每个 item 32 个字节
    2023-03-30T07:54:16.png

自有软件数据采集抓包

每次只是读取了1个 word 数据字段

2023-03-30T07:55:07.png

解决方案构思

  • 每次按照要求,获取所有需要的数据偏移量;
  • 取回来后,按照测点要求,自己根据数据类型分解出来;
  • 循环读取下一次数据;

验证

读取1000个字节

  • 可以看到分了5次数据,222+222+222+222+112=1000
    2023-03-30T08:20:45.png

下一步是继续验证分多个 item 进行数据采集

winCC 数据格式

  • 效率高,每次只需要 <2ms,分析原因:每次读取都是连续的地址空间,不需要PLC进行分段读取;
    2023-03-30T09:05:48.png

自己代码

  • 效率低,每次需要20-50ms,分析原因:每个 item 里面只有一个测点(word类型),需要分段读取;
    2023-03-30T09:08:15.png

开发过程

大概过程描述

  • 由于每次请求的数据量(按测点)叠加在一起,通过 S7DataItem 来组合,最多20个 item,打包一起发送到 PLC;
  • 收到每次的返回数据,再解析成对象插入二维表,等待处理;
  • 全部处理完成,统一根据请求数量,返回相应的结果集;

总结

  • PLC 针对于每个测点的处理时间在 1-3秒,数量越多,时间越长,是累加的;
  • 100个测点,算上 TCP 包头和包尾,大概来回数据时间是 220ms左右,200个测点是 400ms左右;
  • 通过这种方式,一个 PLC 建议采集点不超过 500个,虽然对 PLC 性能影响不大,但是处理时间较长,不适用1秒一次采集需求;
  • 每个型号 PLC 的处理性能不一样,支持的 TCP 连接数也不一定一样,所以,要根据具体需求来决定。

效果展示

  • 存入 SQL 数据库,完全控制在1秒一次采集
    2023-03-31T08:01:49.png

  • 4 个 TCP 连接非常稳定
    2023-03-31T08:02:56.png

  • 网关性能稳定
    2023-03-31T08:03:38.png

  • 与 PLC 交互的网卡网络流量很少
    2023-03-31T08:04:52.png

改进?

  • 类似 winCC 的模式,一次性读取一段偏移量,节省 TCP 开销,也节省 PLC 处理每个测点;
  • 针对一次读取来的一段偏移量内容进行解析,需要对字节码流处理非常熟悉;
  • 对于新建项目,比较适合用改进的方法,毕竟 PLC 可以根据需求改动测点偏移量;

关于 亿琪软件

上海亿琪软件有限公司成立于2016年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

2023年,公司发布“YiFUSION|工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI能力:高性能数据采集、多类型数据融合、AI算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

2022年公司推出 “YiCLOUD|亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动OCP认证,公司还是边缘计算产业联盟ECC成员。

感知物联,畅快无限。

联系我们
网站:http://yiqisoft.cn
邮件:support@yiqisoft.cn
电话:021-68863086
手机:186-1666-9123

目录

在边缘计算视频分析方面,ONVIF 协议实现了摄像头管理,YiEDGE 实现了拉流和图片输出,YiEVAS 模块 Pyairknn 实现推理。

ONVIF 协议

开放型网络视频接口论坛(英语:Open Network Video Interface Forum,简称ONVIF),是一个国际开放型网络视频产品标准网络接口开发论坛.

  • IPC 摄像头必须支持 ONVIF 协议;
  • 实现自动多摄像头并行处理性能要求;
  • ONVIF Device Manager,用这个软件连接摄像头查看。

YiEDGE 边缘计算框架

YiEDGE 框架基于 EdgeX 框架做了深层次定制,实现了更加自动化的功能,增加了南向设备接口协议,增加了北向云平台接口协议。
![2023-02-17T14:38:59.png][1]

管理 ONVIF 摄像头

  • 采用 device onvif camera 设备层协议,对接各种支持 ONVIF 的摄像头设备;
  • 定期探测网络中的 IPC;
  • 轮训摄像头状态,获取 streamuri 地址;

    创建被管理摄像头

    这里以 HK 摄像头为例,10s 轮训一次。

{
"apiVersion": "v2",
"statusCode": 200,
"device": {
"created": 1676646639846,
"modified": 1676646710817,
"id": "9a9a3276-cf19-4e01-908c-801a520ba5be",
"name": "IPC-HK",
"adminState": "UNLOCKED",
"operatingState": "UP",
"labels": [
""
],
"serviceName": "device-onvif-camera",
"profileName": "onvif-camera",
"autoEvents": [
{
"interval": "10s",
"onChange": false,
"sourceName": "StreamUri"
}
],
"protocols": {
"Onvif": {
"Address": "192.168.123.183",
"DeviceStatus": "UpWithAuth",
"FirmwareVersion": "V5.7.3 build 220315",
"FriendlyName": "HIKVISION DS-IPC-T12HV3-IA",
"HardwareId": "88",
"LastSeen": "Fri Feb 17 15:11:50 UTC 2023",
"MACAddress": "c0:6d:ed:eb:cb:59",
"Manufacturer": "HIKVISION",
"Model": "DS-IPC-T12HV3-IA",
"Port": "80",
"SerialNumber": "DS-IPC-T12HV3-IA20220913AACHK56293791"
}
}
}
}


streamUri 信息内容

[
{
"id": "c88007b8-4316-451c-87b4-2dec7f1f540d",
"origin": 1676646870752047000,
"deviceName": "IPC-HK",
"resourceName": "StreamUri",
"profileName": "onvif-camera",
"valueType": "Object",
"value": "",
"objectValue": {
"MediaUri": {
"InvalidAfterConnect": false,
"InvalidAfterReboot": false,
"Timeout": "PT60S",
"Uri": "rtsp://192.168.123.183:554/Streaming/Channels/0?transportmode=unicast&profile=Profile_1"
}
}
}
]


## 同步到 Message Bus
- 以上信息都会同步到数据总线;
- 可以自定义轮训时间;
- 筛选需要通告总线的 IPC;

# YiEVAS 系统
![2023-02-17T14:39:36.png][2]

## eKuiper 作为 pipeline 引擎
大概模式如下:
|source输入->|rule规则引擎->|sink输出->|
|:----|:----|:----|
|onvif 通告获取|拉流,抓帧,推理|结果输出|

### ONVIF 通告获取
#### stream
这里,直接用 EdgeX 数据总线即可。

{
"Name" : "EdgeXStream",
"Options" : {
"format" : "json",
"type" : "edgex"
},
"Statement" : null,
"StreamFields" : null,
"StreamType" : 0
}

#### rule-onvif-camera
从 stream 获取信息,并解析 StreamUri 通告给拉流处理。

SELECT
"true" as isRetImg,
(json_path_query(StreamUri, "$")->MediaUri)->Uri AS rtspUrl,
meta(deviceName) as deviceName
FROM EdgeXStream
where meta(profileName) = "onvif-camera"

StreamUri 解析结果

{
"deviceName": "IPC-HK",
"isRetImg": "true",
"rtspUrl": "rtsp://192.168.123.183:554/Streaming/Channels/0?transportmode=unicast&profile=Profile_1"
}


### 拉流,抓帧,推理
#### 拉流
- 通过 eKuiper video plugin:目前这个方式只能固定将 URI 写入配置文件,测试可以用,实际没有使用价值。
- 通过 YiEVAS application 实现:此处为商业代码和功能,有需要的可以咨询我们的热线: 18616669123

#### 抓帧
- 可以通过图片帧,输出到 总线或 mqtt broker,进行按图片推理,也方便其他应用进行二次处理;
- 还可以直接拉流时对图片帧进行推理,效率很高,不经过总线的方式进行转发,前提是其他应用不需要视频流和图片;

def get_frame(self):
cap = cv2.VideoCapture(rtspUri)
ret, frame = cap.read()
if ret:
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
outputs = rknn_lite.inference(inputs=[image])
return outputs
else:
return None



#### 推理
- 可以单独对图片进行推理,通过总线获取图片帧;
- 也可以在拉流过程中直接推理,具体看业务需要。

### 结果输出
此处结果与前面的系列文章结果类似,都是以输出到云平台为主。




  [1]: https://www.yiqisoft.cn/blogs/usr/uploads/2023/02/2516235241.png
  [2]: https://www.yiqisoft.cn/blogs/usr/uploads/2023/02/3154521976.png