腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

首页 » 物联网 » 腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

1.设备分类

物联网的基本概念是连接人与物、物与物的基础设施。和互联网一样,都是基础设施。这是物联网设备。当谈到物联网设备时,您可能会在脑海中看到快速增长的物联网设备增长图。预计到2025年可以达到100亿元的规模。

这说明物联网的设备正在呈指数级、井喷式增长,也说明物联网的前景非常广阔。

主题中提到的连接智能是指智能设备,大方向是结合本地或云端AI能力的物联网设备。在参加一些论坛时,人们会把AI和IoT放在一起谈,缩写为AIoT。今天先从基础设备说起,对大部分听众也是有好处的。

           腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

物联网设备的分类有多个维度。第一个维度是设备上的云方式。因为物联网是设备和人的连接,连接必须通过互联网来完成,但是设备怎么上云呢?

基本上有两种方式。一个是设备的直接连接和与云的直接通信。另一种是子设备通过网关与云端建立连接。这里比较特殊的是蓝牙设备,需要通过手机蓝牙通信和蓝牙网关连接到云端。

并且其拓扑图可以是星形、网状、树形,可以应用于很多场景下的子设备与网关的连接。

云中的连接是双向通知。云端需要控制设备,设备端要去云端推送消息。这里涉及到物联网的基础协议MQTT协议。它实际上是一种发布订阅者模式的网络架构。有兴趣的同学可以查阅资料了解一下。在手机端,websocket也可以提供相应的功能来达到同样的效果。

你可以看到图中的网关既有无线信号,也有部分串口是有线的,这体现了设备划分的另一个维度:通信模式。通信的主要类别很简单:有线和无线。

有线设备之一是光缆,通过家庭网口与USB连接。如果家中已经建立了家庭视频监控系统,则有线视频监控系统通过USB或网络端口连接到中央硬盘录像机。第二,工业领域广泛使用的串口通信,优点是可以用C++等语言编程。

无线通信分为局域网和广域网。局域网中最贴近我们生活的一类设备就是Wi-Fi设备。通过连接家庭路由器和云通信,以及蓝牙设备,可以与设备形成网状网络拓扑,可以实现设备之间的通信。

无线通信中广域网的另一部分是运营商网络,比如3G、4G、5G。还有一部分是低功耗的广域网(WAN),单独从广域网出来。这类设备功耗比较低,有两类,一类是NB-IoT,一类是Lora。B-IoT是基于运营商网络的低功耗网络。目前普及率比较高,每种设备都有各自的优缺点,这里就不赘述了。

有些设备有两种或三种通信模式,可以结合优势和劣势。举三个例子,第一个是Wi-Fi和蓝牙的结合,因为Wi-Fi比蓝牙耗电,连接可靠,抗干扰。它们的结合可以提高Wi-Fi设备分布到网络时的成功率和便利性。

第二种是蓝牙和3G网络的结合,以3G版Apple Watch为例。三是与NB-IoT的结合。蓝牙可以实现短距离内物体的通信和精确定位,并且可以兼顾远距离的数据传输。虽然设备种类不多,但是各自在各自领域的优势以及组合起来可以应用于很多应用场景。

2.设备生命周期

首先,在开发物联网设备时,要考虑端到端的安全性,设备与云端通信时,数据通信要安全。一般会使用证书或密钥认证,调试功能会明显提高开发的效率。

第二步是设备量产后用户如何连接。连接涉及蓝牙或者网络分发,这样设备就可以上云了。另一个维度是设备应该在云端注册。

第三步是设备的控制。云需要控制设备。在一些与人交互较强的设备领域,在C端也需要一个功能强大的控制面板,可以精确控制设备的一些属性,以及设备上下线的处理。

另一个维度,设备之间的联动,有时候需要云来分析和控制。比如家里的温度传感器达到30度以上,就要打开家里的空调。这种场景联动维度。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

第四步是,开发人员需要监控设备的健康状况,收集其日志,并分析其数据,以协助商业决策或其他用途。

随着产品的迭代,需要更新固件。用户不可能在产品更新后再购买另一台设备。这不是一次性交易。

最后一步是设备不使用和离线,需要删除和清理云端的数据。

虽然有六个步骤,但连接、控制、监控是设备最活跃的时期,对应的是我们中年这样的人生。从技术角度来说,这三个阶段都涉及技术点和难点。

3.腾讯历届产品概述

在产品方面,腾讯云物联网致力于帮助广大物联网开发者做好设备生命周期管理的基础设施建设,保证功能的易用性、完整性和高可用性,让开发者只需要关注自己的业务逻辑,从而在最短的时间内发布产品,抢占先机。

