掌桥专利:专业的专利平台
掌桥专利
首页

本专利申请要求享有于2018年7月25日提交的序列号为62/703,054的美国临时申请以及于2019年2月20日提交的序列号为62/807,840的美国临时专利申请的优先权,其全部内容通过引用并入本申请。

背景技术

蜂窝通信行业对通信的观点主要由两个核心假设组成。首先,全球互操作性至关重要(比速度更重要),而法规和标准委员会是定义技术的方式。其次,客户将使用他们生产的任何产品,行业和政府将进行设计和构建,行业将永远使用计量蜂窝业务模型,并且客户将来也是如此。客户对技术或技术定义的参与为零,与开发人员的联系为零。

计算/IT行业对通信的观点通常由两个核心假设所控制:首先,创新者、建造者和行业是定义技术的方式。开发人员最了解,应该为强大的高端平台定义架构的前瞻性思维,而不是将精力过多地放在过去性能欠佳的平台上。其次,存在一个由不同的设备、协议和网络组成的世界,占主导地位的平台提供者的主要工作是创建通用抽象,该抽象将支持任何设备和任何应用程序,并将所有网络都视为公开提供流套接字的管道。

这两个行业都不完全接受这样一个事实,即以蜂窝为中心的大规模物联网(IoT)–数十亿个设备–两种观点都不可接受。AT命令和调制解调器模块的低级性质以及基于标准的限制以及定制协商的蜂窝协议可能过于复杂且无法扩展。此外,证书管理和连接到云所需的基于高级

发明内容

在一个示例实现中,提供了一种通信设备,用于将计算设备与基于云的服务通信地耦合,以在彼此异步的基础上使一个或多个数据修改同步。所述通信设备可以被配置为通信地耦合至所述计算设备,并且可以包括无线蜂窝收发器。通信设备可以被配置为以下一项或多项:将至少一个数据对象从所述计算设备传输到所述基于云的服务,以及从所述基于云的服务接收至少一个数据对象。将至少一个数据对象从所述计算设备传输到所述基于云的服务可以包括:从所述计算设备接收至少一个数据对象;至少部分地基于所接收的至少一个数据对象,修改存储在所述通信设备的存储器中的一个或多个数据对象的至少一个数据对象阵列,并且相对于所述计算设备,经由所述无线蜂窝收发器将修改的至少一个数据对象阵列的至少一部分异步地传输到所述基于云的服务。从所述基于云的服务接收一个或多个数据对象可以包括相对于所述计算设备,经由所述无线蜂窝收发器从所述基于云的服务异步地接收所述至少一个数据对象阵列的至少一部分,至少部分地基于所接收的至少一个数据对象阵列的至少一部分,修改存储在所述计算设备的存储器中的所述至少一个数据对象阵列的所述一个或多个数据对象,以及相对于所述通信设备与所述基于云的服务的通信,异步地使所述至少一个数据对象阵列中的所述一个或多个修改后的数据对象可用于所述计算设备。

可以包括以下示例性特征中的一个或多个。计算设备可以是微控制器。通信设备可以被配置为经由串行链路通信地耦合到所述计算设备。串行链路可以包括通用异步接收器/发送器(UART)、通用串行总线(USB)、内部集成电路(I2C)、串行外围接口(SPI)、

在另一示例实现中,提供了一种通信设备,用于将计算设备与基于云的服务通信地耦合,以在彼此异步的基础上使一个或多个数据修改同步。通信设备可以包括无线蜂窝收发器,并且可以被配置为将至少一个数据对象从所述计算设备传输到所述基于云的服务,以及从所述基于云的服务接收至少一个数据对象。将至少一个数据对象从所述计算设备传输到所述基于云的服务可以包括从所述计算设备接收至少一个数据对象,至少部分地基于所接收的至少一个数据对象,修改存储在所述通信设备的存储器中的一个或多个数据对象的至少一个数据对象阵列,相对于所述计算设备,经由所述无线蜂窝收发器将修改的至少一个数据对象阵列的至少一部分异步地传输到所述基于云的服务。从所述基于云的服务接收一个或多个数据对象可以包括相对于所述计算设备,经由所述无线蜂窝收发器从所述基于云的服务异步地接收所述至少一个数据对象阵列的至少一部分,至少部分地基于所接收的至少一个数据对象阵列的至少一部分,修改存储在所述计算设备的存储器中的所述至少一个数据对象阵列的一个或多个数据对象,以及相对于所述通信设备与所述基于云的服务的通信,异步地使所述至少一个数据对象阵列中的一个或多个修改后的数据对象可用于所述计算设备。

可以包括以下示例性特征中的一个或多个。计算设备可以是微控制器。计算设备可以被配置为经由串行链路通信地耦合到所述通信设备。至少一个数据对象可以是Java脚本对象表示法(JSON)对象。

在另一示例实现中,通信设备可以被配置为经由串行链路通信地耦合至计算设备,并且计算设备可以被配置为使用经由所述串行链路通信的一个或多个Java脚本对象表示法(JSON)对象与所述通信设备通信请求和响应。

在附图和以下描述中阐述了一个或多个示例实施方式的细节。根据说明书、附图和权利要求书,其他可能的示例特征和/或可能的示例优点将变得显而易见。一些实施方式可能不具有那些可能的示例特征和/或可能的示例优势,并且这样的可能的示例特征和/或可能的示例优势不一定是某些实施方式所必需的。

附图说明

图1是根据本公开的一个或多个示例实施方式的通信系统的示例示意图;

图2至图4是根据本公开的一个或多个示例实施方式的通信地耦合到计算设备和无线蜂窝收发器的通信设备的示例示意图;

图5是根据本公开的一个或多个示例实施方式的具有一个或多个数据对象阵列的通信系统的示例示意图;

图6是根据本公开的一个或多个示例实施方式的在通信设备和通信集线器之间同步以定义分布式复制的时空数据库的数据对象阵列的数据对象的示例示意图;

图7是根据本公开的一个或多个示例实施方式的与通信集线器相关联的管理工具的示例示意图;

图8是根据本公开的一个或多个示例实施方式的具有一个或多个数据对象阵列的通信系统的示例示意图;

图9至图10是根据本公开的一个或多个示例实施方式的与通信集线器相关联的管理工具的示例示意图;以及

图11至图12是根据本公开的一个或多个示例实施方式的通信集线器的示意图。

在各个附图中,相似的附图标记指示相似的元件。

具体实施方式

如上所述,目前有两种不同的用于蜂窝通信的系统架构,两者都被广泛采用。两者都很复杂。例如,蜂窝通信行业的观点主要由两个核心假设组成。首先,全球互操作性至关重要(比速度更重要),而法规和标准委员会是定义技术的方式。其次,客户将使用他们生产的任何产品,行业和政府将进行设计和构建,行业将永远使用计量蜂窝业务模型,并且客户将来也是如此。客户对技术或技术定义的参与为零,与开发人员的联系为零。

计算/IT行业对通信的观点通常由两个核心假设所控制:首先,创新者、建造者和行业是定义技术的方式。开发人员最了解,应该为强大的高端平台定义架构的前瞻性思维,而不是将精力过多地放在过去性能欠佳的平台上。其次,存在一个由不同的设备、协议和网络组成的世界,占主导地位的平台提供者的主要工作是创建通用抽象,该抽象将支持任何设备和任何应用程序,并将所有网络都视为公开提供流套接字的管道。例如,没有关注64kbps蜂窝作为传输,也没有关注边缘的64KB微控制器。

这两个行业都不完全接受这样一个事实,即以蜂窝为中心的大规模物联网(IoT)–数十亿个设备–两种观点都不可接受。AT命令和调制解调器模块的低级性质以及基于标准的限制以及定制协商的蜂窝协议可能过于复杂且无法扩展此外,证书管理和连接到云所需的基于高级Linux/Windows的高级应用程序接口(API)的复杂性对于试图在功能强大、价格低廉的微控制器上完成极其简单的事情的嵌入式开发人员来说是不现实的。

