本文作者:HelloDeveloper
3 月 30 日,由百度开发者中心主办的第 83 期技术沙龙『天工赋能,智联万物——百度云 +IoT 智能硬件应用与开发实战』在北京成功举办。本次沙龙邀请到了数位百度云物联网部资深专家以及物联网生态的行业专家,他们共同为开发者们带来了精彩内容分享。
1
从连接到唤醒万物,如何用 20 分钟帮你搞定互联网应用
1、百度云天工物联网平台
如上图所示,百度云天工物联网平台由基础云平台和行业平台组成
基础物联网平台主要功能是设备连接、设备管理、数据存储,并保障整个流程的安全性,帮助用户降低研发和运维的成本。另外,在基础云平台之上,百度云天工针对物联网比较火爆的领域抽象出行业平台产品,例如针对车联网的度行智能车辆云、针对智能家居的度家智能家居云等。
2、搭建一款基础的物联网应用
我们搭建一款物联网应用,第一步是使用物接入,把设备连接到云平台;第二步是用时序数据库把设备产生的数据存储起来;第三步,是用物可视分析数据;在开发中还有很重要的一点是,用函谷物联安全系统保证整个链路的安全性。
详细介绍:
1、物接入——支持海量设备与云端安全可靠的双向连接
物接入提供设备全生命周期、一站式的设备管理服务,包括设备注册、设备鉴权、设备实时状态存储、设备影子、设备状态管理等能力,有效降低设备数字化的开发成本和运维成本,使设备数据互联互通更简单。同时,配合物解析还可以支持 ModBus、BACNet 等协议的快速解析及接入。
具备以下特点:多场景支持;易连接;安全反控;开放兼容;
2、时序数据库——存储时间序列数据的高性能数据库
物联网时代设备触发的数据量非常庞大,并且每分每秒都会有上传。此时传统的关系型数据库就会不太适用,而 TSDB 时序数据库可用于存储和管理时间序列数据,为时间序列数据提供高性能读写和强计算能力的分布式云端数据库服务。
TSDB 时序数据库特点:高性能读写;低成本存储;强计算能力;多生态支持。
3、物可视——零编程设计可视化仪表盘
物可视无缝对接海量实时数据,支持手机、监控大屏展示,基于定制和嵌入功能让开发物联网可视化应用变得简单。它可以让我们用做 PPT 的方式就可以轻轻松松去完成可视化的一个开发。
物可视具备以下特点:所见即所得;丰富的可视化图标;多种数据源支持;一键分享与灵活部署;
4、函谷物联安全系统——专为 IoT 设备而生的云管端安全防护架构
开发一款物联网应用,安全性是极为重要的,函谷物联网安全系统可保证从设备到云平台,再到 APP 整个链路的安全性。
函谷物联安全系统特点:
2
DuGo 端云一体的智能车辆管理平台
1、DuGo 的架构介绍
DuGo 旨在帮助开发者降低车辆数据接入云端门槛,同时方便 SI 厂商进行车辆管理平台的开发。
如上图所示,DuGo 分为接入层、数据层和业务层,每层都提供了可让用户定制化开发的接口。
在接入层提供多种协议的支持,例如 MQTT,同时提供了可配置的二进制解析引擎;在设备端,DuGo 提供了 ADAS 或者 GPS/OBD 的 SDK,通过 SDK 可以接入用户平台;在数据处理层,可以利用百度的规则引擎或函数计算进行数据的变形或规划,保证数据的预处理,而后进行数据的分发和存储;在业务层,DuGo 提供车辆管理的功能,例如 OTA、车辆影子等,在云端可看到虚拟车辆的实时数据;
2、DuGo 与百度生态的关系
如上图所示,DuGo 拥有原生的百度大数据处理能力,通过端到端的解决方案进行数据接入,进行证书管理,并且应用业界领先的时序数据库进行数据存储。
在车辆管理和可视化方面,DuGo 拥有百度地图的围栏、统计分析、热力图等功能。其用户画像和车况分析等 AI 的能力也依靠百度多年人工智能的积淀。
3、示例场景
1、实时位置追踪
DuGo 提供千万级终端和数十亿轨迹点的全球轨迹追踪能力,SDK 实现断网缓存,在网络不稳定的情况下也可以保证轨迹的完整性。
2、时效性考核
地理围栏功能实现到 / 发车自动签到和考核,提升运输准时率:
可实时创建位于出发地和目的地围栏,监控车辆进出围栏行为
一旦车辆触发围栏,DuGo 将自动推送报警至 DuGo- SDK 和其他接收报警的服务端;
业务系统通过对比车辆进出围栏的实际时间和计划时间,判断车辆是否准时出发或到达。
3、路线偏移报警
路线围栏功能实现对特种车辆运行路线监控,偏离路线即报警:
对于危险品、烟草运输等特定行业,需监控车辆是否按设定路线行驶,DuGo- 地图服务提供线型围栏,可设定路线和偏移距离,一旦车辆偏移了设定路线一定距离后,DuGo 将发出报警。
3
OpenEdge 边缘计算的基础框架和应用
OpenEdge 是百度云自研的边缘计算框架,主要是为贴合工业互联网应用,将计算能力拓展至用户现场,提供临时离线、低延时的计算服务,包括消息路由、函数计算、AI 推断等。
OpenEdge 和云端管理套件配合使用,可达到云端管理和应用下发,边缘设备上运行应用的效果,满足各种边缘计算场景。
OpenEdge 框架有三个基本原则:
框架充分发挥本地硬件的能力,尽可能降低非业务资源的消耗,给应用更多资源;
以Serverless模式为中心,但不丧失管理底层的能力,通过高低搭配的方式给开发者最好的体验;
具备高度可管理性,同时一定要支持离线运行。
基于以上理念,OpenEdge 框架分解成三层,如下图:
底层硬件抽象层,将各种硬件抽象为统一的运行环境。对于支持 Linus 容器的环境,OpenEdge 依赖于 Docker;对于轻量级的设备以及旧版的 Windows,提供裸进程模式,尽可能包装出接近于容器的体验。今后会支持 Kubernets,借助 Kubernets,OpenEdge 将会从单机拓展到多机,提供更强的计算能力,增强可用性。
第二层运行层,本质是一个微服务管理器,负责管理所有应用的启动、运行监控和停止,梳理不同应用之间的关系。另外,微服务管理器本身提供一个命令行的接口,完全可以在本地运行,不需要连接互联网。
上层为所有的应用,由 OpenEdge 统一管理应用。
除此之外,OpenEdge 还提供 SDK 和内置服务,如上图,可分为三层:
底层是本地版的 IoT Hub,作用是连接,以便满足所有通信。同时负责边缘计算和其他设备,比如说传感器、工业控制器等。另外它与百度云天工系统在功能上和开发体验上是 100% 兼容的,既可以支持 Pub、Sub 也可以支持 QoS0 和 QoS1 两级数据保证,也会 100% 兼容协议。
中间层是软件开发的 SDK,嵌入到用户的应用程序之中,目前主要有三组 API:
日志、数据集和管理Volume,主要有三种用途:第一种写成日志,记录做了多少截断和存储;第二种配置辞典的数据;第三种是像数据库这样的应用,需要本地数据不断读和写,Volume的API可使每一个应用绑定若干数据集;
Instance API,帮助应用启动、终止以及监控其他进程的子进程、子容器;
Messaging API,可将底层MQTT等不同协议的操作封装起来,以最简单的发布订阅的方式进行互相的协作。目前此SDK提供了Go的编程语言接口,后续将使用Rust重写,而后封装出Go的编程接口。
再往上是 Data process 数据处理层,分为两方面的数据服务:函数计算和数据远程处理。
在今年,OpenEdge 还将升级到 OpenEdge Linux OS,借鉴嵌入式的开发方法,建设一个面向嵌入式设计的操作系统。
4
基于云、边缘的设备智能维护与远程运维
设备维护与远程运维是云平台在智能制造中发展最快、落地最多的领域之一,在未来有巨大的发展空间。那么,如何通过云平台 + 机器学习 + 边缘计算架构,将传统设备诊断模式跃进到具有自学习功能的智能时代呢?
实例:螺丝成型机预测性维护与远程运维
以往的螺丝制造通过设备一起进行锻造、开模,工作很快,压缩也很快。但是如果一台设备损坏,即可造成整个产线被迫停止,另外由于无法预估设备的损坏时间,只能把所有的零部件甚至成套的设备专门备好,一旦损坏就更换。
但是,在这几年会发现,在设备损坏前,设备的每个压力点会明显出现不平衡的现象,所以可使用传感器去测量它在压制的瞬间是否平衡,即检测压力的瞬间会发生什么然后做精确分析,而后做精准的预制。
如上图为边缘计算的设备,采集层部分是从计算机最底层开始。常见的采集,比较低成本的是这样的原理:在前端设置一个多路开关,可以想象成多选一的开关,八选一或者十六选一,这里边有一个芯片,由逻辑控制,可以分时把不同的信号送到这里边,经过放大再进行转换。另外,一般通用的设备指标都会有几种,包括设计通道,因为不同的设备通道数不一样,就要选通道数。
有了硬件之后,就可以开始编软件了,软件可以从顶层的角度开始往下做。那么,怎么样把底层硬件的 Io 传到上层?
第一步,需要经过一个相对比较复杂的层,分为驱动层、应用层、动态库层,每一层对于程序的赋予的权限是不一样的。比如我们在 windows 的应用层,不允许对硬件操作,不允许内存中断进行操作。所以驱动层就实现了很多功能,以实现对系统所有的操作,包括它的中断、DMA 调用等等,这一层会提供好它的封装的驱动库,经过上层可以利用多种语言操作,读取数据。另外,会提供很多的历程,从设备安装开始,安装之后可以用一个现成的工具进行测试,测试它是否开始工作。
第二步,调用例子程序。
第三步,修改程序,指令只有四条,首先给设备进行命名,命名之后找到了设备对它进行配置,而后进行读取。
第四步可以直接关掉设备,释放设备,释放资源。这样可以实现简单的采集,当然在应用中大家需要利用循环各种各样的处理,让它运行更有效率。
最后,通过百度的 BIE 采集数据,把它合并在一起,就可以实现采集数据上传到 BIE。通过 BIE 可以直接连接到 CFC 语言进行算法处理。可以把数据采集、边缘接入、CFC 运行在边缘层的设备,即可以实现操作。
原文链接地址:https://developer.baidu.com/topic/show/290232
来源:oschina
链接:https://my.oschina.net/u/4299156/blog/3223563