Patent Description:
Telematics devices can gather telematics data from various assets, such as, but not limited to, vehicles. However, it can be difficult to retrieve, store, and process the telematics data at scale. Current approaches to server and network architecture may not provide sufficient capacity to deal with large volumes of telematics data. As telematics devices continue to evolve and become more prevalent, the quantity of telematics data generated will continue to increase, and these challenges will be exacerbated. Improved server and network architectures may be required to collect telematics data at these larger scales.

Prior art document <CIT> for providing a vehicle security service, which are capable of informing a user's mobile terminal of connection of an external device to an in-vehicle on-board diagnostics (OBD) terminal in real time when the connection is sensed, and allowing diagnosis through the external device when connection of the external device is accepted in accordance with user approval through the mobile terminal discloses providing a vehicle security service, which are capable of informing a user's mobile terminal of connection of an external device to an in-vehicle on-board diagnostics (OBD) terminal in real time when the connection is sensed, and allowing diagnosis through the external device when connection of the external device is accepted in accordance with user approval through the mobile terminal.

The following introduction is provided to introduce the reader to the more detailed discussion to follow. Further embodiments are described by the dependent claims.

In accordance with a broad aspect, there is provided a system for collecting telematics data from a plurality of telematics devices. The plurality of telematics devices includes a first and second group of telematics devices. The telematics data includes a first set of telematics data associated with the first group of telematics devices and a second set of telematics data associated with the second group of telematics devices. The system includes: a fleet management server, a plurality of gateway servers, and a unified downloader. The fleet management server includes a first and second data store. The first data store is operable to store the first set of telematics data associated with the first group of telematics devices. The second data store is operable to store the second set of telematics data associated with the second group of telematics devices. The plurality of gateway servers is in communication with the plurality of telematics devices. The plurality of gateway servers includes a first and second group of gateway servers. The first group of gateway servers is in communication with the first group of telematics devices. The second group of gateway servers is in communication with the second group of telematics devices. The first and second group of gateway servers includes at least one common gateway server. The unified downloader is associated with the fleet management server. The unified downloader is operable to establish a plurality of communication channels. The plurality of communication channels includes a communication channel between each gateway server in the first and second group of gateway servers and the unified downloader such that a single communication channel is established to each common gateway server, whereby the first and second set of telematics data are receivable through the plurality of communication channels.

In some embodiments, each single communication channel to each common gateway server can be multiplexed to transport at least a portion of both the first and second set of telematics data.

In some embodiments, each common gateway server can be operable to transmit at least a portion of both the first and second set of telematics data through the corresponding single communication channel as asynchronous streams.

In some embodiments, the unified downloader can be executed remotely from the fleet management server.

In some embodiments, the unified downloader can be operable to establish a communication channel between the unified downloader and the fleet management server to transport the first and second set of telematics data from the unified downloader to the fleet management server.

In some embodiments, the plurality of gateway servers can include one or more backup data stores operable to store the telematics data from the plurality of telematics devices.

In some embodiments, the unified downloader can be operable to transmit a receipt confirmation in response to receiving a portion of the telematics data from a gateway server, and the gateway server can be operable to delete the portion of the telematics data from the backup data store in response to the receipt confirmation.

In some embodiments, each gateway server can include a plurality of network sockets, and each communication channel can be connected to a network socket of the corresponding gateway server.

In some embodiments, the first and second group of telematics devices can include at least one common telematics device.

In some embodiments, the plurality of telematics devices can be installed in a plurality of vehicles, and the telematics data can include vehicle data collected from the plurality of vehicles.

In accordance with a broad aspect, there is provided a method for collecting telematics data from a plurality of telematics devices. The plurality of telematics devices includes a first and second group of telematics devices. The telematics data includes a first set of telematics data associated with the first group of telematics devices and a second set of telematics data associated with the second group of telematics devices. The method involves: providing, at a fleet management server, a first and second data store, the first data store operable to store the first set of telematics data associated with the first group of telematics devices, the second data store operable to store the second set of telematics data associated with the second group of telematics devices; identifying, from a plurality of gateway servers in communication with the plurality of telematics devices, a first and second group of gateway servers, the first group of gateway servers being in communication with the first group of telematics devices, the second group of gateway servers being in communication with the second group of telematics devices, the first and second group of gateway servers including at least one common gateway server; and establishing, by a unified downloader associated with the fleet management server, a plurality of communication channels, the plurality of communication channels including a communication channel between each gateway server in the first and second group of gateway servers and the unified downloader such that a single communication channel is established to each common gateway server; and receiving, through the plurality of communication channels, the first and second set of telematics data; and storing the first set of telematics data at the first data store and the second set of telematics data at the second data store.

In some embodiments, at least a portion of both the first and second set of telematics data can be transmitted through the corresponding single communication channel as asynchronous streams.

In some embodiments, the method can further involve: establishing a communication channel between the unified downloader and the fleet management server to transport the first and second set of telematics data from the unified downloader to the fleet management server.

In some embodiments, the method can further involve: transmitting, by the unified downloader, a receipt confirmation in response to receiving a portion of the telematics data from a gateway server; and deleting, at the one or more back up data stores, the portion of the telematics data in response to the receipt confirmation.

In accordance with a broad aspect, there is provided a method for collecting telematics data from a plurality of telematics devices. The method involves: receiving, at a gateway server in communication with a telematics device, a request to receive a set of telematics data associated with the telematics device, the request being associated with a data store at a fleet management server; determining, based on a first event record registered at an event bus in communication with the gateway server, that the data store does not have permission to receive the set of telematics data associated with the telematics device; in response to determining that the data store does not have permission to receive the set of telematics data associated with the telematics device, determining whether the request satisfies at least one permission modification criteria; in response to determining that that the request does satisfy the at least one permission modification criteria: registering, at the event bus, a second event record indicating that the data store has permission to receive the set of telematics data associated with the telematics device; and transmitting the set of telematics data associated with the telematics device from the gateway server to the fleet management server, thereby granting the request; and in response to determining that the request does not satisfy the at least one permission modification criteria, denying the request.

In some embodiments, the at least one permission modification criteria can be satisfied if another request associated with another data store to receive the set of telematics data associated with the telematics device was not received within a predetermined time period.

In some embodiments, the at least one permission modification criteria can not satisfied if another request associated with another data store to receive the set of telematics data associated with the telematics device was received within a predetermined time period.

In some embodiments, the method can further involve: receiving, at the gateway server, another request to receive the set of telematics data associated with the telematics device, the other request being associated with another data store; and determining, based on the second event record, that the other data store does not have permission to receive the set of telematics data associated with the telematics device.

In some embodiments, the event record can include a timestamp representing when the data store was granted permission to receive the set of telematics data associated with the telematics device.

In some embodiments, the method can further involve: determining whether the fleet management server is connected to the gateway server; and in response to determining that that the fleet management server is not connected to the gateway server, establishing a communication channel between the fleet management server and the gateway server.

In some embodiments, the communication channel can be multiplexed so that telematics data associated with at least two data stores at the fleet management server are receivable through the same communication channel.

In some embodiments, the method can further involve: identifying, at the fleet management server, the gateway server in communication with the telematics device based on a third event record registered at the event bus indicating that the telematics device is connected to the gateway server.

In some embodiments, the method can further involve: receiving, at the fleet management system, a plurality of event records from the event bus, each event record indicating that one data store has permission to receive the set of telematics data associated with one telematics device.

In some embodiments, the plurality of telematics devices is installed in a plurality of vehicles, and the telematics data can include vehicle data collected from the plurality of vehicles.

In accordance with a broad aspect, there is provided a system for collecting telematics data from a plurality of telematics devices. The system includes: a plurality of fleet management servers, a plurality of gateway servers, and an event bus. The plurality of fleet management servers includes a plurality of data stores. Each data store is operable to store one or more sets of telematics data associated with one or more telematics devices. The plurality of gateway servers is in communication with the plurality of telematics devices. The event bus is in communication with the plurality of gateway servers. The event bus is operable to register a plurality of event records. In operation, a gateway server in communication with a telematics device: receives a request to receive a set of telematics data associated with the telematics device, the request being associated with a data store at a fleet management server; determines, based on a first event record registered at the event, that the data store does not have permission to receive the set of telematics data associated with the telematics device; in response to determining that the data store does not have permission to receive the set of telematics data associated with the telematics device, determines whether the request satisfies at least one permission modification criteria; in response to determining that that the request does satisfy the at least one permission modification criteria: registers, at the event bus, a second event record indicating that the data store has permission to receive the set of telematics data associated with the telematics device; and transmits the set of telematics data associated with the telematics device to the fleet management server, thereby granting the request; and in response to determining that the request does not satisfy the at least one permission modification criteria, denies the request.