如将在下面更详细地讨论的,本公开的实施例可以包括模块上的数据系统(DSoM)、封装中的数据系统(DSiP)或通信设备和/或被配置为将微控制器与基于云的服务进行通信地耦合的通信集线器。如下面将更详细描述的,本公开的实施例可以提供以下一个或多个特征:带有调制解调器/无线蜂窝收发器、预付费蜂窝模块、存储、IP和TLS堆栈、安全元件和密钥/证书、GPS和加速度计的模块上的数据系统(DSoM),其可提供连接,而无需处理SSID、密码、访问点、网关、载波(carriers)或SIM;通过硬件加密/密钥和加密的“非互联网”通信,在没有任何配置挑战的情况下实现安全性;电池供电(μA)蜂窝电话无需管理调制解调器、连接、队列或存储的复杂性;将数据直接路由到其所属位置的极其精简基础架构即服务(IaaS)(例如亚马逊网络服务(AWSTM),AzureTM,Google Cloud StorageTM或自定义云);几乎没有障碍,所有技能水平的障碍都很少。(AWS是Amazon.com,Inc.在美国和/或其他国家或地区的商标;Azure是Microsoft Corporation在美国和/或其他国家或地区的注册商标;以及Google Cloud Storage是Google LLC在美国和/或其他国家或地区的注册商标)。以这种方式并且将在下面更详细地讨论,本公开的实施例可以提供封装在安全通信模块上并与基于互联网的通信集线器集成的分布式复制的时空数据库。

参考图1的示例,并且在一些实施例中,通信系统(例如通信系统100)通常可以包括被配置为通信地耦合到计算设备(例如计算设备104)的通信设备(例如通信设备102),以及通信集线器(例如通信集线器106),其被配置为通信地耦合到基于云的服务(例如基于云的服务108)。如将在下面更详细地讨论的,可以将应用程序写在计算设备(例如计算设备104)上,可以将来自计算设备(例如计算设备104)的数据(例如数据对象110)格式化为与通信设备(例如通信设备102)进行通信,并向/从通信集线器(例如通信集线器106)传输。通信集线器(例如通信集线器106)可以向/从基于云的服务(例如基于云的服务108)或应用传送数据。在一些实施例中,用于配置计算设备(例如微控制器)以与基于云的服务通信的功率和存储管理、供应和安全性以及软件更新、无线频带和载波的管理、法规认证、商业模型等可以全部由通信设备和通信集线器来管理。

在一些实施例中,通信设备可以将计算设备与基于云的服务通信地耦合。在一些实施例中,计算设备可以包括微控制器。微控制器或“MCU”通常可以在运行产品的应用逻辑的单个集成电路上包括计算设备。MCU可以与供应商的软件开发工具包(SDK)或在最小的操作环境(例如FreeRTOS、

在一些实施例中,计算设备可以包括单板计算机或“SBC”。SBC通常可以包括基于Linux(或要求内存管理单元(MMU)的任何OS,例如

与从实体自己的本地服务器(例如客户的服务器)提供的服务相反,基于云的服务通常可以包括经由互联网从云计算提供商的服务器按需提供给用户的任何服务或应用程序。云服务的示例通常可以包括在线数据存储和备份解决方案、基于Web的电子邮件服务、托管办公室套件和文档协作服务、数据库处理、托管技术支持服务等。将意识到,任何基于云的服务可以在本公开的范围内使用。

在一些实施例中,通信设备可以通信地耦合到计算设备。如上所述,在一些实施例中,计算设备可以是微控制器。在一些实施例中,通信设备可以是模块上的数据系统(DSoM)或封装中的数据系统(DSip)。如本领域中已知的,DSoM通常可以包括将系统功能集成在单个模块中的板级电路,而DSiP通常可以包括封装在单个芯片载体封装中的许多集成电路。在一些实施例中,通信设备可以被配置为以省电的方式异步地在蜂窝计算上分级和管理客户的计算设备与基于云的服务之间的数据分组(例如数据对象)的安全通信。

在一些实施例中,通信设备可能不是应用处理器,因为它可能没有托管客户应用代码。在一些实施例中,通信设备可以是专注于两个核心任务的智能外围设备:1)数据对象的双向异步安全数据通信;2)外围设备的电源管理。

在一个示例中,可以使用紧凑的行业标准M.2 3030(NGFF)Key E形状因数(30平方毫米)封装通信设备,该设备被设计用于嵌入各种情况。在一些实施例中,M.2形状因数可以具有带有集成的SIM开关的嵌入式SIM(eSIM),从而使硬件设计人员可以根据需要使用软件可选的外部SIM。在一些实施例中,通信设备可以包括一个或多个处理器。例如,通信设备的请求处理器(例如STM32L4S5)可以与1.7-3.6V范围内的电路接口,并且插座可以独立于主电源电压向该处理器供电,以适应各种设计需求。尽管上面已经用操作电压的特定范围描述了示例形状因数和处理器,但是应当理解,在本公开的范围内可以使用其他形状因数、处理器和电压操作范围。

在一些实施例中,并且如将在下面更详细地描述的,可以使用通信设备的一个或多个处理器来实现通信设备的功能。

在一些实施例中,通信设备的主电源电压可以被称为“V+”,并且可以被用于无线蜂窝收发器(例如Quectel BG96调制解调器和相关的电路)。尽管已经讨论了示例无线蜂窝收发器,但是应当理解,在本公开的范围内,可以使用其他无线蜂窝收发器和/或调制解调器。在一些实施例中,通信设备的板载调节器可以被配置用于直接连接到例如LiPo电池,并且可以提供例如在2.5-5.5V范围内的任何电压。然而,将理解的是,在本公开的范围内,可以使用具有不同电压范围的其他电源(例如非电池电源、其他类型的电池、太阳能电源等)。

还参考图2的示例,并且在一些实施例中,通信设备可以被配置为经由串行链路通信地耦合到计算设备。以这种方式,通信设备102可以通过两条线耦合到计算设备104。例如,计算设备(例如MCU)可以具有使用串行链路(例如串行链路202)向通信设备发送请求的选项。在一些实施例中,串行链路(例如串行链路202)可以是通用异步接收器/发送器(UART)、通用串行总线(USB)、内部集成电路(I2C)、串行外围接口(SPI)、

在一个示例中,USB连接器可以作为UART替代被添加,并且可以允许通信设备与

在一些实施例中,通信设备102可以支持具有固定波特率的主要串行链路和具有自动波特率检测的次级或辅助串行链路。在一些实施例中,可以通过将通信设备102的“AUXWAKE”引脚设置为高来启用该接口或链路。然而,将理解,可以以各种方式(例如按下按钮,将一个或多个引脚设置为高或低等)来实现启用次级串行链路。在具有USB接口的通信设备102的一些实施例中,可以使用D+/D-线在通信设备102和计算设备104之间传送数据。

在一些实施例中,通信设备可以包括无线蜂窝收发器。在一些实施例中,无线蜂窝收发器(例如无线蜂窝收发器204)可以是通信设备102的模块。无线蜂窝收发器通常可以包括用于无线广域电信的任何无线蜂窝收发器。示例可以包括但不限于LTE-M、LTE Cat M1、窄带物联网(NB-IoT)、LTE Cat NB1、3G、2G等。如本领域中已知的那样,LTE-M和NB-IoT是3GPP开发的低功率广域网(LPWAN)无线电技术标准类型,以实现广泛的蜂窝设备和服务(特别是用于机器对机器和物联网应用程序)。尽管已经提供了特定示例性蜂窝和无线电技术标准,但是应当理解,在本公开的范围内可以使用任何蜂窝通信标准。

在一些实施例中,无线蜂窝收发器204可以被配置为与无线蜂窝收发器天线(例如天线206)和/或被配置用于无线蜂窝通信的天线阵列通信地耦合。在一些实施例中,无线蜂窝收发器天线206可以包括一个或多个全向和/或定向天线。