整个物联网产品开发平台的架构图如下:

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

如图,开发者可以在物联网开发者平台上开发调试这个设备,在控制台上观看这个设备的监控日志、数据分析等等。同时,腾讯还推出了C端应用腾讯公司,帮助用户做设备管理。设备管理包括设备的连接、交互、更新和删除等。,可以进一步缩短开发者量产设备的C端产品开发流程。

腾讯当初为什么要做小程序?小程序大家都懂一点。小程序的好处是安装简单,一个二维码就能打开。不像APP安装繁琐,和微信里的关系链绑定很强。

物联网设备也强烈绑定到人。家庭和企业领域都需要和一群人互动,它的优势就在这里。对于开发者来说,小程序可以用一个语法在两端运行,不需要处理Android和IOS的兼容性问题,可以大大减少和缩短开发周期。而且可以精简智能角色的开发,一个前端就可以做过去两端开发者做的工作。

如果是基于用户,腾讯也是一次又一次的2B,开发者和用户的诉求都要实现。腾讯一次次做之前去采访调研,发现业界对小程序做的设备的控制和管理有很多顾虑,因为认为微信小程序提供的底层接口不够强大和稳定。

但是我们还是觉得没有做不到的事,只有做不到的人,所以基本上可以通过预习现有的能力来支撑。微信内部也支持物联网领域的功能建设和性能优化,所以腾讯已经开始一次又一次的做了。原来我们也做到了。为了应用到更多的场景,比如国外用户或者其他场景,我们也提供了连续的app版本和相关的SDK。

第二,腾讯设备连接的能力和建设优化。

Wi-Fi设备分布网络

首先是Wi-Fi设备。在Wi-Fi设备上到达云端需要五个步骤,因为Wi-Fi设备一开始什么都不知道。家里买的,需要有人告诉它家里路由器的密码和SSID。所以第一步是手机需要告诉设备SSID和密码,设备知道了再连接路由器的Wi-Fi。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

而且设备和手机都在路由器的局域网内。他们可以通过局域网通信设备通知APP当前设备的三重信息(设备的基本信息),设备可以直接在云端注册这个设备。注册成功后,手机可以在云端将设备绑定到自己的名下。

解释两个概念,一个是狭义分布网络的概念,第一步是传输SSID和密码。为了实现这一步,有相当多的配电方案,我们称之为狭义配电网。第二个是广义的分配网络。广义的配网是指设备成功绑定,这样设备就可以具备与云端通信的能力。这就是广义配电网的概念。

小程序连接中遇到的挑战主要是手机如何在狭小的分布网络中告知设备路由器的Wi-Fi信息,后期绑定操作可以直接调整一个接口。

Wi-Fi对设备有非常高的应用场景和普及率。在一些有线连接不方便,物理空间有限的环境下,Wi-Fi设备可以很容易地用于云设备。当你需要和其他设备通信时,因为设备都在一个局域网内,你可以通过TCP或者UDC进行通信。

Wi-Fi适用于兼容性高的场景。兼容性有两个方面。第一,设备需要在全球任何一个Wi-Fi下正常连接,这是Wi-Fi联盟保证的,因为Wi-Fi认证是在向后兼容上做的,规定了全球统一标准。

还有一个维度是,任何带Wi-Fi功能的手机都可以正常进行网络分发,不用担心。就我们的认知来说,智能手机从iPhone 4开始就有Wi-Fi能力。当然它也有问题和弱点,就是功耗很高。它基于2.4G频段,抗干扰能力弱,所以目前市场在逐渐萎缩。当然,这里只是给你一个大概的概念。

我们可以看看Wi-Fi狭窄的分布网络。在设备端获取SSID和密码有两个方面,一是标准分发网络,二是一键分发网络。

标准配电网是一种高兼容性的配电网方案,目前模块厂商普遍支持。一键分发网络是各厂商为了提高用户体验而提供的一套带有私有协议和安全考虑的分发网络协议,包括微信的AirKiss协议。

目前我们已经从微信接手了这个协议的后期维护。Le esptouch的Smartconfi协议,realtek的simpleconfig协议等等,还有很多。我们只列出腾讯连连支持的分发网络协议,如下图所示:

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

低功耗结合Wi-Fi和双模分发网络的场景也列在一键分发网络的维度中,我们也是支持的。