In some embodiments, in operation, the gateway server can: receive another request to receive the set of telematics data associated with the telematics device, the other request being associated with another data store; and determine, based on the second event record, that the other data store does not have permission to receive the set of telematics data associated with the telematics device.

In some embodiments, in operation, the gateway server can: determine whether the fleet management server is connected to the gateway server; and in response to determining that that the fleet management server is not connected to the gateway server, establish a communication channel between the fleet management server and the gateway server.

In some embodiments, in operation, the fleet management server can: identify the gateway server in communication with the telematics device based on a third event record registered at the event bus indicating that the telematics device is connected to the gateway server.

In some embodiments, in operation, the fleet management server can: receive a plurality of event records from the event bus, each event record indicating that one data store has permission to receive the set of telematics data associated with one telematics device.

In accordance with a broad aspect, there is provided method for collecting telematics data from a plurality of telematics devices. The method involves: providing, at a plurality of fleet management servers, a plurality of data stores, each data store associated with at least one telematics device, each data store operable to store a set of telematics data associated with the at least one telematics device; detecting, at a gateway server, a connection by a telematics device to the gateway server; registering, at an event bus in communication with the gateway server, an event record indicating that the telematics device is connected to the gateway server; for each fleet management server having at least one data store associated with the telematics device: identifying, at the fleet management server, the gateway server in communication with the telematics device based on the event record; receiving, at the fleet management server, a set of telematics data associated with the telematics device from the gateway server; and storing, at the at least one data store, the set of telematics data associated with the telematics device.

In some embodiments, the method can further involve: receiving, at the fleet management server, the event record from the event bus; and updating, at the fleet management server, a mapping of the plurality of telematics devices to the plurality of gateways based on the event record. The gateway server can be identified based on the mapping.

In some embodiments, the method can further involve: identifying, based on the mapping, at least one gateway server connected to the fleet management system that is not connected to any telematics devices associated with any data stores at the fleet management system; and terminating a communication channel between the fleet management server and the gateway server.

In some embodiments, the event record can include a timestamp representing when the connection by the telematics device to the gateway server was established.

In some embodiments, the gateway server can be a second gateway server, the event record can be a second event record, and the method can further involve: prior to detecting the connection by the telematics device to the second gateway server, detecting, at a first gateway server, a connection by the telematics device to the first gateway server; registering, at the event bus, a first event record indicating that the telematics device is connected to the first gateway server; and identifying, at the fleet management server, the second gateway server in communication with the telematics device based on the first and second event records.

In some embodiments, the method can further involve: receiving, at each fleet management server, a plurality of event records from the event bus, each event record indicating that one telematics device is connected to one gateway server.

In some embodiments, the method can further involve: prior to receiving the set of telematics data associated with the telematics device from the gateway server at the fleet management server, determining that the at least one data store has permission to receive the set of telematics data associated with the telematics device based on another event record registered at the event bus.

In accordance with a broad aspect, there is provided a system for collecting telematics data from a plurality of telematics devices. The system includes: a plurality of fleet management servers, a plurality of gateway servers, and an event bus. The plurality of fleet management servers includes a plurality of data stores. Each data store is associated with at least one telematics device. Each data store is operable to store a set of telematics data associated with the at least one telematics device. The plurality of gateway servers is in communication with the plurality of telematics devices. The event bus is in communication with the plurality of gateway servers and the plurality of fleet management servers. The event bus is operable to register a plurality of event records. In operation: a gateway server detects a connection by a telematics device to the gateway server; the event bus registers an event record indicating that the telematics device is connected to the gateway server; for each fleet management server having at least one data store associated with the telematics device, the fleet management server: identifies the gateway server in communication with the telematics device based on the event record; receives a set of telematics data associated with the telematics device from the gateway server; and stores the set of telematics data associated with the telematics device at the at least one data store.

In some embodiments, in operation, the fleet management server can: receive the event record from the event bus; update a mapping of the plurality of telematics devices to the plurality of gateways based on the event record; and identify the gateway server in communication with the telematics device based on the mapping.

In some embodiments, in operation, the fleet management server can: identify, based on the mapping, at least one gateway server connected to the fleet management system that is not connected to any telematics devices associated with any data stores at the fleet management system; and terminate a communication channel between the fleet management server and the gateway server.

In some embodiments, in operation, the fleet management server can: determine whether the fleet management server is connected to the gateway server; and in response to determining that that the fleet management server is not connected to the gateway server, establish a communication channel between the fleet management server and the gateway server.

In some embodiments, the gateway server can be a second gateway server, the event record can be a second event record, and, in operation: prior to detecting the connection by the telematics device to the second gateway server, a first gateway server can detect a connection by the telematics device to the first gateway server; the event bus can register a first event record indicating that the telematics device is connected to the first gateway server; and the fleet management server can identify the second gateway server in communication with the telematics device based on the first and second event records.

In some embodiments, each fleet management server can be operable to receive a plurality of event records from the event bus, each event record indicating that one telematics device is connected to one gateway server.

In some embodiments, in operation, prior to receiving the set of telematics data associated with the telematics device from the gateway server at the fleet management server, the gateway server can determine that the at least one data store has permission to receive the set of telematics data associated with the telematics device based on another event record registered at the event bus.

In accordance with a broad aspect, there is provided a non-transitory computer readable medium having instructions stored thereon executable by at least one processor to implement any of the methods described herein.

Several embodiments will be described in detail with reference to the drawings, in which:.

The drawings, described below, are provided for purposes of illustration, and not of limitation, of the aspects and features of various examples of embodiments described herein. For simplicity and clarity of illustration, elements shown in the drawings have not necessarily been drawn to scale. The dimensions of some of the elements may be exaggerated relative to other elements for clarity. It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the drawings to indicate corresponding or analogous elements or steps.

Various systems or methods will be described below to provide an example of an embodiment of the claimed subject matter. No embodiment described below limits any claimed subject matter and any claimed subject matter may cover methods or systems that differ from those described below. The claimed subject matter is not limited to systems or methods having all of the features of any one system or method described below or to features common to multiple or all of the apparatuses or methods described below. It is possible that a system or method described below is not an embodiment that is recited in any claimed subject matter. Any subject matter disclosed in a system or method described below that is not claimed in this document may be the subject matter of another protective instrument, for example, a continuing patent application, and the applicants, inventors or owners do not intend to abandon, disclaim or dedicate to the public any such subject matter by its disclosure in this document.

Referring to <FIG>, there is shown an example fleet management system <NUM> for managing a plurality of assets equipped with a plurality of telematics devices <NUM>. In operation, the telematics devices <NUM> can gather various data associated with the assets (i.e., telematics data) and share the telematics data with the fleet management system <NUM>. The fleet management system <NUM> can be remotely located from the telematics devices <NUM> and the assets.

For ease of exposition, various examples will now be described in which the assets are vehicles <NUM>. However, it should be appreciated that the systems and methods described herein may be used to manage other forms of assets in some embodiments. Such assets can generally include any apparatuses, articles, machines, and/or equipment that can be equipped and monitored by the telematics devices <NUM>. For example, other assets may include shipping containers, trailers, construction equipment, generators, and the like. The nature and format of the telematics data may vary depending on the type of asset.

The vehicles <NUM> may include any machines for transporting goods or people. The vehicles <NUM> can include motor vehicles, such as, but not limited to, motorcycles, cars, trucks, and/or buses. The motor vehicles can be gas, diesel, electric, hybrid, and/or alternative fuel. In some cases, the vehicles <NUM> may include other kinds of vehicles, such as, but not limited to, railed vehicles (e.g., trains, trams), watercraft (e.g., ships, boats), aircraft (e.g., airplanes, helicopters), and/or spacecraft. Each vehicle <NUM> can be equipped with a telematics device <NUM>. Although only three vehicles <NUM> having three telematics devices <NUM> are shown in the illustrated example for ease of illustration, it should be appreciated that there can be any number of vehicles <NUM> and telematics devices <NUM>. In some cases, the fleet management system <NUM> may manage hundreds, thousands, or even millions of vehicles <NUM> and telematics devices <NUM>.

