U.S. patent application number 15/248191 was filed with the patent office on 2016-12-15 for low latency and power efficient data transmission between a sensor and server computer.
The applicant listed for this patent is Armen E. Kazanchian, Stephen Michael Praed. Invention is credited to Armen E. Kazanchian, Stephen Michael Praed.
Application Number | 20160366213 15/248191 |
Document ID | / |
Family ID | 56789118 |
Filed Date | 2016-12-15 |
United States Patent
Application |
20160366213 |
Kind Code |
A1 |
Kazanchian; Armen E. ; et
al. |
December 15, 2016 |
LOW LATENCY AND POWER EFFICIENT DATA TRANSMISSION BETWEEN A SENSOR
AND SERVER COMPUTER
Abstract
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.
Inventors: |
Kazanchian; Armen E.;
(Hermosa Beach, CA) ; Praed; Stephen Michael;
(Hermosa Beach, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Kazanchian; Armen E.
Praed; Stephen Michael |
Hermosa Beach
Hermosa Beach |
CA
CA |
US
US |
|
|
Family ID: |
56789118 |
Appl. No.: |
15/248191 |
Filed: |
August 26, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
PCT/US2016/019946 |
Feb 26, 2016 |
|
|
|
15248191 |
|
|
|
|
62121478 |
Feb 26, 2015 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04W 4/80 20180201; Y02D
30/70 20200801; H04B 1/3838 20130101; H04B 7/145 20130101; Y02D
70/144 20180101; H04B 1/40 20130101; Y02D 70/22 20180101; Y02D
70/446 20180101; Y02D 70/122 20180101; Y02D 70/142 20180101; H04L
47/28 20130101; H04W 4/38 20180201; H04L 67/12 20130101; H04L 47/32
20130101; H04B 7/15 20130101; H04L 67/26 20130101; H04L 67/10
20130101; Y02D 70/164 20180101; H04W 56/002 20130101; H04W 76/25
20180201 |
International
Class: |
H04L 29/08 20060101
H04L029/08; H04W 76/04 20060101 H04W076/04; H04B 7/145 20060101
H04B007/145; H04W 4/00 20060101 H04W004/00 |
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.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] 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 FIELD
[0002] The disclosure generally relates to transmitting data
between sensors and server computers.
BACKGROUND
[0003] Sensors 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.
[0004] 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.
[0005] 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.
SUMMARY
[0006] 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.
[0007] 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.
[0008] Implementations of this aspect may include one or more of
the following features.
[0009] 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.
[0010] 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.
[0011] 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.
[0012] 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.
[0013] 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.
[0014] 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.
[0015] 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.
[0016] 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.
[0017] In some implementations, the method can further include
transmitting, from the computer system to a second output device,
the processed sensor data.
[0018] In some implementations, the output device can be configured
to control an electrical or mechanical device based on the
processed sensor data.
[0019] In some implementations, the sensor data can be received at
a computer system from the sensor via a push communication.
[0020] 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.
[0021] Implementations of this aspect may include one or more of
the following features.
[0022] 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.
[0023] 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.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] Other implementations are directed to systems, devices and
non-transitory, computer-readable mediums.
[0028] 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.
[0029] 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.
BRIEF DESCRIPTION OF THE FIGURES
[0030] FIG. 1 is a diagram of an example system for processing
sensor data.
[0031] FIGS. 2A-C are diagrams of an example process for processing
and routing sensor data.
[0032] FIGS. 3A and 3B are diagrams of another example process for
processing and routing sensor data.
[0033] FIGS. 4A-C are diagrams of another example process for
processing and routing sensor data.
[0034] FIG. 5 is a diagram of another example system for processing
sensor data.
[0035] FIG. 6 is a diagram of an example system topology.
[0036] FIG. 7 is a diagram of another example system topology.
[0037] FIG. 8 is a diagram of another example system for processing
sensor data.
[0038] FIG. 9 is a diagram of an example computer system.
DESCRIPTION
[0039] 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.
[0040] 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).
[0041] 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.
[0042] 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).
[0043] 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.
[0044] 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.
[0045] 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.
[0046] FIG. 1 shows an example system 100 for processing sensor
data. The system 100 includes several sensors 110a-c, a server
computing system 120, and several output devices 130a-c. The
sensors 110a-c are communicatively coupled to the server computing
system 120 through a communications network 140a. The server
computing system 120 is communicatively coupled to the output
devices 130a-c through a communications network 140b.
[0047] 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).
[0048] 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.)
[0049] 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.).
[0050] 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.
[0051] 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).
[0052] 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.
[0053] 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).
[0054] 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.
[0055] In the example shown in FIG. 1, the throughput of network
140a is less than the throughput of network 140b (represented by
the thinner arrows interconnecting the network 140a to the sensors
110a-c and the server computing system 120, and by the thicker
arrows interconnecting the network 140b to the server computing
system 120 and the output devices 130a-c. As an example, the
network 140a can operate according to a relatively low power
communications protocol (e.g., a BLE network), and the network 140b
can operate according to a relatively high power communications
protocol (e.g., an Ethernet network, such as Gigabit Ethernet
network, a Wi-Fi network, etc.). In some cases, the network 140b
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 80 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 a
communications link across the network 140b 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).
[0056] 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).
[0057] 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 FIG. 2A, a sensor 110a can measure the ambient temperature of
the environment (e.g., 295 K), but transmit only a numerical value
describing the temperature (e.g., "295") while excluding an
indication of the units of measurement (e.g., "K"). This reduces
the amount of data that is transmitted between the sensor 110a and
the server computing system 120, and improves the network latency
between them. For example, in some cases, this can be presented
using two bytes of data. This relatively small amount of data is
represented by a thinner arrow 202.
[0058] 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
FIG. 2B, to account for this, the server computing system 120 can
process the sensor data such that it includes the units of
measurement (e.g., by appending a unit of measurement to the sensor
data). Further, the server computing system 120 can process the
sensor data such that it includes representations of measurement in
one or more other units of measurement. For example, the server
computing system 120 can process the sensor data by converting the
temperature measurement to Celsius (e.g., 22.degree. C.) and
Fahrenheit (e.g., 72.degree. F.), and include those converted
temperature measurements as a part of the processed sensor data.
Further, the server can process the sensor data, such that the
processed sensor data is in a form compatible with the output
devices 130a-c (e.g., having a particular format or data structure
that enables the output devices 130a-c to interpret the processed
sensor data).
[0059] 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.
[0060] 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:
TABLE-US-00001 { "temperature" : { "kelvin" : { "value" : 295,
"unit of measure" : "K" } "fahrenheit" : { "value" : 72, "unit of
measure" : "F" }, "celsius" : { "value" : 22, "unit of measure" :
"C" } } }
[0061] 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.
[0062] As shown in FIG. 2C, the processed data is transmitted to
the output device 130a (presented by a thicker arrow 206). As an
example, the server computing system 120 can transmit the data
object generated by the server computing system 120, including each
of the converted measurement values and/or units of measurements.
In turn, the output device 130a can utilize the processed data
and/or retain the processed data for future use. For instance, in
this example, the output device 130a is a control module of an air
conditioning unit, and can either instruct the air conditioning
unit to cool the environment, heat the environment, or cease
operation depending on the temperature indicated in the processed
sensor information.
[0063] 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.
[0064] 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.
[0065] 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.
[0066] 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).
[0067] 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).
[0068] 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.
[0069] 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).
[0070] 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 FIG. 3A, a
sensor 110a can transmit a portion of data to the server computing
system 120 (represented by arrow 302). As shown in FIG. 2B, the
server computing system 120 transmits the sensor data to two
different output devices 130a and 130c (represented by arrows 304a
and 304b). In turn, the output devices 130a and 130c can utilize
the sensor data and/or retain the sensor data for future use.
[0071] In a similar manner as described with respect to FIGS. 2A-C,
the network 140b has a higher throughput than the network 140a.
Thus, the network 140b is more robust with respect to network
latency. Accordingly, by transmitting smaller portions of data
across the lower throughput network 140a (e.g., a single instance
of sensor data), and transmitting larger portions of data across
the higher throughput network 140b (e.g., multiple instances of the
sensor data), the performance of the overall system is improved.
Further, as the sensor 110a only transmits sensor data once, the
sensor 110a can share data to multiple different destinations more
quickly and efficiently.
[0072] 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 FIG. 4A, a sensor 110a can transmit a
relatively small amount of sensor data to the server computing
system 120 (represented by a thinner arrow 402). As shown in FIG.
4B, the server computing system 120 can process the data. In some
cases, this processing can increase the size of the sensor data
(represented by a thicker arrow 404). As shown in FIG. 4C, the
processed sensor data is transmitted to two different output
devices 130a and 130c (represented by the thicker arrows 406a and
406b). In turn, the output devices 130a and 130c can utilize the
sensor data and/or retain the sensor data for future use.
[0073] 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.
[0074] 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.
[0075] 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.
[0076] 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."
TABLE-US-00002 TABLE 1 First example configuration area. Source
Identifier Processing Operation Destination Identifier 111 A
AAA
[0077] 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."
TABLE-US-00003 TABLE 2 Second example configuration area. Source
Identifier Processing Operation Destination Identifier 222 B AAA,
BBB
[0078] 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.
[0079] 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.
TABLE-US-00004 TABLE 3 Third example configuration area. Source
Identifier Processing Operation Destination Identifier YYY C ZZZ
[Group including 111 and [Group including YYY and 222] ZZZ]
[0080] 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.
[0081] 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.
[0082] 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.
[0083] 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.
[0084] 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.
[0085] 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).
[0086] 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).
[0087] 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.
[0088] 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).
[0089] 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.
[0090] In the example shown in FIG. 1, each of the sensors 110a-c
communicates directly with the server computing system 120.
However, this need not be the case. In some implementations, the
one or more sensors 110a-c can communicate to a server computing
system 120 through a relay device (e.g., an intermediary device
that receives data transmission from the sensors 110a-c, and
transmits the data transmission to the server computing system
120). A relay 510 can be, for example, a network gateway or network
bridge device. In some cases, a relay 510 can be a computing device
that is configured to receive data from a source device (e.g., a
sensor 110a-c) and route data to a destination device (e.g., the
server computing system 120). In some cases, a relay can include
communications modules, such as Wi-Fi modules, cellular modems to
communicate with one or more communications networks.
[0091] As an example, a system 500 for processing data is shown in
FIG. 5. The system 500 includes several sensors 110a-c, a server
computing system 120, and a relay 510. The sensors 110a-c are
communicatively coupled to the relay 510 through a communications
network 140a. The relay 510 is, in turn, communicatively coupled to
the server computing system 120 through a communications network
140c. Communications from the sensors 110a-c are initially routed
to the relay 510, and subsequently routed to the server computing
system 120. In a similar manner are described with respect to FIG.
1, the server computing system 120 can be communicatively coupled
to one or more output devices (e.g., output devices 130a-c) through
a communications network (e.g., the communications networks 140b or
140c).
[0092] 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).
[0093] 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.
[0094] 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.
[0095] 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.
[0096] 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.
[0097] As an example, FIG. 6 shows a system 600 having a hub server
computing system 610, spoke server computing systems 620a-c, and
sensors 630a-f. The hub server computing system 610 is
communicatively coupled to the spoke server computing systems
620a-c by a single network hop 640a-c, respectively. Similarly, the
spoke server computing system 610a is communicatively coupled to
the sensors 630a-b a single network hop 640d-e, respectively, the
spoke server computing system 610b is communicatively coupled to
the sensors 630c-d a single network hop 640f-g, respectively, and
the spoke computing system 610c is communicatively coupled to the
sensors 630e-f a single network hop 640h-i, respectively. Data from
the sensors 630a-f can be processed (e.g., as described above) by
the hub server computing system 610 and/or by one or more of the
spoke server computing systems 620a-c (e.g., the spoke server
computing system 620a-c within the fewest hops from each sensor
630a-f). Further, processed sensor data can be transmitted to any
other device on the system 600 through one or more hops. Although
an example system 600 is shown in FIG. 6, this is merely an
illustrative example. In practice, a system can include any number
of sensors, spoke computing systems, and hub computing systems in
any arrangement.
[0098] 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.
[0099] 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).
[0100] 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, FIG. 7 shows a system 700 having
spoke server computing systems 710a-d. The spoke server computing
systems 710a-d are communicatively coupled to one another by single
network hops 720a-e. Each spoke server computing system 710a-d can
be communicatively coupled to one or more sensors, and data from
the sensors can be processed (e.g., as described above) by one or
more of the spoke server computing systems 710a-d (e.g., the spoke
server computing system 720a-d within the fewest hops from each
sensor). Further, processed sensor data can be transmitted to any
other device on the system 700 through one or more hops. Although
an example system 700 is shown in FIG. 7, this is merely an
illustrative example. In practice, a system can include any number
of spoke computing systems and corresponding sensors in any
arrangement.
[0101] 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).
[0102] 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).
[0103] 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).
[0104] 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.
[0105] 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.
[0106] 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.
[0107] 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.
[0108] As an example, FIG. 8 shows a system 800 for processing
sensor data. The system 100 includes several sensors 110a-c, server
computing systems 120a-b, and several output devices 130a-c. The
sensors 110a-c are communicatively coupled to the server computing
system 120a through a communications network 140a. The server
computing system 120a is communicatively coupled to the output
devices 130a-c through a communications network 140b. The server
computing system 120b is also communicatively coupled to the server
computing system 120a (e.g., through the network 140b or another
communications network between them).
[0109] 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.
[0110] The functionality previously described with respect to the
server computing system 120 (e.g., as described with respect to
FIGS. 1-5) is provided collectively by the server computing system
120a-b. For instance, as described above, the server computing
system 120a can enable users to define configuration areas, and the
server computing system 120b can process the data according to the
configuration areas.
[0111] 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.
[0112] 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.
[0113] 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.
[0114] Although two server computing systems 120a-b are shown in
FIG. 8, this is merely an illustrative example. In practice, there
may be any number of server computing systems (e.g., one, two,
three, four, or more). As an example, in some cases, a system can
include a first server computing system that enables user to
securely access, define, and/or modify one or more configuration
areas and groups (e.g., in a similar manner as the server computing
system 120a). Further, a system can include, for each user or group
of users, a separate server computing system to process data (e.g.,
in a similar manner as the server computing system 120b). Users can
specify, to the first server computing system, which of the
separate server computing systems to process sensor data.
Subsequently, when the first server computing system receives
sensor data associated with a user, it determines which of the
separate server computing systems is to process the data, and
transmits the received sensor data to the specified server
computing system. In this manner, each user has a high degree of
control over the processing of sensor data.
[0115] 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.
[0116] 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.
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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).
[0121] 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.
[0122] 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.
[0123] 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).
[0124] 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.
[0125] 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.
[0126] 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.
[0127] FIG. 9 shows an example computer system 900 that includes a
processor 910, a memory 920, a storage device 930 and an
input/output device 940. Each of the components 910, 920, 930 and
940 can be interconnected, for example, by a system bus 950. The
processor 910 is capable of processing instructions for execution
within the system 900. In some implementations, the processor 910
is a single-threaded processor, a multi-threaded processor, or
another type of processor. The processor 910 is capable of
processing instructions stored in the memory 920 or on the storage
device 930. The memory 920 and the storage device 930 can store
information within the system 900.
[0128] 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.
[0129] 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.
[0130] 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.
* * * * *