在一些实施例中,通信设备102可以耦合到载板(例如载板210)。载板通常可以包括被配置为使通信设备(例如通信设备102)与其他计算设备(例如计算设备104)接口的电路。在一些实施例中,载板210可以实现针对特定用户的通信设备的快速集成。例如,某些载板(例如载板210)可以集中于经由用于快速试验板原型的插头引脚以例如3.3V逻辑来暴露功能。其他载板(例如载板210)可以具有由载体预先认证的一体式全向LTE天线(例如天线206)和全球导航卫星系统(GNSS)天线(例如天线208),并具有平坦的背部和齿形连接,以便可以在工业或大批量生产环境中将载板焊接到母板上。例如,一个载板(例如载板210)可以不包括内置的无线蜂窝收发器天线206和/或GNSS天线208。在另一个示例中,载板(例如载板210)可以包括无线蜂窝收发器天线和/或GNSS天线。将理解的是,在本公开的范围内,可以将各种载板用于不同的配置。

在一些实施例中,载板(例如载板210)可以包括微型USB连接器,该微型USB连接器被配置用于向通信设备提供电力并且用于将数据对象中继到基于云的服务。例如,通过简单地将此USB连接器插入另一个计算设备(例如Raspberry PiTM),用户可以在任何串行终端程序中键入命令。(Raspberry Pi是Raspberry Pi Foundation在美国和/或其他国家或地区的注册商标)。

在一些实施例中,载板(例如载板210)可以包括被配置为提供变化的电压的微动开关。例如,微动开关可同时启用3.3V和1.8V操作。尽管已经提供了示例电压,但是应当理解,在本公开的范围内可以使用任何电压。

再次参考图3的示例,并且在一些实施例中,通信设备102可以包括通信地耦合到无线蜂窝收发器和/或无线蜂窝调制解调器(例如无线蜂窝收发器204)的一个或多个处理器(例如处理器302)。尽管在图3中处理器302被示为与无线蜂窝收发器204分离,但是在一些实施例中,处理器302可以是无线蜂窝收发器204的集成处理器。或者,处理器302可以在物理上与无线收发器204分离。例如,并且在一些实施例中,处理器302可以被配置为经由串行链路304通信地耦合到无线蜂窝收发器204。在一些实施例中,无线蜂窝收发器204可以排他地“拥有”并且由通信设备102控制。例如并且如上所述,通信设备102的功耗可以至少部分地取决于无线蜂窝收发器204的占空比和广播行为。例如,尽管当无线蜂窝收发器处于活动状态时电流消耗通常可以在0-250mA范围内,但是在几毫秒内,当在需要使用GSM的区域中时,电流消耗可能会飙升至接近2A。这样,通信设备102的电压输入或“VIN”可以直接连接到能够产生这种短暂尖峰的电池或其他电源。

在一些实施例中,通信设备可以被配置为启用和禁用其无线蜂窝收发器的电源。在一个示例中,通信设备102包括与无线通信设备分离的处理器,如图3所示,通信设备102可以包括耦合到一个或多个引脚(例如“MDM-EN”引脚)的功率控制电路(例如功率控制电路306),该引脚被配置为选择性地启用和/或禁用无线蜂窝收发器204的功率输入(例如“VIN”)。以这种方式,通信设备102可以控制无线蜂窝收发器/调制解调器的功率以执行占空比管理。

在一些实施例中,通信设备可以被配置为启用和/或禁用计算设备的电源。如图4的示例所示,在某些实施例中,通信设备102可以包括功率控制电路402,其耦合到一个或多个引脚(例如“MCU-EN”引脚),该引脚被配置为选择性地启用计算设备104的电源输入(例如“VIN”引脚)。例如,通信设备的软件调度功能可以允许控制计算设备的占空比。在一些实施例中,计算设备和通信设备可以被配置为进入“深度睡眠”模式,而不需要通过计算设备104和通信设备102之间的链路404的周期性轮询。例如,当从基于云的服务接收到传入的跟踪数据并可供计算设备处理时,可以向计算设备104提供软件选项以表示用于跟踪的特定数据对象阵列,并且可以断言通信设备102的一个或多个引脚(例如“WAKE-OUT”引脚)。数据对象阵列可以是用户定义的和/或自动定义的(例如通过默认设置)。当从基于云的服务接收到数据时,该配置可以仅通过唤醒计算设备104来允许显着的功率节省。

在一些实施例中,通信设备102通常可以在睡眠状态下等待定时器和/或来自计算设备104的命令经过串行链路202。在一些实施例中,当计算设备104知道它将不向通信设备102发布任何命令时,计算设备104可以声明一个或多个引脚(例如“WAKE-IN”引脚)。在该配置中,串行链路202可以被禁用以节省更多电量。

在一些实施例中,通信设备可以被配置为从计算设备接收至少一个数据对象。数据对象通常可以包括配置为用于向计算设备往返传递信息的数据分组。在一些实施例中,并且如下面将更详细地讨论的,计算设备104可以提供不包含用于基于云的服务的数据但是可以用于配置通信设备102与基于云的服务108的连接的通信会话数据对象。再次参考图1的示例,并且在一些实施例中,计算设备104可以向通信设备102发送(例如经由串行链路202)至少一个数据对象。在一些实施例中,计算设备104可以包括一个或多个传感器,和/或被配置为生成要存储在基于云的服务中的数据的控件。

在一些实施例中,至少一个数据对象可以是Java脚本对象表示法(JSON)对象。如本领域中已知的,JSON是一种开放标准的文件格式,它使用人类可读的文本来传输由属性-值对和数组数据类型(或任何其他可序列化的值)组成的数据对象。在一些实施例中,JSON对象可以包括一个或多个JSON请求和/或一个或多个JSON响应。如下面将更详细地讨论的,由计算设备生成的数据可以作为包括数据对象的JSON请求被传输到通信设备以存储在基于云的服务中。例如,计算设备104可以被配置为将数据封装为具有一个或多个属性(例如创建数据对象的时间、创建数据对象的位置、创建数据对象的计算设备等)的可选有效载荷和可选主体的组合。有效载荷通常可以包括例如包含任意应用程序数据的基本64编码的JSON字符串(例如“payload”:”YWJHhLW0tLW0tLW0tLW0tLGt5eg==”)。主体通常可以包括包含任意基于应用程序/基于云的服务数据的JSON对象(例如“body”:{“temp”:34.2,”alert”:true,”particle”:{“mass”:[5.1,12.32],”count”]}})。尽管上面的示例包括JSON对象,但是应该理解,其他数据对象格式也是可能的,并且在本公开的范围之内。

在一些实施例中,通信设备102可以被配置为利用两个或更多个JSON请求将数据对象提供给基于云的服务。在一个示例中,可以仅利用两个JSON请求将数据对象提供给基于云的服务。例如,当计算设备104启动时,它可以通过其串行端口(例如经由串行链接202)向通信设备102发送JSON请求,以配置1)该计算设备的标识符,使得基于云的服务知道哪个计算设备正在提供数据;2)在将数据与其他暂存数据成批发送到基于云的服务之前,应允许数据保留在通信设备上的最长时间。下面显示了可以接收的这些JSON数据对象或命令的示例,其中示例计算设备配置为监视例如空气湿度:

setup()

serial.println{“req”:”service.set”,”product”:”com.acme.airmon”,”minutes”:60}

loop()

serial.println

{“req”:”note.add”,”file”:”air.qo”,”body”:{“temp”:72,”humid”:61}}