The telematics devices <NUM> can be standalone devices that are removably installed in the vehicles <NUM>. Alternatively, the telematics devices <NUM> can be integrated components that are integral with the vehicles <NUM>. The telematics devices <NUM> can gather various telematics data from the vehicles <NUM> and share the telematics data with the fleet management system <NUM>. The telematics data may include any information, parameters, attributes, characteristics, and/or features associated with the vehicles <NUM>. For example, the telematics data can include, but is not limited to, location data, speed data, acceleration data, engine data, brake data, transmission data, fluid data (e.g., oil, coolant, and/or washer fluid), energy data (e.g., battery and/or fuel level), odometer data, vehicle identifying data, error/diagnostic data, tire data, seatbelt data, and/or airbag data. In some cases, the telematics data may include information related to the telematics devices <NUM> and/or other devices associated with the telematics devices <NUM>.

The fleet management system <NUM> can process the telematics data collected from the telematics devices <NUM> to provide various analysis, predictions, and reporting. For example, the fleet management system <NUM> can process the telematics data to gain additional information regarding the vehicles <NUM>, such as, but not limited to, trip distances/times, idling times, harsh braking/driving, usage rate, and/or fuel economy. Various data analytics and machine learning techniques may be used by the fleet management system <NUM> to process the telematics data. The telematics data can then be used to manage various aspects of the vehicles <NUM>, such as, but not limited to, route planning, vehicle maintenance, driver compliance, asset utilization, and/or fuel management. In this manner, the fleet management system <NUM> can improve the productivity, efficiency, safety, and/or sustainability of the vehicles <NUM>.

A plurality of computing devices <NUM> can provide access to the fleet management system <NUM> to a plurality of users <NUM>. This may allow the users <NUM> to manage and track the vehicles <NUM>, for example, using various telematics data collected and/or processed by the fleet management system <NUM>. The computing devices <NUM> can be any computers, such as, but not limited to, personal computers, portable computers, wearable computers, workstations, desktops, laptops, smartphones, tablets, smartwatches, PDAs (personal digital assistants), and/or mobile devices. The computing devices <NUM> can be remotely located from the fleet management system <NUM>, telematics devices <NUM>, and vehicles <NUM>. Although only three computing devices <NUM> operated by three users <NUM> are shown in the illustrated example for ease of illustration, it should be appreciated that there can be any number of computing devices <NUM> and users <NUM>. In some cases, the fleet management system <NUM> may service hundreds, thousands, or even millions of computing devices <NUM> and users <NUM>.

The fleet management system <NUM>, telematics devices <NUM>, and computing devices <NUM> can communicate through one or more networks <NUM>. The networks <NUM> may be wireless, wired, or a combination thereof. The networks <NUM> may employ any communication protocol and utilize any communication medium. For example, the networks <NUM> may include, but is not limited to, Wi-Fi™ networks, Ethernet networks, Bluetooth™ networks, NFC (near-field communication) networks, radio networks, cellular networks, and/or satellite networks. The networks <NUM> may be private, public, or a combination thereof. For example, the networks <NUM> may include, but is not limited to, LANs (local area networks), WANs (wide area networks), and/or the Internet. The networks <NUM> may also facilitate communication with other devices and systems that are not shown.

The fleet management system <NUM> can be implemented using one or more computers. For example, the fleet management system <NUM> may be implemented using one or more computer servers. The servers can be distributed across a wide geographical area. In some embodiments, the fleet management system <NUM> may be implemented using a cloud computing platform, such as Google Cloud Platform™ or Amazon Web Services™. In other embodiments, the fleet management system <NUM> may be implemented using one or more dedicated computer servers.

Reference will now be made to <FIG> to further explain the operation of the fleet management system <NUM>, telematics devices <NUM>, and vehicles <NUM>. In the illustrated example, the fleet management system <NUM> in communication with a telematics device <NUM> that is installed in a vehicle <NUM>.

As shown, the fleet management system <NUM> can include one or more processors <NUM>, one or more data storages <NUM>, and one or more communication interfaces <NUM>. Each of these components may communicate with each other. Each of these components may be combined into fewer components or divided into additional subcomponents. Two or more of these components and/or subcomponents may be distributed across a wide geographical area.

The processors <NUM> can control the operation of the fleet management system <NUM>. The processors <NUM> can be implemented using any suitable processing devices or systems, such as, but not limited to, CPUs (central processing units), GPUs (graphics processing units), FPGAs, (field programmable gate arrays), ASICs (application specific integrated circuits), DSPs (digital signal processors), NPUs (neural processing units), QPUs (quantum processing units), microprocessors, and/or controllers. The processors <NUM> can execute various computer instructions, programs, and/or software stored on the data storage <NUM> to implement various methods described herein. For example, the processors <NUM> may process various telematics data collected by the fleet management system <NUM> from the telematics device <NUM>.

The data storages <NUM> can store various data for the fleet management system <NUM>. The data storages <NUM> can be implemented using any suitable data storage devices or systems, such as, but not limited to, RAM (random access memory), ROM (read only memory), flash memory, HDD (hard disk drives), SSD (solid-state drives), magnetic tape drives, optical disc drives, and/or memory cards. The data storages <NUM> may include volatile memory, non-volatile memory, or a combination thereof. The data storages <NUM> may include non-transitory computer readable media. The data storages <NUM> can store various computer instructions, programs, and/or software that can be executed by the processors <NUM> to implement various methods described herein. The data storages <NUM> may store various telematics data collected from the telematics device <NUM> and/or processed by the processors <NUM>.

The communication interfaces <NUM> can enable communication between the fleet management system <NUM> and other devices or systems, such as the telematics device <NUM>. The communication interfaces <NUM> can be implemented using any suitable communication devices or systems. For example, the communication interfaces <NUM> may include various physical connectors, ports, or terminals, such as, but not limited to, USB (universal serial bus), Ethernet, Thunderbolt, Firewire, SATA (serial advanced technology attachment), PCI (peripheral component interconnect), HDMI (high-definition multimedia interface), and/or DisplayPort. The communication interfaces <NUM> can also include various wireless interface components to connect to wireless networks, such as, but not limited to, Wi-Fi™, Bluetooth™, NFC, cellular, and/or satellite. The communication interfaces <NUM> can enable various inputs and outputs to be received at and sent from the fleet management system <NUM>. For example, the communication interfaces <NUM> may be used to retrieve telematics data from the telematics device <NUM>.

As shown, the telematics device <NUM> also can include one or more processors <NUM>, one or more data storages <NUM>, and one or more communication interfaces <NUM>. Additionally, the telematics device <NUM> can include one or more sensors <NUM>. Each of these components may communicate with each other. Each of these components may be combined into fewer components or divided into additional subcomponents.

The processors <NUM> can control the operation of the telematics device <NUM>. Like the processors <NUM> of the fleet management system <NUM>, the processors <NUM> of the telematics device <NUM> can be implemented using any suitable processing devices or systems. The processors <NUM> can execute various computer instructions, programs, and/or software stored on the data storages <NUM>. For example, the processors <NUM> can process various telematics data gathered from the vehicle components <NUM> or the sensors <NUM>.

The data storages <NUM> can store various data for the telematics device <NUM>. Like the data storages <NUM> of the fleet management system <NUM>, the data storages <NUM> of the telematics device <NUM> can be implemented using any suitable data storage devices or systems. The data storages <NUM> can store various computer instructions, programs, and/or software that can be executed by the processors <NUM>. The data storages <NUM> can also store various telematics data gathered from the vehicle components <NUM> or the sensors <NUM>.

The communication interfaces <NUM> can enable communication between the telematics device <NUM> and other devices or systems, such as the fleet management system <NUM> and vehicle components <NUM>. Like the communication interfaces <NUM> of the fleet management system <NUM>, the communication interfaces <NUM> of the telematics device <NUM> can be implemented using any suitable communication devices or systems. The communication interfaces <NUM> can enable various inputs and outputs to be received at and sent from the telematics device <NUM>. For example, the communication interfaces <NUM> may be used collect telematics data from the vehicle components <NUM> and sensors <NUM> or to send telematics data to the fleet management system <NUM>. The communication interfaces <NUM> can also be used to connect the telematics device <NUM> with one or more accessory devices <NUM>.

