Data System on Modules (DSoM) for connecting computing devices and cloud-based services
By using communication hubs in an IoT environment to couple multiple communication devices and cloud-based services, cellular communication complexity and interoperability issues are solved, and efficient data routing and synchronization is achieved, suitable for large-scale IoT applications.
Patent Information
- Application Number
- CN201980061857.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-02-20
- Filing Date
- 2019-07-25
- Publication Date
- 2025-05-23
- Estimated Expiration
- 2039-07-25
AI Technical Summary
The prior art is difficult to effectively solve the complexity of cellular communications and interoperability between devices in large-scale Internet of Things (IoT), especially when there are numerous devices, complex protocols and limited resources.
It provides a communication hub that is configured to communicate with multiple communication devices and cloud-based services through a software-as-a-service (SaaS) service or server form, implements asynchronous routing and synchronization of data objects, simplifying certificate management and connection processes.
Through the configuration of the communication hub, the complexity of cellular communication is simplified, the interoperability between devices is improved, and the difficulty of development and management is reduced. It is suitable for large-scale IoT environments.
Smart Images

Figure CN112912862B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This patent application claims priority to U.S. Provisional Application Serial No. 62 / 703,054 filed on July 25, 2018 and U.S. Provisional Patent Application Serial No. 62 / 807,840 filed on February 20, 2019, the entire contents of which are incorporated herein by reference. Background Art
[0003] The cellular industry's view of communications is comprised of two core assumptions. First, global interoperability is paramount (more important than speed) and regulations and standards committees are how technology is defined. Second, customers will use whatever they produce, industry and government will design and build, industry will always use the metered cellular business model, and customers will do the same in the future. Customers have zero involvement in the technology or its definition, and zero contact with developers.
[0004] The computing / IT industry's view of communications is often governed by two core assumptions: First, innovators, builders, and industry are how technology is defined. Developers know best and should define the forward-thinking of architectures for powerful, high-end platforms, rather than focusing too much on platforms that have underperformed in the past. Second, there is a world of disparate devices, protocols, and networks, and the primary job of the dominant platform providers is to create a generic abstraction that will support any device and any application and treat all networks as pipes that publicly provide stream sockets.
[0005] Neither industry has fully embraced the fact that a massive cellular-centric Internet of Things (IoT) – billions of devices – is unacceptable from either perspective. The low-level nature of AT commands and modem modules, along with the limitations of standards-based and custom-negotiated cellular protocols, may be too complex and unscalable. Furthermore, certificate management and the high-level, HTTPS-based protocols required to connect to the cloud are notoriously complex. The complexity of the high-level application programming interface (API) is unrealistic for embedded developers trying to accomplish extremely simple things on powerful, inexpensive microcontrollers. Summary of the invention
[0006] In one example implementation, a communication hub is provided that is configured to be communicatively coupled to one or more communication devices and a cloud-based service. The communication hub may be configured to organize the one or more communication devices into one or more communication device groups, wherein the one or more communication devices are communicatively coupled to one or more computing devices. The communication hub may be configured to associate one or more routes with the one or more communication device groups, wherein the one or more routes are configured to route one or more data objects between the one or more communication devices communicatively coupled to the one or more computing devices and the cloud-based service. The communication hub may be configured to asynchronously route the one or more data objects between the one or more communication devices and the cloud-based service via the one or more routes relative to the one or more computing devices.
[0007] One or more of the following exemplary features may be included. The communication hub may be a software as a service (SaaS) service. The communication hub may be a server. The one or more computing devices may be microcontrollers. The communication hub may include at least one data object array of the one or more data objects. Routing the one or more data objects includes synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices communicatively coupled to the one or more computing devices. Synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices may include bidirectionally synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. Synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices may include synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. Synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices may include synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. The synchronization of at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices may be based at least in part on a data object extension associated with each of the one or more data object arrays. The one or more data objects may be Java Script Object Notation (JSON) objects. Routing the one or more data objects may include converting the one or more JSON objects. The one or more routes may enable the one or more data objects to be transmitted between the communication hub and a cloud-based service, and may include one or more cloud-based service addresses. Organizing the one or more communication devices may include providing a management tool configured to allow a user to organize one or more communication device groups and associate one or more routes with the one or more communication device groups.
[0008] In another example implementation, a communication hub is provided that is configured to be communicatively coupled to one or more communication devices and one or more cloud-based services. The communication hub may be configured to: associate one or more communication device product identifiers with one or more communication hub items, receive one or more incoming communication sessions from the one or more communication devices, wherein each incoming communication session includes a product identifier of the one or more communication devices, wherein the one or more communication devices are communicatively coupled to one or more computing devices, and based at least in part on the product identifiers of the communication sessions established with the one or more communication devices, provide for the one or more communication devices to communicate with one or more groups of communication devices and route to the cloud-based service.
[0009] One or more of the following example features may be included. One or more communication hub projects may include one or more communication device groups and one or more routes associated with the one or more communication device groups, the routes being configured to route data objects between the one or more communication devices and one or more cloud-based services. Providing one or more communication devices to communicate with the communication hub itself and the one or more cloud-based services may include associating the one or more communication devices with the one or more communication device groups. The one or more data objects may be Java Script Object Notation (JSON) objects. The communication hub may include at least one data object array of the one or more data objects. Routing the one or more data objects may include synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices communicatively coupled to the one or more computing devices.
[0010] In another example implementation, a communication system for communicatively coupling a computing device with a cloud-based service is provided. The communication system may include: one or more computing devices communicatively coupled to one or more communication devices, and each computing device includes a wireless cellular transceiver, and a communication hub configured to communicatively couple to the one or more communication devices and the cloud-based service. Each of the one or more communication devices may be configured to one or more of: send one or more data objects from the computing device to the cloud-based service, and receive one or more data objects from the cloud-based service. Sending the one or more data objects from the computing device to the cloud-based service may include receiving at least one data object from the computing device, modifying at least one data object array of the one or more data objects stored in a memory of the communication device based at least in part on the received at least one data object, and asynchronously sending at least a portion of the modified at least one data object array to the cloud-based service via the wireless cellular transceiver relative to the computing device. Receiving one or more data objects from the cloud-based service can include: asynchronously receiving at least a portion of at least one array of data objects from the cloud-based service via the wireless cellular transceiver relative to the computing device, modifying one or more data objects of at least one array of data objects stored in a memory of the computing device based at least in part on at least a portion of the received array of at least one data objects, and asynchronously making the one or more modified data objects in the at least one array of data objects available to the computing device relative to the communication of the communication device with the cloud-based service. The communication hub can be configured to: organize the one or more communication devices into one or more communication device groups, associate one or more routes with the one or more communication device groups, wherein the one or more routes are configured to route the one or more data objects between the one or more communication devices communicatively coupled to the one or more computing devices and the cloud-based service, and asynchronously route the one or more data objects between the one or more communication devices and the cloud-based service via the one or more routes relative to the one or more computing devices.
[0011] The details of one or more example embodiments are set forth in the accompanying drawings and the following description. Other possible example features and / or possible example advantages will become apparent from the specification, drawings, and claims. Some embodiments may not have those possible example features and / or possible example advantages, and such possible example features and / or possible example advantages are not necessarily required for certain embodiments. BRIEF DESCRIPTION OF THE DRAWINGS
[0012] Figure 1 is an example schematic diagram of a communication system according to one or more example embodiments of the present disclosure;
[0013] Figures 2 to 4 is an example schematic diagram of a communication device communicatively coupled to a computing device and a wireless cellular transceiver according to one or more example embodiments of the present disclosure;
[0014] Figure 5 is an example schematic diagram of a communication system having one or more arrays of data objects according to one or more example embodiments of the present disclosure;
[0015] Figure 6 is an example schematic diagram of data objects of an array of data objects synchronized between a communication device and a communication hub to define a distributed replicated spatiotemporal database according to one or more example embodiments of the present disclosure;
[0016] Figure 7 is an example schematic diagram of a management tool associated with a communication hub according to one or more example implementations of the present disclosure;
[0017] Figure 8 is an example schematic diagram of a communication system having one or more arrays of data objects according to one or more example embodiments of the present disclosure;
[0018] Figures 9 and 10 is an example schematic diagram of a management tool associated with a communication hub according to one or more example embodiments of the present disclosure; and
[0019] Figure 11 to Figure 12 is a schematic diagram of a communication hub according to one or more example embodiments of the present disclosure.
[0020] Like reference numbers in the various drawings indicate like elements. DETAILED DESCRIPTION
[0021] As mentioned above, there are two different system architectures for cellular communications today, both of which are widely adopted. Both are complex. For example, the cellular industry view is largely made up of two core assumptions. First, global interoperability is paramount (more important than speed) and regulations and standards committees are how technology is defined. Second, customers will use whatever they produce, industry and government will design and build, industry will always use the metered cellular business model, and customers will do the same in the future. Customers have zero involvement in the technology or its definition, and zero contact with developers.
[0022] The computing / IT industry's view of communications is often governed by two core assumptions: First, that innovators, builders, and industry are how technology is defined. Developers know best and should be forward-thinking in defining architectures for powerful high-end platforms rather than focusing too much on platforms of the past that have underperformed. Second, there is a world of disparate devices, protocols, and networks, and the dominant platform providers' primary job is to create a generic abstraction that will support any device and any application and treat all networks as pipes that expose stream sockets. For example, there is no focus on 64kbps cellular as a transport, nor on 64KB microcontrollers at the edge.
[0023] Neither industry has fully embraced the fact that a massive cellular-centric Internet of Things (IoT) – billions of devices – is unacceptable from either perspective. The low-level nature of AT commands and modem modules and the limitations of standards-based and custom-negotiated cellular protocols can be too complex and unscalable. In addition, the complexity of certificate management and the advanced Linux / Windows-based application programming interfaces (APIs) required to connect to the cloud are unrealistic for embedded developers trying to do extremely simple things on powerful, inexpensive microcontrollers.
[0024] As will be discussed in more detail below, embodiments of the present disclosure may include a data system on a module (DSoM), a data system in a package (DSiP), or a communication device and / or a communication hub configured to communicatively couple a microcontroller with a cloud-based service. As will be discussed in more detail below, embodiments of the present disclosure may provide one or more of the following features: a data system on a module (DSoM) with a modem / wireless cellular transceiver, a prepaid cellular module, storage, an IP and TLS stack, a secure element and keys / certificates, a GPS, and an accelerometer that can provide connectivity without having to deal with SSIDs, passwords, access points, gateways, carriers, or SIMs; security through hardware encryption / keys and encrypted "non-internet" communications without any configuration challenges; battery-powered (μA) cellular phones without the complexity of managing modems, connections, queues, or storage; extremely streamlined infrastructure as a service (IaaS) that routes data directly to where it belongs (e.g., Amazon Web Services (AWSTM), AzureTM, Google Cloud StorageTM, or a custom cloud); virtually no barriers, few barriers for all skill levels. (AWS is a trademark of Amazon.com, Inc. in the United States and / or other countries; Azure is a registered trademark of Microsoft Corporation in the United States and / or other countries; and Google Cloud Storage is a registered trademark of Google LLC in the United States and / or other countries.) In this manner and as will be discussed in more detail below, embodiments of the present disclosure may provide a distributed replicated spatiotemporal database encapsulated on a secure communications module and integrated with an Internet-based communications hub.
[0025] refer to Figure 1, and in some embodiments, a communication system (e.g., communication system 100) may generally include a communication device (e.g., communication device 102) configured to be communicatively coupled to a computing device (e.g., computing device 104), and a communication hub (e.g., communication hub 106) configured to be communicatively coupled to a cloud-based service (e.g., cloud-based service 108). As will be discussed in more detail below, an application may be written on a computing device (e.g., computing device 104), and data (e.g., data object 110) from a computing device (e.g., computing device 104) may be formatted to communicate with a communication device (e.g., communication device 102) and transmitted to / from a communication hub (e.g., communication hub 106). The communication hub (e.g., communication hub 106) may transmit data to / from a cloud-based service (e.g., cloud-based service 108) or application. In some embodiments, power and storage management, provisioning and security, and software updates, management of wireless bands and carriers, regulatory certifications, business models, etc., for configuring a computing device (e.g., a microcontroller) to communicate with cloud-based services can all be managed by the communication device and communication hub.
[0026] In some embodiments, the communication device may communicatively couple the computing device with the cloud-based service. In some embodiments, the computing device may include a microcontroller. A microcontroller or "MCU" may generally include a computing device on a single integrated circuit that runs the application logic of the product. The MCU may be integrated with a vendor's software development kit (SDK) or in a minimal operating environment (e.g., FreeRTOS, Mbed TM IoT device platforms, etc. (Arm is a registered trademark of Arm Holdings in the U.S. and / or other countries). In some embodiments, even though the MCU may share many aspects of its hardware design with high-end components (such as single-board computers), the MCU may not run (e.g., any operating system based on the Linux kernel.) (Linux is a registered trademark of Linus Torvalds in the United States and / or other countries.) As is known in the art, an MCU may generally include one or more CPU cores, memory (e.g., RAM), input / output peripherals, etc.
[0027] In some embodiments, the computing device may include a single board computer or "SBC". The SBC may typically include any OS based on Linux (or requiring a memory management unit (MMU), such as or AndroidTM). (Microsoft and Windows are registered trademarks of Microsoft Corporation in the United States and / or other countries or regions). However, it will be understood that the SBC can use and / or install other operating systems, including but not limited to: OS Red Mobile, Chrome OS, Blackberry OS, Fire OS or custom operating systems. (Mac and OS X are registered trademarks of Apple Inc. in the U.S. and / or other countries; Red Hat is a registered trademark of Red Hat Corporation in the U.S. and / or other countries).
[0028] Cloud-based services may generally include any service or application provided to a user on demand from a cloud computing provider's servers via the Internet, as opposed to services provided from an entity's own local servers (e.g., a customer's servers). Examples of cloud services may generally include online data storage and backup solutions, web-based email services, hosted office suites and document collaboration services, database processing, hosted technical support services, etc. It will be appreciated that any cloud-based service may be used within the scope of the present disclosure.
[0029] In some embodiments, the communication device may be communicatively coupled to the computing device. As described above, in some embodiments, the computing device may be a microcontroller. In some embodiments, the communication device may be a data system on a module (DSoM) or a data system in a package (DSip). As is known in the art, a DSoM may typically include board-level circuitry that integrates system functionality in a single module, while a DSiP may typically include many integrated circuits packaged in a single chip carrier package. In some embodiments, the communication device may be configured to asynchronously hierarchically and manage secure communication of data packets (e.g., data objects) between a client's computing device and a cloud-based service on a cellular computing in a power-saving manner.
[0030] In some embodiments, the communication device may not be an application processor, as it may not host customer application code. In some embodiments, the communication device may be an intelligent peripheral device focused on two core tasks: 1) bidirectional asynchronous secure data communication of data objects; 2) power management of the peripheral device.
[0031] In one example, a communication device can be packaged in a compact industry standard M.2 3030 (NGFF) Key E form factor (30 square millimeters) that is designed to be embedded in a variety of situations. In some embodiments, the M.2 form factor can have an embedded SIM (eSIM) with an integrated SIM switch, allowing hardware designers to use software-selectable external SIMs as needed. In some embodiments, the communication device may include one or more processors. For example, a request processor (e.g., an STM32L4S5) of a communication device can interface with circuits in the range of 1.7-3.6V, and the socket can power the processor independently of the main power supply voltage to accommodate various design requirements. Although the example form factors and processors have been described above with specific ranges of operating voltages, it should be understood that other form factors, processors, and voltage operating ranges can be used within the scope of the present disclosure.
[0032] In some embodiments, and as will be described in more detail below, the functionality of the communication device may be implemented using one or more processors of the communication device.
[0033] In some embodiments, the main power supply voltage of the communication device may be referred to as "V+" and may be used for a wireless cellular transceiver (e.g., a Quectel BG96 modem and associated circuitry). Although an example wireless cellular transceiver has been discussed, it will be appreciated that other wireless cellular transceivers and / or modems may be used within the scope of the present disclosure. In some embodiments, the onboard regulator of the communication device may be configured for direct connection to, for example, a LiPo battery, and may provide, for example, any voltage in the range of 2.5-5.5V. However, it will be appreciated that other power sources having different voltage ranges (e.g., non-battery power sources, other types of batteries, solar power sources, etc.) may be used within the scope of the present disclosure.
[0034] Also refer to Figure 2 In some embodiments, the communication device 102 can be configured to be communicatively coupled to the computing device via a serial link. In this way, the communication device 102 can be coupled to the computing device 104 via two lines. For example, the computing device (e.g., MCU) can have the option of sending a request to the communication device using a serial link (e.g., serial link 202). In some embodiments, the serial link (e.g., serial link 202) can be a universal asynchronous receiver / transmitter (UART), a universal serial bus (USB), an inter-integrated circuit (I2C), a serial peripheral interface (SPI), One or more of a controller area network (CAN) bus, a peripheral component interconnect high speed (PCIe), or any other serial link / protocol. In some embodiments, a serial port of a communication device (e.g., communication device 102) can be a request / response driven by a computing device (e.g., computing device 104). In some embodiments, communication device 102 can be communicatively coupled to computing device 104 by configuring communication device 102 to act as an I2C slave device. As known in the art, I2C is a standard bidirectional interface with a controller configured to communicate with a slave device. In some embodiments, I2C can provide an extremely low power interface for communication between computing device 104 and communication device 102.
[0035] In one example, a USB connector can be added as a UART replacement and can allow communication devices to communicate with The host is used together. In some embodiments, the serial link baud rate can be fixed or variable. In one example, the baud rate can be fixed to achieve extremely low power consumption by using an internal low-power UART operating at a fixed baud rate (e.g., 9600bps). Although an example of 9600bps has been provided, it should be understood that any baud rate can be used within the scope of the present disclosure.
[0036] In some embodiments, the communication device 102 may support a primary serial link with a fixed baud rate and a secondary or auxiliary serial link with automatic baud rate detection. In some embodiments, the interface or link may be enabled by setting the "AUXWAKE" pin of the communication device 102 to high. However, it will be appreciated that enabling the secondary serial link may be accomplished in a variety of ways (e.g., pressing a button, setting one or more pins to high or low, etc.). In some embodiments of the communication device 102 having a USB interface, the D+ / D- lines may be used to transfer data between the communication device 102 and the computing device 104.
[0037] In some embodiments, the communication device may include a wireless cellular transceiver. In some embodiments, the wireless cellular transceiver (e.g., wireless cellular transceiver 204) may be a module of the communication device 102. The wireless cellular transceiver may generally include any wireless cellular transceiver for wireless wide area telecommunications. Examples may include, but are not limited to, LTE-M, LTE Cat M1, narrowband Internet of Things (NB-IoT), LTE Cat NB1, 3G, 2G, etc. As is known in the art, LTE-M and NB-IoT are low power wide area network (LPWAN) radio technology standard types developed by 3GPP to enable a wide range of cellular devices and services (particularly for machine-to-machine and Internet of Things applications). Although specific exemplary cellular and radio technology standards have been provided, it should be understood that any cellular communication standard may be used within the scope of the present disclosure.
[0038] In some embodiments, the wireless cellular transceiver 204 can be configured to be communicatively coupled to a wireless cellular transceiver antenna (e.g., antenna 206) and / or an antenna array configured for wireless cellular communication. In some embodiments, the wireless cellular transceiver antenna 206 can include one or more omnidirectional and / or directional antennas.
[0039] In some embodiments, the communication device 102 may be coupled to a carrier board (e.g., carrier board 210). The carrier board may generally include circuits configured to interface the communication device (e.g., communication device 102) with other computing devices (e.g., computing device 104). In some embodiments, the carrier board 210 may enable rapid integration of a communication device for a specific user. For example, some carrier boards (e.g., carrier board 210) may focus on exposing functions with, for example, 3.3V logic via header pins for rapid breadboard prototyping. Other carrier boards (e.g., carrier board 210) may have an integrated omnidirectional LTE antenna (e.g., antenna 206) and a global navigation satellite system (GNSS) antenna (e.g., antenna 208) pre-certified by the carrier, and have a flat back and toothed connection so that the carrier board can be soldered to a motherboard in an industrial or mass production environment. For example, a carrier board (e.g., carrier board 210) may not include a built-in wireless cellular transceiver antenna 206 and / or GNSS antenna 208. In another example, a carrier board (e.g., carrier board 210) may include a wireless cellular transceiver antenna and / or a GNSS antenna. It will be appreciated that various carrier boards may be used in different configurations within the scope of the present disclosure.
[0040] In some embodiments, a carrier board (e.g., carrier board 210) may include a micro USB connector configured to provide power to the communication device and to relay data objects to a cloud-based service. For example, by simply plugging this USB connector into another computing device (e.g., a Raspberry Pi™), a user can type commands into any serial terminal program. (Raspberry Pi is a registered trademark of the Raspberry Pi Foundation in the United States and / or other countries or regions).
[0041] In some embodiments, a carrier board (e.g., carrier board 210) may include a micro switch configured to provide a varying voltage. For example, the micro switch may enable both 3.3V and 1.8V operation. Although example voltages have been provided, it should be understood that any voltage may be used within the scope of the present disclosure.
[0042] Reference again Figure 3 , and in some embodiments, the communication device 102 may include one or more processors (e.g., processor 302) communicatively coupled to a wireless cellular transceiver and / or a wireless cellular modem (e.g., wireless cellular transceiver 204). Figure 3 302 is shown as being separate from the wireless cellular transceiver 204, but in some embodiments, the processor 302 may be an integrated processor of the wireless cellular transceiver 204. Alternatively, the processor 302 may be physically separate from the wireless transceiver 204. For example, and in some embodiments, the processor 302 may be configured to be communicatively coupled to the wireless cellular transceiver 204 via the serial link 304. In some embodiments, the wireless cellular transceiver 204 may be exclusively "owned" and controlled by the communication device 102. For example and as described above, the power consumption of the communication device 102 may depend at least in part on the duty cycle and broadcast behavior of the wireless cellular transceiver 204. For example, while the current consumption may typically be in the range of 0-250 mA when the wireless cellular transceiver is active, the current consumption may soar to nearly 2 A within a few milliseconds when in an area where GSM is required to be used. As such, the voltage input or "VIN" of the communication device 102 may be directly connected to a battery or other power source capable of producing such a brief spike.
[0043] In some embodiments, the communication device can be configured to enable and disable power to its wireless cellular transceiver. In one example, the communication device 102 includes a processor separate from the wireless communication device, such as Figure 3As shown, the communication device 102 may include a power control circuit (e.g., power control circuit 306) coupled to one or more pins (e.g., "MDM-EN" pin) that is configured to selectively enable and / or disable a power input (e.g., "VIN") of the wireless cellular transceiver 204. In this manner, the communication device 102 may control the power of the wireless cellular transceiver / modem to perform duty cycle management.
[0044] In some embodiments, the communication device can be configured to enable and / or disable power to the computing device. Figure 4 As shown in the example of , in some embodiments, the communication device 102 may include a power control circuit 402 that is coupled to one or more pins (e.g., a "MCU-EN" pin) that is configured to selectively enable a power input (e.g., a "VIN" pin) of the computing device 104. For example, a software scheduling function of the communication device may allow control of the duty cycle of the computing device. In some embodiments, the computing device and the communication device may be configured to enter a "deep sleep" mode without periodic polling via a link 404 between the computing device 104 and the communication device 102. For example, when incoming tracking data is received from a cloud-based service and available for processing by the computing device, a software option may be provided to the computing device 104 to indicate a specific array of data objects for tracking, and one or more pins (e.g., a "WAKE-OUT" pin) of the communication device 102 may be asserted. The array of data objects may be user-defined and / or automatically defined (e.g., by a default setting). This configuration may allow significant power savings by only waking up the computing device 104 when data is received from the cloud-based service.
[0045] In some embodiments, the communication device 102 may generally be in a sleep state waiting for a timer and / or commands from the computing device 104 to pass through the serial link 202. In some embodiments, the computing device 104 may assert one or more pins (e.g., a “WAKE-IN” pin) when it knows that it will not issue any commands to the communication device 102. In this configuration, the serial link 202 may be disabled to save more power.
[0046] In some embodiments, the communication device may be configured to receive at least one data object from the computing device. The data object may generally include a data packet configured to communicate information to and from the computing device. In some embodiments, and as will be discussed in more detail below, the computing device 104 may provide a communication session data object that does not contain data for a cloud-based service but that may be used to configure the connection of the communication device 102 to the cloud-based service 108. Referring again to Figure 1, and in some embodiments, computing device 104 may send (e.g., via serial link 202) at least one data object to communication device 102. In some embodiments, computing device 104 may include one or more sensors, and / or controls configured to generate data to be stored in a cloud-based service.
[0047] In some embodiments, at least one data object may be a Java Script Object Notation (JSON) object. As known in the art, JSON is an open standard file format that uses human-readable text to transmit data objects consisting of attribute-value pairs and array data types (or any other serializable values). In some embodiments, a JSON object may include one or more JSON requests and / or one or more JSON responses. As will be discussed in more detail below, data generated by a computing device may be transmitted to a communication device as a JSON request including a data object to be stored in a cloud-based service. For example, computing device 104 may be configured to encapsulate data as a combination of an optional payload and an optional body with one or more attributes (e.g., the time when a data object is created, the location where a data object is created, the computing device that creates the data object, etc.). The payload may typically include, for example, a JSON string (e.g., "payload":"YWJHhLW0tLW0tLW0tLW0tLGt5eg==") containing a base 64 encoding of any application data. The body may typically include a JSON object containing any application-based / cloud-based service data (e.g., "body":{"temp":34.2,"alert":true,"particle":{"mass":[5.1,12.32],"count"]}}). Although the above examples include JSON objects, it should be understood that other data object formats are possible and within the scope of the present disclosure.
[0048] In some embodiments, the communication device 102 may be configured to provide a data object to a cloud-based service using two or more JSON requests. In one example, a data object may be provided to a cloud-based service using only two JSON requests. For example, when the computing device 104 boots up, it may send a JSON request to the communication device 102 through its serial port (e.g., via serial link 202) to configure 1) an identifier for the computing device so that the cloud-based service knows which computing device is providing the data; and 2) a maximum amount of time that data should be allowed to remain on the communication device before it is sent in batches with other temporarily stored data to the cloud-based service. An example of these JSON data objects or commands that may be received is shown below, where the example computing device is configured to monitor, for example, air humidity:
[0049] setup()
[0050] serial.println{"req":"service.set","product":"com.acme.airmon","minutes":60}
[0051] loop()
[0052] serial.println
[0053] {"req":"note.add","file":"air.qo","body":{"temp":72,"humid":61}}
[0054] As described above, without further setup, the "loop()" command may allow a computing device to issue a simple JSON command to add a JSON data object to a collection of similar data (e.g., an array of data objects) stored in a communication device. In this example, the ".qo" in "air.qo" may represent an "outbound queue," while "air" may be a user-defined name. As shown in the above examples, in some embodiments, the "body" of the data object may be completely free-form JSON that may be interpreted by a cloud-based service without being constrained by a schema. Although the above examples discuss receiving a data object from a computing device when the computing device is booted, it should be understood that a data object may be received from a computing device at any time while the computing device is operating.
[0055] In some embodiments, the data object can be configured to provide information about the computing device, communication device, communication hub, and / or cloud-based service. For example, the data object can be configured to request and return environment variables for service configuration, return current service configuration parameters, display whether the communication device is connected, disconnected, or in an intermediate state, manually initialize synchronization of the data object, display information about the last synchronization, send "real-time" messages to or from a service administrator, and so on.
[0056] Also refer to Figure 5, and in some embodiments, the communication device may be configured to modify at least one data object array of one or more data objects stored in a memory of the communication device based at least in part on the received at least one data object. The data object array may typically include a persistent file containing an array of data objects that is automatically created when the first data object is added. Thus, in some embodiments, the data object array may be created when the communication device 102 receives a data object. In some embodiments, names may be assigned to the data object arrays. These names may be arbitrary and / or may be associated with the generation of data objects of the data object arrays (e.g., data objects associated with a particular sensor, etc.). As Figure 5 As shown, a set of data object arrays (e.g., set of data object arrays 502) may be stored in a memory of the communication device 102. In some embodiments, the set of data object arrays may include at least one data object array (e.g., data object arrays 504, 506, 508). In some embodiments, each of the at least one data object array may include one or more data objects (e.g., data objects 510, 512, 514, 516, 518, 520, 522, 524, 526). As will be discussed in more detail below, the communication hub 106 may similarly include a set of data object arrays (e.g., data object array 528) including at least one data object array (e.g., data object arrays 530, 532, 534). In this example, data object array 530 may include data objects 436, 438, 540; data object array 532 may include data objects 542, 544, 546; and data object array 534 may include data objects 548, 550, 552.
[0057] In some embodiments, an array of data objects (e.g., data objects 110) may include data object extensions that determine certain properties of the data objects. For example, a data object extension (e.g., ".db") may indicate that the data object is a database object that can be fully replicated between a cloud-based service and a communication device. In some embodiments, database extensions may be generally used to maintain configuration and status information. In another example, a data object extension (e.g., ".qo") may indicate that the data object is an outbound-only data object that is only sent from the communication device 102 to the communication hub 106. Once these data objects are transmitted to the communication hub 106, they may be deleted from the array of data objects within the communication device 102. In another example, a data object extension (e.g., ".qi") may indicate that the data object is an inbound-only data object that is sent from the communication hub 106 to the communication device 102. Once these data objects are transmitted to the communication device 102, they may be deleted from the array of data objects within the communication hub 106. Although several exemplary data object extensions have been described above, it should be understood that other data object extensions are possible within the scope of the present disclosure.
[0058] In some embodiments, secure variants of data object extensions (e.g., ".dbs", ".qos", ".qis") may indicate that the data object will be encrypted. In some embodiments, data objects may generally be sent without encryption to reduce bandwidth. However, for more sensitive data objects, these secure data object extensions may ensure that the data object is transmitted in a TLS encrypted communication session.
[0059] Reference again Figure 5In some embodiments, data object array 504 may include data objects (e.g., data objects 510, 512, 514) and may be associated with a bidirectional extension. Data object array 506 may include data objects (e.g., data objects 516, 518, 520) and may be associated with an outbound-only extension. In this example, data object array 506 may be an outbound-only queue configured to transmit data objects 516, 518, 520 to communication hub 506 and delete data objects from data object array 506. In some embodiments, data object array 508 may be associated with data objects (e.g., data objects 522, 524, 526) having an inbound-only extension. In this example, data object array 508 may be configured to receive data objects 522, 524, 526 sent from communication hub 106 and deleted from the data object array of communication hub 106. In this manner, the communication device 102 may be a data system in a package (DSiP) having a distributed replicated spatiotemporal database that may be integrated with an Internet-based secure communication hub 106. Although an example of three data object arrays associated with a particular data object extension is provided, it should be understood that any number of data object arrays may be used within the scope of the present disclosure, and / or that data object arrays need not be limited to data object extensions. For example, data object arrays may be defined for various computing device sensors, types of data objects, etc.
[0060] In some embodiments, modifying at least one data object array may include one or more of adding, deleting, and changing a data object of the data object array. For example, if the data object is a new data object, modifying at least one data object array may include adding the new data object to the data object array. If the data object includes deleting an existing data object, modifying at least one data object array may include deleting the data object from the data object array. If a data object in the data object array is updated or changed, modifying at least one data object array may include updating or changing the data object.
[0061] In some embodiments, data objects may be added to or updated in at least one array of data objects stored in the memory of the communication device using additional metadata. For example, when a data object is received from the computing device 104 using, for example, a "note.add" request, the data object may be automatically augmented with, for example, time and location information, if available from the hardware of the communication device. Similarly, when a data object is received that updates or changes an existing data object, the data object may automatically have, for example, time and location information added to it (if available from the hardware of the communication device). It will be appreciated that other metadata may be added to data objects within the scope of the present disclosure.
[0062] In some embodiments, the communication device may be configured to transmit at least a portion of the modified at least one array of data objects to the cloud-based service via the wireless cellular transceiver asynchronously with respect to the computing device. As used herein, "transmitting asynchronously with respect to the computing device" may include transmitting data independently of the computing device or independently of the computing device and without involving the computing device. As described above, transmitting at least a portion of the at least one array of data objects from the communication device 102 may be asynchronous with respect to the computing device 104. In some embodiments, the asynchronous transmission of the data objects by the communication device 102 may allow the computing device 104 to go offline or "sleep" while the communication device sends the data objects.
[0063] For example, assume that the computing device 104 is configured to provide data objects (e.g., air temperature and humidity readings) to the cloud-based service 108 at a predetermined frequency (e.g., every hour). The computing device 104 can provide the data objects to the communication device 102 at the predetermined frequency. However, the communication device 102 can be configured to send the data objects (e.g., in the form of modifications to the array of data objects) to the communication hub 106 asynchronously with respect to the computing device 104. As described above, the transmission by the communication device 102 can be independent of the computing device 104 or independent of the computing device 104 and does not involve the computing device 104. In this example, the communication device 102 can send the data objects at a different predetermined frequency (e.g., once a day). In this way, the computing device 104 can provide the data objects (e.g., modifications to the data objects of the array of data objects) at its predetermined frequency without the need to manage or control the communication device 102. In this way and in some embodiments, the computing device 104 can easily provide data to the communication device 104, and the communication device 102 can send the data to the cloud-based service 108 independently of the computing device 104. As will be discussed in greater detail below, such asynchronous transmission of data objects by the communication device 104 may allow the communication device 102 to provide the data objects while conserving power of the communication device 102 and / or the computing device 104 and / or without requiring participation by the computing device 104 .
[0064] In some embodiments, the communication device may be configured to receive a communication policy from a computing device. A communication policy may generally be one or more communication session standards for a communication device, including power saving, network bandwidth saving, data object protection, and prioritizing one or more of certain data objects relative to other data objects. For example, it is assumed that a user wishes to prioritize power saving of a computing device and / or a communication device to extend service life. In this example, a communication policy may define how often a communication device 104 sends or receives a data object. As will be discussed in more detail below, this may affect the frequency at which the wireless cellular transceiver 204 is powered (e.g., by the communication device 102) and / or the frequency at which the GNSS or GPS antenna is powered (e.g., by the communication device 102). In another example, it is assumed that a user wishes to prioritize the security of data object communications. In this example, and as will be discussed in more detail below, a communication policy may define when to use a secure element of a communication 102 to compress and / or encrypt a data object. In another example, it is assumed that a user wishes to tag a data object (e.g., in an example of a communication device with a changing location) with metadata including the location of the communication device 102. In this example, and as will be discussed in more detail below, the communication policy may define when a data object is tagged with metadata including the location of the communication device 102 at a particular time. While three examples of communication priorities have been discussed, it should be understood that other priorities are possible and are within the scope of the present disclosure (e.g., amount of data communicated, providing certain data from certain sensors, etc.).
[0065] In some embodiments, at least one data object received from computing device 102 may define a communication policy. For example, in some embodiments, the data object may include a request configured to set up a cellular connection for a communication device, as shown in the following example request:
[0066]
[0067]
[0068] In some embodiments, the communication device can be configured to generate a schedule for sending at least a portion of the array of data objects to a cloud-based service via the wireless cellular transceiver and / or for receiving at least a portion of the data objects from the cloud-based service via the wireless cellular transceiver based at least in part on a communication policy received from the computing device. For example, the communication device 102, using its own heuristics, can schedule a connection to the communication hub 106, where the communication hub 106 bidirectionally synchronizes the data objects as needed. As will be discussed in more detail below, data objects can be moved and / or copied from a data object array staging area between the communication device memory and the communication hub memory.
[0069] In one example, the communication device 102 may manage a schedule that determines when and how often to establish communications with a cellular network because cellular communications via the wireless cellular transceiver 204 may require a relatively large amount of power. In this example, the communication policy may prioritize conserving power, and the communication device 102 may manage a schedule to determine when and how frequently to send and / or receive data objects / modify arrays of data objects.
[0070] Also refer to Figure 6 , and in some embodiments, the communication device 102 may be configured to send one or more data objects to the communication hub 106 asynchronously via the wireless cellular transceiver 204 relative to the computing device 104. As described above, the communication hub 106 may similarly include a set of data object arrays (e.g., data object array 528) that include at least one data object array (e.g., data object arrays 530, 532, 534). In this example, data object array 530 may include data objects 536, 538, 540; data object array 532 may include data objects 542, 544, 546; and data object array 534 may include data objects 548, 550, 552. Although three data object arrays have been discussed, it should be understood that any number of data object arrays may be stored within the communication hub 106 within the scope of the present disclosure.
[0071] In some embodiments, the communication device 102 may include a data object array 504 and a data object array 506, wherein data objects 510 and data objects 516 may be asynchronously transmitted to the communication hub 106, respectively, relative to the computing device 104. In this example, the data object 510 may be a bidirectionally replicated data object, such that the data object 510 is replicated in the data object array 530 as the data object 536. Additionally, the data object 516 may be an outbound-only data object, such that when the data object 516 is sent to the data object array 532 of the communication hub 106, the data object 516 may be stored in the data object array 532 as the data object 542, and the data object 516 may be deleted from the data object array 506 (e.g., as shown by the dashed line around the data object 516). Although an example has been described in which two data objects are sent to the communication hub 106, it should be understood that any number of data objects and / or data object arrays (e.g., a portion and / or the entire data object array) may be sent to the communication hub 106 within the scope of the present disclosure.
[0072] In some embodiments, the communication device may be configured to receive at least a portion of at least one array of data objects from a cloud-based service via a wireless cellular transceiver asynchronously relative to the computing device. As used herein, "asynchronously, receiving" relative to the computing device may include receiving data independently of the computing device or independently of the computing device and without involving the computing device. For example, assume that the communication hub 106 is configured to provide weather data at a predetermined frequency (e.g., every hour). As will be discussed in more detail below, the communication hub 106 may send data objects to the communication device 102 (e.g., wireless cellular transceiver 204) or provide data objects to the communication device 102 (e.g., wireless cellular transceiver 204) at a predetermined frequency. However, the communication device 102 may be configured to receive data objects from the communication hub 106 asynchronously relative to the computing device 104. As described above, the reception of the data object by the communication device 102 may be independent of the computing device 104 or independent of the computing device 104 and without involving the computing device 104. In this example, the computing device 104 may receive data objects from the communication device 102 at different predetermined frequencies (e.g., once a day). In this manner, computing device 104 may receive data objects at its predetermined frequency without requiring management or control of communication device 102 .
[0073] In some embodiments, the computing device 104 may be able to receive data from the communication device 104, and the communication device 102 may receive data from the cloud-based service 108 independently of the computing device 104. As will be discussed in more detail below, the asynchronous reception of the data object / modification of the data object array by the communication device 104 may allow the communication device 102 to receive the data object while conserving power of the communication device 102 and / or the computing device 104 and / or not requiring participation of the computing device 104. In some embodiments, the asynchronous reception of the data object by the communication device 102 may allow the computing device 104 to be offline or "sleep" while the communication device receives the data object. As described above, the communication device 102 may provide a signal to the computing device 104 to "wake up" the computing device 104 so that when the data is received, the computing device 104 may request the data from the communication device 102. In this manner, the computing device 104 may not be involved in the reception of the data object by the communication device 102.
[0074] In some embodiments, the communication device 102 may modify one or more data objects of at least one data object array stored in a memory of the computing device based at least in part on at least a portion of the received at least one data object array. In some embodiments, modifying the at least one data object array may include one or more of adding, deleting, and changing data objects of the data object array. For example, if the data object is a new data object, modifying the at least one data object array may include adding the new data object to the data object array. If the data object includes deleting an existing data object, modifying the at least one data object array may include deleting the data object from the data object array. If the data object in the data object array is updated or changed, modifying the at least one data object array may include updating or changing the data object.
[0075] As described above, in some embodiments, data objects can be bidirectionally communicated between the cloud-based service and the computing device. In some embodiments, the wireless cellular transceiver 204 can receive one or more data objects from the communication hub 106 and can transmit the one or more received data objects to the communication device 102 via the serial link 304. As discussed above and in some embodiments, the communication device can be configured to modify one or more data objects of at least one data object array stored in the memory of the computing device based at least in part on at least a portion of the received at least one data object array. Also refer to Figure 6 , and in some embodiments, the communication hub 106 may include a data object array 534 having a data object 552 that may be sent to the communication device 102. As described above, the communication device 102 may be a data system in a package (DSiP) having a distributed replicated spatiotemporal database that may be integrated with the secure Internet-based communication hub 106. In this example, the data object 552 may be an inbound-only data object such that when the data object 552 is sent to the data object array 508 of the communication device 102, the data object 552 may be stored in the data object array 508 as the data object 526, and the data object 552 may be deleted from the data object array 534 (e.g., as shown by the dashed line around the data object 552). Although an example of a data object being sent to the communication hub 106 has been described, it should be understood that any number of data objects and / or data object arrays (e.g., a portion and / or the entire data object array) may be received by the communication device 102 within the scope of the present disclosure.
[0076] In some embodiments, the communication device may be configured to make available to the computing device one or more modified data objects of at least one data object array asynchronously with respect to the communication device's communication with a cloud-based service. As used herein, "making available to the computing device one or more modified data objects of at least one data object array asynchronously with respect to the communication device's communication with the cloud-based service" may include making available data objects received from the cloud-based service (e.g., modified data objects based on a received portion of at least one data object array) independent of or while the communication device is communicating with the cloud-based service. Again, refer to Figure 2 , and in some embodiments, the communication device 102 may stage at least a portion of the at least one array of data objects on the communication device 102 (e.g., as described above, in a memory of the communication device 102) to make at least a portion of the at least one array of data objects available to the computing device 104, and receive a request for at least a portion of the at least one array of data objects by the computing device 104. In this manner, the computing device 104 may request (via the serial link 202) at least a portion of the at least one array of data objects. Thus, the communication device 104 may make the modified data object available to the computing device 102 independently of any communication with the cloud-based service 108.
[0077] Reference again Figure 4 In some embodiments, the communication device may be configured to receive firmware data in the form of one or more data objects via the wireless cellular transceiver for storage in a memory of the communication device. In some embodiments, the computing device 104 may receive the firmware update via the communication device 102. For example and as Figure 4 As shown, for example purposes only, it is assumed that the computing device 104 includes a two-wire serial wire debug (SWD) interface (e.g., SWD interface 306). In some embodiments, the SWD interface 406 can allow, among other things, reflashing of computing device (e.g., microcontroller) firmware. In this example, a developer can choose to store persistent firmware data (e.g., configuration data) in a memory (e.g., flash memory) of the communication device rather than in the memory of the computing device. By doing so, an authorized developer can cause new firmware to be received via the wireless cellular transceiver 204 and downloaded to the communication device 102. In some embodiments, other firmware data or firmware images (e.g., "latest known good firmware") can be downloaded to the communication device.
[0078] Continuing with this example, the communication device 102 may receive one or more commands from the computing device to send at least a portion of the received firmware data to the computing device (e.g., via the SWD interface 406) to install the received firmware data on the computing device. In some embodiments, the communication device 102 may completely re-flash the firmware of the computing device 104. Although Figure 4 An example with SWD pins on the computing device is shown, but it should be understood that other configurations may be used to re-flash the firmware of the computing device 104. For example and in some embodiments, flashing the firmware may be performed via holding one or more pins low (e.g., GPIO-00 pin (not shown)) on the computing device 104 during booting of the computing device 104 on one or more pins (e.g., "RESET" pin) of the communication device 102. The firmware may then be transferred to the computing device 104 using the serial link 202.
[0079] In some embodiments, the communication device may include a global navigation satellite system (GNSS) system and may be configured to be communicatively coupled to a GNSS antenna. As known in the art, a GNSS receiver (GNSS receiver 212) may generally include an electronic device or module that receives and digitally processes signals from a GNSS satellite constellation to provide (receiver's) position, velocity, and time. In some embodiments, data objects transmitted by the communication device 102 may be tagged with time and location metadata. In some embodiments, a GNSS receiver may be used to obtain location information, while time may be obtained from both a cellular network and a GNSS receiver. In some embodiments, the communication device 102 may include an accelerometer (accelerometer 214) configured to sample a GNSS antenna when the accelerometer detects motion. In some embodiments, and so that energy consumption can be optimized for a non-moving communication device, the communication device 102 may have a MEMS-based accelerometer (e.g., accelerometer 214) to determine when the GNSS antenna is not required. In this way, when motion is detected by an accelerometer (eg, accelerometer 214 ), a GNSS antenna (eg, GNSS antenna 208 ) may be enabled, and otherwise the GNSS antenna (eg, GNSS antenna 208 ) may be disabled to save power.
[0080] In some embodiments, the communication device may be configured to add metadata to one or more data objects, the metadata including one or more of the time and location of the communication device. For example, the communication device 102 may be configured to tag a data object with metadata. The metadata may include the time and / or location of the communication device determined using the GNSS antenna 208. In some embodiments, when a data object is received (e.g., from the computing device 104 or the communication hub 106), the computing device 102 may tag the data object with the time information metadata.
[0081] In some embodiments, one of the communication device edge pins may allow the designer to provide a bias voltage to the receiver u.fl connector of the GPS / GNSS as required by any active GNSS / GPS antenna. For convenience, a 3.8V power supply may be provided by the communication device 102 that may be used for this purpose. In some embodiments, if a GNSS antenna (e.g., GNSS antenna 208) is communicatively coupled to the communication device 102, an active / passive switch may enable a user to select the type of antenna coupled to the communication device 102. If active, a 3.8V bias voltage may be provided to power the integrated LNA of the antenna. Although specific voltage values have been discussed above, it should be understood that any voltage required by the GNSS antenna may be provided within the scope of the present disclosure.
[0082] In some embodiments, at the time of manufacture, the non-volatile memory of the communication device is configured to include one or more security keys and a digital signature certificate, which enables the communication device to be securely authenticated and communicated with cloud-based services. For example and as described above, modern cloud-based services may require the cloud and the communication device 102 to perform two-way authentication so that neither can be deceived. In addition, for many applications, it may be important to encrypt air data and wired data. For this reason, and in some embodiments, the communication device 102 can integrate, for example, a STSAFE-A100 security element, which can include a symmetric key generated in the chip when the chip is manufactured or produced. Therefore, neither the manufacturer of the communication device 102 nor the manufacturer of the computing device 104 needs to process or manage security key materials. In an example, the security key generated for the communication device 102 can use elliptic curve cryptography (ECC) with a NIST P-384 curve, and the signature algorithm can be ECDSA with SHA384. Although specific examples of secure elements and specific signature algorithms have been provided, it should be understood that any security device or module configured to generate cryptographic keys and / or any signature algorithm may be used to protect data between cloud-based services 108 and communication devices 102 within the scope of the present disclosure.
[0083] In some embodiments, the communication device may be configured to compress and encrypt one or more of the data objects based at least in part on a communication policy received from the computing device and metadata added to the one or more data objects. For example, and as described above, encrypting a data object may require a significant amount of energy from the communication device 102. In this manner, the communication device 102 may utilize data object metadata and / or communication policies to determine whether a data object is compressed and / or encrypted. Although examples of compressing and / or encrypting data based on power savings have been discussed, it should be understood that metadata and communication policies may also determine when to compress and / or encrypt data objects in other situations (e.g., based on location, time, security priorities, etc.).
[0084] In some embodiments, the communication device 102 may have power control and may make extensive use of variable clock speeds. As described above, a wireless cellular transceiver (e.g., wireless cellular transceiver 204) and / or a modem may consume a large amount of current when transmitting or receiving, may consume constant power when receiving GNSS, when the CPU performs session or data object encryption, and even when a secure element is enabled to prevent certain side-channel attacks. However, and in some embodiments, no single switch in the communication device design may have a quiescent current greater than one microampere (e.g., Iq>1μA). That is, the quiescent current of each switch of the communication device 102 may be less than one microampere. However, it will be appreciated that any quiescent current is possible within the scope of the present disclosure. When the processor is in "STOP" mode, coupled with its ability to run one or more serial links (e.g., I2C, UART, USB, etc.) and a real-time clock (RTC), the communication device 102 may draw less than, for example, 8μA of current at, for example, 3.3V when idle. Therefore, the communication device 102 can provide a low-power cellular tether solution for microcontrollers and other computing devices.
[0085] Reference again Figure 1 , and in some embodiments, the communication hub can be configured to be communicatively coupled to one or more communication devices and cloud-based services. As will be discussed in more detail below and in some embodiments, the communication hub 106 can be configured to provide very thin layers of functionality: first, automatically configuring and enabling customers to aggregate communication devices with similar functionality (e.g., communication devices 102) into groups of communication devices (e.g., "flocks") whose operations can be monitored; and second, configuring these clusters with "routes" through which data objects (e.g., JSON formatted data) arriving from communication devices (e.g., communication devices 102) can be forwarded to cloud-based services (e.g., cloud-based services 108).
[0086] As described below, the wireless cellular transceiver 204 can be configured to transmit data over a cellular network. For example and as described above, the wireless cellular transceiver 204 can be configured to send and receive data using various communication protocols (e.g., 2G, LTE Cat-M, LTE Cat-NB1, etc.), wherein the data is transmitted between a cellular tower and / or a cellular node (e.g., an eNodeB). As is known in the art, a cellular node or tower can be communicatively coupled to a backhaul or other network to relay data to a specific destination. Therefore, the wireless cellular transceiver 204 can be configured to send data to the communication hub 106 via a cellular network.
[0087] In some embodiments, a communication hub (e.g., communication hub 106) may generally include a software service configured to organize one or more communication devices (e.g., communication device 102) into one or more communication device groups. The communication hub may also associate one or more routes with the one or more communication device groups, wherein the one or more routes may be configured to route one or more data objects between one or more communication devices communicatively coupled to one or more computing devices and a cloud-based service, and may route one or more data objects between the one or more communication devices and the cloud-based service via the one or more routes asynchronously relative to the one or more computing devices. In some embodiments, and as will be discussed in more detail below, the communication hub 106 may be deployed as a single-instance hyperscale software as a service (SaaS) service, or as a customer's own dedicated communication hub service instance deployed on a server.
[0088] In some embodiments, a communication hub (e.g., communication hub 106) can be configured to manage one or more communication devices, wherein the one or more communication devices are communicatively coupled to one or more computing devices. In some embodiments, each of the one or more communication devices can have a unique identifier. In some embodiments, a unique identifier can be automatically assigned to each communication device (e.g., communication device 102), and / or a unique identifier can be manually assigned or configured to each communication device.
[0089] In some embodiments, the communication hub 106 may associate one or more communication device product identifiers with one or more communication hub items. A communication hub item may generally include customer-specific entities including one or more communication devices, communication device groups, and routes associated with or assigned to one or more communication device groups that define how data objects from a communication device (e.g., communication device 102) are transmitted by the communication hub 106. Also refer to Figure 7An example management tool (e.g., management tool 700) may be provided, and in some embodiments, a user may create a project (e.g., assign a name to the project, create one or more accounts, etc.). The user may then create one or more communication device product identifiers, which the communication hub 106 will associate with the communication hub project. For example, a user may provide one or more communication device product identifiers (e.g., "product.org.safecast.*," "product.org.safecast.ninja," "product.org.safecast.air," etc.). In some embodiments, the use of the asterisk "*" may include any communication device product identifier, including a portion of the product identifier preceding the "*" symbol. For example, by creating a communication device product identifier "product.org.safecast.*," any communication device product identifier that includes "product.org.safecast." will be associated with this project. Although the asterisk symbol has been described as an example symbol to specify an open communication device product identifier, it should be understood that other symbols may be used within the scope of the present disclosure.
[0090] In some embodiments, the communication hub 106 may receive one or more incoming communication sessions from one or more communication devices, wherein each incoming communication session includes a product identifier of the one or more communication devices. For example, assume that the communication device 102 transmits the incoming communication session to the cloud-based storage 108 (e.g., via a JSON object), as shown in the following example:
[0091] setup()
[0092] serial.println{"req":"service.set","product":"org.safecast.air","minutes":60}
[0093] In this example, the communication hub 106 may identify a communication device product identifier (e.g., "org.safecast.air") from the incoming communication session. In some embodiments, the communication hub 106 may associate the communication device 102 with a particular communication hub project because of the communication device product identifier associated with that project. However, it will be appreciated that other communication device product identifiers may be identified from the data object within the scope of the present disclosure.
[0094] In some embodiments, the communication hub 106 may provide one or more communication devices to communicate with one or more communication device groups and route to cloud-based services based at least in part on a product identifier of a communication session established with the one or more communication devices. In some embodiments, providing one or more communication devices to communicate with the communication hub itself and one or more cloud-based services may include associating one or more communication devices with one or more communication device groups. For example, the communication hub 106 may organize or assign the communication devices 102 to a communication device group (e.g., a user-defined default communication device group for a communication hub project). As will be discussed in more detail below, the communication hub 106 may automatically associate one or more communication devices with one or more routes between the one or more communication devices, the communication hub, and one or more cloud-based services.
[0095] In some embodiments, the communication hub 106 may organize one or more communication devices into one or more communication device groups. Figure 8 In some embodiments, one or more communication devices (e.g., communication devices 102, 802, 804) communicatively coupled to one or more computing devices (e.g., computing devices 104, 806, 808) may be organized into one or more communication device groups (e.g., communication device group 810). In some embodiments, one or more communication device groups may be user defined and / or may be automatically organized by the communication hub 106.
[0096] Also refer to Figures 9 and 10 In some embodiments, managing one or more communication devices may include providing a management tool (e.g., a graphical user interface) configured to allow a user to manage one or more communication device groups and one or more routes. For example, a management tool (e.g., management tool 700) may be provided to a user for managing one or more communication device groups and routes associated with one or more communication device groups.
[0097] In some embodiments, a communication hub (e.g., communication hub 106) can be configured to route one or more data objects between one or more communication devices communicatively coupled to one or more computing devices and a cloud-based service. Figure 8, and in some embodiments, one or more routes (e.g., one or more routes 814) may include communication channels between the communication devices 102, 802, 804 and the communication hub 106, and between the communication hub 106 and the cloud-based service 108. In some embodiments, one or more routes may enable one or more data objects to be transmitted between the communication hub and the cloud-based service. In some embodiments, the routes may include one or more cloud-based service addresses, authentication information associated with the cloud-based service, JSON conversion information (discussed below), user credentials (e.g., username and password) for accessing the cloud-based service, and any other information for allowing the communication hub to route one or more data objects / modifications to an array of data objects to the cloud-based service.
[0098] refer to Fig.10 , and in some embodiments, routing one or more data objects may include associating one or more communication device groups with one or more routes. Fig.10 As shown, management tool 700 can be configured to allow a user to associate one or more communication device groups or "clusters" with one or more project data routes (e.g., route 1000). In some embodiments, one or more routes (e.g., one or more routes 814) can include one or more servers configured to transfer one or more data objects between a communication hub and a cloud-based service.
[0099] As described above, the communication hub 106 can generally be deployed as a software as a service (SaaS) service or a service instance on a customer server. In some embodiments where the communication hub 106 is deployed as a service instance on a customer server, the routing of one or more data objects from one or more communication devices and the communication hub is at least partially connected via the Internet. For example, when the communication hub is deployed as a service instance on a customer server, the communication from the communication device to the communication hub can occur on the Internet (e.g., via an HTTP API). In another example where the communication hub 106 is deployed as a SaaS service, the routing of one or more data objects from one or more communication devices and the communication hub is at least partially carried out through a connection that is not accessible to the Internet. In other words, the communication from the communication device to the communication hub can be logically "disconnected from the Internet". For example, a data object can be configured to travel directly from a cellular operator to a virtual private cloud (VPC) in a secure channel (e.g., via a non-Internet connection). In this way, the routing of one or more data objects from one or more communication devices and the communication hub may be protected to prevent Internet-based attack vulnerabilities because the communication device is not IP addressable.
[0100] In some embodiments and also with reference to Fig.11 In an example, routing one or more data objects may include per device event stream (e.g., per device event stream 1102), filtering and data object to data object conversion (filtering and JSON to JSON conversion 1104), and selective routing (e.g., routing 1106). In some embodiments, and also with reference to Fig.12 , each device event stream 1102 may include receiving a data object from a communication device (e.g., via an HTTP API (e.g., Internet-based communication) or a device tunnel (e.g., non-Internet-based communication). In the example of a data object received via a device tunnel, the pre-event device stream 1102 may record the data object in a temporary session log (e.g., temporary session log 1202). If the data object is received via an HTTP API or a device tunnel, the pre-event device stream 1102 may add the data object to at least one data object array stored in the communication hub 106 (e.g., data object array memory 1204). When the data object is transmitted from the cloud-based service 108, the above process may be reversed. For example, a data object may be received from a cloud-based service, added to at least one data object array stored in the communication hub 106, and transmitted to the computing device via an HTTP API or a device tunnel.
[0101] In some embodiments, routing one or more data objects may include synchronizing at least a portion of at least one data object array of a communication hub with at least a portion of at least one corresponding data object array of one or more communication devices communicatively coupled to the one or more communication devices. In some embodiments, "synchronizing" may generally include creating, deleting, and updating data object arrays. In some embodiments, and as will be discussed in more detail below, synchronization may be one-way up / out (e.g., only to a cloud-based service / not maintained in a communication device), one-way down / in (e.g., only to a communication device / not maintained in a communication hub), or extended bi-directional synchronization of data objects based on data arrays (e.g., maintained in both a communication device and a communication hub). For example, as Fig.12 As shown, when the communication hub 106 receives a data object, at least a portion of at least one data array object of the communication hub 106 stored in the data object array memory 1204 may be synchronized with the received data object.
[0102] In some embodiments, synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices may include: bidirectionally synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. For example and again with reference to Figure 6, data object 536 may be a bidirectionally replicated data object, such that data object 536 is replicated in data object array 504 as data object 510 .
[0103] In some embodiments, synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices may include: synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. In this example, synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices may be unidirectional. In some embodiments, in response to synchronizing at least a portion of at least one corresponding data object array of the one or more communication devices (e.g., adding or modifying at least one corresponding data object array of the one or more communication devices), the communication hub may be configured to delete at least a portion of at least one data object array of the communication hub. For example, data object 552 may be an inbound-only data object such that when data object 552 is sent to data object array 508 of communication hub 106, data object 552 may be stored in data object array 508 as data object 526, and data object 552 may be deleted from data object array 534 (e.g., as indicated by the dashed line around data object 534).
[0104] In some embodiments, synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices may include synchronizing at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices. In some embodiments, in response to synchronizing at least a portion of at least one data object array of the communication hub from at least a portion of at least one corresponding data object array of the one or more communication devices (e.g., adding or modifying at least one data object array of the communication hub), the communication device may be configured to delete at least a portion of at least one corresponding data object array of the communication device. For example, the communication device 102 may include a data object array 506 having a data object 516 that may be sent to the communication hub 106. In this example, the data object 516 may be an outbound-only data object such that when the data object 516 is sent to the data object array 532 of the communication hub 106, the data object 516 may be stored in the data object array 532 as a data object 542, and the data object 516 may be deleted from the data object array 506 (e.g., as indicated by the dashed line around the data object 516).
[0105] In some embodiments, synchronization of at least a portion of at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of one or more communication devices is based at least in part on a data object extension associated with each of the one or more data object arrays. For example, and as described above, the data object arrays can be defined based at least in part on a data object extension associated with each of the one or more data object arrays. In this manner, the data object extensions can define how data is moved and / or copied between the communication hub 106 and the communication devices 102.
[0106] In some embodiments, and as described above, routing the one or more data objects may include receiving the one or more data objects (e.g., JSON objects) from one or more communication devices communicatively coupled to the one or more computing devices. Fig.12 In some embodiments, a user may wish to provide conversion logic for converting data objects (e.g., JSON objects) received from a communication device and / or for converting data objects (e.g., JSON objects) being sent to a communication device. Fig. 9 , and in some embodiments, the management tool 700 may provide a portion of a user interface (e.g., window 1002) to allow a user to define one or more JSON to JSON conversions. In this example, a user may select one or more data objects in another portion of the user interface (e.g., window 1004) so that specific data objects are converted based on the user-defined conversions. In some embodiments, a user may select one or more communication device groups or "clusters" in another window (e.g., window 1006) so that the data object selected from window 1004 of the selected communication device group may be converted according to the conversion provided in window 1002. Although examples of various windows have been provided, it should be understood that the user interface may be configured in various ways to facilitate user selection of communication device groups, data objects, and data object conversions (e.g., JSON conversions) within the scope of the present disclosure.
[0107] In some embodiments, and again with reference to Fig.11 In the example of FIG. 1 , the communication hub can selectively route one or more data objects to and from the cloud-based service (eg, selective routing 1106). Referring again to FIG. Fig.10, and in some embodiments, one or more routes may be determined for routing data objects between the communication hub 106 and the cloud-based service 108. As discussed above with respect to data object conversion, a particular route may be selected or associated with a particular data object (e.g., via window 1004) and / or a particular group of communication devices may be associated with a particular data object (e.g., via window 1006).
[0108] In some embodiments, one or more APIs may be used to send data objects to or from the cloud-based service 108. Figure 8 , and in some embodiments, one or more APIs (e.g., API 816) may be called via HTTP or HTTP with a downloadable key. In some embodiments, API 816 may include an HTTP GET or POST with a data object in the body of the published or returned content. In some embodiments, the data object may be sent to cloud-based service 108 as a JSON object. For example, the data object or JSON object may be transferred to cloud-based storage 108, as shown in the following example:
[0109] POST
[0110] {"req":"note.add","file":"air.qo","device":"imei:8664250","product":"com.acme.airmon","when":1544643332,"where":"JMC3+56","body":{temp":72,"humid"61}}
[0111] In this manner, data objects generated by computing device 104 may be communicated to cloud-based services 108 with minimal user implementation and across cellular communications via a combination of computing device 102 and communication hub 106. Although JSON objects are discussed in the above examples, it should be understood that other data objects may be transmitted via API 816 within the scope of the present disclosure.
[0112] The flowcharts and block diagrams in the accompanying drawings can illustrate the architecture, functions and operations of possible embodiments of the system, method and computer program product according to various embodiments of the present disclosure. In this regard, each box in the flowchart or block diagram can represent a module, section or part of the code, which includes one or more executable instructions for implementing the specified logical function. It should also be noted that in some alternative embodiments, the functions indicated in the box may not occur in the order indicated in the figure. For example, depending on the functions involved, the two boxes shown in succession can actually be executed substantially simultaneously, or sometimes these boxes can be executed in reverse order. It should also be noted that each box in the block diagram and / or flowchart illustration and the combination of the boxes in the block diagram and / or flowchart illustration can be implemented by a dedicated hardware-based system that performs a specified function or action, or a combination of dedicated hardware and computer instructions.
[0113] The terms used herein are for the purpose of describing specific embodiments only and are not intended to limit the present disclosure. As used herein, the singular forms "a", "an", and "the" are also intended to include the plural forms unless the context clearly indicates otherwise. It will also be understood that the terms "comprise" and / or "include" when used in this specification specify the presence of the features, integers, steps, operations, elements, and / or groups, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0114] All devices or steps in the attached claims plus the corresponding structure, material, action and equivalent of the functional element are intended to include any structure, material or action for performing a function in combination with other claimed elements specifically claimed. The description of the present disclosure has been given for the purpose of illustration and description, but it is not intended to be exhaustive or to limit the present disclosure to the disclosed form. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the present disclosure. The embodiments are selected and described in order to best explain the principles and practical applications of the present disclosure, and to enable other persons of ordinary skill in the art to understand the various embodiments of the present disclosure, wherein various modifications are suitable for the intended specific use.
[0115] Having thus described the disclosure of this application in detail and by reference to embodiments thereof, it will be apparent that modifications and variations are possible without departing from the scope of the disclosure as defined in the appended claims.
Claims
1. A communication hub configured to be communicatively coupled to one or more communication devices and a cloud-based service, the communication hub being configured to: organizing the one or more communication devices into one or more communication device groups, in, The one or more communication devices each include a wireless cellular transceiver communicatively coupled directly to a corresponding one of the one or more computing devices, wherein each of the one or more communication devices is configured to stage and manage communication of data objects between the corresponding one of the one or more computing devices and the cloud-based service in an asynchronous manner; associating one or more routes between the communication hub and the cloud-based service with the one or more communication device groups, wherein the one or more routes are configured to route one or more data objects between the one or more communication devices communicatively coupled to the one or more computing devices and the cloud-based service, wherein associating the one or more routes with the one or more communication device groups comprises receiving one or more user selections regarding the one or more routes associated with the one or more communication device groups; and The one or more data objects are asynchronously routed between the one or more communication devices and the cloud-based service via the one or more routes relative to the one or more computing devices.
2. The communication hub according to claim 1, in, The communication hub is a Software as a Service (SaaS) service.
3. The communication hub according to claim 1, in, The communication hub is a server.
4. The communication hub according to claim 1, in, The one or more computing devices are microcontrollers.
5. The communication hub according to claim 1, in, The communication hub includes at least one data object array of the one or more data objects.
6. The communication hub according to claim 5, in, Routing the one or more data objects includes synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices communicatively coupled to one or more computing devices.
7. The communication hub according to claim 6, in, Synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of the at least one corresponding data object array of the one or more communication devices includes: bidirectionally synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of the at least one corresponding data object array of the one or more communication devices.
8. The communication hub according to claim 6, in, Synchronizing the at least a portion of the at least one data object array of the communication hub with the at least a portion of the at least one corresponding data object array of the one or more communication devices comprises: The at least a portion of the at least one data object array of the communication hub is synchronized with the at least a portion of the at least one corresponding data object array of the one or more communication devices.
9. The communication hub according to claim 6, in, Synchronizing the at least a portion of the at least one data object array of the communication hub with the at least a portion of the at least one corresponding data object array of the one or more communication devices comprises: The at least a portion of the at least one data object array of the communication hub is synchronized from the at least a portion of the at least one corresponding data object array of the one or more communication devices.
10. The communication hub according to claim 6, in, Synchronization of the at least a portion of the at least one data object array of the communication hub with the at least a portion of at least one corresponding data object array of the one or more communication devices is based at least in part on a data object extension associated with each of the one or more data object arrays.
11. The communication hub according to claim 1, in, The one or more data objects are JavaScript Object Notation (JSON) objects.
12. The communication hub according to claim 11, in, Routing the one or more data objects includes converting the one or more JSON objects.
13. The communication hub according to claim 10, in, The one or more routes enable communication of the one or more data objects between the communication hub and the cloud-based service and include one or more cloud-based service addresses.
14. The communication hub according to claim 1, in, Organizing the one or more communication devices includes providing a management tool configured to allow a user to organize the one or more communication device groups and associate the one or more routes with the one or more communication device groups.
15. A communication hub configured to be communicatively coupled to one or more communication devices and one or more cloud-based services, the communication hub configured to: associating one or more communication device product identifiers with one or more communication hub items; receiving one or more incoming communication sessions from the one or more communication devices, wherein each incoming communication session includes a product identifier of the one or more communication devices, wherein each communication device includes a wireless cellular transceiver, wherein the one or more communication devices are each directly communicatively coupled to a respective one of the one or more computing devices, wherein Each of the one or more communication devices is configured to stage and manage communication of data objects between a corresponding one of the one or more computing devices and the cloud-based service in an asynchronous manner; as well as The one or more communication devices are provided to communicate with the one or more communication device groups and routed to a cloud-based service based at least in part on a product identifier of a communication session established with the one or more communication devices.
16. The communication hub according to claim 15, in, The one or more communication hub items include one or more communication device groups and one or more routes associated with the one or more communication device groups, the routes configured to route data objects between the one or more communication devices and the one or more cloud-based services.
17. The communication hub according to claim 16, in, Providing the one or more communication devices to communicate with the communication hub itself and one or more cloud-based services includes associating one or more communication devices with the one or more communication device groups.
18. The communication hub according to claim 15, in, The one or more data objects are JavaScript Object Notation objects.
19. The communication hub according to claim 15, in, The communication hub includes at least one data object array of the one or more data objects.
20. The communication hub according to claim 19, in, Routing the one or more data objects includes synchronizing at least a portion of the at least one data object array of the communication hub with at least a portion of at least one corresponding data object array of the one or more communication devices communicatively coupled to one or more computing devices.
21. A communication system for communicatively coupling a computing device with a cloud-based service, the communication system include: One or more computing devices are each directly communicatively coupled to a respective one of the one or more communication devices, and each communication device includes a wireless cellular transceiver, wherein each of the one or more communication devices is configured to stage and manage communication of data objects between the respective one of the one or more computing devices and the cloud-based service in an asynchronous manner; and a communication hub configured to be communicatively coupled to the one or more communication devices and the cloud-based service; Each of the one or more communication devices is configured as one or more of the following: Sending one or more data objects from the computing device to the cloud-based service includes: receiving at least one data object from the computing device, modifying at least one data object array of one or more data objects stored in a memory of the communication device based at least in part on the received at least one data object, asynchronously transmitting, relative to the computing device, via the wireless cellular transceiver, at least a portion of the modified at least one array of data objects to the cloud-based service; and Receiving one or more data objects from the cloud-based service includes: asynchronously receiving, relative to the computing device, at least a portion of the at least one array of data objects from the cloud-based service via the wireless cellular transceiver, modifying one or more data objects of at least one array of data objects stored in a memory of the computing device based at least in part on at least a portion of the received at least one array of data objects, and asynchronously making available to the computing device one or more modified data objects in the at least one array of data objects, relative to communications of the communications device with the cloud-based service; Wherein, the communication hub is configured as: organizing one or more communication devices into one or more communication device groups; associating one or more routes with the one or more communication device groups, wherein the one or more routes are configured to route one or more data objects between the one or more communication devices communicatively coupled to the one or more computing devices and the cloud-based service; and The one or more data objects are asynchronously routed between the one or more communication devices and the cloud-based service via the one or more routes relative to the one or more computing devices.
Citation Information
Patent Citations
Virtualized connectivity in a cloud services environment
WO2012075448A1