如上所述,无需进一步设置,“loop()”命令可允许计算设备发出简单的JSON命令以将JSON数据对象添加到存储在通信设备中的类似数据的集合(例如数据对象阵列)。在此示例中,“air.qo”中的“.qo”可以表示“出站队列”,而“air”可以是用户定义的名称。如上面的示例所示,在某些实施例中,数据对象的“主体”可以是完全自由格式的JSON,可以由基于云的服务解释而不受模式约束。尽管上面的示例讨论了在计算设备启动时从计算设备接收数据对象,但是应当理解,可以在计算设备操作的任何时候从计算设备接收数据对象。

在一些实施例中,数据对象可以被配置为提供关于计算设备、通信设备、通信集线器和/或基于云的服务的信息。例如,数据对象可以配置为请求和返回服务配置的环境变量、返回当前服务配置参数、显示通信设备是已连接、已断开还是处于中间状态、手动初始化数据对象的同步、显示有关最后一次同步、向服务管理员发送“实时”消息或从服务管理员发送“实时”消息等等。

还参考图5的示例,并且在一些实施例中,通信设备可以被配置为至少部分地基于接收到的至少一个数据对象来修改存储在通信设备的存储器中的一个或多个数据对象的至少一个数据对象阵列。数据对象阵列通常可以包括一个持久文件,其中包含当添加第一个数据对象时自动创建的数据对象阵列。因此,在一些实施例中,可以在通信设备102接收到数据对象时创建数据对象阵列。在一些实施例中,可以为数据对象阵列分配名称。这些名称可以是任意的和/或可以与数据对象阵列的数据对象(例如与特定传感器相关联的数据对象等)的生成相关联。如图5所示,一组数据对象阵列(例如一组数据对象阵列502)可以存储在通信设备102的存储器内。在一些实施例中,该组数据对象阵列可以包括至少一个数据对象阵列(例如数据对象阵列504、506、508)。在一些实施例中,至少一个数据对象阵列中的每一个可包括一个或多个数据对象(例如数据对象510、512、514、516、518、520、522、524、526)。如下面将更详细讨论的,通信集线器106可以类似地包括一组数据对象阵列(例如数据对象阵列528),其包括至少一个数据对象阵列(例如数据对象阵列530、532、534)。在该示例中,数据对象阵列530可以包括数据对象436、438、540;数据对象阵列532可以包括数据对象542、544、546;以及数据对象阵列534可以包括数据对象548、550、552。

在一些实施例中,数据对象阵列(例如数据对象110)可以包括确定数据对象的某些属性的数据对象扩展。例如,一个数据对象扩展名(例如“.db”)可以指示该数据对象是可以在基于云的服务和通信设备之间完全复制的数据库对象。在一些实施例中,数据库扩展可以通常用于维护配置和状态信息。在另一个示例中,数据对象扩展名(例如“.qo”)可以指示该数据对象是仅出站数据对象,其仅从通信设备102发送到通信集线器106。一旦这些数据对象被传送到通信集线器106,就可以将它们从通信设备102内的数据对象阵列中删除。在另一个示例中,数据对象扩展名(例如“.qi”)可以指示该数据对象是仅入站数据对象,其从通信集线器106发送到通信设备102。一旦这些数据对象被传送到通信设备102,就可以将它们从通信集线器106内的数据对象阵列中删除。尽管上面已经描述了几个示例性数据对象扩展,但是应当理解,在本公开的范围内,其他数据对象扩展也是可能的。

在一些实施例中,数据对象扩展的安全变体(例如“.dbs”、“.qos”、“.qis”)可以指示数据对象将被加密。在一些实施例中,数据对象通常可以在不加密的情况下被发送,以减少带宽。但是,对于更敏感的数据对象,这些安全的数据对象扩展可以确保在TLS加密的通信会话中传输数据对象。

再次参考图5的示例,在一些实施例中,数据对象阵列504可以包括数据对象(例如数据对象510、512、514),并且可以与双向扩展相关联。数据对象阵列506可以包括数据对象(例如数据对象516、518、520),并且可以与仅出站扩展相关联。在该示例中,数据对象阵列506可以是仅出站队列,其被配置为将数据对象516、518、520传输到通信集线器506并从数据对象阵列506中删除数据对象。在一些实施例中,数据对象阵列508可以是与具有仅入站扩展的数据对象(例如数据对象522、524、526)相关联。在该示例中,数据对象阵列508可以被配置为接收从通信集线器106发送并从通信集线器106的数据对象阵列删除的数据对象522、524、526。以这种方式,通信设备102可以是具有分布式复制的时空数据库的封装中的数据系统(DSiP),其可以与基于互联网的安全通信集线器106集成在一起。虽然提供了与特定数据对象扩展相关联的三个数据对象阵列的示例,应当理解,在本公开的范围内可以使用任何数量的数据对象阵列,和/或数据对象阵列不必限于数据对象扩展。例如,可以为各种计算设备传感器、数据对象的类型等定义数据对象阵列。

在一些实施例中,修改至少一个数据对象阵列可以包括添加、删除和改变数据对象阵列的数据对象中的一项或多项。例如,如果数据对象是新的数据对象,则修改至少一个数据对象阵列可以包括将新的数据对象添加到数据对象阵列。如果数据对象包括删除现有数据对象,则修改至少一个数据对象阵列可以包括从数据对象阵列删除数据对象。如果数据对象阵列中的数据对象被更新或改变,则修改至少一个数据对象阵列可以包括更新或改变数据对象。

在一些实施例中,可以使用附加的元数据将数据对象添加到存储在通信设备的存储器中的至少一个数据对象阵列中或在其中更新。例如,当使用例如“note.add”请求从计算设备104接收到数据对象时,如果可以从通信设备的硬件获得,则可以用例如时间和位置信息来自动扩充该数据对象。类似地,当接收到更新或更改现有数据对象的数据对象时,该数据对象可以自动添加例如时间和位置信息(如果可从通信设备的硬件获得)。将理解的是,在本公开的范围内,可以将其他元数据添加到数据对象。

在一些实施例中,通信设备可以被配置为相对于计算设备异步地经由无线蜂窝收发器将修改的至少一个数据对象阵列的至少一部分发送到基于云的服务。如本文所用,“相对于计算设备,异步地传输”可以包括独立于计算设备或独立于计算设备并且不涉及计算设备地传输数据。如上所述,从通信设备102传输至少一个数据对象阵列的至少一部分可以相对于计算设备104异步。在一些实施例中,当通信设备发送数据对象时,通信设备102对数据对象的异步传输可以允许计算设备104离线或“睡眠”。

例如,假设计算设备104被配置为以预定频率(例如每小时)向基于云的服务108提供数据对象(例如空气温度和湿度读数)。计算设备104可以以预定频率向通信设备102提供数据对象。然而,通信设备102可以被配置为相对于计算设备104异步地将数据对象(例如以对数据对象阵列的修改的形式)发送到通信集线器106。如上所述,通信设备102的发送可以是独立于计算设备104或独立于计算设备104且不涉及计算设备104。在该示例中,通信设备102可以以不同的预定频率(例如每天一次)发送数据对象。以这种方式,计算设备104可以以其预定频率提供数据对象(例如对数据对象阵列的数据对象的修改),而无需管理或控制通信设备102。以这种方式并且在一些实施例中,计算设备104能够容易地向通信设备104提供数据,并且通信设备102可以独立于计算设备104将数据发送到基于云的服务108。如下面将更详细地讨论的,通信设备104对数据对象的这种异步传输可以允许通信设备102提供数据对象,同时节省通信设备102和/或计算设备104的功率和/或不需要计算设备104的参与。