The sensors <NUM> can detect and/or measure various environmental events and/or changes. The sensors <NUM> can include any suitable sensing devices or systems, including, but not limited to, location sensors, velocity sensors, acceleration sensors, orientation sensors, vibration sensors, proximity sensors, temperature sensors, humidity sensors, pressure sensors, optical sensors, and/or audio sensors. When the telematics device <NUM> is installed in the vehicle <NUM>, the sensor <NUM> can be used to gather telematics data that may not be obtainable from the vehicle components <NUM>. For example, the sensors <NUM> may include a satellite navigation device, such as, but not limited to, a GPS (global positioning system) receiver, which can measure the location of the vehicle <NUM>. As another example, the sensor <NUM> may include accelerometers, gyroscopes, magnetometers, and/or IMUs (inertial measurement units), which can measure the acceleration and/or orientation of the vehicle <NUM>.

In some cases, the telematics device <NUM> may operate in conjunction with one or more accessory devices <NUM> that are in communication with the telematics device <NUM>. The accessory devices <NUM> can include expansion devices that can provide additional functionality to the telematics device <NUM>. For example, the accessory devices <NUM> may provide additional processing, storage, communication, and/or sensing functionality through one or more additional processors, data storages, communication interfaces, and/or sensors (not shown). The accessory devices <NUM> can also include adapter devices that facilitate communication between the communication interface <NUM> and the vehicle interfaces <NUM>, such as a cable harness.

The telematics device <NUM> can be installed within the vehicle <NUM>, removably or integrally. One or more accessory devices <NUM> can also be installed in the vehicle <NUM> along with the telematics device <NUM>. As shown, the vehicle <NUM> can include one or more vehicle components <NUM> and one or more vehicle interfaces <NUM>. Each of these components may be combined into fewer components or divided into additional subcomponents.

The vehicle components <NUM> can include any subsystems, parts, and/or subcomponents of the vehicle <NUM>. The vehicle components <NUM> can be used to operate and/or control the vehicle <NUM>. For example, the vehicle components <NUM> can include, but are not limited to, powertrains, engines, transmissions, steering, braking, seating, batteries, doors, and/or suspensions. The telematics device <NUM> can gather various telematics data from the vehicle components <NUM>. For example, the telematics device <NUM> may communicate with one or more ECUs (electronic control units) that control the vehicle components <NUM> and/or one or more internal vehicle sensors.

The vehicle interfaces <NUM> can facilitate communication between the vehicle components <NUM> and other devices or systems. The vehicle interfaces <NUM> can include any suitable communication devices or systems. For example, the vehicle interfaces <NUM> may include, but is not limited to, ODB-II (on-board diagnostics) ports and/or CAN (controller area network) buses. The vehicle interfaces <NUM> can be used by the telematics device <NUM> to gather telematics data from the vehicle components <NUM>. For example, the communication interfaces <NUM> of the telematics device <NUM> can be connected to the vehicle interfaces <NUM> to communicate with the vehicle components <NUM>. In some cases, an accessory device <NUM>, such as a wire harness, can provide the connection between the communication interface <NUM> and the vehicle interface <NUM>.

Reference will now be made to <FIG>, which illustrates an example implementation of the fleet management system <NUM>. As shown, the fleet management system <NUM> can include one or more gateway servers <NUM> and one or more fleet management servers <NUM>. In operation, the gateway servers <NUM> can receive telematics data from the telematics devices <NUM> and route the telematics data to the fleet management servers <NUM>. The fleet management servers <NUM> can store and process the telematics data.

The gateway servers <NUM> and fleet management servers <NUM> can be implemented using various computers. In some embodiments, the gateway servers <NUM> and fleet management servers <NUM> may be implemented using dedicated server computers. In other embodiments, the gateway servers <NUM> and fleet management servers <NUM> may be implemented using a cloud computing platform. In some cases, two or more gateway servers <NUM> and/or fleet management servers <NUM> may be implemented using a single computer. For example, two or more gateway servers <NUM> and/or fleet management servers <NUM> may be implemented using multiple virtual machines, containers, or other virtualizations running on the same computer.

In the illustrated example, the gateway servers <NUM> include a first gateway server 210A, a second gateway server 210B, and a third gateway server 210C, and the fleet management servers <NUM> include a first fleet management server 220A and a second fleet management server 220B. However, it should be appreciated that the fleet management system <NUM> may include any number of gateway servers <NUM> and fleet management servers <NUM>. In some cases, the fleet management system <NUM> may include a single gateway server <NUM> and/or a single fleet management server <NUM>.

A plurality of telematics devices <NUM> can communicate with the fleet management system <NUM> through the gateway servers <NUM>. Each telematics device <NUM> can connect to one of the gateway servers <NUM> and each gateway server <NUM> can be in communication with one or more telematics devices <NUM>. In the illustrated example, the first gateway server 210A is in communication with a first plurality of telematics devices 130A, the second gateway server 210B is in communication with a second plurality of telematics devices 130B, and the third gateway server 210C is in communication with a third plurality of telematics devices 130C. One or more networks <NUM> can facilitate the communication between the telematics devices <NUM> and the gateway servers <NUM>.

Each gateway server <NUM> can receive telematics data from the telematics devices <NUM> that are connected to that gateway server <NUM>. In the illustrated example, the first gateway server 210A can receive telematics data from the first plurality of telematics devices 130A, the second gateway server 210B can receive telematics data from the second plurality of telematics devices 130B, and the third gateway server 210C can receive telematics data from the third plurality of telematics devices 130C. Each gateway server <NUM> can transmit the received telematics data to one or more fleet management servers <NUM>.

Each fleet management server <NUM> can include one or more data stores <NUM>. In the illustrated example, the first fleet management server 220A includes a first data store 224A and a second data store 224B, and the second fleet management server 220B includes a third data store 224C. However, it should be appreciated each fleet management server <NUM> may include any number of data stores <NUM>.

Each data store <NUM> can be associated with one or more telematics devices <NUM> and store telematics data retrieved from those telematics devices <NUM>. For example, each data store <NUM> can correspond to a fleet of vehicles <NUM> and store telematics data retrieved from telematics devices <NUM> installed in those vehicles <NUM>. Each data store <NUM> can also be associated with a tenant, or group of users <NUM>, who are permitted to access the telematics data stored on the data store <NUM>. For example, a tenant may be a group of users <NUM> belonging to a particular fleet management entity, such as, but not limited to, a trucking company, car rental company, package delivery company, public transportation company, insurance company, etc. The fleet management system <NUM> may include hundreds, thousands, or even millions of data stores <NUM> corresponding to different tenants and/or fleets of vehicles <NUM>.

In the illustrated example, the first data store 224A is associated with telematics devices G<NUM>, G<NUM>, and G<NUM>, the second data store 224B is associated with telematics devices G<NUM>, G<NUM>, and G<NUM>, and the third data store 224C is associated with telematics devices G<NUM>, G<NUM>, and G<NUM>. Hence, the first data store 224A is operable to store telematics data from telematics devices G<NUM>, G<NUM>, and G<NUM>, the second data store 224B is operable to store telematics data from telematics devices G<NUM>, G<NUM>, and G<NUM>, and the third data store 224BC is operable to store telematics data from telematics devices G<NUM>, G<NUM>, and G<NUM>. However, it should be appreciated that various associations between the data stores <NUM> and the telematics devices <NUM> are possible. In some cases, two or more data stores <NUM> may be associated with the same telematics device <NUM> and can each store telematics data retrieved from that telematics device <NUM>. In other cases, one or more telematics devices <NUM> may only be associated with single data store <NUM>.

Each fleet management server <NUM> can include one or more downloaders <NUM> for each data store <NUM>. Each downloader <NUM> can establish a communication channel <NUM> to a gateway server <NUM> to request telematics data on behalf of a data store <NUM>. In response, the gateway server <NUM> can transmit the telematics data across the communication channel <NUM> so that the telematics data can be stored at the data store <NUM>. In this manner, the downloaders <NUM> can enable the data stores <NUM> to receive telematics data from telematics devices <NUM> by connecting to the gateway servers <NUM> that are connected to the telematics devices <NUM>. Each fleet management server <NUM> can include, for each data store <NUM>, a downloader <NUM> for each gateway server <NUM> that the data store <NUM> requires access.

