LOW LATENCY AND POWER EFFICIENT DATA TRANSMISSION BETWEEN A SENSOR AND SERVER COMPUTER
In an example method, sensor data is received at a computer system from a sensor. The sensor data is processed by the computer system. The processed sensor data is larger in size than the sensor data. The processed sensor data is transmitted from the computer system to a first output device. The sensor data is received at the computer system from the sensor over a first communications link. The processed sensor data is transmitted from the computer system to the first output device over a second communications link. The first communications link has a lower throughput than the second communications link.
This application is a bypass continuation-in-part of PCT Application No. PCT/US2016/019946, filed Feb. 26, 2016, which claims priority to U.S. Application No. 62/121,478, filed Feb. 26, 2015. The contents of the earlier applications are incorporated by reference in their entirety herein.
TECHNICAL FIELDThe disclosure generally relates to transmitting data between sensors and server computers.
BACKGROUNDSensors can be used to detect events occurring in an environment and/or measure properties of an environment, and provide a corresponding output. As an example, sensors can be used to detect the temperature of an environment, the motion of objects within an environment, changes in lighting conditions of an environment, among other events or properties. Information regarding the detected events or properties can be provided to another device (e.g., a computing device) for analysis.
In some cases, the output from a sensor can be used to control and regulate the operation of other devices. As an example, sensor information describing the temperature of an environment can be used to regulate an air conditioning unit operating in the environment. As another example, sensor information describing changes in lighting conditions of an environment can be used to control lights illuminating the environment.
In some cases, sensors can transmit information to a “cloud” computing system (e.g., a collection of one or more remote server computers), such that the information is processed remotely.
SUMMARYThe present disclosure describes implementations for transmitting, processing, and managing data between one or more sensors and one or more server computers (e.g., a “cloud” computing system). For example, in some implementations, a sensor can transmit a relatively small amount of data to one or more server computers, and the server computers can process the received sensor data such that it is suitable for use in one or more applications or use cases. In some cases, sensor data can be processed partially or entirely by the server computers rather than by the sensor itself.
In general, in an aspect, a method includes receiving sensor data at a computer system from a sensor. The method also includes processing, by the computer system, the sensor data. The processed sensor data is larger in size than the sensor data. The method also includes transmitting, from the computer system to a first output device, the processed sensor data. The sensor data is received at the computer system from the sensor over a first communications link. The processed sensor data is transmitted from the computer system to the first output device over a second communications link. The first communications link has a lower throughput than the second communications link.
Implementations of this aspect may include one or more of the following features.
In some implementations, the first communications link can be a Bluetooth connection, and the second communications link can include one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection. The method can further include maintaining the first communications link and the second communications link over a period of time.
In some implementations, the sensor data can include a numerical value corresponding to a measurement obtained by the sensor. Processing the sensor data can include appending a unit of measurement to the numerical value.
In some implementations, the sensor data can include a numerical value corresponding to a measurement obtained by the sensor. The numerical value can correspond to a first unit of measurement. Processing the sensor data can include converting the numerical value into a second numerical value associated with a second unit of measurement.
In some implementations, the sensor data can include a numerical value corresponding to a measurement obtained by the sensor. Processing the sensor data can include performing one or more mathematical operations with respect to the numerical value.
In some implementations, the sensor data can be received at the computer system via an intermediate relay device. The intermediate relay device can include a mobile device communicatively coupled to the sensor and the computer system.
In some implementations, the method can further include receiving, at the computer system from the sensor, an identifier associated with the sensor. The computer system can receive the identifier prior to receiving the sensor data. The sensor data can be processed in a manner based at least in part on the received identifier. Processing the sensor data can include performing one or more operations with respect to the numerical value. The one or more operations can be selected based on the received identifier. The first output device can be selected based on the received identifier.
In some implementations, the method can further include defining, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the processing of the sensor data, and the first output device. The method can further include modifying the logical configuration area based on user input. The method can further include defining, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors, a processing of additional sensor data received by the computer system from the one or more additional sensors, and one or more additional output devices.
In some implementations, the computer system can include one or more first server computers and one or more second server computers. The local configuration area can be defined by the one or more first server computers. The sensor data can be received from the sensor at the one or more first server computers. Processing the sensor data can include transmitting the sensor data from the one or more first server computers to the one or more second computers. Processing the sensor data can also include processing, by the one or more second server computers, the sensor data. Processing the sensor data can also include transmitting, from the one or more second server computers to the one or more first server computers, the processed sensor data. The logical configuration area can further specify a relationship between at least the sensor, the processing of the sensor data, the one or more second server computers, and the first output device.
In some implementations, the method can further include transmitting, from the computer system to a second output device, the processed sensor data.
In some implementations, the output device can be configured to control an electrical or mechanical device based on the processed sensor data.
In some implementations, the sensor data can be received at a computer system from the sensor via a push communication.
In general, in another aspect, a method includes receiving, at a computer system from a sensor, sensor data. The method also includes transmitting, from the computer system to a first output device, the sensor data. The method also includes transmitting, from the computer system to a second output device, the sensor data. The sensor data is transmitted from the computer system to the first output device over a second communications link. The sensor data is transmitted from the computer system to the second output device over a third communications link. The first communications link has a lower throughput than the second communications link and the third communications link.
Implementations of this aspect may include one or more of the following features.
In some implementations, the first communications link can be a Bluetooth connection, and each of the second communications link and the third communications link can include each one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection.
In some implementations, the method can further include receiving, at the computer system from the sensor, an identifier associated with the sensor. The first output device and the two output device can be selected based on the received identifier.
In some implementations, the method can further include defining, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the first output device, and the second output device. The method can further include modifying the logical configuration area based on user input.
In some implementations, the method can further include defining, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors and one or more additional output devices.
In some implementations, at least one of the first output device and the second output device can be configured to control an electrical or mechanical device based on the processed sensor data.
Other implementations are directed to systems, devices and non-transitory, computer-readable mediums.
Implementations of subject matter described herein can provide various technical benefits. In some cases performing some or all of the sensor data processing on the server computers reduces the computational requirements of the sensor, and can enable sensors to be constructed more simply and/or less expensively. Further, in some cases, this also enables sensors to operate more efficiently. For example, sensors can consume less power during operation, as fewer functions are being performed by the sensor. Further, this also enables sensors to transmit data more quickly and efficiently to the server computers. For example, as each sensor transmits only a relatively small amount of data to a server computer, the amount of network traffic and the network latency between them in reduced. In addition, low latency data communications between a sensor and a server computer enables faster data sampling by the sensor. For example, as collected data can be transmitted more quickly after collection, the sensor can transmit collected data in real-time or substantially real time. Thus, other devices can make use of the collected data more quickly after collection.
Details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects, and potential advantages will be apparent from the description and drawings, and from the claims.
The present disclosure describes implementations for transmitting, processing, and managing data between one or more sensors and one or more server computers (e.g., a “cloud” computing system). For example, in some implementations, a sensor can transmit a relatively small amount of data to one or more server computers, and the server computers can process the received sensor data such that it is suitable for use in one or more applications or use cases. In some cases, sensor data can be processed partially or entirely by the server computers rather than by the sensor itself.
In some cases, performing some or all of the sensor data processing on the server computers reduces the computational requirements of the sensor, and can enable sensors to be constructed more simply and/or less expensively. For example, sensors can be constructed using less powerful processors and/or fewer processors. In some cases, this also enables sensors to operate more efficiently. For example, sensors can consume less power during operation, as fewer functions are being performed by the sensor. Further, this also enables sensors to transmit data more quickly and efficiently to the server computers. For example, as each sensor transmits only a relatively small amount of data to a server computer, the amount of network traffic and the network latency between them in reduced. This can be particularly useful, for example, if the sensors and the server computers communicate through a relatively low-power network connection having a relatively low throughput (e.g., a Bluetooth Lowe Energy, or BLE, connection).
Further, low latency data communications between a sensor and a server computer enables faster data sampling by the sensor. For example, as collected data can be transmitted more quickly after collection, the sensor can transmit collected data in real-time or substantially real time. Thus, other devices can make use of the collected data more quickly after collection. Further, as data is transmitted from the sensor more quickly after collection, the sensor is less likely to require an extensive transmission queue or buffer to stage data prior to transfer. In some cases, a sensor need not have a transmission queue or buffer at all.
Low latency and power efficient data transmissions between a sensor and a server computer can be beneficial in a variety of different applications. As an example, medical equipment can relay real-time or substantially real-time sensor data to one or more server computers. In turn, the server computers can process the sensor data (e.g., using processor-intensive analytic algorithms), and transmit commands to the medical equipment based on the processed sensor data (e.g., commands to calibrate the medical equipment in real-time or substantially real-time based on the processed sensor data).
As another example, a crane or other construction equipment can include sensors that transmit real-time or substantially real-time information regarding the equipment's load conditions to one or more server computers. In turn, the server computers can process the sensor data, and transmit commands to the equipment based on the processed sensor data (e.g., commands to control the operation of the crane in real-time or substantially real-time, such that the crane compensates for the loads and remains balanced during operation). Further, information regarding the equipment's load can be recorded and used to improve the design of cranes in the future.
As another example, a flying object (e.g., a plane, a helicopter, or an aerial drone) can include a global position system (GPS) sensor that measures the location of the flying object in real-time or substantially real-time. This location information can be transmitted from the sensor to one or more server computers. In turn, the server computers can control the operation of ground-based spotlights in real-time or substantially real-time based on the location information, such that the spotlights illuminate the flying object during flight.
In some implementations, a user can customize how the sensor information is processed by the server computers. This can be beneficial, for example, as it enables a user to tailor the processed data to suit a particular application. For example, the user can customize the processing of sensor data such that the processed sensor data is compatible with a particular output device and/or formatted or structured in a way suitable for storage or subsequent analysis.
The sensors 110a-c can include any device used to detect events occurring in an environment and/or measure properties of an environment, and provide a corresponding output (e.g., an indication of the measured events and/or properties). As examples, the sensors 110a-c can include vibration sensors, temperature sensors, speed sensors, rotation sensors (e.g., sensors configured to detect the rotation of a moving wheel or shaft), airflow sensors, pressure sensors, chemical measurement sensors, electrical sensors (e.g., sensors configured to detect electrical current or electrical potential), magnetic sensors, flow sensors, fluid velocity sensors, radiation sensors, navigation sensors, position or location sensors, angle sensors, displacement sensors, distance sensors, acceleration sensors, optical sensors, pressure sensors, force sensors, density sensors, proximity sensors, presence sensors, etc.) In some cases, the sensors 110a-c can be included as a part of other devices (e.g., mounted, secured, or otherwise incorporated into other devices). In some cases, the sensors 110a-c can be stand-alone devices. Although three sensors are shown, this is merely an illustrative example. In practice, there may be any number of sensors (e.g., one, two, three, four, or more).
The server computing system 120 can include any electronic device that is used process, transmit and receive data. For example, the server computing system 120 can receive sensor data from the sensors 110a-c, process the received sensor data, and transmit the processed sensor data to the output devices 130a-c. Examples of a server computing system 120 include devices such as desktop computers, notebook computers, server computers, and other computing devices capable of transmitting and receiving data (e.g., to and from the sensors 110a-c and the output devices 130a-c through the networks 140a and 140b). A server computing system 120 can include devices that operate using one or more operating system (for example, Microsoft Windows, Apple OSX, Linux, Unix, Android, iOS, etc.) and/or architectures (for example, x86, PowerPC, ARM, etc.)
The server computing system 120 is illustrated as a single component, but in practice can be implemented on one or more computing devices. The server computing system 120 can be, for instance, a single computing device that is connected to networks 140a and 140b. In some implementations, the server computing system 120 can include multiple computing devices that are connected to networks 140a and 140b. For instance, the server computing system 120 can include several computing devices, and the functionality of the server computing system 120 can be distributive on one or more of these computing devices (e.g., a “cloud” environment). In some implementations, one or more of the computing devices of the server system 120 need not be located locally with respect to the rest of system 100, and portions of one or more the computing devices can be located in one or more remote physical locations (e.g., in different rooms, buildings, cities, regions, countries, etc.).
The output devices can be, or include, any device that makes use of processed data from the server computing system 120. In some cases, the output devices can control the operation of one or more electrical and/or mechanical components, at least in part, based on information received from the server computing system 120. For instance, the output device can include a control module communicatively coupled to one or more processors, actuators, engines, motors, valves, or other such components, and the control module can control those components based on processed sensor data received from the server computing system 120.
As an example, the sensors 110a-c can be configured to measure the ambient temperature of a particular room, and the output devices 130a-c can be configured to control the operation of air conditioning units positioned regulating the temperature within the room. During operation, the sensors 110a-c transmit sensor data indicating the measured temperature to the server computing system 120. The server computing system 120 processes the received sensor data, such that it is in a form usable by the output devices 130a-c, then transmits the processed sensor data to the output devices 130a-c. Based on this data, the output devices 130a-c adjusts the operation of the air conditioning units (e.g., by starting or stopping the operation of the air conditioning units to achieve a particular target ambient temperature in the room).
In some cases, the output devices 130a-c can include one more devices that store and/or further process the data received from the server computing system 120. For example, the output devices 130a-c can include one or more computing systems (e.g., having one or more processors and/or data storage modules) to retain the received data and conduct further analysis on the received data.
Although three output devices are shown, this is merely an illustrative example. In practice, there may be any number of output devices (e.g., one, two, three, four, or more).
Networks 140a and 140b can be any communications networks through which data can be transferred and shared. For example, network 140a and 140b can be local area networks (LANs) or a wide-area networks (WANs), such as the Internet. Networks 140a and 140b can be implemented using various networking interfaces, for instance wireless networking interfaces (such as Wi-Fi, Bluetooth, or infrared) or wired networking interfaces (such as Ethernet or serial connection). Networks 140a and 140b also can include combinations of more than one network, and can be implemented using one or more networking interfaces. In some cases, networks 140a and 140b can include a combination of more than one network, each extending across a different physical location. In some cases, a communications link across the network 140a and a communications link across the network 140b can be maintained over a period of time, such that information from the sensors 110a-c can be transmitted in real-time or substantially real-time to the server computing system 120a and the one or more output devices 130a-c.
In the example shown in
Due to the relatively low throughput of the network 140a, communications between the sensors 110a-c and the server computing system 120 may experience relatively high network latency, particularly when a large amount of data is being transmitted between them. To reduce the network latency, the sensors 110a-c can be configured to transmit a relatively small amount of information at a time (e.g., one byte, two bytes, three bytes, or some other small amount of information that can be transmitted at a relatively low latency across the network 140a). In some cases, the sensors 110a-c can transmit values describing measurements (e.g., a numerical value), while excluding contextual information (e.g., an indication of the units of measurement).
Due to the exclusion of contextual information, the information transmitted by the sensors 110a-c may not be directly compatible with the output devices 130a-c. For example, referring to
However, in this example, the output device 130a (e.g., a control module of an air conditioning unit) cannot directly make use of temperature measurements having only a numerical value, and requires an indication of the units of measurement. As shown in
In some cases, this processing can increase the size of the sensor data. As an example, the data received from the sensor 110a may be between one byte to 8 bytes, whereas the processed data may be 16 bytes or greater. This relatively large amount of data is represented by a thicker arrow 204.
As an illustrative example, in some cases, processing temperature data from the sensor can result in the generation of the following Javascript Object Notation (JSON) object:
In this example, the processed data is a sting of 321 bytes (including a “degree” symbol and whitespace characters), substantially larger than the 2 bytes of data received from the sensor.
As shown in
As the network 140b has a higher throughput than the network 140a, the network 140b is more robust with respect to network latency. Thus, by transmitting smaller portions of data across the lower throughput network 140a, and transmitting larger processed portions of data across the higher throughput network 140b, the performance of the overall system is improved.
In the aforementioned example, the server computing system 120 processes data received from the sensor 110a by appending a unit of measurement to a numerical value. However, this is merely an illustrative example. In practice, the server computing system 120 can process sensor data any number of different ways.
As an example, the server computing system 120 can convert measurements obtained by the sensors 110a-c into different units of measurement. For instance, if the sensor 110a outputs temperature measurements in degrees Fahrenheit, the server computing system 120 can convert the measurements to Celsius and/or Kelvin.
As another example, the server computing system 120 can process multiple measurements in conjunction. For instance, if the sensor 110a outputs temperature measurements, the server computing system 120 can calculate a rate of change in temperature (e.g., by calculating a rate of change in measurements received from the sensor 110a over a period of time).
As another example, the server computing system 120 can process multiple measurements received from multiple different sensors in conjunction. For instance, if the sensors 110a-c output temperature measurements from a first, second, and third area of a building respectively, the server computing system 120 can calculate an average temperature for the three areas (e.g., by calculating an average of the measurements received from the sensor 110a-c).
Other forms of data processing are also possible, depending on the implementation. As examples, data processing can include geometric operates, numerical integration, interpolation, extrapolation, regression, error detection and correction, digital signal processing, image processing, process synchronization, scheduling, sequencing, machine learning, statistical analysis, and predictive analysis.
As described above, performing some or all of the sensor data processing on the server computing system 120 instead of the sensors 110a-c reduces the computational requirements of the sensors 110a-c, and can enable sensors to be constructed more simply and/or less expensively. In some cases, this also enables sensors to operate more efficiently, and transmit data more quickly and efficiently to the server computing system 120 (e.g., by reducing network traffic and network latency between the server computing system 120 and the sensors 110a-c).
In some cases, sensor data provided by a single sensor can be routed to multiple output devices by the server computing system 120, without requiring the sensor to send sensor data to each output device individually. For example, referring to
In a similar manner as described with respect to
In some cases, sensor data can be both processed and routed to multiple output devices by the server computing system 120. For example, referring to
In some cases, each of the components of the system 100 can be assigned a respective identifier (e.g., an identification number or name) that uniquely identifies that component. These identifiers can be used to define how data is processed and routed by the server computing system 120. For example, the server computing system 120 can assign each of the sensors 110a-c and the output devices 130a-c a respective identifier (e.g., an “endpoint ID”). Further, the server computing system 120 can group certain identifiers together, and groups of devices can be collectively specified by a group identifier.
As an example, the sensors 110a-c can be assigned identifiers “111,” “222,” and “333,” respectively. Further, the output devices 130a-c can be assigned identifiers “AAA,” “BBB”, and “CCC,” respectively. In this example, each of the sensors 110a-c provides different sensor information that is to be processed and routed in different ways by the server computing system 120.
To identify itself to the server computing system 120, each of the sensors 110a-c transmits its respective identifier to the server computing system 120 prior to sending sensor data. The server computing system 120 identifies each of the sensors 110a-c based on the received identifiers, and processes and routes the sensor data received from each differently based on one or more “configuration areas” associated with the identifiers. Configuration areas can be, for example, logical areas or profiles maintained by the server computing system 120.
As an example, Table 1 shows a first example configuration area. In this configuration area, data received from a sensor having an identifier “111” is associated with a processing operation “A,” and a destination identifier “AAA.” Thus, when the server computing system 120 receives an identifier “111” from one of the sensors, it subsequently processes the sensor data received from that sensor using the processing operation “A,” and transmits the processed data to output device “AAA.”
The server computing device 120 can define any number of configuration areas, such that sensor data is processed and routed concurrently from any number of sensors. For example, Table 2 shows a second example configuration area defined in conjunction with the first example configuration area shown in Table 1. In this configuration area, data received from a sensor having an identifier “222” is associated with a processing operation “B,” and a destination identifiers “AAA” and “BBB.” Thus, when the server computing system 120 receives an identifier “222” from one of the sensors, it subsequently processes the sensor data received from that sensor using the processing operation “B,” and transmits the processed data to two output devices “AAA” and “BBB.”
Thus, the server computing device 120 can receive sensor data from any number of sensors, process sensor data from each sensor in accordance with pre-defined processing operations, and transmit the processed sensor data to corresponding output devices.
In some cases, sources of data and/or destinations for processed data can be grouped into one or more “pools” or “groups.” These pools or groups can be assigned a respective group identifier, and like identifiers for individual components, group identifies can be used to specify how data is processed and routed. For example, Table 3 shows a third example configuration area defined in conjunction with the first example configuration area shown in Table 1. In this configuration area, data received from a source group “YYY” is associated with a processing operation “C,” and a destination group “ZZZ.” The source group “YYY” includes the sensors having identifiers “111” and “222,” while the destination group “ZZZ” includes the output devices having identifiers “BBB” and CCC.” Thus, when the server computing system 120 receives identifiers “111” and “222” from any of the sensors, it determines that they are associated with the group “YYY.” Accordingly, the server computing system 120 processes the sensor data received from those sensor using the processing operation “C,” and transmits the processed data to two output devices “XXX” and “ZZZ.” Thus, multiple source and/or destination devices can be specified collectively as a group, rather an individually.
In some cases, the server computing system 120 can maintain a database of groups and their corresponding source and/or destination devices. In some cases, groups can be defined, modified, and/or deleted by users to customize the organization of devices as desired.
In some cases, configuration areas also can be created, modified, and/or deleted by a user. For example, a user may wish to receive sensor data from sensor 110b, process it using a particular algorithm “C,” and output the processed data to a single output device 110c. Thus, the user can create a new configuration area associating the identifier for sensor 110b (e.g., “222”) with the processing operation “C” and the identifier for output device 110c (e.g., “CCC”). If the user wishes to output the processed data to a second output device 110a, he can modify the configuration area, such that the identifier for sensor 110b is further associated with the identifier for output device 110a (e.g., “AAA”). If the user wishes to discontinue the processing and routing of sensor data from the sensor 110b, he can subsequently delete the configuration area. Similarly, the user can create, modify, and/or delete any number of different configuration areas to suit his desired application.
In some cases, the user can create, modify, and/or delete configuration areas and groups using a user interface provided by the system 100. For example, in some implementations, the server computing system 120 can provide a web-based interface (e.g., a website constructed using HTML), and the user can interact with the web-based interface to create, modify, and/or delete configuration areas and groups.
In some cases, the user can be assigned a set of user credentials (e.g., a user name and password) by the server computing system 120, and configuration areas and/or groups can be restricted to specific users on the basis of those user credentials. For example, the server computing system 120 can restrict access of each configuration area and group, such that only certain authorized users (e.g., users presenting a particular set of user credentials) can view, modify, and/or delete each configuration area or group. In some cases, user credentials can be associated with user accounts or profiles, and each user account or profile can be populated with one or more configuration areas and/or groups. This can be beneficial, for example, as it allows multiple users to manage one or more configuration areas or groups in a secure and private manner.
In some cases, data from each sensor can be selectively processed and routed to single corresponding endpoint (e.g., a single output device). This can be useful, for example, as it enables the user to selectively begin data routing for a sensor or restrict the data routing for a sensor, depending on the user's needs and use-case.
In some cases, an output device can be an external data processing system (e.g., a “big data” analytics engine, an external data storage system, or some other external destination that provides data management functionality). This can be useful, for example, as it enables users to selectively direct processed sensor data to one or more data processing systems that further process and/or store the data. In some cases, these external data processing systems can also be identified by a unique identifier (e.g., an “endpoint ID”) similar to those of other output devices. In some cases, the server computing system can be used to process data such that it is suitable for a particular external data processing system (e.g., by processing the data in a customized manner, such that the processed data has a particular format or parameters compatible with the external data processing system).
In some cases, sensor data can be displayed to a user after delivery to a server computing system. For example, a server computing system can provide a web-based interface (e.g., a website constructed using HTML), and the user can interact with the web-based interface to view sensor data received by the server computing system. In some cases, a server computing system can allow a connection directly from an HTML page using, for example the Web Socket protocol over SSL. In some cases, sensor data can be displayed to a single user. In some cases, sensor data can be displayed to more than one user (e.g., using a dynamically generated webpage for each user).
In some cases, each of the users can be assigned a common “pool ID” or “group ID” that enables each of them to access sensor data. In some cases, after presenting a pool ID or group ID to the server computing system, and service computing system can assign each user a temporary identifier (e.g., an “endpoint ID”) that allows the system to differentiate between each of the users of the pool ID or group ID. In some cases, these temporary identifiers can be used to facilitate bi-directional communicate to and from the users. In this manner, although many users can be initially assigned a common identifier, they can be differentiated from one another such that information can be selectively provided to one or all of the users.
In some cases, a sensor can be configured to communicate directly with a relay or server computing system. For example, a sensor can include software, hardware, and/or firmware that enables the sensor to transmit data using a communications protocol and/or data format compatible with the relay or server computing system. In some implementations, a sensor cannot communicatively directly with a relay or server computing system. Instead, the sensor can transmit data to an intermediate system (e.g., an intermediate server computer or embedded system), which interprets the data, and transmits it to relay or server computing system (e.g., using a communications protocol and/or data format compatible with the relay or server computing system).
In some cases, a relay can be used to interconnect multiple different types of networks. In some cases, the relay can collect and store sensor data (e.g., temporarily store sensor data received from a sensor across a first type of network, such that it can be relayed to a server computing system across a different type of network). In some cases, the relay can include software, hardware, and/or firmware that enables the relay to transmit data using a communications protocol and/or data format compatible with the sensors and/or server computing systems.
In the example shown in
As an example, a system 500 for processing data is shown in
In some cases, the throughput of network 140a can be less than the throughput of network 140c (represented by the thinner arrows interconnecting the network 140a to the sensors 110a-c and the relay 510, and by the thicker arrows interconnecting the network 140c to the relay 510 and the server computing system 120). As an example, the network 140a can operate according to a relatively low power communications protocol (e.g., a BLE network), and the network 140c can operate according to a relatively high power communications protocol (e.g., an Ethernet network, such as Gigabit Ethernet network, a Wi-Fi network, a cellular network, etc.). In some cases, the network 140c can be a LAN or a WAN, such as the Internet. In some cases, the throughput of network 140a can be 100 kbit/s or less (e.g., less than 8 kbit/s, less than 50 kbit/s, less than 35 kbit/s, less than 20 kbit/s, and so forth). In some cases, the throughput of network 140c can be 1 Mbit/s or more (e.g., more than 2 Mbit/s, more than 10 Mbit/s, more than 100 Mbit/s, more than 1000 Mbit/s, and so forth).
In some implementations, a relay 510 can be a mobile device, such as a cellular phone, tablet computer, smart phone, or other handheld device. The relay can include a first communications module (e.g., a Bluetooth module) to communicate with the sensors 110a-c across the network 140a, and a second communications module (e.g., a Wi-Fi, Ethernet communications module, cellular communications module, etc.) to communicate with the server computing system 120 across the network 140c.
In some cases, the mobile device can be a general purpose user device, and can be configured to act as a relay (e.g., through the installation of a software application). This can be beneficial, for example, as it enables users to utilize their general purpose mobile devices (which they may otherwise already possess) to route sensor data to a server computing system. Thus, users can make use of sensor data quickly and easily, and at reduced cost.
Although a single relay 510 is shown, this is merely an illustrative example. In practice, there may be any number of relays that route data between sensors and server computing systems. Further, in some cases, relays can also be used to route data between a server computing system and one or more output devices.
In some implementations, to handle more concurrent connections, additional server computing systems and/or relays can be added and networked together, and data routed between each of two server computers and/or relays using a single connection. Different topologies may also be utilized for organization to reduce networking overhead. In an example implementation, the server computing systems and/or relays can be arranged in a star configuration, enabling a single hub server computing system to communicate with numerous other spoke server computers and/or relays. In turn, the spoke server computers and/or relays each can act as an interconnected switch, passing messages from the hub server computing system to one or more sensors. For example, multiple (e.g., 100,000) spoke server computers and/or relays may be used, each of which in turn communicate with a single “hop” (e.g., through a direct or substantially direct network connection) to multiple (e.g., 100,000) data sources (e.g., sensors). This enables massive scalability within a few hops of a central hub with a minimal or otherwise small effect on latency. In an exemplary implementation, as the hop count increases, the star topology may be replaced with a direct-connected mesh configuration to keep the count low.
As an example,
In some cases, there may be multiple hub server computing systems (e.g., two, three, or more), and a load balancer (e.g., a round robin load balancer) can be used to distribute the connections across two or more of the hub server computing systems). This allows the network to be expanded without substantially increasing the network latency between devices.
In some cases, one or more server computers can utilize a scalable I/O event notification mechanism (e.g., epoll on Linux) to handle a large number of connections (e.g., 100,000 TCP/IP connections or more).
In some cases, a system can include a “mesh” network configuration in which decentralized nodes of the network relay data for the network and corporate in the distribution of data across the network. As an example,
In some cases, the communications from a sensor or relay to a server computing system can be connection-oriented instead of transactional in nature. This can be beneficial, for example, is it reduces the latency of network communications (e.g., as connections do not need to be individually opened and closed for each transmission).
In some cases, some or all of the communications between devices can be implemented using binary messages. This can be beneficial, for example, as it can reduce the data size of the transmissions while reducing processing overhead (e.g., by avoiding the encoding/decoding overhead for processing sensor data).
In some cases, a sensor can “push” data to a relay and/or server computing device, such that the server computing device does not need to poll the sensor periodically for updated sensor data. This can be beneficial, for example, as data can be transmitted more quickly after collection from the sensor (e.g., in real-time or substantially real-time, instead of periodically in response to a polling request).
In some cases, a sensor can push data to a relay (e.g., over a BLE connection), and the relay can push the data to a server computing system. In some cases, the sensor can initially encrypt the sensor data using a first encryption technique prior to transmission to the relay, and the relay can subsequently encrypt the data using a second encryption technique prior to transmission to the server computing system. This can be beneficial, for example, as it enables the sensor to use relatively power-efficient encryption techniques (e.g., AES encryption) to initially encrypt the data, and the relay can subsequently encrypt the data using more power-intensive encryption techniques (e.g., SSL) for transmission to a server computing system. In some cases, this enables the sensor to operate more efficiently (e.g., by consuming less power) as the system routes data using a variety of communications protocols (e.g., TCP/IP and BLE), some of which may require more power-intensive encryption techniques.
Although sensors are described as devices that collect data and provide data (e.g., measurement data) to other devices, in some cases, sensors also can receive data or other signals from other devices. For instance, in some cases, sensors can receive commands (e.g., from a server computing system) instructing the sensor to modify their behavior and/or relay instructions to other devices. As examples, a sensor can receive commands that instruct it to start and stop making measurements, commands that instruct it to calibrate its measurements, commands that instruct it to move or reposition itself in the environment, commands that instruct it to relay commands to other devices (e.g., control modules controlling the operation of one or more electrical and/or mechanical components), and so forth. In some cases, sensors can receive commands to update or otherwise modify software or firmware stored on the sensor.
Data can be transmitted between devices using any suitable data transmission module. For example, one or more sensors, relays, and/or server computing devices can include RF modules. Further, data can be transmitted any suitable data transmission technique.
As described herein, in some implementations, a server computing system can include multiple computing devices, and the functionality of the server computing system can be distributive on one or more of these computing devices. For example, in some cases, a first set of computing devices (e.g., a first server computing system) can enable users to define and manage configuration areas, and a second set of computing devices (e.g., a second server computing system) can process the data according to the configuration areas. In some cases, the first and second set of computing devices can each be maintained by a different entity, such that one entity is responsible for providing user's access to configuration areas, and another entity is responsible to processing data.
As an example,
In general, the functionality of the system 800 can be similar to that of the system 100. For example, the sensors 110a-c can include any device used to detect events occurring in an environment and/or measure properties of an environment, and provide a corresponding output (e.g., an indication of the measured events and/or properties). The server computing systems 120a-b can include any electronic device that is used process, transmit and receive data from the sensors 110a-c and the output devices 130a-c. The output devices 100a-c can be, or include, any device that makes use of processed data from the server computing systems 120a-b.
The functionality previously described with respect to the server computing system 120 (e.g., as described with respect to
As an example, the server computing system 120a can maintain, for each of its users, a set of user credentials (e.g., a user name and password) that allow the user to securely access, define, and/or modify one or more configuration areas and groups (e.g., groups of sensors and/or output devices). When a user provides the server computing system 120a with his set of user credentials (e.g., by entering the user credentials into a webpage presented by the server computing system 120a), the server computing system 120a retrieves each of the previously defined configuration areas and groups, and presents them to the user for review. The server computing system 120a also enables the users to create additional configuration areas and groups, modifying existing configurations and groups, and/or delete existing configuration areas and groups.
Further, the server computing system 120a receives sensor data from the sensors 120a-c. However, instead of processing the received data on the server computing system 120a, the server computing system 120a transmits the sensor data to the server computing system 120b. In response, the server computing system 120b processes the sensor data, and returns the processed sensor data to the server computing system 120a. The server computing system 120a can subsequently transmit the processed data to one or more of the output devices 130a-c and/or present the processed data to the user for review (e.g., using a dynamically generated webpage). Thus, sensor data is received and processed, either partially or entirely on different server computing systems.
As described above, in some cases, the server computing systems 120a-b can each be maintained by a different entity, such that one entity is responsible for providing user's access to configuration areas, and another entity is responsible to processing data. In some cases, the server computing system 120a can be operated by a service provider that provides sensor management services to one or more users (e.g., user operating the sensors 110a-c and/or the output devices 130a-c). The users can interact with the server computing system 120a to organize the collection and processing of sensor data, and provide their own server computing system 120b for the actual processing of data. This can be useful, for example, as it enables users to define how their sensor data should be processed quickly and efficiently (e.g., using standardized functionality provided by a service provider), while segregating some or all of the actual data processing to their own server computing system 120b. Thus, the users can process data more securely (e.g., without revealing the exact data processing steps to the server computing system 120a) and/or without any limitations that might otherwise be imposed by the service provider. This can also be useful, for example, as it enables the service provider to off-load data processing (which may be computationally expensive to perform) to others.
Although two server computing systems 120a-b are shown in
In some cases, the relationship between the user, the sensors, the processing operations, the server computing system responsible for performing the processing operations, and/or the output devices can be defined by a configuration area. As an example, in some cases, the user can create a configuration area specifying that sensor data from particular sensors be transmitted to a particular server computing system, and that the specified server computing system perform a particular processing operation on the sensor data. The user can further define that the processed data be transmitted to a particular output device. In this manner, the user has a control over each aspect of the data processing.
In some cases, the server computing system 120a can retain copies of some or all of the sensor data received from the sensors 110a-c and/or the processed sensor data received from the server computing system 120b. This can be useful, for example, as it enables further data analysis (e.g., historical analysis). In some cases, data can be recorded as it is received, then analyzed either in real-time or substantially real-time, or intermittently (e.g., in periodic “batches”). In some case, analysis can be performed by the server computing system 120a itself, or by another server computing system. As noted above, in some cases, the server computing system 120 can be operated by a service provider, and the server provider can provide data storage and/or data analysis services to its users.
In some cases, the server computing systems 120a-b can be located in substantially the same location (e.g., in the same room or facility). This can be useful, for example, as it can reduce the network latency between them (e.g., to 1 ms or less). However, in some cases, the server computing systems 120a-b can be located remote from one another.
Some implementations of subject matter and operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. For example, in some implementations, sensors, server computing systems, relays, and output devices can be implemented using digital electronic circuitry, or in computer software, firmware, or hardware, or in combinations of one or more of them.
Some implementations described in this specification can be implemented as one or more groups or modules of digital electronic circuitry, computer software, firmware, or hardware, or in combinations of one or more of them. Although different modules can be used, each module need not be distinct, and multiple modules can be implemented on the same digital electronic circuitry, computer software, firmware, or hardware, or combination thereof.
Some implementations described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. A computer storage medium can be, or can be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. A computer includes a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. A computer may also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices (e.g., EPROM, EEPROM, flash memory devices, and others), magnetic disks (e.g., internal hard disks, removable disks, and others), magneto optical disks, and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, operations can be implemented on a computer having a display device (e.g., a monitor, or another type of display device) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse, a trackball, a tablet, a touch sensitive screen, or another type of pointing device) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
A computer system may include a single computing device, or multiple computers that operate in proximity or generally remote from each other and typically interact through a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), a network comprising a satellite link, and peer-to-peer networks (e.g., ad hoc peer-to-peer networks). A relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
The input/output device 940 provides input/output operations for the system 900. In some implementations, the input/output device 940 can include one or more of a network interface devices, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, a 4G wireless modem, etc. In some implementations, the input/output device can include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard, printer and display devices 960. In some implementations, mobile computing devices, mobile communication devices, and other devices can be used.
While this specification contains many details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular examples. Certain features that are described in this specification in the context of separate implementations can also be combined. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple embodiments separately or in any suitable sub-combination.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
Claims
1. A method comprising:
- receiving, at a computer system from a sensor, sensor data;
- processing, by the computer system, the sensor data, wherein the processed sensor data is larger in size than the sensor data; and
- transmitting, from the computer system to a first output device, the processed sensor data, wherein the sensor data is received at the computer system from the sensor over a first communications link,
- wherein the processed sensor data is transmitted from the computer system to the first output device over a second communications link, and
- wherein the first communications link has a lower throughput than the second communications link.
2. The method of claim 1, wherein the first communications link is a Bluetooth connection, and
- wherein the second communications link comprises one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection.
3. The method of claim 2, further comprising:
- maintaining the first communications link and the second communications link over a period of time.
4. The method of claim 1, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor, and wherein processing the sensor data comprises appending a unit of measurement to the numerical value.
5. The method of claim 1, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor,
- wherein the numerical value corresponds to a first unit of measurement, and
- wherein processing the sensor data comprises converting the numerical value into a second numerical value associated with a second unit of measurement.
6. The method of claim 1, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor, and
- wherein processing the sensor data comprises performing one or more mathematical operations with respect to the numerical value.
7. The method of claim 1, wherein the sensor data is received at the computer system via an intermediate relay device.
8. The method of claim 7, wherein the intermediate relay device comprises a mobile device communicatively coupled to the sensor and the computer system.
9. The method of claim 1, further comprising:
- receiving, at the computer system from the sensor, an identifier associated with the sensor,
- wherein the computer system receives the identifier prior to receiving the sensor data,
- wherein the sensor data is processed in a manner based at least in part on the received identifier,
- wherein processing the sensor data comprises performing one or more operations with respect to the numerical value, and
- wherein the one or more operations are selected based on the received identifier.
10. The method of claim 9, wherein the first output device is selected based on the received identifier.
11. The method of claim 1, further comprising:
- defining, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the processing of the sensor data, and the first output device.
12. The method of claim 11, further comprising:
- modifying the logical configuration area based on user input.
13. The method of claim 11, further comprising:
- defining, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors, a processing of additional sensor data received by the computer system from the one or more additional sensors, and one or more additional output devices.
14. The method of claim 11, wherein the computer system comprises:
- one or more first server computers; and
- one or more second server computers,
- wherein the local configuration area is defined by the one or more first server computers,
- wherein the sensor data is received from the sensor at the one or more first server computers, and
- wherein processing the sensor data comprises: transmitting the sensor data from the one or more first server computers to the one or more second computers; processing, by the one or more second server computers, the sensor data; and transmitting, from the one or more second server computers to the one or more first server computers, the processed sensor data.
15. The method of claim 14, wherein the logical configuration area further specifies a relationship between at least the sensor, the processing of the sensor data, the one or more second server computers, and the first output device.
16. The method of claim 1, further comprising:
- transmitting, from the computer system to a second output device, the processed sensor data.
17. The method of claim 1, wherein the output device is configured to control an electrical or mechanical device based on the processed sensor data.
18. The method of claim 1, wherein the sensor data is received at a computer system from the sensor via a push communication.
19. A method comprising:
- receiving, at a computer system from a sensor, sensor data;
- transmitting, from the computer system to a first output device, the sensor data; and
- transmitting, from the computer system to a second output device, the sensor data,
- wherein the sensor data is transmitted from the computer system to the first output device over a second communications link,
- wherein the sensor data is transmitted from the computer system to the second output device over a third communications link, and
- wherein the first communications link has a lower throughput than the second communications link and the third communications link.
20. The method of claim 19, wherein the first communications link is a Bluetooth connection, and
- wherein each of the second communications link and the third communications link comprises one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection.
21. The method of claim 19, further comprising:
- receiving, at the computer system from the sensor, an identifier associated with the sensor,
- wherein the first output device and the two output device are selected based on the received identifier.
22. The method of claim 19, further comprising:
- defining, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the first output device, and the second output device.
23. The method of claim 22, further comprising:
- modifying the logical configuration area based on user input.
24. The method of claim 19, further comprising:
- defining, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors and one or more additional output devices.
25. The method of claim 19, wherein at least one of the first output device and the second output device is configured to control an electrical or mechanical device based on the processed sensor data.
26. A system comprising:
- one or more processors;
- one or more non-transitory computer-readable media including one or more sequences of instructions which, when executed by the one or more processors, causes the one or more processors to: process, by a computer system, sensor data, wherein the sensor data is received at the computer system from a sensor, and wherein the processed sensor data is larger in size than the sensor data; and transmit, from the computer system to a first output device, the processed sensor data,
- wherein the sensor data is received at the computer system from the sensor over a first communications link,
- wherein the processed sensor data is transmitted from the computer system to the first output device over a second communications link, and
- wherein the first communications link has a lower throughput than the second communications link.
27. The system of claim 26, wherein the first communications link is a Bluetooth connection, and
- wherein the second communications link comprises one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection.
28. The system of claim 27, wherein the first communications link and the second communications link are maintained over a period of time.
29. The system of claim 26, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor, and wherein processing the sensor data comprises appending a unit of measurement to the numerical value.
30. The system of claim 26, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor,
- wherein the numerical value corresponds to a first unit of measurement, and
- wherein processing the sensor data comprises converting the numerical value into a second numerical value associated with a second unit of measurement.
31. The system of claim 26, wherein the sensor data comprises a numerical value corresponding to a measurement obtained by the sensor, and
- wherein processing the sensor data comprises performing one or more mathematical operations with respect to the numerical value.
32. The system of claim 26, wherein the sensor data is received at the computer system via an intermediate relay device.
33. The system of claim 32, wherein the intermediate relay device comprises a mobile device communicatively coupled to the sensor and the computer system.
34. The system of claim 26, wherein the computer system is configured to receive, from the sensor, an identifier associated with the sensor,
- wherein the computer system receives the identifier prior to receiving the sensor data,
- wherein the sensor data is processed in a manner based at least in part on the received identifier,
- wherein processing the sensor data comprises performing one or more operations with respect to the numerical value, and
- wherein the one or more operations are selected based on the received identifier.
35. The system of claim 34, wherein the first output device is selected based on the received identifier.
36. The system of claim 26, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- define, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the processing of the sensor data, and the first output device.
37. The system of claim 36, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- modify the logical configuration area based on user input.
38. The system of claim 36, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- define, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors, a processing of additional sensor data received by the computer system from the one or more additional sensors, and one or more additional output devices.
39. The system of claim 36, wherein the computer system comprises:
- one or more first server computers; and
- one or more second server computers,
- wherein the one or more first server computers is configured to defined the local configuration area,
- wherein the one or more first server computers are configured to receive the sensor data from the sensor, and
- wherein processing the sensor data comprises: transmitting the sensor data from the one or more first server computers to the one or more second computers; processing, by the one or more second server computers, the sensor data; and transmitting, from the one or more second server computers to the one or more first server computers, the processed sensor data.
40. The system of claim 39, wherein the logical configuration area further specifies a relationship between at least the sensor, the processing of the sensor data, the one or more second server computers, and the first output device.
41. The system of claim 26, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- transmit, from the computer system to a second output device, the processed sensor data.
42. The system of claim 26, wherein the output device is configured to control an electrical or mechanical device based on the processed sensor data.
43. The system of claim 26, wherein the sensor data is received at a computer system from the sensor via a push communication.
44. A system comprising:
- one or more processors;
- a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by the one or more processors, causes the one or more processors to: transmitting, from a computer system to a first output device, sensor data, wherein the sensor data is received at the computer system from a sensor; and transmitting, from the computer system to a second output device, the sensor data,
- wherein the sensor data is transmitted from the computer system to the first output device over a second communications link,
- wherein the sensor data is transmitted from the computer system to the second output device over a third communications link, and
- wherein the first communications link has a lower throughput than the second communications link and the third communications link.
45. The system of claim 44, wherein the first communications link is a Bluetooth connection, and
- wherein each of the second communications link and the third communications link comprises one or more of: an Ethernet connection, a Wi-Fi connection, or a Wide Area Network connection.
46. The system of claim 44, wherein the computer system is configured to receive, from the sensor, an identifier associated with the sensor,
- wherein the first output device and the two output device are selected based on the received identifier.
47. The system of claim 44, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- define, by the computer system, a logical configuration area, the logical configuration area specifying a relationship between at least the sensor, the first output device, and the second output device.
48. The system of claim 47, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- modify the logical configuration area based on user input.
49. The system of claim 44, wherein the one or more sequences of instructions, when executed by the one or more processors, further cause the one or more processors to:
- define, by the computer system, a second logical configuration area, the second logical configuration area specifying a relationship between at least one or more additional sensors and one or more additional output devices.
50. The system of claim 44, wherein at least one of the first output device and the second output device is configured to control an electrical or mechanical device based on the processed sensor data.
Type: Application
Filed: Aug 26, 2016
Publication Date: Dec 15, 2016
Inventors: Armen E. Kazanchian (Hermosa Beach, CA), Stephen Michael Praed (Hermosa Beach, CA)
Application Number: 15/248,191