在一些实施例中,通信设备可以被配置为从计算设备接收通信策略。通信策略通常可以是用于通信设备的一个或多个通信会话标准,包括节省功率、节省网络带宽、保护数据对象以及相对于其他数据对象优先化某些数据对象中的一个或多个。例如,假设用户希望优先考虑节省计算设备和/或通信设备的功率以延长使用寿命。在该示例中,通信策略可以定义通信设备104多久发送或接收一次数据对象。如下面将更详细地讨论的,这可能影响无线蜂窝收发器204被(例如由通信设备102)供电的频率和/或GNSS或GPS天线被(例如由通信设备102)供电的频率。在另一个示例中,假设用户希望优先处理数据对象通信的安全性。在该示例中,并且如下面将更详细地讨论的,通信策略可以定义何时使用通信102的安全元件来压缩和/或加密数据对象。在另一示例中,假设用户希望用包括通信设备102的位置的元数据来标记数据对象(例如在具有变化位置的通信设备的示例中)。在该示例中,并且如下面将更详细地讨论的,通信策略可以定义何时用包括通信设备102在特定时间的位置的元数据标记数据对象。虽然已经讨论了通信优先级的三个示例,但是应当理解,其他优先级也是可能的,并且包括在本公开的范围内(例如通信的数据量、从某些传感器提供某些数据等)。

在一些实施例中,从计算设备102接收的至少一个数据对象可以定义通信策略。例如,在一些实施例中,数据对象可以包括配置为设置通信设备蜂窝连接的请求,如以下示例请求所示:

在一些实施例中,通信设备可以被配置为生成调度,该调度用于经由无线蜂窝收发器将数据对象阵列的至少一部分发送至基于云的服务和/或用于至少部分地基于从计算设备接收的通信策略,经由无线蜂窝收发器从基于云的服务接收数据对象的至少一部分。例如,通信设备102使用其自身的启发法,可以调度到通信集线器106的连接,在该处通信集线器106根据需要双向同步数据对象。如下面将更详细地讨论的,可以从通信设备存储器与通信集线器存储器之间的数据对象阵列暂存区中移动和/或复制数据对象。

在一个示例中,由于经由无线蜂窝收发器204的蜂窝通信可能需要相对大量的功率,因此通信设备102可以管理确定与蜂窝网络建立通信的时间和频率的调度。在该示例中,通信策略可以优先考虑节省功率,并且通信设备102可以管理调度以确定何时以及如何频繁地发送和/或接收数据对象/修改数据对象阵列。

还参考图6的示例,并且在一些实施例中,通信设备102可被配置为相对于计算设备104经由无线蜂窝收发器204异步地向通信集线器106发送一个或多个数据对象。如上所述,通信集线器106可类似地包括一组数据对象阵列(例如数据对象阵列528),其包括至少一个数据对象阵列(例如数据对象阵列530、532、534)。在该示例中,数据对象阵列530可以包括数据对象536、538、540;数据对象阵列532可以包括数据对象542、544、546;以及数据对象阵列534可以包括数据对象548、550、552。尽管已经讨论了三个数据对象阵列,但是应当理解,在本公开的范围内,可以在通信集线器106内存储任何数量的数据对象阵列。

在一些实施例中,通信设备102可以包括数据对象阵列504和数据对象阵列506,其中数据对象510和数据对象516相对于计算设备104可以分别异步地传输到通信集线器106。在该示例中,数据对象510可以是双向复制的数据对象,使得数据对象510在数据对象阵列530中被复制为数据对象536。另外,数据对象516可以是仅出站数据对象,使得当数据对象516被发送到通信集线器106的数据对象阵列532时,数据对象516可以作为数据对象542被存储在数据对象阵列532中,以及可以从数据对象阵列506中删除数据对象516(例如如数据对象516周围的虚线所示)。尽管已经描述了两个数据对象被发送到通信集线器106的示例,但是应当理解,可以将任何数量的数据对象和/或数据对象阵列(例如部分和/或整个数据对象阵列)发送给在本公开范围内的通信集线器106。

在一些实施例中,通信设备可以被配置为相对于计算设备异步地经由无线蜂窝收发器从基于云的服务接收至少一个数据对象阵列的至少一部分。如本文所用,“相对于计算设备,异步地,接收”可以包括独立于计算设备或独立于计算设备且不涉及计算设备接收数据。例如,假设通信集线器106被配置为以预定频率(例如每小时)提供天气数据。如下面将更详细讨论的,通信集线器106可以以预定频率向通信设备102(例如无线蜂窝收发器204)发送数据对象或向通信设备102(例如无线蜂窝收发器204)提供数据对象。然而,通信设备102可以被配置为相对于计算设备104异步地从通信集线器106接收数据对象。如上所述,通信设备102对数据对象的接收可以独立于计算设备104或独立于计算设备104,并且不涉及计算设备104。在该示例中,计算设备104可以以不同的预定频率(例如每天一次)从通信设备102接收数据对象。以这种方式,计算设备104可以以其预定频率接收数据对象,而无需管理或控制通信设备102。

在一些实施例中,计算设备104可以能够从通信设备104接收数据,并且通信设备102可以独立于计算设备104从基于云的服务108接收数据。如下面将更详细地讨论的,由通信设备104的该数据对象的异步接收/对数据对象阵列的修改可以允许通信设备102接收数据对象,同时节省通信设备102和/或计算设备104的功率和/或不需要计算设备104的参与。在一些实施例中,当通信设备接收数据对象时,通信设备102对数据对象的异步接收可以允许计算设备104离线或“睡眠”。如上所述,通信设备102可以向计算设备104提供信号以“唤醒”计算设备104,使得当接收到数据时,计算设备104可以向通信设备102请求数据。以这种方式,计算设备104可以不参与通信设备102对数据对象的接收。

在一些实施例中,通信设备102可以至少部分地基于所接收的至少一个数据对象阵列的至少一部分,来修改存储在计算设备的存储器中的至少一个数据对象阵列的一个或多个数据对象。在一些实施例中,修改至少一个数据对象阵列可以包括添加、删除和改变数据对象阵列的数据对象中的一项或多项。例如,如果数据对象是新的数据对象,则修改至少一个数据对象阵列可以包括将新的数据对象添加到数据对象阵列。如果数据对象包括删除现有数据对象,则修改至少一个数据对象阵列可以包括从数据对象阵列删除数据对象。如果数据对象阵列中的数据对象被更新或改变,则修改至少一个数据对象阵列可以包括更新或改变数据对象。

如上所述,在一些实施例中,数据对象可以在基于云的服务和计算设备之间双向通信。在一些实施例中,无线蜂窝收发器204可以从通信集线器106接收一个或多个数据对象,并且可以经由串行链路304将一个或多个接收的数据对象传送到通信设备102。如上面和在一些实施例中所讨论的,通信设备可以被配置为至少部分地基于所接收的至少一个数据对象阵列的至少一部分,来修改存储在计算设备的存储器中的至少一个数据对象阵列的一个或多个数据对象。还参考图6的示例,并且在一些实施例中,通信集线器106可以包括具有可以被发送到通信设备102的数据对象552的数据对象阵列534。如上所述,通信设备102可以是具有分布式复制的时空数据库的封装中的数据系统(DSiP),该数据库可以与基于互联网的安全通信集线器106集成在一起。在该示例中,数据对象552可以是仅入站数据对象,使得当数据对象552被发送到通信设备102的数据对象阵列508时,数据对象552可以作为数据对象526被存储在数据对象阵列508中,并且可以从数据对象阵列534中删除数据对象552(例如如数据对象552周围的虚线所示)。尽管已经描述了一个数据对象被发送到通信集线器106的示例,但是应当理解,在本公开的范围内,任何数量的数据对象和/或数据对象阵列(例如部分和/或整个数据对象阵列)可以被通信设备102接收。

在一些实施例中,通信设备可以被配置为相对于通信设备与基于云的服务的通信,异步地,使至少一个数据对象阵列的一个或多个修改的数据对象可用于计算设备。如本文所用,“相对于通信设备与基于云的服务的通信,异步地,使至少一个数据对象阵列的一个或多个修改的数据对象可用于计算设备”可以包括使得从基于云的服务接收的数据对象(例如基于至少一个数据对象阵列的接收部分的修改后的数据对象)独立于通信设备与基于云的服务的通信或通信设备与基于云的服务进行通信时可用。再次参考图2的示例,并且在一些实施例中,通信设备102可以在通信设备102上(例如,如上所述,在通信设备102的存储器中)分阶段至少一个数据对象阵列的至少一部分来使至少一个数据对象阵列的至少一部分对计算设备104可用,并通过计算设备104接收对至少一个数据对象阵列的至少一部分的请求。以这种方式,计算设备104可以请求(经由串行链路202)至少一个数据对象阵列的至少一部分。因此,通信设备104可以独立于与基于云的服务108的任何通信而使修改后的数据对象可用于计算设备102。