In the illustrated example, for the first data store 224A, downloader 222A can establish communication channel 226A to the first gateway server 210A to request telematics data from telematics device G<NUM>, downloader 222B can establish communication channel 226B to the second gateway server 210B to request telematics data from telematics device G<NUM>, and downloader 222C can establish communication channel 226C to the third gateway server 210C to request telematics data from telematics device G<NUM>. Similarly, for the second data store 224B, downloader 222D can establish communication channel 226D to the first gateway server 210A to request telematics data from telematics device G<NUM>, downloader 222E can establish communication channel 226E to the second gateway server 210B to request telematics data from telematics device G<NUM>, and downloader 222F can establish communication channel 226F to the third gateway server 210C to request telematics data from telematics device G<NUM>. Likewise, for the third data store 224C, downloader <NUM> can establish communication channel <NUM> to the first gateway server 210A to request telematics data from telematics device G<NUM>, downloader <NUM> can establish communication channel <NUM> to the second gateway server 210B to request telematics data from telematics device G<NUM>, and downloader 222I can establish communication channel 226I to the third gateway server 210C to request telematics data from telematics device G<NUM>.

Each gateway server <NUM> can include a plurality of network sockets <NUM>. The network sockets <NUM> can operate as endpoints for receiving and/or transmitting data. The structure and properties of the network sockets <NUM> can depend on the communication protocols used between the gateway server <NUM> and downloaders <NUM>. In some cases, the network sockets <NUM> may be TCP (Transmission Control Protocol) sockets. Each communication channel <NUM> established by a downloader <NUM> can be connected to a separate network socket <NUM>.

The number of network sockets <NUM> available at each gateway server <NUM> may be limited due to hardware and/or software restrictions of the gateway server <NUM>. For instance, the capacity of the hardware (e.g., processor <NUM>, data storage <NUM>, and/or communication interface <NUM>) of the gateway server <NUM> to transmit and receive data may be limit the number of network sockets <NUM>. Likewise, the communication protocol employed by the gateway server <NUM> may limit the number of network sockets <NUM>. For example, the data structure for network port identifiers may limit the number of network sockets <NUM>. For instance, for TCP, the number of network sockets <NUM> may be limited to <NUM>,<NUM> sockets.

To accommodate additional telematics devices <NUM> and/or tenants, additional data stores <NUM> and/or fleet management servers <NUM> can be added to the fleet management system <NUM>. However, as the number of data stores <NUM> increases, the number of downloaders <NUM> required to connect to the gateway servers <NUM> will also increase, increasing the number of communication channels <NUM> occupying network sockets <NUM> at the gateway servers <NUM>. In the worst-case scenario where each data store <NUM> requires access each gateway server <NUM>, the total number of network sockets <NUM> occupied by the communication channels <NUM> established by the downloaders <NUM> is equal to the number of gateway servers <NUM> multiplied by the number of data stores <NUM>. Hence, a large enough number of data stores <NUM> may result in insufficient network sockets <NUM> being available at the gateway servers <NUM>, constraining the transfer of telematics data to the fleet management servers <NUM>. Thus, an improved architecture for the fleet management system <NUM> may be required to collect telematics data for large scale implementations involving many telematics devices <NUM> and/or tenants.

Reference will now be made to <FIG> to illustrate another example implementation of the fleet management system <NUM>. In the illustrated example, each fleet management server <NUM> includes a single unified downloader <NUM>. That is, each fleet management server <NUM> includes one unified downloader <NUM>, regardless of the number of data stores <NUM>. Each unified downloader <NUM> can establish a single communication channel <NUM> to each gateway server <NUM>. Hence, in the worst-case scenario where each data store <NUM> requires access to each gateway server <NUM>, the total number of network sockets <NUM> occupied by the communication channels <NUM> established by the unified downloaders <NUM> is equal to the number of gateway servers <NUM> multiplied by the number of fleet management servers <NUM>. Since each fleet management server <NUM> can include multiple data stores <NUM>, the number of occupied network sockets <NUM> is significantly reduced in typical scenarios. The resultant increased number of available network sockets <NUM> can allow the fleet management system <NUM> to service additional tenants and telematics devices <NUM> by providing additional data stores <NUM> and fleet management servers <NUM>.