有了狭义分发网络的基础,接下来就是考察微信小程序是否具备这样的技术能力。目前基本都是基于这三种能力开发的,一是连接Wi-Fi的能力,二是UDP通信,三是蓝牙通信。腾讯也是基于这种技术能力发展起来的。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

简单介绍一下分发网络的协议:设备产生一个热点,手机加入热点。加入热点后,小程序和设备可以进行UDP通信。小程序向设备发送Wi-Fi信息和分发网络信息,设备可以正常连接路由器。这时候小程序也需要把自己的网络切换到路由器上。设备具备上云能力后,注册此设备。当然,肯定会涉及到一些安全方面的考虑。

注册设备后,手机会轮询设备的注册状态,成功后绑定设备。那为什么设备端不直接告诉小程序端设备的注册状态呢?

这是初始过程,因为小程序的基础接口connectWi-Fi和UDP通信是有失败率的,如果设备端直接通知小程序端注册状态,会导致一些失败率。

而且UDP是非面向连接的,有一定的丢包率,通知小程序注册状态需要很长时间。根据对成功率和时间的考虑,我们改变了流程,小程序自己轮询后续状态,对成功率和耗时有帮助。

AP效果显示设备端的日志已发布。设备端的日志在Wi-Fi分发网络的开发中非常重要,会大大节省开发时间,有助于定位后期问题。目前我正在连接设备端,在SecureCRT中抓取日志,也可以调用AT命令切换SoftAP,效果也很直观。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

整个过程有四个步骤,对用户体验有一些影响。小程序的界面需要调用两次Wi-Fi,但是因为是兼容性很强的协议,所以目前的普及率也很高。

一键配网的基本原理也差不多。首先,设备需要切换到混杂模式,以便它可以获取附近路由器转发的所有广播数据包信息。同时手机创建一个UDP客户端发出包,创建一个UDP服务器抓取包。之后,它开始广播Wi-Fi信息。设备抢到之后,因为设备没有加入路由器,没有密钥,所以只能解析包头。从数据包报头解析Wi-Fi信息后,它连接到路由器。

这时候就涉及到applet端的一个特殊部分,就是applet端没有接口获取本地机器的IP,所以设备端不能直接向applet端返回数据包。

有两种方法可以做到这一点。设备端连接到路由器后,会继续监听applet端发送的广播包。因为都在一个局域网内,所以可以得到源IP。

换一种方式,设备端广播回复包,小程序端也可以正常接收回复包。收到数据包后,applet将验证数据包的有效性,注册设备,轮询设备的状态,等等。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

有一些难以理解的地方。首先,混杂模式可以接收附近环境中的所有802.11消息。就一条消息而言,因为没有局域网通信,路由器中也没有加入设备端,所以接收到的包都是加密的。如果没有拿到路由器密钥,就无法解包,所以主体部分无法解析,只能解析包头和消息长度,Wi-Fi信息只能放在这两块。

广播地址是四个255的,组播地址是保留的D类地址,可以映射到目标MAC地址,也是IP地址的固定头+23位。

有关网卡捕获工具打印的数据包信息,请参见下表。广播地址在目标MAC地址的上面,组播地址在下面。可以携带信息和分组大小。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

目前SmartConfig在腾讯连连小程序支持的一键分发协议的签约携带信息的方式下,同时支持组播和广播。但信息是放在包体长度里的,组播广播方式只是为了避免部分5G和2.4G路由器兼容时的成功率问题。

SimpleConfig使用组播,信息码放在组播目的Mac地址,Airkiss使用广播,信息放在包长。

先说后两栏。目前在我的研究下,业内只有一系列的小程序支持这三种一键网络分发的方式。这也是我们一开始做这个的动力,在这里可以实现差异化。展示一下一键网络分发的效果,可以看到最直观的感受就是它的交互过程比刚才少了一步。您只需填写Wi-Fi路由器的SSID和密码即可启动连接。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

只是,这两种分配方式并不相互排斥。它们在很多应用场景下共存,可以提高整体成功率。

接下来的部分不容易实现,挑战很多。我们将截取三个方面来一一解释。

就像刚才说的,UDP通信接口的稳定性和兼容性强烈依赖于底层小程序,有时候作为上层也很无奈,因为不可控。但也不是什么都做不了。有三种方法可以处理相应的错误,包括但不限于以下几种:

规避的自动处理方案;

可以提醒用户操作;

给微信反馈,持续改进。

三步都做了,有成功案例。说这么多有点抽象。举一些例子,比如:

一键网络分发,定时发送广播包,频率非常密集。要求在5到10毫秒之间,以便设备侧的混杂模式可以监控和切换要正常分析的通道。但是当一些安卓手机外包出去后,发现有些频率可以达到一秒以上,导致设备无法分析,成功率很低。

当连接一个设备热点时,有些安卓手机在底层判断这个热点没有Wi-Fi连接的情况下,是不会使用这个热点的,但是上层在发送UDP包时不会报错,但是这个包会丢失。

发送UDP包时,如果中途退出微信,再打开微信分发网络,会报错。

第二个挑战是:在实现一键分发网络的协议时,这些厂商不提供小程序的SDK和源代码。因为他们开发时间比较长,也没有相关的网络分发文档,他们自己的团队也缺乏小程序端二进制流处理和加密的经验。

针对这种困境,我们和产品同学一起寻求了厂家的授权。厂商在APP端提供了SDK和源代码或者安装包,我们可以进行解读和翻译。过程也很麻烦。调试的时候需要运行APP,这样就会出现一些APP支持的接口和小程序不支持的接口,比如小程序无法获取手机的IP。我们结合设备端解决了这些问题,在整体的网络分发流程规划中也有所体现。

第三个挑战是定位问题,因为Wi-Fi网络分发是一个漫长的过程,涉及小程序、路由器、设备,过程也很漫长。哪一步出了问题,是设备端出了问题,还是小程序端出了问题,都需要很强的监控能力。这样,当开发者或者C端用户反馈问题时,可以准确快速定位问题。

因为我们在开发调试的时候就意识到了设备端日志的重要性,仅仅靠小程序的日志或者后台日志是无法快速定位问题的。那么如何收集设备端的日志,有通用的方案吗?

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

面对这些挑战,我们在设备端优化了Wi-Fi网络分发的整体流程,其中也会涉及到刚才挑战的解决方案。

在网络布局之初,因为Wi-Fi故障率高,会有2%到3%的故障率。用户还需要在系统设置页面中手动连接。如果有手动设置连接,网络分发过程仍然可以继续,从而在一定程度上提高了成功率。

成功后,我们将开始创建UDP通信。这一次涉及到IOS和Android的区别。现在开发小程序的时候会用到ES6。ES6支持同步写,但是小程序端混合微任务(Promise)和宏任务(SetTimeout)写会有bug,导致频率超过一秒,不会达到5ms到10ms。

所以我们在Android端异步启动了网络分发包,IOS用优雅的同步编写启动了网络分发包。得到设备端的数据包地址后,我们通过UDP通信发送设备的网络分布。当时要提到的是,微信已经在新版本中修复了这个问题。

由于UDP通信是不连接的,存在一定的丢包可能,所以在设计了重试的逻辑后,绑定设备的整个过程就结束了,并且监控所有过程的错误事件,记录整个操作轨迹和错误报告的详细信息。

当出现错误时,可以判断错误的类型,并处理一些类似的错误。比如在实际的网络分发中,如果切换了Wi-Fi,你可以识别出来,然后添加到正确的Wi-Fi面进行自动网络分发,这样也可以增加成功率。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

另一方面,如果出了问题,设备端有一个收集日志的通用逻辑,原理并不复杂,就是在设备端连接一个热点,设备端简单验证通过后会将日志发送到applet端。被小程序收集后,会集体上报,后台、前端、设备的全息日志会存储在日志后台。这个日志不仅有定位的功能,还有助于分析成功率和耗时的重要信息。

在辅助网络分发的过程中,设备端会提供一个蓝牙广播服务,手机端和小程序端都可以连接到这个蓝牙上。在这个蓝牙通信过程中,可以交换刚才Wi-Fi和UDP通信的信息。

因为蓝牙服务底层的所有ATT命令都是必须的,这将使得整个数据传输非常可靠,现在越来越多的模块都在使用这种辅助分布网络。但它的软肋在于成本高,比纯Wi-Fi设备高一倍。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

BleCombo还多了一个连接蓝牙设备的步骤。如前所述,整个分发过程会记录日志来分析成功率和耗时,从而不断提升连接体验。

腾讯联联物联网平台,如何打通上下游,助力企业快速迭代产品

本文章来源于互联网,如有侵权,请联系删除!

相关推荐: 工业智能网关BL110应用之六十五: 实现西门子S7-200SMART PLC 接入亚马逊云平台

COM口采集西门子S7-200SMART PLC的配置 工业智能网关一共有四个COM 接口, 4个COM口的配置内容一样,COM1固定为RS232,COM2、COM3和COM4是RS232/RS485可选串口(默认为RS485)。因S7-200SMART的CO…