再次参考图4的示例,并且在一些实施例中,通信设备可以被配置为经由无线蜂窝收发器接收以一个或多个数据对象的形式的固件数据,以存储在通信设备的存储器中。在一些实施例中,计算设备104可以经由通信设备102接收固件更新。例如并且如图4所示,仅出于示例目的,假设计算设备104包括两线串行线调试(SWD)接口(例如SWD接口306)。在一些实施例中,SWD接口406除其他外可以允许重新刷新计算设备(例如微控制器)固件。在该示例中,开发人员可以选择将持久固件数据(例如配置数据)存储在通信设备的存储器(例如闪存)中,而不是存储在计算设备的存储器中。通过这样做,授权的开发人员可以使新固件经由无线蜂窝收发器204被接收,并被下载到通信设备102。在一些实施例中,可以将其他固件数据或固件映像(例如“最新已知良好固件”)下载到通信设备。

继续该示例,通信设备102可以从计算设备接收一个或多个命令,以将接收到的固件数据的至少一部分发送到计算设备(例如经由SWD接口406),以将接收到的固件数据安装在计算设备上。在一些实施例中,通信设备102可以完全重新刷新计算设备104的固件。尽管图4示出了在计算设备上具有SWD引脚的示例,但是应该理解,可以使用其他配置来重新刷新计算设备104的固件。例如并且在一些实施例中,可以经由在通信设备102的一个或多个引脚(例如“RESET”引脚)引导计算设备104期间在计算设备104上将一个或多个引脚保持为低电平(例如GPIO-00引脚(未示出))来执行刷新固件。然后可以使用串行链路202将固件传输到计算设备104。

在一些实施例中,通信设备可以包括全球导航卫星系统(GNSS)系统,并且可以被配置为通信地耦合到GNSS天线。如本领域中已知的,GNSS接收器(GNSS接收器212)通常可以包括电子设备或模块,该电子设备或模块接收并数字处理来自GNSS卫星星座的信号以便提供(接收器的)位置、速度和时间。在一些实施例中,可以用时间和位置元数据来标记由通信设备102传送的数据对象。在一些实施例中,可以使用GNSS接收器来获得位置信息,同时可以从蜂窝网络和GNSS接收器两者中获得时间。在一些实施例中,通信设备102可以包括配置为在加速度计检测到运动时对GNSS天线进行采样的加速度计(加速度计214)。在一些实施例中,并且使得能量消耗可以针对非运动中的通信设备进行优化,通信设备102可以具有基于MEMS的加速度计(例如加速度计214),以确定何时不需要使用GNSS天线。以此方式,当由加速度计(例如加速度计214)检测到运动时,可以启用GNSS天线(例如GNSS天线208),否则可以禁用GNSS天线(例如GNSS天线208)以节省功率。

在一些实施例中,通信设备可以被配置为将元数据添加到一个或多个数据对象,该元数据包括通信设备的时间和位置中的一个或多个。例如,通信设备102可以被配置为用元数据标记数据对象。元数据可以包括使用GNSS天线208确定的通信设备的时间和/或位置。在一些实施例中,当(例如从计算设备104或通信集线器106)接收到数据对象时,计算设备102可以用时间信息元数据标记数据对象。

在一些实施例中,通信设备边缘引脚之一可以允许设计者按照任何有源GNSS/GPS天线的要求向GPS/GNSS的接收器u.fl连接器提供偏置电压。为了方便起见,可以由可用于该目的的通信设备102提供3.8V电源。在一些实施例中,如果GNSS天线(例如GNSS天线208)通信地耦合到通信设备102,则有源/无源开关可以使用户能够选择耦合到通信设备102的天线的类型。如果是有源的,则可以提供3.8V的偏置电压为天线的集成LNA供电。尽管上面已经讨论了特定的电压值,但是应当理解,可以在本公开的范围内提供GNSS天线所需的任何电压。

在一些实施例中,在制造时,通信设备的非易失性存储器被配置为包括一个或多个安全密钥和数字签名证书,该数字签名证书使得能够对通信设备进行安全认证以及与基于云的服务进行通信。例如并且如上所述,现代的基于云的服务可能要求云和通信设备102执行双向认证,以使得两者都不能被欺骗。此外,对于许多应用程序而言,对空中数据和有线数据进行加密可能很重要。由于这个原因,并且在一些实施例中,通信设备102可以集成例如STSAFE-A100安全元件,其可以包括在芯片制造或生产时在芯片内生成的对称密钥。因此,通信设备102的制造商或计算设备104的制造商都不需要处理或管理安全密钥材料。在一示例中,为通信设备102生成的安全密钥可以使用具有NIST P-384曲线的椭圆曲线密码术(ECC),并且签名算法可以是带有SHA384的ECDSA。尽管已经提供了安全元件的特定示例和特定签名算法,但是应当理解,可以使用任何配置为生成加密密钥的安全设备或模块和/或任何签名算法来保护在本公开的范围内的基于云的服务108和通信设备102之间的数据。

在一些实施例中,通信设备可以被配置为至少部分地基于从计算设备接收的通信策略以及添加到一个或多个数据对象的元数据来压缩和加密数据对象中的一个或多个。例如并且如上所述,加密数据对象可能需要来自通信设备102的大量能量。以这种方式,通信设备102可以利用数据对象元数据和/或通信策略来确定数据对象是否被压缩和/或加密。尽管已经讨论了基于功率节省来压缩和/或加密数据的示例,但是应当理解,元数据和通信策略也可以确定在其他情况下何时压缩和/或加密数据对象(例如基于位置、时间、安全优先级等)。

在一些实施例中,通信设备102可以具有功率控制并且可以大量使用可变时钟速度。如上所述,无线蜂窝收发器(例如无线蜂窝收发器204)和/或调制解调器可以在发送或接收时可能会消耗大量电流,GNSS接收时,CPU进行会话或数据对象加密时,甚至启用安全元件时,也可能会消耗恒定的功率,以防止某些边信道(side-channel)攻击。然而,并且在一些实施例中,通信设备设计中没有单个开关可以具有大于一微安(例如Iq>1μA)的静态电流。即通信设备102的每个开关的静态电流可以小于一微安。然而,将意识到,在本公开的范围内任何静态电流都是可能的。当在处理器处于“STOP”模式时,加上其运行一个或多个串行链接(例如I2C、UART、USB等)和实时时钟(RTC)的能力,通信设备102可能会当空闲时在例如3.3V下汲取小于例如8μA的电流。因此,通信设备102可以为微控制器和其他计算设备提供低功率的蜂窝系绳解决方案。

再次参考图1的示例,并且在一些实施例中,通信集线器可以被配置为通信地耦合到一个或多个通信设备和基于云的服务。如在下面和一些实施例中将更详细地讨论的,通信集线器106可以被配置为提供非常薄的功能层:首先,自动配置并使客户能够将具有类似功能的通信设备(例如通信设备102)聚合到可以监视其操作的通信设备组(例如“机群”)中;以及其次,用“路由”配置这些机群,通过这些路由,从通信设备(例如通信设备102)到达的数据对象(例如JSON格式的数据)可以转发到基于云的服务(例如基于云的服务108)。