To facilitate the operation of the unified downloaders <NUM>, the communication channels <NUM> can be multiplexed. As shown, each unified downloader <NUM> can establish a single communication channel <NUM> to each gateway server <NUM> to collect telematics data for a plurality of data stores <NUM>. That is, each communication channel <NUM> can transport telematics data from telematics devices <NUM> that are associated with more than one data store <NUM>. For instance, in the illustrated example, a first communication channel 230A can transport telematics data associated with telematics devices G<NUM> and G<NUM> (i.e., G<NUM> being associated with the first data store 224A and G<NUM> being associated with the second data store 224B), a second communication channel 230B can transport telematics data associated with G<NUM> and G<NUM> (i.e., G<NUM> being associated with the first data store 224A and G<NUM> being associated with the second data store 224B), and a third communication channel 230C can transport telematics data associated with telematics devices G<NUM> and G<NUM> (i.e., G<NUM> being associated with the first data store 224A and G<NUM> being associated with the second data store 224B.

To facilitate multiplexing, the communication channels <NUM> may operate as persistent channels that allow the telematics data to be transported as asynchronous streams. This may allow a unified downloader <NUM> to send multiple requests for telematics data to a gateway server <NUM>, without waiting for a response from the gateway server <NUM> between each request. Likewise, the gateway server <NUM> can transmit telematics data in response to any of the requests, in any order, and at any time. Hence, multiple requests and responses can be completed concurrently, and out of sequence, via the same persistent communication channel <NUM>. The telematics data may be transported in this manner using various RPC (remote procedure call) protocols, such as, but not limited to, gRPC (Google™ remote procedure call).

In some embodiments, at least a portion of the unified downloaders <NUM> may be executed remotely from the fleet management servers <NUM>. For example, at least a portion of the unified downloaders <NUM> may be executed on a separate server computer, virtual machine, or container from fleet management servers <NUM>. An advantage of remotely executing at least a portion of the unified downloaders <NUM> is that the unified downloaders <NUM> can be implemented without modifying or reconfiguring the fleet management servers <NUM>. The fleet management servers <NUM> may have existing functionality that may conflict or otherwise make it difficult to execute the unified downloaders <NUM> on the fleet management servers <NUM>. When at least a portion of the unified downloaders <NUM> are remotely executed, communication channels can be established between the unified downloaders <NUM> and the fleet management servers <NUM> and/or data stores <NUM>.

In some embodiments, the gateway servers <NUM> can include one or more backup data stores (not shown). In some cases, each gateway server <NUM> may include one or more backup data stores. In other cases, one or more backup data stores can be shared among two or more gateway servers <NUM>. The backup data stores can temporarily store telematics data retrieved from the telematics devices <NUM>. In this manner, the backup data stores can serve as redundant data stores that can be used to recover telematics data, in case of data loss at the fleet management servers <NUM>. In operation, the fleet management servers <NUM> may transmit receipt confirmations to the gateway servers <NUM> in response to receiving telematics data from the gateway servers <NUM>. In response, the gateway server <NUM> can delete the telematics data from the backup data stores.

Reference will now be made to <FIG>, which illustrates an example method <NUM> for collecting telematics data from a plurality of telematics devices <NUM>. Method <NUM> can be implemented by the fleet management system <NUM> shown in <FIG>.

At <NUM>, a first and second data store <NUM> can be provided at a fleet management server <NUM>. The first data store 224A can store a first set of telematics data associated with a first group of telematics devices <NUM>. The second data store 224B can store a second set of telematics data associated with a second group of telematics devices <NUM>.

For instance, in the example illustrated in <FIG>, first and second data stores 224A and 224B are provided at the first fleet management server 220A. As shown, the first data store 224A is operable to store telematics data associated with a first group of telematics devices <NUM> (i.e., telematics devices G<NUM>, G<NUM>, and G<NUM>). Similarly, the second data store 224B is operable to store telematics data associated with a second group of telematics devices (i.e., telematics devices G<NUM>, G<NUM>, and G<NUM>).

It should be appreciated that a group of telematics devices <NUM> can include any number of telematics devices <NUM>. In some cases, a group of telematics devices <NUM> may consist of a single telematics device <NUM>. In some embodiments, the first and second group of telematics devices <NUM> can include at least one common telematics device <NUM>. That is, one or more telematics devices <NUM> may belong to both the first and second group of telematics devices <NUM>. In other cases, there may not be any common telematics devices <NUM> that belong to both the first and second group of telematics devices <NUM>.

At <NUM>, a first and second group of gateway servers <NUM> can be identified. The first group of gateway servers <NUM> can be in communication with the first group of telematics devices <NUM>. The second group of gateway servers <NUM> can be in communication with the second group of telematics devices <NUM>. The first and second group of gateway servers <NUM> can include at least one common gateway server <NUM>. That is, one or more gateway servers <NUM> may belong to both the first and second group of gateway servers <NUM>.

For instance, in the example illustrated in <FIG>, a first group of gateway servers <NUM> (i.e., the first, second, and third gateway servers 210A, 210B, 210C) in communication with the first group of telematics devices <NUM> (i.e., telematics devices G<NUM>, G<NUM>, and G<NUM>) can identified. Similarly, a second group of gateway servers <NUM> (i.e., the first, second, and third gateway servers 210A, 210B, 210C) in communication with the second group of telematics devices <NUM> (i.e., telematics devices G<NUM>, G<NUM>, and G<NUM>) can identified. In the illustrated example, the first, second, and third gateway servers 210A, 210B, 210C are common gateway servers <NUM> that belong to both the first and second group of gateway servers <NUM>.

It should be appreciated that a group of gateway servers <NUM> can generally include any number of gateway servers <NUM>. In some cases, a group of gateway servers <NUM> may consist of a single gateway server <NUM>. In some cases, there may be one or more gateway servers <NUM> that belong to the first group of gateway servers <NUM> but do not belong to second group of gateway servers <NUM>. Likewise, there may be one or more gateway servers <NUM> that belong to the second group of gateway servers <NUM> but do not belong to first group of gateway servers <NUM>.

At <NUM> a plurality of communication channels <NUM> can be established using a unified downloader <NUM>. A communication channel <NUM> can be established between each gateway server <NUM> in the first and second groups of gateway servers <NUM> and the unified downloader <NUM>. Each communication channel <NUM> can connect to a network socket <NUM> of the corresponding gateway server <NUM>. A single communication channel <NUM> can be established to each common gateway server <NUM>.

For instance, in the example illustrated in <FIG>, the unified downloader 228A of the first fleet management server 220A can establish first, second, and third communication channels 230A, 230B, 230C to the first second, and third gateway servers 210A, 210B, 210C, respectively. As shown, the first, second, and third communication channels 230A, 230B, 230C provide a connection to each gateway server <NUM> in the first and second groups of gateway servers <NUM>, including the common gateway servers <NUM>. A single communication channel <NUM> is established between the unified downloader 228A each common gateway server <NUM>.

As described herein, the communication channels <NUM> can be multiplexed to transport at least a portion of both the first and second set of telematics data. The communication channels <NUM> can be persistent and the telematics data may be transported across the communication channels <NUM> as asynchronous streams. For instance, in the example illustrated in <FIG>, the first communication channel 230A can transport telematics data associated with telematics devices G<NUM> and G<NUM> (i.e., G<NUM> belonging to the first set and G<NUM> belonging to the second set), the second communication channel 230B can transport telematics data associated with G<NUM> and G<NUM> (i.e., G<NUM> belonging to the first set and G<NUM> belonging to the second set), and the third communication channel 230C can transport telematics data associated with telematics devices G<NUM> and G<NUM> (i.e., G<NUM> belonging to the first set and G8 belonging to the second set).

At <NUM>, the first and second set of telematics data can be received through the plurality of communication channels <NUM>. The first set of telematics data can be stored in the first data store <NUM>. The second set of telematics data can be stored in the second data store <NUM>.

For instance, in the example illustrated in <FIG>, telematics data associated with telematics devices G<NUM>, G<NUM>, G<NUM> (i.e., the first group of telematics devices) and telematics devices G<NUM>, G<NUM>, G<NUM> (i.e., the second group of telematics devices) can be received through the plurality of communication channels <NUM>. Specifically, telematics data associated with telematics devices G<NUM> and G<NUM> can be received from the first gateway server 210A through the first communication channel 230A, telematics data associated with telematics devices G<NUM> and G<NUM> can be received from the second gateway server 210B through the second communication channel 230B, and telematics data associated with telematics devices G<NUM> and G<NUM> can be received from the third gateway server 210C through the third communication channel 230C. The telematics data associated with telematics devices G<NUM>, G<NUM>, G<NUM> (i.e., the first group of telematics devices <NUM>) can be stored in the first data store 224A. The telematics data associated with telematics devices G<NUM>, G<NUM>, G<NUM> (i.e., the second group of telematics devices <NUM>) can be stored in the second data store 224B.

Reference will now be made to <FIG>, which illustrates another example implementation of the fleet management system <NUM>. In the illustrated example, the fleet management system <NUM> further includes an event bus <NUM>. As shown, the event bus <NUM> can be in communication with the gateway servers <NUM>. Similarly, the event bus <NUM> can also be in communication with the fleet management servers <NUM>.

The event bus <NUM> can store a plurality of event records. Each event record can indicate the occurrence of an event or action. Various types of events can be recorded as event records at the event bus <NUM>. In this manner, the event bus <NUM> can provide a centralized record of events that can be referenced by other devices or systems, such as the gateway servers <NUM> and fleet management servers <NUM>. An advantage of this implementation that devices or systems can interact with the event bus <NUM> instead of other devices or systems associated with the events. This can reduce the number of interactions with the devices or systems associated with the events.

One example of an event that can be recorded as an event record at the event bus <NUM> is the connection of a telematics device <NUM> to a gateway server <NUM>. For example, an event record indicating that a telematics device <NUM> is connected to a gateway server <NUM> can be registered at the event bus <NUM> in response to the gateway server <NUM> detecting that the telematics device <NUM> is connected to the gateway server <NUM>. This type of event record can be used by the fleet management servers <NUM> to determine which telematics devices <NUM> are connected to which gateway servers <NUM> at a given time. In this manner, the fleet management servers <NUM> can determine which gateway servers <NUM> to connect to, in order to collect telematics data retrieved from particular telematics devices <NUM>. An advantage of this implementation is that the fleet management servers <NUM> can identify the gateway server <NUM> that is connected to a particular telematics device <NUM> by requesting connection information from the event bus <NUM>, instead of the gateway server <NUM>. This can allow the gateway servers <NUM> to operate more efficiently, by freeing resources that would otherwise be used to maintain and provide to connection information from the fleet management servers <NUM>.

Another example of an event that can be recorded as an event record at the event bus <NUM> is the granting of permissions to a data store <NUM> to receive telematics data from a telematics device <NUM>. Such event records can be used by the gateway servers <NUM> to determine whether to grant to a request from a fleet management server <NUM> to receive telematics data associated with a particular telematics device <NUM>. In this implementation, the gateway servers <NUM> can determine data permissions by requesting permission information from the event bus <NUM>, instead of from the gateway servers <NUM> themselves or other portions of the fleet management system <NUM>. An advantage of this implementation is that permission information can be centralized at the event bus <NUM>, instead of distributed across the fleet management system <NUM>. This can allow the gateway servers <NUM> to operate more efficiently, by freeing resources that would otherwise be used to maintain and provide permissions information.

Referring now to <FIG>, there is shown an example of a plurality of event records <NUM> that can be maintained at the event bus <NUM>. As shown, each event record <NUM> can correspond to an event and include an event type <NUM>, an event description <NUM>, and an event timestamp <NUM>. The event type <NUM> can indicate the type of event that occurred, the event description <NUM> can indicate what occurred during the event, and the timestamp <NUM> can indicate when the event occurred. In the illustrated example, the event types <NUM> include device connection events and data permission events. However, it should be appreciated that other event types <NUM> are possible. For a device connection event, the event description <NUM> and event timestamp <NUM> can indicate that a particular telematics device <NUM> is connected to a particular gateway server <NUM>, and when the connection occurred. Similarly, for a data permission event, the event description <NUM> and event timestamp <NUM> can indicate that a particular data store <NUM> has been granted permission to receive telematics data associated with a particular telematics device <NUM>, and when the permission was granted.

Any subset of the plurality of event records <NUM> can be provided by the event bus <NUM> to another system, such as a gateway server <NUM> or a fleet management server <NUM>, to provide a historical record of events to that system. In some cases, the event records <NUM> can be transmitted in batches or intermittently. For example, event records <NUM> may be transmitted to another system to notify that system of events that occurred while the system was offline or otherwise non-operational. Since each event records <NUM> can include a timestamp <NUM>, event records <NUM> corresponding to events that occurred while the system was non-operational can be identified and provided to that system. In other cases, the event records <NUM> can be provided to other systems in a regular, live, or continuous manner.

Reference will now be made to <FIG>, which illustrates an example method <NUM> for collecting telematics data from a plurality of telematics devices <NUM>. Method <NUM> can be implemented by the fleet management system <NUM> shown in <FIG> that includes event bus <NUM>.

At <NUM>, a request to receive a set of telematics data associated with a telematics device <NUM> can be received. The request can be received at a gateway server <NUM> in communication with the telematics device <NUM>. The request can be received from a fleet management server <NUM> and can be associated a data store <NUM> at the fleet management server <NUM>. For instance, in the example illustrated in <FIG>, the first gateway server 210A may receive a request, from the first fleet management server 220A and associated with the first data store 224A, for a set of telematics data associated with telematics device G<NUM>.

At <NUM>, the gateway server <NUM> can be determine whether the data store <NUM> has permission to receive the set of telematics data associated with the telematics device <NUM>. The determination can be made based on a first event record <NUM> registered at an event bus <NUM> in communication with the gateway server <NUM>. If it is determined that the data store <NUM> has permission to receive the set of telematics data associated with the telematics device <NUM>, method <NUM> can proceed to <NUM>. If it is determined that the data store <NUM> does not have permission to receive the set of telematics data associated with the telematics device <NUM>, method <NUM> can proceed to <NUM>.

For instance, continuing with the example illustrated in <FIG>, the first gateway server 210A can determine whether the first data store 224A has permission to receive the set of telematics data associated with telematics device G<NUM> based on a first event record <NUM> registered at the event bus <NUM>. The first gateway server 210A can determine that the first data store 224A has permission to receive the set of telematics data associated with telematics device G1 if the first event record <NUM> indicates that the first data store 224A has permission to receive the set of telematics data associated with telematics device G1. However, if the first event record <NUM> indicates that another data store <NUM> has permission to receive the set of telematics data associated with telematics device G1, the first gateway server 210A can determine that the first data store 224A does not have permission to receive the set of telematics data associated with telematics device G1.

The first event record <NUM> can identified as the latest or most recent event record <NUM> associated with the telematics device <NUM> that has the latest or most recent timestamp indicating that a particular data store <NUM> has permission to receive telematics data associated with the telematics device <NUM>. The latest or most recent event record <NUM> can be identified based on the timestamp <NUM>. For instance, in the example illustrated in <FIG>, there are two event records pertaining to permissions to receive telematics data associated with telematics device G<NUM>. One event record indicates that the first data store 224A is permitted to receive telematics data associated with telematics device G<NUM>, while another event record indicates the second data store 224B is permitted to receive telematics data associated with telematics device G<NUM>. The event record indicating that the first data store 224A is permitted to receive telematics data associated with telematics device G<NUM> can be identified as the first event record because the timestamp <NUM> of that event record is more recent than the other event record.

At <NUM>, the gateway server <NUM> can determine whether the request satisfies at least one permission modification criteria. The determination can be made in response to determining that the data store <NUM> does not have permission to receive the set of telematics data associated with the telematics device <NUM> at <NUM>. If it is determined that the request satisfies at least one permission modification criteria, method <NUM> can proceed to <NUM>. If it is determined that the request does not satisfy at least one permission modification criteria, method <NUM> can proceed to <NUM>.

Various permission modification criteria can be evaluated at <NUM>. In some embodiments, the permission modification criteria can pertain to whether another request associated with another data store <NUM> was received within a predetermined time period. In other words, the authority to receive telematics data associated with a particular telematics device <NUM> may be based on the first device to request the telematics data within a predetermined time period. For example, a permission modification criteria may be satisfied if another request associated with another data store to receive the data records associated with the telematics device was not received within a predetermined time period. Likewise, a permission modification criteria may not be satisfied if another request associated with another data store to receive the data records associated with the telematics device was received within the predetermined time period. The duration of predetermined time period may vary depending on the fleet management system <NUM>. For example, the predetermined time period may be <NUM> hour, <NUM> hours, <NUM> hours, <NUM> day, <NUM> days, <NUM> week, etc..

In other embodiments, the permission modification criteria can pertain to an access level of the fleet management server <NUM> or data store <NUM> associated with the request. For example, a permission modification criteria may be satisfied if the request is associated with a fleet management server <NUM> or data store <NUM> having a higher access level than another request associated with another data store <NUM> or fleet management server <NUM> having a lower access level. In other embodiments, the permission modification criteria can pertain to whether the request was approved by another device or system. For example, a permission modification criteria may be satisfied if the request was approved by an administrative user or system.

At <NUM>, a second event record <NUM> can be registered at the event bus <NUM>. The second event record <NUM> can indicate that the data store <NUM> has permission to receive the set of telematics data associated with the telematics device <NUM>. The second event record <NUM> can be registered in response to determining that the request satisfies at least one permission modification criteria at <NUM>. For instance, continuing with the example illustrated in <FIG>, if it is determined that the request satisfies at least one permission modification criteria, a second event record <NUM> can be registered at the event bus indicating that the first data store 224A has permission to receive the set of telematics data associated with telematics device G<NUM>.

The second event record can be used to evaluate future requests to receive telematics data associated with the telematics device <NUM>. For example, subsequent to <NUM>, another request, associated with a different data store <NUM>, to receive the set of telematics data associated with the telematics device <NUM> may be received at the gateway server <NUM>. Based on the second event record <NUM>, it can be determined that the other data store <NUM> does not have permission to receive the set of telematics data associated with the telematics device <NUM>.

At <NUM>, the set of telematics data associated with the telematics device <NUM> can be transmitted from the gateway server <NUM> to the fleet management server <NUM> in response to the request. In other words, the request can be granted. The request can be granted in response to determining that the request satisfies at least one permission modification criteria at <NUM> or determining that the data store <NUM> has permission to receive the set of telematics data associated with the telematics device <NUM> at <NUM>.

For instance, continuing with the example shown in <FIG>, the first gateway server 210A can transmit the set of telematics data collected from telematics device G<NUM> to the first fleet management server 220A. The first fleet management server 220A can store the set of telematics data in the first data store 224A associated with the request. As shown, the telematics data can be transmitted across a first communication channel 230A established between the first fleet management server 220A and the gateway server 210A. As described herein, the communication channel 230A can be multiplexed so that telematics data associated with more than one data store <NUM> can be transported across the same communication channel 230A. The telematics data can be transported as asynchronous streams.

In some embodiments, prior to <NUM>, the fleet management server <NUM> can identify the gateway server <NUM> in communication with the telematics device <NUM> based on a third event record <NUM> registered at the event bus <NUM>. The third event record <NUM> can indicate that the telematics device <NUM> is connected to the gateway server <NUM>. The fleet management server <NUM> can determine whether the fleet management server <NUM> is connected to the gateway server <NUM>. If it is determined that the fleet management server <NUM> is not connected to the gateway server <NUM>, the fleet management server <NUM> can establish a communication channel <NUM> between the first fleet management server 220A and the gateway server 210A.

At <NUM>, the request can be denied. In other words, the gateway server <NUM> can refuse to transmit the set of telematics data associated with the telematics device <NUM> to the fleet management server <NUM>. The denial of the request can be made in response to determining that the request does not satisfy at least one permission modification criteria at <NUM>. For instance, continuing with the example shown in <FIG>, if it is determined that the request does not satisfy at least one permission modification criteria, the first gateway server 210A can refuse to transmit the set of telematics data associated with telematics device G<NUM> to the first fleet management server 220A.

Reference will now be made to <FIG>, which illustrates an example method <NUM> for collecting telematics data from a plurality of telematics devices <NUM>. Method <NUM> can also be implemented by the fleet management system <NUM> shown in <FIG> that includes event bus <NUM>.

At <NUM>, a connection by a telematics device <NUM> to a gateway server <NUM> can be detected at the gateway server <NUM>. For instance, in the example illustrated in <FIG>, the first gateway server 210A can detect that telematics device G<NUM> is connected to the first gateway server 210A.

The telematics device <NUM> may have connected to the gateway server <NUM> for a variety of reasons. For example, the telematics device <NUM> may have connected to the gateway server <NUM> during the activation of the telematics device <NUM>. Alternatively, the telematics device <NUM> may have been previously activated and connected to another gateway server <NUM>, but switched to the gateway server <NUM> due to load balancing, latency, etc..

At <NUM>, an event record <NUM> can be registered at an event bus <NUM> in communication with the gateway server <NUM>. The event record <NUM> can indicate that the telematics device <NUM> is connected to the gateway server <NUM>. For instance, continuing with the example illustrated in <FIG>, an event record <NUM> indicating that telematics device G<NUM> is connected to the first gateway server 210A can be registered at the event bus <NUM>. The event record can include a timestamp representing when the connection by the telematics device <NUM> to the gateway server <NUM> was established.

At <NUM>, a fleet management server <NUM> can identify the gateway server <NUM> in communication with the telematics device <NUM> based on the event record <NUM>. For instance, in the example illustrated in <FIG>, the first fleet management server 220A can identify that the first gateway server 210A is in communication with the telematics device G<NUM> based on the event record <NUM> registered at the event bus <NUM>.

In some embodiments, the fleet management server <NUM> can identify the gateway server <NUM> in communication with the telematics device <NUM> based on more than one event record <NUM>. For example, the fleet management server <NUM> may receive a plurality of event records <NUM> from the event bus <NUM>. The fleet management server <NUM> may identify the gateway server <NUM> in communication with the telematics device <NUM> based on the timestamps of the event records <NUM> associated with the telematics device <NUM>. For instance, in the example illustrated in <FIG>, there are multiple event records <NUM> indicating connections by telematics device G<NUM> to different gateway servers <NUM> at different times. As shown, a first event record <NUM> indicates that telematics device G<NUM> was connected to the second gateway server 210B at a first time, whereas a second event record <NUM> indicates that telematics device G<NUM> was connected to the first gateway server 210A at a second time. The fleet management server <NUM> can determine that telematics device G<NUM> is connected to the first gateway server 220A because the second time is subsequent to the first time, and therefore, the telematics device G<NUM> was most recently connected to the first gateway server 210A.

In some embodiments, each fleet management server <NUM> can maintain a mapping of the plurality of telematics devices <NUM> to the plurality of gateway servers <NUM>. The fleet management servers <NUM> can update the mappings based on one or more event records <NUM> received from the event bus <NUM>. The fleet management servers <NUM> can use the mappings to identify each gateway server <NUM> in communication with each telematics device <NUM>. The mappings can also be used by the fleet management servers <NUM> to identify gateway servers <NUM> that the fleet management servers <NUM> no longer need to be connected to. For example, the mapping can be used to identify one or more gateway servers <NUM> that are not connected to any of the telematics devices <NUM> associated with any of the data stores <NUM> at the fleet management server <NUM>. The fleet management server <NUM> can terminate the unused communication channels <NUM> between the fleet management server <NUM> and the gateway servers <NUM>.

At <NUM>, the fleet management server <NUM> can receive a set of telematics data associated with the telematics device <NUM> from the gateway server <NUM>. The fleet management server <NUM> can store the set of telematics data in one or more data stores <NUM> associated with the telematics device <NUM>. For instance, continuing with the example illustrated in <FIG>, the first fleet management server 220A can receive a set of telematics data associated with telematics device G<NUM> from the first gateway server 210A. As shown, the set of telematics data associated with telematics device G<NUM> can be received through the first communication channel 230A established by the first unified downloader 228A. The set of telematics data can then be stored in the first data store 224A, which is associated with telematics device G<NUM>.

In some embodiments, prior to <NUM>, the fleet management server <NUM> can determine whether the fleet management server <NUM> is already connected to the gateway server <NUM>. If the fleet management server <NUM> is not already connected to the gateway server <NUM>, the fleet management server <NUM> can establish a communication channel <NUM> to the gateway server <NUM>. For example, a unified downloader <NUM> of the fleet management server <NUM> can establish a communication channel <NUM>, which may be multiplexed and transport telematics data as asynchronous streams. The established communication channel <NUM> may transport telematics data associated with two or more data stores <NUM>.

In some embodiments, prior to <NUM>, the gateway server <NUM> can determine whether the one or more data stores <NUM> have permission to receive the set of telematics data associated with the telematics device <NUM>. The gateway server <NUM> can make the determination based on another event record <NUM> registered at the event bus <NUM>. The other event record <NUM> may indicate whether the one or more data stores <NUM> have permission to receive the set of telematics data associated with the telematics device <NUM>.

In some embodiments, steps <NUM> and <NUM> can be executed a plurality of fleet management servers <NUM>. In this manner, each fleet management server <NUM> having at least one data store <NUM> associated with the telematics device <NUM> can identify the gateway server <NUM> in communication with the telematics device <NUM>, receive the set of telematics data associated with the telematics device <NUM>, and store the set of telematics data in one or more data stores <NUM>.

It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the embodiments described herein. However, it will be understood by those of ordinary skill in the art that the embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the embodiments described herein. Also, the description is not to be considered as limiting the scope of the embodiments described herein.

It should also be noted that the terms "coupled" or "coupling" as used herein can have several different meanings depending in the context in which these terms are used. For example, the terms coupled or coupling may be used to indicate that an element or device can electrically, optically, or wirelessly send data to another element or device as well as receive data from another element or device. Furthermore, the term "coupled" may indicate that two elements can be directly coupled to one another or coupled to one another through one or more intermediate elements.

It should be noted that terms of degree such as "substantially", "about" and "approximately" as used herein mean a reasonable amount of deviation of the modified term such that the end result is not significantly changed. These terms of degree may also be construed as including a deviation of the modified term if this deviation would not negate the meaning of the term it modifies.

In addition, as used herein, the wording "and/or" is intended to represent an inclusive-or. That is, "X and/or Y" is intended to mean X or Y or both, for example. As a further example, "X, Y, and/or Z" is intended to mean X or Y or Z or any combination thereof.

Furthermore, any recitation of numerical ranges by endpoints herein includes all numbers and fractions subsumed within that range (e.g., <NUM> to <NUM> includes <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>). It is also to be understood that all numbers and fractions thereof are presumed to be modified by the term "about" which means a variation of up to a certain amount of the number to which reference is being made if the end result is not significantly changed.

The example embodiments of the systems and methods described herein may be implemented as a combination of hardware or software. In some cases, the example embodiments described herein may be implemented, at least in part, by using one or more computer programs, executing on one or more programmable devices comprising at least one processing element, and a data storage element (including volatile memory, non-volatile memory, storage elements, or any combination thereof). Programmable hardware such as FPGA can also be used as standalone or in combination with other devices. These devices may also have at least one input device (e.g., a pushbutton keyboard, mouse, a touchscreen, and the like), and at least one output device (e.g., a display screen, a printer, a wireless radio, and the like) depending on the nature of the device. The devices may also have at least one communication device (e.g., a network interface).

It should also be noted that there may be some elements that are used to implement at least part of one of the embodiments described herein that may be implemented via software that is written in a high-level computer programming language such as object-oriented programming. Accordingly, the program code may be written in C, C++ or any other suitable programming language and may comprise modules or classes, as is known to those skilled in object-oriented programming. Alternatively, or in addition thereto, some of these elements implemented via software may be written in assembly language, machine language or firmware as needed. In either case, the language may be a compiled or interpreted language.

At least some of these software programs may be stored on a storage media (e.g., a computer readable medium such as, but not limited to, ROM, magnetic disk, optical disc) or a device that is readable by a general or special purpose programmable device. The software program code, when read by the programmable device, configures the programmable device to operate in a new, specific and predefined manner in order to perform at least one of the methods described herein.

Furthermore, at least some of the programs associated with the systems and methods of the embodiments described herein may be capable of being distributed in a computer program product comprising a computer readable medium that bears computer usable instructions for one or more processors. The medium may be provided in various forms, including non-transitory forms such as, but not limited to, one or more diskettes, compact disks, tapes, chips, and magnetic and electronic storage.

Claim 1:
A method for collecting telematics data from a plurality of telematics devices, the method comprising:
receiving, at a gateway server in communication with a telematics device, a request to receive a set of telematics data associated with the telematics device, the request being associated with a data store at a fleet management server;
determining, based on a first event record registered at an event bus in communication with the gateway server, that the data store does not have permission to receive the set of telematics data associated with the telematics device;
in response to determining that the data store does not have permission to receive the set of telematics data associated with the telematics device, determining whether the request satisfies at least one permission modification criteria;
in response to determining that the request does satisfy the at least one permission modification criteria:
registering, at the event bus, a second event record indicating that the data store has permission to receive the set of telematics data associated with the telematics device; and
transmitting the set of telematics data associated with the telematics device from the gateway server to the fleet management server, thereby granting the request; and
in response to determining that the request does not satisfy the at least one permission modification criteria, denying the request.