如下所述,无线蜂窝收发器204可以被配置为在蜂窝网络上传输数据。例如并且如上所述,无线蜂窝收发器204可以被配置为使用各种通信协议(例如2G、LTE Cat-M、LTECat-NB1等)来发送和接收数据,其中数据与蜂窝塔和/或蜂窝节点(例如eNodeB)之间进行传输。如本领域中已知的,蜂窝节点或塔可以通信地耦合到回程或其他网络以将数据中继到特定目的地。因此,无线蜂窝收发器204可以被配置为通过蜂窝网络向通信集线器106发送数据。

在一些实施例中,通信集线器(例如通信集线器106)通常可以包括软件服务,该软件服务被配置为将一个或多个通信设备(例如通信设备102)组织为一个或多个通信设备组。通信集线器还可将一个或多个路由与一个或多个通信设备组相关联,其中一个或多个路由可被配置为在通信地耦合到一个或多个计算设备的一个或多个通信设备与基于云的服务之间路由一个或多个数据对象,并且可以相对于一个或多个计算设备,异步地经由一个或多个路由在一个或多个通信设备和基于云的服务之间路由一个或多个数据对象。在一些实施例中,并且如将在下面更详细地讨论的,通信集线器106可以部署为单实例超大规模软件即服务(SaaS)服务,也可以部署为服务器上部署的客户自己的专用通信集线器服务实例。

在一些实施例中,通信集线器(例如通信集线器106)可以被配置为管理一个或多个通信设备,其中一个或多个通信设备通信地耦合到一个或多个计算设备。在一些实施例中,一个或多个通信设备中的每个通信设备可以具有唯一的标识符。在一些实施例中,可以为每个通信设备(例如通信设备102)自动分配唯一标识符,和/或可以为每个通信设备手动分配或配置唯一标识符。

在一些实施例中,通信集线器106可以将一个或多个通信设备产品标识符与一个或多个通信集线器项目相关联。通信集线器项目通常可以包括特定于客户的实体,该客户特定实体包括一个或多个通信设备、通信设备组以及与一个或多个通信设备组相关联或分配给一个或多个通信设备组的路由,这些路由定义了来自通信设备(例如通信设备102)的由通信集线器106传送的数据对象的方式。还参考图7的示例管理工具(例如管理工具700),并且在一些实施例中,用户可以创建项目(例如给项目分配名称、创建一个或多个帐户等)。用户然后可以创建一个或多个通信设备产品标识符,通信集线器106将将该标识符与通信集线器项目相关联。例如,用户可以提供一个或多个通信设备产品标识符(例如“product.org.safecast.*”、“product.org.safecast.ninja”、“product.org.safecast.air”等)。在一些实施例中,星号“*”的使用可以包括任何通信设备产品标识符,包括在“*”符号之前的产品标识符的一部分。例如,通过创建通信设备产品标识符“product.org.safecast.*”,任何包含“product.org.safecast.”的通信设备产品标识符将与此项目相关联。尽管已经将星号符号描述为示例符号以指定开放式通信设备产品标识符,但是应当理解,在本公开的范围内可以使用其他符号。

在一些实施例中,通信集线器106可以从一个或多个通信设备接收一个或多个传入通信会话,其中每个传入通信会话包括一个或多个通信设备的产品标识符。例如,假设通信设备102(例如经由JSON对象)将传入通信会话传输到基于云的存储器108,如以下示例所示:

setup()

serial.println{“req”:”service.set”,”product”:”org.safecast.air”,”minutes”:60}

在该示例中,通信集线器106可以从传入通信会话中识别通信设备产品标识符(例如“org.safecast.air”)。在一些实施例中,因为与该项目相关联的通信设备产品标识符,通信集线器106可以将通信设备102与特定的通信集线器项目相关联。然而,将意识到,在本公开的范围内,可以从数据对象中识别其他通信设备产品标识符。

在一些实施例中,通信集线器106可以至少部分地基于与一个或多个通信设备建立的通信会话的产品标识符,来提供一个或多个通信设备以与一个或多个通信设备组进行通信,并路由至基于云的服务。在一些实施例中,提供一个或多个通信设备以与通信集线器本身和一个或多个基于云的服务进行通信可以包括将一个或多个通信设备与一个或多个通信设备组相关联。例如,通信集线器106可以将通信设备102组织或分配给通信设备组(例如用于通信集线器项目的用户定义的默认通信设备组)。如在下面将更详细地讨论的,通信集线器106可以将一个或多个通信设备与一个或多个通信设备、通信集线器和一个或多个基于云的服务之间的一个或多个路由自动相关联。

在一些实施例中,通信集线器106可以将一个或多个通信设备组织成一个或多个通信设备组。还参考图8的示例,并且在一些实施例中,通信地耦合到一个或多个计算设备(例如计算设备104、806、808)的一个或多个通信设备(例如通信设备102、802、804)可以被组织成一个或多个通信设备组(例如通信设备组810)。在一些实施例中,一个或多个通信设备组可以是用户定义的和/或可以由通信集线器106自动组织。

还参考图9至图10的示例,并且在一些实施例中,管理一个或多个通信设备可以包括提供配置成允许用户管理一个或多个的管理一个或多个通信设备组和一个或多个路由的管理工具(例如图形用户界面)。举例来说,可将管理工具(例如管理工具700)提供给用户以用于管理一个或多个通信设备组以及与一个或多个通信设备组相关联的路由。

在一些实施例中,通信集线器(例如通信集线器106)可以被配置为在通信地耦合到一个或多个计算设备的一个或多个通信设备与基于云的服务之间路由一个或多个数据对象。再次参考图8的示例,并且在一些实施例中,一个或多个路由(例如一个或多个路由814)可包括通信设备102、802、804与通信集线器106之间以及通信集线器106与基于云的服务108之间的通信信道。在一些实施例中,一个或多个路由可以使得能够在通信集线器和基于云的服务之间传送一个或多个数据对象。在一些实施例中,路由可以包括一个或多个基于云的服务地址、与基于云的服务相关联的认证信息、JSON转换信息(将在下文中讨论)、用于访问基于云的服务的用户证书(例如用户名和密码),以及用于允许通信集线器将一个或多个数据对象/对数据对象数组的修改路由到基于云的服务的任何其他信息。

参考图10,并且在一些实施例中,路由一个或多个数据对象可以包括将一个或多个通信设备组与一个或多个路由相关联。如图10所示,管理工具700可以被配置为允许用户将一个或多个通信设备组或“机群”与一个或多个项目数据路由(例如,路由1000)相关联。在一些实施例中,一个或多个路由(例如,一个或多个路由814)可以包括被配置为在通信集线器和基于云的服务之间传送一个或多个数据对象的一个或多个服务器。

如上所述,通信集线器106通常可以被部署为软件即服务(SaaS)服务或客户服务器上的服务实例。在通信集线器106被部署为客户服务器上的服务实例的一些实施例中,来自一个或多个通信设备和通信集线器的一个或多个数据对象的路由至少部分地通过互联网连接。例如,当通信集线器被部署为客户服务器上的服务实例时,通信设备到通信集线器的通信可以在互联网上(例如经由HTTP API)发生。在通信集线器106被部署为SaaS服务的另一示例中,来自一个或多个通信设备和通信集线器的一个或多个数据对象的路由至少部分地通过不可访问互联网的连接进行。换句话说,通信设备到通信集线器的通信在逻辑上可以是“断开互联网”。例如,数据对象可以被配置为在安全信道中从蜂窝运营商直接行进到虚拟私有云(VPC)(例如经由非互联网连接)。以这种方式,来自一个或多个通信设备和通信集线器的一个或多个数据对象的路由可能受到保护,以防止基于互联网的攻击漏洞,因为通信设备不可IP寻址。

在一些实施例中并且还参考图11的示例,路由一个或多个数据对象可以包括每个设备事件流(例如每个设备事件流1102),过滤和数据对象到数据对象转换(过滤和JSON到JSON转换1104)以及选择性路由(例如路由1106)。在一些实施例中,并且还参考图12,每个设备事件流1102可以包括从通信设备接收数据对象(例如经由HTTP API(例如基于互联网的通信)或设备隧道(例如非基于互联网的通信)。在经由设备隧道接收到的数据对象的示例中,事件前设备流1102可以将数据对象记录在临时会话日志(例如临时会话日志1202)中。如果经由HTTP API或设备隧道接收到数据对象,则事件前设备流1102可以将数据对象添加到存储在通信集线器106中的至少一个数据对象阵列(例如数据对象阵列存储器1204)。当从基于云的服务108传送数据对象时,可以反向上述过程。例如,可以从基于云的服务接收数据对象,将其添加到存储在通信集线器106中的至少一个数据对象阵列,并经由HTTP API或设备隧道将其传输到计算设备。

在一些实施例中,路由一个或多个数据对象可以包括使通信集线器的至少一个数据对象阵列的至少一部分与通信地耦合到一个或多个通信设备的一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步。在一些实施例中,“同步”通常可以包括创建、删除和更新数据对象阵列。在一些实施例中,并且如将在下面更详细地讨论的,同步可以是单向向上/向外(例如仅到基于云的服务/未在通信设备中维护),单向向下/向内(例如仅到通信设备/不在通信集线器中维护)、或基于数据阵列的数据对象扩展双向同步(例如在通信设备和通信集线器中维护)。例如,如图12所示,当通信集线器106接收到数据对象时,可以将存储在数据对象阵列存储器1204中的通信集线器106的至少一个数据阵列对象的至少一部分与接收到的数据对象同步。

在一些实施例中,将通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步可以包括:双向同步通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分。例如并且再次参考图6,数据对象536可以是双向复制的数据对象,使得数据对象536作为数据对象510复制到数据对象阵列504中。

在一些实施例中,将通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步可以包括:使通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步。在该示例中,将通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步可以是单向的。在一些实施例中,响应于同步一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分(例如添加或修改一个或多个通信设备的至少一个对应的数据对象阵列),通信集线器可以被配置为删除通信集线器的至少一个数据对象阵列的至少一部分。例如,数据对象552可以是仅入站数据对象,使得当数据对象552被发送到通信集线器106的数据对象阵列508时,数据对象552可以作为数据对象526被存储在数据对象阵列508中,并且可以从数据对象阵列534中删除数据对象552(例如如数据对象534周围的虚线所示)。

在某些实施例中,使通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步可以包括:使通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步。在某些实施例中,响应于从一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分同步通信集线器的至少一个数据对象阵列的至少一部分(例如添加或修改通信集线器的至少一个数据对象阵列),通信设备可以被配置为删除通信设备的至少一个对应的数据对象阵列的至少一部分。例如,通信设备102可以包括具有可以被发送到通信集线器106的数据对象516的数据对象阵列506。在该示例中,数据对象516可以是仅出站数据对象,使得当数据对象516被发送到通信集线器106的数据对象阵列532时,数据对象516可以作为数据对象542存储在数据对象阵列532中,并且数据对象516可以从数据对象阵列506中被删除(例如如数据对象516周围的虚线所示)。

在一些实施例中,使通信集线器的至少一个数据对象阵列的至少一部分与一个或多个通信设备的至少一个对应的数据对象阵列的至少一部分的同步,其至少部分地基于与一个或多个数据对象阵列中的每一个相关联的数据对象扩展。例如,并且如上所述,可以至少部分地基于与一个或多个数据对象阵列中的每一个相关联的数据对象扩展来定义数据对象阵列。以这种方式,数据对象扩展可以定义如何在通信集线器106和通信设备102之间移动和/或复制数据。

在一些实施例中,并且如上所述,路由一个或多个数据对象可以包括从通信地耦合到一个或多个计算设备的一个或多个通信设备接收一个或多个数据对象(例如JSON对象)。在一些实施例中,并再次参考图12的示例,通信集线器可以过滤和转换一个或多个数据对象(例如JSON对象)。在一些实施例中,用户可能希望提供用于转换从通信设备接收到的数据对象(例如JSON对象)和/或用于转换正被发送到通信设备的数据对象(例如JSON对象)的转换逻辑。再次参考图9的示例,并且在一些实施例中,管理工具700可以提供用户界面的一部分(例如窗口1002),以允许用户定义一个或多个JSON到JSON转换。在该示例中,用户可以在用户界面的另一部分(例如窗口1004)中选择一个或多个数据对象,以使得基于用户定义的转换来转换特定的数据对象。在一些实施例中,用户可以在另一窗口(例如窗口1006)中选择一个或多个通信设备组或“机群”,使得可以根据窗口1002中提供的转换来转换从所选通信设备组的窗口1004中选择的数据对象。虽然已经提供了各种窗口的示例,但是应当理解,可以以各种方式来配置用户界面,以促进用户在本公开范围内选择通信设备组、数据对象和数据对象转换(例如JSON转换)。

在一些实施例中,并再次参考图11的示例,通信集线器可以选择性地将一个或多个数据对象路由到基于云的服务和从基于云的服务路由(例如选择性路由1106)。再次参考图10的示例,并且在一些实施例中,可以确定一个或多个路由以用于在通信集线器106和基于云的服务108之间路由数据对象。如以上关于数据对象转换所讨论的,可以选择特定路由或将特定路由与特定数据对象相关联(例如经由窗口1004)和/或将特定通信设备组与特定数据对象(例如经由窗口1006)相关联。

在一些实施例中,可以使用一个或多个API向基于云的服务108发送数据对象或从基于云的服务108发送数据对象。再次参考图8的示例,并且在一些实施例中,一个或多个API(例如API 816)可以经由HTTP或具有可下载密钥的HTTP被调用。在一些实施例中,API816可以包括带有数据对象的HTTP GET或POST,该数据对象位于所发布或返回的内容的主体中。在一些实施例中,数据对象可以作为JSON对象被发送到基于云的服务108。例如,数据对象或JSON对象可以传输到基于云的存储器108,如以下示例所示:

POST

{"req":"note.add","file":"air.qo","device":"imei:8664250","product":"com.acme.airmon","when":1544643332,”where”:”JMC3+56”,”body”:{temp”:72,”humid”61}}

以这种方式,可以经由计算设备102和通信集线器106的组合以最小的用户实现和跨蜂窝通信将由计算设备104生成的数据对象通信到基于云的服务108。尽管在以上示例中讨论了JSON对象,但应理解,在本公开的范围内,可以经由API 816传送其他数据对象。

附图中的流程图和框图可以示出根据本公开的各种实施方式的系统、方法和计算机程序产品的可能的实施方式的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以代表代码的模块、区段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图说明的每个方框以及框图和/或流程图说明中的方框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或专用硬件和计算机指令的组合。

本文所使用的术语仅出于描述特定实施方式的目的,并且无意于限制本公开。如本文所用,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外明确指出。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定存在所述特征、整数、步骤、操作、元件和/或组,但不排除存在或增加一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组。

所附权利要求书中的所有装置或步骤加上功能元件的对应结构、材料、作用和等同物旨在包括用于与具体要求保护的其他要求保护的元件组合地执行功能的任何结构、材料或作用。已经出于说明和描述的目的给出了本公开的描述,但是其并不旨在是穷举的或将本公开限于所公开的形式。在不脱离本公开的范围和精神的情况下,许多修改和变型对于本领域普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本公开的原理和实际应用,并使本领域的其他普通技术人员能够理解本公开的各种实施方式,其中各种修改适合于预期的特定用途。

已经描述了许多实施方式。因此,已经详细地并且参考其实施方式描述了本申请的公开,将显而易见的是,在不脱离所附权利要求书中限定的本公开的范围的情况下,可以进行修改和变化。

相关技术
  • 用于连接计算设备和基于云的服务的模块上的数据系统(DSoM)
  • 用于连接计算设备和基于云的服务的模块上的数据系统(DSoM)
技术分类

06120112852449