Internet of things (iot) device configuration construction
Claim Score by NHIP
Abstract
A method of constructing Internet of Things (JOT) device configurations includes receiving a solution template selection for a device configuration for a particular automated interaction between two or more IOT devices. The method includes determining whether a complete solution template for the device configuration is selected. If so, the method includes deploying the device configuration. If not, the method includes receiving IOT device selections, accessing device capabilities from an IOT database of the selected IOT devices, configuring a network connection between the selected IOT devices, simulating a device configuration using the device capabilities accessed from the IOT database, and determining whether the device configuration is operational based on the simulation. When the device configuration is not operational, the method includes reconfiguring the device configuration to include a replacement IOT device. When the device configuration is operational, the method includes deploying the device configuration.

Term
Projected expiry 26 August 2034.
- Priority and filed
- Published
- Today
- Projected expiry
20 claims: 2 independent, 18 dependent
- 1Broadest claimClaim Score 47, average(NHIP)A method, comprising:receiving user input effective to select a solution template for a device configuration for a particular automated interaction between two or more Internet of Things (IOT) devices;determining whether a complete solution template for the device configuration is selected;in response to a partial solution template being selected: receiving additional user input effective to select two or more IOT devices implemented in the partial solution template;accessing device capabilities of the selected IOT devices from an IOT database;configuring a network connection between the selected IOT devices;simulating a device configuration using the device capabilities accessed from the IOT database for the selected IOT devices;based on the simulation, determining whether the device configuration is operational;in response to the device configuration not being operational, reconfiguring the device configuration to include one or more replacement IOT devices;and in response to the device configuration being operational, deploying the device configuration;and in response to the complete solution template being selected deploying the device configuration.
- 11A non-transitory computer-readable medium having encoded therein programming code executable by a processor to perform operations comprising:receiving user input effective to select a solution template for a device configuration for a particular automated interaction between two or more Internet of Things (IOT) devices;determining whether a complete solution template for the device configuration is selected;in response to a partial solution template being selected: receiving additional user input effective to select two or more IOT devices implemented in the partial solution template;accessing device capabilities of the selected IOT devices from an IOT database;configuring a network connection between the selected IOT devices;simulating a device configuration using the device capabilities accessed from the IOT database for the selected IOT devices;based on the simulation, determining whether the device configuration is operational;in response to the device configuration not being operational, reconfiguring the device configuration to include one or more replacement IOT devices;and in response to the device configuration being operational, deploying the device configuration;and in response to the complete solution template being selected deploying the device configuration.
Independent claims2
131 paragraphs in 5 sections, as filed
FIELD
0001The embodiments discussed herein are related to Internet of Things (IOT) device configuration.
BACKGROUND
0002The Internet of Things (IOT) refers to the interconnection of computing devices (IoT devices). The IOT devices may be uniquely identifiable and may communicate with one or more other IOT devices via computing networks to form device configurations. Multiple protocols, domains, and applications may be implemented in the IOT devices. The multiple protocols, domains, and applications used among the IOT devices may not be compatible with other IOT devices, which may make construction of the device configurations and communications among all IOT devices difficult.
0003The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.
SUMMARY
0004According to an aspect of an embodiment, a method of constructing Internet of Things (IOT) device configurations includes receiving user input effective to select a solution template for a device configuration for a particular automated interaction between two or more IOT devices. The method includes determining whether a complete solution template for the device configuration is selected. In response to the complete solution template being selected, the method includes deploying the device configuration. In response to a partial solution template being selected, the method includes receiving additional user input effective to select two or more IOT devices implemented in the partial solution template, accessing device capabilities of the selected IOT devices from the IOT database, configuring a network connection between the selected IOT devices, simulating a device configurations using the device capabilities accessed from an IOT database for the two or more IOT devices, and based on the simulation, determining whether the device configuration is operational. In response to the device configuration not being operational, the method includes reconfiguring the device configuration to include one or more replacement IOT devices. In response to the device configuration being operational, the method includes deploying the device configuration.
0005The object and advantages of the embodiments will be realized and achieved at least by the elements, features, and combinations particularly pointed out in the claims.
0006It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
0007Example embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
0008<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example Internet of Things (IOT) system;
0009<figref idref="DRAWINGS">FIG. 2</figref> illustrates an example system server that may be implemented in the IOT system of <figref idref="DRAWINGS">FIG. 1</figref>;
0010<figref idref="DRAWINGS">FIG. 3</figref> illustrates an example IOT database that may be implemented in the IOT system of <figref idref="DRAWINGS">FIG. 1</figref>;
0011<figref idref="DRAWINGS">FIGS. 4A and 4B</figref> are a flow diagram of an example method of constructing device configurations;
0012<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of an example method of simulating a device configuration;
0013<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of an example method of deploying a device configuration; and
0014<figref idref="DRAWINGS">FIG. 7</figref> is a flow diagram of an example method of confirming a device configuration, arranged in accordance with at least one embodiment described herein.
DESCRIPTION OF EMBODIMENTS
0015Technology advances in hardware and communication systems make small devices more powerful and better able to communicate with one another. Internet of Things (IOT) has emerged with these technology advances. IOT creates many useful functions such as automation, surveillance, and the like. However, IOT is intrinsically diverse, fragmented, and sector-specific. Many vendors tend to create independent ecosystems that prohibit incorporation of devices from other vendors. As a result, users with a first type of device may be limited as to the other types of devices that they may use with the first type of device. Accordingly, some embodiments disclosed herein provide an environment to users that enables the construction of device configurations according to their preferences and allows multiple types of devices to communicate and interact. In some embodiments, an IOT database is used in the construction processes of the device configurations. The IOT database may include capabilities of multiple devices, interoperability between the devices, constraints of links between devices, considerations of various applications, etc.
0016In some systems, a user interface is provided via which multiple devices may be integrated into a device configuration. However, in these systems, a centralized system connects all devices to a central server and/or these systems only support devices that communicate on a limited number of protocols. For instance, some of these systems provide a personal computer (PC)-like organization. The devices are seen as peripherals, and tasks over these devices are seen as applications. Thus, adding a new device is similar to plugging in a peripheral, and adding a task is similar to installing an application.
0017Some embodiments described herein enable integration of IOT devices that communicate on multiple protocols. Additionally, once incorporated into a device configuration, the devices may communicate peer-to-peer without necessarily passing through a central system. In some embodiments, a configuration controller is provided that constructs a device configuration based on user input. The configuration controller receives user input that provides the preferences of the user with regard to a particular device configuration for a particular automated interaction between two or more IOT devices. The user input may include a selection of a solution template. The solution template may include a template for the particular device configuration. The selected template may include a partial solution template, which enables the user to further specify preferences in the device configuration.
0018The user may further provide a selection of two or more IOT devices. The configuration controller may access device capabilities from an IOT database for the selected IOT devices and may configure a network connection between the selected IOT devices. In some embodiments, the device configuration may be simulated by the configuration controller to determine whether the device configuration is operational. When the device configuration is not operational, the configuration controller may reconfigure the device configuration to include a replacement IOT device. When the device configuration is operational, the configuration controller may deploy the device configuration. Deploying the device configuration may include communicating configuration parameters to each of the IOT devices as well as any other components included in the configured network connection. This and other embodiments are further described with reference to the appended figures.
0019<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example IOT system <b>100</b>. In the IOT system <b>100</b>, a system server <b>126</b> may construct IOT device configurations <b>118</b>A and/or <b>118</b>B (generally, a device configuration <b>118</b> or device configurations <b>118</b>) based on user input received from a user <b>102</b>. In some embodiments, the user <b>102</b> may interact with a configuration controller <b>104</b> to provide the user input used in construction of the device configurations <b>118</b>.
0020The device configurations <b>118</b> may be constructed for a particular automated interaction between IOT devices <b>106</b>A-<b>106</b>C (generally, an IOT device or IOT devices), a physical hub <b>120</b>, a cloud server <b>108</b>, a gateway module <b>110</b>, some combination thereof, or some combination of other electronic devices. The particular automated interaction may include any function or any subset of functions of the IOT devices <b>106</b> or any subset of the IOT devices <b>106</b>. For example, the device configuration <b>118</b> may be constructed for automated home security, automated comfort adjustment during sleeping, automated energy savings, automated cooking, automated responses to emergencies, automated elderly monitoring or care, automated health care, automated reminders, and automated child care. Some additional details of the home security configuration are provided below.
0021The particular automated interaction as well as the IOT devices <b>106</b> may be determined according to a preference of the user <b>102</b>. Accordingly, the configuration controller <b>104</b> may be configured to receive the preference of the user <b>102</b>. Based on the user input, the configuration controller <b>104</b> may construct the device configuration <b>118</b> embodying the preference.
0022As depicted in <figref idref="DRAWINGS">FIG. 1</figref>, the IOT system <b>100</b> may include a system server <b>126</b>, a user device <b>112</b>, the IOT devices <b>106</b>, the physical hub <b>120</b>, the cloud server <b>108</b>, and a vendor server <b>130</b>. Additionally, in the IOT system <b>100</b>, a vendor <b>128</b> may be associated with the vendor server <b>130</b> and the user <b>102</b> may be associated with the user device <b>112</b>.
0023In the IOT system <b>100</b> the system server <b>126</b>, the user device <b>112</b>, the IOT devices <b>106</b>, the physical hub <b>120</b>, the cloud server <b>108</b>, and the vendor server <b>130</b> may communicate via a network <b>124</b>.
0024The network <b>124</b> may include any communication network configured for communication of signals between any of the components (e.g., <b>126</b>, <b>112</b>, <b>130</b>, <b>108</b>, <b>106</b>, and <b>120</b>) of the IOT system <b>100</b>. For example, following construction of a first device configuration <b>118</b>A, a first IOT device <b>106</b>A, the physical hub <b>120</b>, and a second IOT device <b>106</b>B may communicate via the network <b>124</b>. Thus, a portion of construction of the device configurations <b>118</b> may include configuration by the configuration controller <b>104</b> of a portion of the network <b>124</b>. Additionally, during at least some portion of the construction of the device configuration <b>118</b>, the user device <b>112</b> may communicate with the system server <b>126</b> via the network <b>124</b>. Additionally still, the vendor <b>128</b> may communicate a vendor solution template to the system server <b>126</b> and/or the user device <b>112</b> via the network <b>124</b>.
0025Accordingly, the network <b>124</b> may be wired or wireless. The network <b>124</b> may have numerous configurations including a star configuration, a token ring configuration, or another suitable configuration. Furthermore, the network <b>124</b> may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or other interconnected data paths across which multiple devices may communicate. In some embodiments, the network <b>124</b> may include a peer-to-peer network. The network <b>124</b> may also be coupled to or include portions of a telecommunications network that may enable communication of data in a variety of different communication protocols.
0026In some embodiments, the network <b>124</b> includes or is configured to include a BLUETOOTH® communication network, a Z-Wave® communication network, a wireless fidelity (Wi-Fi) communication network, a ZigBee communication network, a HomePlug communication network, a Power-line Communication (PLC) communication network, a message queue telemetry transport (MQTT) communication network, a MQTT-sensor (MQTT-S) communication network, a constrained application protocol (CoAP) communication network, a representative state transfer application protocol interface (REST API) communication network, an extensible messaging and presence protocol (XMPP) communication network, a cellular communications network, any similar communication networks, or any combination thereof for sending and receiving data. The data communicated in the network <b>124</b> may include data communicated via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, wireless application protocol (WAP), e-mail, smart energy profile (SEP), ECHONET Lite, OpenADR, or any other protocol that may be implemented with the IOT devices <b>106</b>, physical hubs (e.g., the physical hub <b>120</b>), cloud sever communication, or gateway modules (e.g., the gateway module <b>110</b>).
0027In the IOT system <b>100</b>, the vendor server <b>130</b> may include a hardware server that includes a processor, memory, and communication capabilities. In the illustrated embodiment, the vendor server <b>130</b> may be coupled to the network <b>124</b> to send and receive information to and from one or more of the user device <b>112</b>, the system server <b>126</b>, the IOT devices <b>106</b>, the physical hub <b>120</b>, and the cloud server <b>108</b> via the network <b>124</b>.
0028The vendor server <b>130</b> may be associated with the vendor <b>128</b>. Generally, the vendor <b>128</b> may include any entity that provides one or more of the IOT devices <b>106</b>, the physical hub <b>120</b>, the cloud server <b>108</b>, the gateway module <b>110</b>, communication protocols for use therein, or any combination thereof. For example, in some embodiments, the vendor <b>128</b> may include a company that develops and sells one of the IOT devices <b>106</b>. In other embodiments, the vendor <b>128</b> may include an individual that develops and sells a communication protocol for use with one or more of the IOT devices <b>106</b>.
0029Included in information and data communicated by the vendor <b>128</b> via the vendor server <b>130</b> may be the vendor solution template. The vendor solution template may include instructions for a particular automated interaction. For example, the vendor solution template may include a list of the IOT devices <b>106</b>, the physical hub <b>120</b>, and the gateway module <b>110</b> involved in the particular automated interaction. Additionally, the vendor solution template may include information and capabilities of the IOT devices <b>106</b>, the physical hub <b>120</b>, and the gateway module <b>110</b> such as interoperability with other IOT devices <b>106</b>, limitations, and ideal conditions for the particular automated interaction. Some examples of the limitations and ideal condition may include a proximity to one another, line of sight considerations, proximity to other appliances, locations in buildings, and the like.
0030Additionally, the vendor <b>128</b> may communicate with the system server <b>126</b>, the user device <b>112</b>, and the gateway module <b>110</b> via the vendor server <b>130</b> and the network <b>124</b>. For example, the vendor <b>128</b> may communicate patches between communication protocols that may be used in construction of the device configurations <b>118</b>. Additionally or alternatively, the vendor <b>128</b> may communicate ongoing information to the system server <b>126</b> and/or the user device <b>112</b>. For example, the vendor <b>128</b> may communicate updates regarding capabilities of the IOT devices <b>106</b>, information related to new IOT devices, and the like. The system server <b>126</b> and/or the user device <b>112</b> may accordingly enable construction of the device configurations <b>118</b> using updated information.
0031Additionally, in some circumstances, the vendor <b>128</b> may have a policy in which access is allowed to the IOT devices <b>106</b> associated with the vendor <b>128</b> only through a cloud server (e.g., the cloud server <b>108</b>) that is also associated with the vendor <b>128</b> and/or hosted on the vendor server <b>130</b>. In these and other circumstances, one or more of the IOT devices <b>106</b> not associated with the vendor <b>128</b>, the gateway module <b>110</b>, the physical hub <b>120</b>, or the cloud server <b>108</b> may communicate through the vendor server <b>130</b> to interact with the IOT devices <b>106</b> associated with the vendor <b>128</b>. Accordingly, one or more of the IOT devices <b>106</b> not associated with the vendor <b>128</b>, the gateway module <b>110</b>, the physical hub <b>120</b>, or the cloud server <b>108</b> may communicate through the vendor server <b>130</b>.
0032The user <b>102</b> may include any individual or entity interacting in the IOT system <b>100</b>. The user <b>102</b> may generally wish to implement one or more of the device configurations <b>118</b> such that the IOT devices <b>106</b> included in the device configuration <b>118</b> perform a particular automated interaction.
0033The user <b>102</b> may be associated with the user device <b>112</b>. For example, the user <b>102</b> may own or regularly operate the user device <b>112</b> such that data communicated from the user device <b>112</b> may be attributed to the user <b>102</b> and the data communicated to the user device <b>112</b> may be intended for the user <b>102</b>. The user device <b>112</b> may include a computing device that includes a processor, memory, and network communication capabilities. In the IOT system <b>100</b>, the user device <b>112</b> may be coupled to the network <b>124</b> for communication with one or more of the system server <b>126</b>, the IOT devices <b>106</b>, the physical hub <b>120</b>, the cloud server <b>108</b>, the gateway module <b>110</b>, and the vendor server <b>130</b>.
0034For example, the user device <b>112</b> may be configured to receive input from the user <b>102</b> and convey the received input to the system server <b>126</b>. In some embodiments, the user device <b>112</b> may enable communication with the system server <b>126</b> by accessing a browser-based interface that conveys the user input to the system server <b>126</b>.
0035Additionally or alternatively, the user device <b>112</b> may include a user module <b>114</b>. The user module <b>114</b> may include a web service, a cloud application, a locally stored application, and the like. In some embodiments, the user module <b>114</b> may be implemented using hardware including a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In some other instances, the user module <b>114</b> may be implemented using a combination of hardware and software.
0036The user module <b>114</b> may be configured to communicate input received locally at the user device <b>112</b> to the system server <b>126</b>. Additionally, in some embodiments, the user module <b>114</b> may provide one or more of the functionalities discussed herein that are attributed to the configuration controller <b>104</b>. For example, the user module <b>114</b> may be configured to enable construction of the device configurations <b>118</b> as described herein.
0037Some examples of the user device <b>112</b> may include a laptop computer, a desktop computer, a tablet computer, a mobile telephone, a personal digital assistant (PDA), a mobile e-mail device, a portable game player, a portable music player, a television with one or more processors embedded therein or coupled thereto, or other electronic device capable of accessing and communicating via the network <b>124</b>.
0038The physical hub <b>120</b> may include any system that connects, wirelessly or via wire, one or more of the IOT devices <b>106</b>, the user device <b>112</b>, the system server <b>126</b>, the cloud server <b>108</b>, or any combination thereof. In some embodiments, the physical hub <b>120</b> may include routing capabilities and/or include a capability to communicate with other physical hubs, routers, or switches that may be included in one of the device configurations <b>118</b>. The physical hub <b>120</b> may include one or more configuration parameters that may dictate which of the IOT devices <b>106</b> with which it communicates as well as one or more steps performed to enable communication with the IOT devices <b>106</b>. The configuration parameters may include, for example, the internet protocol (IP) addresses of one or more of the IOT devices <b>106</b>, routing instructions based on a sending or receiving device, prioritization information, or any other parameter that may be used in communication in one or more of the device configurations <b>118</b>.
0039The cloud server <b>108</b> may include any system configured to host an internet-provided service. The cloud server <b>108</b> may include a hardware server that includes a processor, memory, and communication capabilities and is accessible via the network <b>124</b>. The cloud server <b>108</b> may provide “virtual” services and/or virtual appliances to the device configurations <b>118</b>. For example, the cloud server <b>108</b> may include the gateway module <b>110</b>, which may be an example of a virtual appliance.
0040The gateway module <b>110</b> may be accessible via the network <b>124</b>, and thus physically located remotely. The gateway module <b>110</b> may include any system or device that enables communication between the IOT devices <b>106</b> using different communication protocols. The gateway module <b>110</b> may include other devices that are used in the communication between the IOT devices <b>106</b>. For example, the gateway module <b>110</b> may include a protocol and/or signal translators, an impedance matcher, a rate converter, a fault isolator, and the like. The gateway module <b>110</b> may further include one or more configuration parameters that may dictate with which of the IOT devices <b>106</b> the gateway module <b>110</b> may communicate and one or more steps performed to enable communication with the IOT devices <b>106</b>, for instance. Although not shown in the embodiment of <figref idref="DRAWINGS">FIG. 1</figref>, the IOT system <b>100</b> may also include a physical gateway that may be substantially similar to the gateway module <b>110</b> and that may be accessed locally (e.g., non-cloud-based).
0041In some embodiments, the cloud server <b>108</b> may further provide other functions to one of the device configurations <b>118</b>. For example, the cloud server <b>108</b> may provide computing services, aggregation services, access to databases, or any other suitable cloud-based service or system. The cloud server <b>108</b> may also include one or more configuration parameters. The configuration parameters may dictate the service provided by the cloud server <b>108</b> and/or by the IOT devices <b>106</b> with which the cloud server <b>108</b> communicates.
0042The IOT devices <b>106</b> may include a computer-based hardware device that includes a processor, memory, and communication capabilities. Each of the IOT devices <b>106</b> may be coupled to the network <b>124</b> to communicate data with one or more of the user device <b>112</b>, the system server <b>126</b>, the vendor server <b>130</b>, the other IOT devices <b>106</b>, the cloud server <b>108</b>, and the physical hub <b>120</b>. Some examples of the IOT devices <b>106</b> include a lightbulb, a lighting system, a door lock, a water heater, a sprinkler system, an air-conditioner, a thermostat, an alarm clock, a window shade, a switch, a smoke alarm, a camera, an egg minder, an electrical outlet, a personal (e.g., piggy) bank, a propane tank, an alarm, a personal proximity sensor, a door sensor, a biometric sensor, a mattress, a mobile device, an automotive sensor, a clock, a cooking device, an electrical breaker, a personal alert sensor, a motion sensor, a calendar, a television, a radio, a radio frequency identification (RFID) tag/RFID detector, a vehicle, an electric vehicle charger, a distributed generator (e.g. solar panel), a distributed energy storage (e.g. battery), and a thermometer.
0043The device configurations <b>118</b> may be constructed by the configuration controller <b>104</b> based on input of the user <b>102</b> such that the IOT devices <b>106</b> communicate one or more specific types of data. For instance, the IOT devices <b>106</b> deployed as sensors may communicate a signal representative of a measured condition, the IOT devices <b>106</b> deployed to perform a specific operation may be configured to receive a control signal, and the IOT device <b>106</b> deployed as a controller may receive a condition upon which operation of an appliance may be varied.
0044The IOT devices <b>106</b> may communicate via one or more communication protocols. For example, in some embodiments, the IOT devices <b>106</b> or some subset thereof may be furnished by the vendor <b>128</b>. The IOT devices <b>106</b> may be furnished for a specific function and/or for use with one or more of the other IOT devices <b>106</b>. The IOT devices <b>106</b> furnished by the vendor <b>128</b> may communicate via a specific communication protocol.
0045Some communication protocols may be compatible with other communication protocols. For example, a first protocol from the first IOT device <b>106</b>A may be translated into a second protocol of the second IOT device <b>106</b>B. However, other communication protocols may not be compatible with all the other IOT devices <b>106</b> and/or with other communication protocols. In circumstances in which two IOT devices <b>106</b> communicate using two different but compatible communication protocols, the physical hub <b>120</b>, the user device <b>112</b> with a suitable communication application, the gateway module <b>110</b>, or some combination may be deployed to enable communication therebetween.
0046The system server <b>126</b> may include a hardware server that includes a processor, memory, and communication capabilities. In the illustrated embodiment, the system server <b>126</b> may be coupled to the network <b>124</b> for communication with one or more of the user device <b>112</b>, the vendor server <b>130</b>, the cloud server <b>108</b>, the IOT devices <b>106</b>, and the physical hub <b>120</b>.
0047The system server <b>126</b> may include an IOT database <b>116</b>. In general, the IOT database <b>116</b> may include capabilities of one or more of the IOT devices <b>106</b> and interoperabilities therebetween. For example, with reference to <figref idref="DRAWINGS">FIG. 3</figref>, an example IOT database <b>116</b> is depicted. The IOT database <b>116</b> includes a device capability database <b>310</b> and a device interoperability database <b>312</b>. The device capability database <b>310</b> may include device capabilities <b>304</b> for each of the IOT devices <b>106</b>. For example, in the IOT database <b>116</b> of <figref idref="DRAWINGS">FIG. 3</figref>, the first IOT device <b>106</b>A may include a first device capability <b>304</b>A. The first device capability <b>304</b>A includes a capability of communicating using “smart energy profile 1.1” and “ZigBee” communication protocols. In addition, the second IOT device <b>106</b>B may include a second device capability <b>304</b>B. The second device capability <b>304</b>B includes a capability of communicating using “XMPP” and “Z-Wave” communication protocols.
0048Although not shown in the IOT database <b>116</b> of <figref idref="DRAWINGS">FIG. 3</figref>, the device capability database <b>310</b> may also include information about one or more application interface protocols (API). For example, the device capability database <b>310</b> may include a name of an API, arguments for the API, and the like.
0049The device interoperability database <b>312</b> may include the device interoperability of one or more device combinations <b>306</b> of the IOT devices <b>106</b>. For instance, the device combinations <b>306</b> include a first combination <b>306</b>A of the first IOT device <b>106</b>A and the second IOT device <b>106</b>B, a second combination <b>306</b>B of the second IOT device <b>106</b>B and a third IOT device <b>106</b>C, and a third combination <b>306</b>C of the first IOT device <b>106</b>A and the third IOT device <b>106</b>C. For each of the device combinations <b>306</b>, a communication solution <b>308</b> (“solution <b>308</b>”) may be included in the device interoperability database <b>312</b>. For example, for the first combination <b>306</b>A, a first solution <b>308</b>A may include “a translator gateway appliance between SEP 1.1 and XMPP in the cloud” and/or “a physical hub with ZigBee and Z-wave.” Accordingly, in the example IOT database of <figref idref="DRAWINGS">FIG. 3</figref>, communication between the first IOT device <b>106</b>A and the second IOT device <b>106</b>B may utilize a translator gateway appliance between SEP 1.1 and XMPP in the cloud and/or a physical hub with ZigBee and Z-wave.
0050The IOT database <b>116</b> of <figref idref="DRAWINGS">FIG. 3</figref> includes information related to three IOT devices <b>106</b>A-<b>106</b>C. In some embodiments, the IOT database <b>116</b> may include information related to more than the three IOT devices <b>106</b>. Additionally, the IOT database <b>116</b> of <figref idref="DRAWINGS">FIG. 3</figref> includes the device capabilities <b>304</b>, device combinations <b>306</b>, and the solutions <b>308</b>. In some embodiments, the IOT database <b>116</b> may also include information related to links between one or more of the IOT devices <b>106</b>, such as constraints.
0051Referring back to <figref idref="DRAWINGS">FIG. 1</figref>, the system server <b>126</b> may include the configuration controller <b>104</b>. The configuration controller <b>104</b> may include code and routines for enabling construction of the device configurations <b>118</b>. In <figref idref="DRAWINGS">FIG. 1</figref>, the configuration controller <b>104</b> is included in the system server <b>126</b>. In some embodiments, the configuration controller <b>104</b> may act in part as a thin-client application that may be stored on the user device <b>112</b> (e.g., the user module <b>114</b>) and in part as components that may be stored on the system server <b>126</b>. In some embodiments, the configuration controller <b>104</b> may be stored in a combination of the system server <b>126</b>, the physical hub <b>120</b>, the cloud server <b>108</b>, the gateway module <b>110</b>, the user device <b>112</b>, or any combination thereof. For example, the configuration controller <b>104</b> may include a web service, a cloud application, a locally stored application, and the like. In some embodiments, the configuration controller <b>104</b> may be implemented using hardware including a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In some other instances, the configuration controller <b>104</b> may be implemented using a combination of hardware and software.
0052Generally, the configuration controller <b>104</b> may be configured by user <b>102</b> to construct the device configurations <b>118</b> based on input from the user <b>102</b>. The device configurations <b>118</b> may be constructed according to one or more preferences of the user <b>102</b> and/or according to a complete solution template. The preferences of the user <b>102</b> may include user input that may include a selection of a solution template, a selection of one or more of the IOT devices <b>106</b>, selection of one or more available parameters of the IOT devices <b>106</b>, selection of one or more constraints of the IOT devices <b>106</b>, and the like.
0053In some embodiments, to initiate construction of the device configuration <b>118</b>, the user <b>102</b> may select a solution template. The solution template may include a complete solution template or a partial solution template. The complete solution template may include all or nearly all information for a particular automated interaction. The complete solution template may be tested, which may enable the configuration controller <b>104</b> to simply deploy the device configuration <b>118</b> associated with the complete solution template. Additionally or alternatively, the complete solution template may include pre-selected IOT devices <b>106</b>. The complete solution templates may be marked or otherwise include an indication that allows the configuration controller <b>104</b> to identify a solution template as a complete solution template.
0054Use of the partial solution template may involve additional input from the user <b>102</b>. For example, the partial solution template may include an outline or an overview of the particular automated interactions between the IOT devices <b>106</b>. A partial solution template may include some suggested IOT devices <b>106</b>, some suggested configuration parameters, one or more related functionalities that may be achieved with one or more IOT devices <b>106</b>, and categories of the IOT devices <b>106</b> that may be implemented to achieve the particular automated interaction.
0055The solution templates may include logic (e.g., branches, if/else statements, and loops) according to one or more use cases such as home automation, energy usage, home security, and the like. Moreover, the solution templates may include one or more conditions included in the logic such as conditions in the branches. Some portions of the logic may be modifiable by the user <b>102</b>. In addition, the user <b>102</b> may be able to change the logic in solution templates, according to her preferences that may input to the configuration controller <b>104</b>. The vendor solution template may include a complete solution template or a partial solution template.
0056If the user <b>102</b> selects a complete solution template, the configuration controller <b>104</b> may deploy the device configuration <b>118</b>. If, however, the user <b>102</b> selects a partial solution template, the user <b>102</b> may then select two or more IOT devices <b>106</b> for use in the device configuration <b>118</b>. The configuration controller <b>104</b> may then access information stored in the IOT database <b>116</b> related to the selected IOT devices <b>106</b>.
0057For example, the configuration controller <b>104</b> may access the capabilities and/or the device interoperabilities of the IOT devices <b>106</b>. The configuration controller <b>104</b> may then configure a network connection between the selected IOT devices <b>106</b> using the partial solution template, the selected IOT devices <b>106</b>, and information pertaining thereto accessed in the IOT database <b>116</b>.
0058Additionally, in circumstances in which a vendor solution template is provided, the configuration controller <b>104</b> may access information from the IOT database <b>116</b> regarding the IOT devices <b>106</b> included in the vendor solution template. The configuration controller <b>104</b> may then configure a network connection between the IOT devices <b>106</b> included in the vendor solution template using the vendor solution template and information accessed from the IOT database <b>116</b>. The network connection between the IOT devices <b>106</b> may include one or more connections directly between the IOT devices <b>106</b>. Additionally or alternatively, the network connection may include one or more connections indirectly between the IOT devices <b>106</b>. For instance, the indirect connections between the IOT devices <b>106</b> may be via one or more other components such as the physical hub <b>120</b>, the gateway module <b>110</b>, the user device <b>112</b>, and the cloud server <b>108</b>.
0059In some embodiments, the configuration controller <b>104</b> may detect whether the network connection is runnable. For example, a solution template may include a condition, that when met by the first IOT device <b>106</b>A, initiates an action at the second IOT device <b>106</b>B. The configuration controller <b>104</b> may determine another action at the second IOT device <b>106</b>B in an absence of the condition that may be beneficial to the device configuration <b>118</b>. Additionally or alternatively, the configuration controller <b>104</b> may detect conflicting scenarios in the device configuration <b>118</b>. For example, a first condition measured at the first IOT device <b>106</b>A may trigger a first action at the second IOT device <b>106</b>B and a second condition at the third IOT device <b>106</b>C may cause a second, conflicting action at the second IOT device <b>106</b>B. The first action and the second action may be identified as a conflict.
0060Based on information from the IOT database <b>116</b>, the configuration controller <b>104</b> may simulate the device configuration <b>118</b>. Based on the simulation, the configuration controller <b>104</b> may determine whether the device configuration <b>118</b> is operational. In response to the device configuration <b>118</b> not being operational, the configuration controller <b>104</b> may reconfigure the device configuration <b>118</b> to include one or more replacement IOT devices (e.g., <b>106</b>). In response to the device configuration <b>118</b> being operational, the configuration controller <b>104</b> may deploy the device configuration <b>118</b>. The deployment may include communicating configuration parameters to the IOT devices <b>106</b> and/or other components of the IOT system included in the device configuration <b>118</b>.
0061Additionally, in some embodiments, in response to the device configuration <b>118</b> being operational, the configuration controller <b>104</b> may display to the user <b>102</b> a marketplace. The marketplace may provide a list of physical IOT devices <b>106</b> and virtual appliances that may be implemented for the particular automated interaction of the device configuration <b>118</b>. The marketplace may further enable purchase of the one or more physical IOT devices <b>106</b> and the virtual appliances.
0062In some embodiments, the marketplace may be displayed to the user <b>102</b> at other time in constructing the device configuration <b>118</b>. For example, the marketplace may be displayed during an initial phase of a construction to enable the user <b>102</b> to select a solution template. Additionally or alternatively, the marketplace may be displayed after the user <b>102</b> selected IOT devices <b>106</b>. For example, a selection of the IOT devices <b>106</b> by the user <b>102</b> may be via the marketplace and may be used to configure a network connection.
0063After deploying the device configuration <b>118</b>, the configuration controller <b>104</b> may confirm the device configuration <b>118</b>. For instance, the device configuration <b>118</b> may be confirmed using a triggering signal. In some embodiments, the triggering signal may be generated or otherwise input by the user <b>102</b> to manually emulate a trigging condition of the device configuration <b>118</b>. For example, the user <b>102</b> may heat a room, operate one of the IOT devices <b>106</b>, and the like.
0064The configuration controller <b>104</b> may also record device input resulting from the triggering condition and/or device input that occurs following deployment of the device configuration <b>118</b>. The configuration controller <b>104</b> may compare the device input with an expected performance based on information in the IOT database <b>116</b>. When a mismatch exists, the configuration controller <b>104</b> may generate a ticket message indicating the mismatch. The generated ticket may be communicated to an administrator that may update or alter the information in the IOT database <b>116</b>. The information in the IOT database <b>116</b> may be updated to reflect the mismatch.
0065In some embodiments, the configuration controller <b>104</b> may include and/or provide a user interface in which the user <b>102</b> communicates the user input. The user interface may include a drag-and-drop input, an interactive map of a residence or a location, a right mouse click functionality to configure an available parameter, a pop-up menu to configure an available parameter, a selection of a constraint from a drop-down menu, a programming language-like text-based input (which may be sophisticated users), some combination thereof, or any other suitable user input.
0066In the IOT system <b>100</b>, there are two device configurations <b>118</b>. In other embodiments, the IOT system <b>100</b> may include multiple device configurations <b>118</b>. For example, an example of the device configuration <b>118</b> may include a home security configuration. In the home security configuration, the IOT device <b>106</b> may include a door sensor, another IOT device <b>106</b> may include a camera, and the cloud server <b>108</b> may be implemented to provide a facial recognition service. When an individual triggers the door sensor, the camera may be triggered. A photograph of the individual may be communicated to the facial recognition service, which may determine an identity of the individual. If the individual is identified as an intruder, then the facial recognition service may communicate a message to an owner on the user device <b>112</b> and/or to a neighbor at a computing device. If the individual is identified as the owner, a setting may be changed to indicate the owner is home, which may cease the door sensor triggering the camera. Additionally, the setting may initiate other IOT devices such as a media recorder or a sprinkler system.
0067In the context of the home security configuration, the configuration controller <b>104</b> may be configured to receive user input from the user <b>102</b>. The input may include a selection of a sensor template such as a “security” template. In circumstances in which the security template includes a partial solution template, after a selection of the security template, the user <b>102</b> may then select the door sensor, the camera, the facial recognition service, the neighbor, the type of alert, provide a photograph of herself for use by the facial recognition service, etc. The configuration controller <b>104</b> may simulate a device configuration for the particular automated interaction (e.g., an intruder entering a home and the owner entering the home) between the door sensor, the camera, the facial recognition sensor, etc. using capabilities accessed from the IOT database <b>116</b> for the camera, the door sensor, the facial recognition, and the components involved in the messages.
0068Based on the simulation, the configuration controller <b>104</b> may determine whether the home security configuration is operational. In response to the device configuration not being operational, the configuration controller <b>104</b> may reconfigure the home security configuration to include one or more replacement IOT devices. For example, if the camera is not capable of communicating a photograph to the facial recognition server, then the configuration controller <b>104</b> may communicate a message suggesting another camera or type of camera. In response to the home security configuration being operational or in response to the security template including a complete solution template, the configuration controller <b>104</b> may deploy the home security configuration. For example, the configuration controller <b>104</b> may communicate the configuration parameters to each of the door sensor, the camera, the facial recognition service, and the components included in the messaging. The user <b>102</b> may then generate a triggering signal by entering the home through the door and then having another person entering the home. Based on data resulting from the trigging signals, the configuration controller <b>104</b> may confirm the home security configuration.
0069Another example of the device configuration <b>118</b> may include a comfort adjustment configuration. In the comfort adjustment configuration, the IOT devices <b>106</b> may include a biometric sensor, an analytics service, a thermostat, and a mattress adjustment system. When a measured biometric condition of an individual triggers a setting in the analytics service, the thermostat may adjust a temperature of a room or the mattress adjustment system may adjust a firmness of the mattress. The biometric sensor may then communicate a signal to the analytics service, which may indicate whether the adjustments improve the individual's sleep.
0070In the context of the comfort adjustment configuration, the configuration controller <b>104</b> may be configured to receive user input from the user <b>102</b>. The input may include a selection of a sensor template such as a “comfort” template. In circumstances in which the comfort template includes a partial solution template, after a selection of the comfort template, the user <b>102</b> may then select the thermostat, the biometric sensor, the analytics service, and the mattress adjustment system. The configuration controller <b>104</b> may simulate a device configuration for the particular automated interaction (e.g., a temperature being too high or the bed being too hard) between the selected IOT devices using capabilities accessed from the IOT database <b>116</b>.
0071Based on the simulation, the configuration controller <b>104</b> may determine whether the comfort adjustment configuration is operational. In response to the comfort adjustment configuration not being operational, the configuration controller <b>104</b> may reconfigure the comfort adjustment configuration to include one or more replacement IOT devices (e.g., another type of thermostat). In response to the comfort adjustment configuration being operational or in response to the comfort template including a complete solution template, the configuration controller <b>104</b> may deploy the comfort adjustment configuration. For example, the configuration controller <b>104</b> may communicate the configuration parameters to each of the IOT devices <b>106</b>. The user <b>102</b> may then generate a triggering signal by heating up the room, attaching the biometric sensor while she is awake, etc. Based on data resulting from the trigging signals, the configuration controller <b>104</b> may confirm the comfort adjustment configuration.
0072Another example of the device configuration <b>118</b> may include an energy saving configuration. In the energy saving configuration, the IOT devices <b>106</b> may include appliances (e.g., a television) and the user device <b>112</b>. When an individual leaves her home with the appliance operating, a message may be communicated to the user device <b>112</b> and the appliance may be turned off remotely.
0073In the context of the energy saving configuration, the input may include a selection of a sensor template such as an “energy saving” template. In circumstances in which the energy saving template includes a partial solution template, after a selection of the energy saving template, the user <b>102</b> may then select the appliance and the user device <b>112</b>. The configuration controller <b>104</b> may simulate a device configuration for the particular automated interaction (e.g., the individual leaving with the appliance operational) between the selected IOT devices <b>106</b> using capabilities accessed from the IOT database <b>116</b>. Based on the simulation, the configuration controller <b>104</b> may determine whether the energy saving configuration is operational as discussed above and communicate configuration parameters to the user device <b>112</b> and the appliance.
0074Modifications, additions, or omissions may be made to the IOT system <b>100</b> without departing from the scope of the present disclosure. For example, while <figref idref="DRAWINGS">FIG. 1</figref> depicts one user device <b>112</b> associated with one user <b>102</b>, three IOT devices <b>106</b>, one physical hub <b>120</b>, one cloud server <b>108</b>, one vendor server <b>130</b>, two device configurations <b>118</b>, one gateway module <b>110</b>, and one system server <b>126</b>, the present disclosure applies to a IOT system architecture having one or more user devices <b>112</b> associated with one or more users <b>102</b>, one or more IOT devices <b>106</b>, one or more physical hubs <b>120</b>, one or more cloud servers <b>108</b>, one or more vendor servers <b>130</b>, one or more device configurations <b>118</b>, one or more gateway modules <b>110</b>, one or more system servers <b>126</b>, or any combination thereof. Moreover, the separation of various components and servers in the embodiments described herein is not meant to indicate that the separation occurs in all embodiments. Moreover, it may be understood with the benefit of this disclosure that the described components and servers may generally be integrated together in a single component or server or separated into multiple components or servers.
0075In the IOT system <b>100</b>, memory may include a non-transitory memory that stores data for providing the functionality described herein. The memory may be included in storage that may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory devices. In some embodiments, the storage also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis.
0076<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of an example of the system server <b>126</b> that includes an example of the configuration controller <b>104</b>, the IOT database <b>116</b>, a processor <b>212</b>, a memory <b>216</b>, and a communication unit <b>214</b>. The components (e.g., <b>104</b>, <b>116</b>, <b>212</b>, <b>214</b>, and <b>216</b>) of the system server <b>126</b> may be communicatively coupled by a bus <b>218</b>.
0077In <figref idref="DRAWINGS">FIG. 2</figref>, the configuration controller <b>104</b> is included in the system server <b>126</b>. In other embodiments, the configuration controller <b>104</b> or some portion thereof or functionality attributed thereto may be included in the user device <b>112</b> or one or more other components of the IOT system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>.
0078The processor <b>212</b> may include an arithmetic logic unit (ALU), a microprocessor, a general-purpose controller, or some other processor array configured to perform computations. The processor <b>212</b> may be coupled to the bus <b>218</b> for communication with the other components. The processor <b>212</b> generally processes data signals and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although <figref idref="DRAWINGS">FIG. 2</figref> includes a single processor <b>212</b>, multiple processors may be included in the system server <b>126</b>. Other processors, operating systems, sensors, displays, and physical configurations may be possible.
0079The memory <b>216</b> may be configured to store instructions and/or data that may be executed by the processor <b>212</b>. The memory <b>216</b> may be coupled to the bus <b>218</b> for communication with the other components. The instructions and/or data may include code for performing the techniques or methods described herein. The memory <b>216</b> may be a DRAM device, an SRAM device, flash memory, or some other memory device. In some embodiments, the memory <b>216</b> also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis.
0080The communication unit <b>214</b> may be configured to transmit and receive data to and from the user device <b>112</b>, the vendor server <b>130</b>, and the IOT devices <b>106</b>. The communication unit <b>214</b> may be coupled to the bus <b>218</b>. In some embodiments, the communication unit <b>214</b> includes a port for direct physical connection to the network <b>124</b> of <figref idref="DRAWINGS">FIG. 1</figref> or to another communication channel. For example, the communication unit <b>214</b> may include a USB, SD, CAT-5, or similar port for wired communication with the components of the IOT system <b>100</b>. In some embodiments, the communication unit <b>214</b> includes a wireless transceiver for exchanging data via communication channels using one or more wireless communication methods, including IEEE 802.11, IEEE 802.15, IEEE 802.16, BLUETOOTH®, ZigBee, Z-Wave, Home Plug, global system for mobile (GSM), general packet radio service (GPRS), enhanced data rates for GSM evolution (EDGE), code division multiple access (CDMA), universal mobile telecommunications system (UMTS), long-term evolution (LTE), LTE-advanced (LTE-A), MQTT, MQTT-S, CoAP, REST API, XMPP, or another suitable wired and/or wireless communication method.
0081In some embodiments, the communication unit <b>214</b> includes a cellular communications transceiver for sending and receiving data over a cellular communications network including via SMS, MMS, HTTP, direct data connection, WAP, e-mail, or another suitable type of electronic communication. In some embodiments, the communication unit <b>214</b> includes a wired port and a wireless transceiver. The communication unit <b>214</b> may also provide other conventional connections to the network <b>124</b> of <figref idref="DRAWINGS">FIG. 1</figref> for distribution of files and/or media objects using standard network protocols including TCP/IP, HTTP, HTTPS, and SMTP, etc.
0082In the embodiment of <figref idref="DRAWINGS">FIG. 2</figref>, the configuration controller <b>104</b> may include a determination module <b>202</b>, a simulation module <b>204</b>, a configuration module <b>206</b>, a deployment module <b>208</b>, a communication module <b>252</b>, and a marketplace module <b>210</b> (collectively, IOT modules <b>270</b>). Each of the IOT modules <b>270</b> may be implemented as software including one or more routines configured to perform one or more operations. The IOT modules <b>270</b> may include a set of instructions executable by the processor <b>212</b> to provide the functionality described below. In some instances, the IOT modules <b>270</b> may be stored in or at least temporarily loaded into the memory <b>216</b> of the system server <b>126</b> and may be accessible and executable by the processor <b>212</b>. One or more of the IOT modules <b>270</b> may be adapted for cooperation and communication with the processor <b>212</b>, and components of the system server <b>126</b> via the bus <b>218</b>.
0083The communication module <b>252</b> may be configured to handle communications between the configuration controller <b>104</b> and other components of the system server <b>126</b> (e.g., <b>116</b>, <b>212</b>, <b>214</b>, <b>216</b>, and <b>218</b>). The communication module <b>252</b> may be configured to send and receive data, via the communication unit <b>214</b>, to and from one or more of the user devices <b>112</b>, the vendor server <b>130</b>, and the IOT devices <b>106</b>. In some instances, the communication module <b>252</b> may cooperate with the other modules (e.g., <b>202</b>, <b>204</b>, <b>206</b>, <b>208</b>, and <b>210</b>) to receive and/or forward, via the communication unit <b>214</b>, data from the components of the IOT system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>.
0084In some embodiments, the communication module <b>252</b> may be configured to receive or access a vendor solution template <b>228</b> (vendor template <b>228</b> in <figref idref="DRAWINGS">FIG. 2</figref>) from the vendor server <b>130</b>. The vendor solution template <b>228</b> may include one or more IOT devices (e.g., the IOT devices <b>106</b>) that may be suitable or suggested for a particular automated interaction. Additionally, the vendor solution template <b>228</b> may include information (e.g., configuration parameters <b>226</b>, constraints limitations of the IOT devices) pertaining to the particular automated interaction. The communication module <b>252</b> may communicate the vendor solution template <b>228</b> to the IOT database <b>116</b> and/or the determination module <b>202</b>. The vendor solution template <b>228</b> may include a complete solution template or a partial solution template.
0085The communication module <b>252</b> also may be configured to receive user input <b>234</b> from the user device <b>112</b>. The user input <b>234</b> may include a template selection <b>232</b> and/or an IOT device selection <b>230</b>. The communication module <b>252</b> may communicate the user input <b>234</b> to the determination module <b>202</b>.
0086The template selection <b>232</b> may reference a complete solution template or a partial solution template (solution templates <b>224</b> in <figref idref="DRAWINGS">FIG. 2</figref>) that may be stored in the IOT database <b>116</b> or another suitable location. The solution templates <b>224</b> may include information pertaining to a particular automated interaction of one or more of the IOT devices <b>106</b>.
0087To construct the device configuration <b>118</b> or any device configuration as described herein, the determination module <b>202</b> may determine whether a complete solution template is selected for the device configuration <b>118</b>. For example, the determination module <b>202</b> may determine whether a user using the user device <b>112</b> has selected to use the vendor solution template <b>228</b> that is a complete solution template or has selected one of the solution templates <b>224</b> that is a complete solution template.
0088In response to the determination module <b>202</b> determining that a complete solution template is selected, the determination module <b>202</b> may communicate a signal indicating such to the deployment module <b>208</b>. The deployment module <b>208</b> may be configured to deploy the device configuration <b>118</b> according to the complete solution template.
0089In response to the selection of a partial solution template, the communication module <b>252</b> may receive the user input <b>234</b> effective to select two or more IOT devices <b>106</b> (e.g., the IOT device selection <b>230</b>). By selecting the IOT devices <b>106</b> and the partial solution template, a user may be indicating that the selected IOT devices <b>106</b> are to be implemented in the partial solution template. The determination module <b>202</b> may communicate the user input <b>234</b> to the configuration module <b>206</b>. The configuration module <b>206</b> may access device capabilities from the IOT database <b>116</b>. Based on the accessed device capabilities, the configuration module <b>206</b> may configure a network connection between the selected IOT devices <b>106</b>.
0090In some embodiments, to configure the network connection, the configuration module <b>206</b> may determine whether and how the IOT devices <b>106</b> are able to communicate with one another. When the IOT devices <b>106</b> may not communicate with one another, the network connection may be configured to include a physical hub and/or gateway such as a gateway module or a physical gateway. For example, in response to the IOT devices <b>106</b> being able to communicate, the configuration module <b>206</b> may generate parameters enabling communication between the selected IOT devices <b>106</b>. In response to the selected IOT devices <b>106</b> not being able to communicate, the configuration module <b>206</b> may generate parameters enabling communication between the IOT devices <b>106</b> via a physical hub or a gateway module.
0091In some embodiments, one or more portions of the network connection may be stored in the IOT database <b>116</b>. In these and other embodiments, the configuration module <b>206</b> may access one or more of the portions from the IOT database <b>116</b> and combine the portions to configure the network connection. Based on the information from the IOT database <b>116</b>, the configuration module <b>206</b> may generate the configuration parameters <b>226</b> that may be communicated to the IOT devices <b>106</b> and/or the physical hubs and gateways. For example, with combined reference to <figref idref="DRAWINGS">FIGS. 2 and 3</figref>, the configuration module <b>206</b> may access the device capabilities <b>304</b> of one or more of the IOT databases <b>116</b>. Based on the particular IOT devices <b>106</b> and an arrangement of the IOT devices implemented in the device configuration <b>118</b>, the configuration module <b>206</b> accesses the device capabilities <b>304</b> that may indicate whether the IOT devices <b>106</b> may communicate with one another. In circumstances in which the IOT devices <b>106</b> may not communicate with one another, the configuration module <b>206</b> may access one or more of the solutions <b>308</b>, which may include information regarding a particular portion of the network connection between two or more of the IOT devices <b>106</b>. The configuration module <b>206</b> may generate the configuration parameters <b>226</b> enabling communication between the IOT devices <b>106</b> based on the device capabilities <b>304</b> and/or the solutions <b>308</b>.
0092The configuration module <b>206</b> may communicate a signal representative of the network connection to the simulation module <b>204</b>. The simulation module <b>204</b> may be configured to simulate the device configuration <b>118</b> for a particular automated interaction between the IOT devices <b>106</b>. The simulation may use the device capabilities accessed from the IOT database <b>116</b> for the IOT database <b>116</b> and/or the network connection therebetween. In some embodiments, the simulation may include an animation or a series of two-dimensional or three-dimensional diagrams. The simulation may be viewed on the user device <b>112</b>.
0093During the simulation, the simulation module <b>204</b> may verify a feasibility of interactions between the IOT devices <b>106</b>, confirm that the interactions do not introduce safety concerns, confirm that the interactions do not introduce privacy concerns, or any combination thereof. Additionally or alternatively, the simulation module <b>204</b> may conduct a step-by-step inspection to debug the device configuration <b>118</b> including whether the IOT devices <b>106</b> successfully communicate according to the network connection. For example, the simulation module <b>204</b> may base at least some portion of the simulation on triggering signals. The triggering signals may be configured to emulate a condition that triggers a condition to which one or more of the IOT devices <b>106</b> respond. In some embodiments, the simulation module <b>204</b> may generate and/or communicate triggering signals. In some embodiments, a user may provide the triggering signals used by the simulation module <b>204</b>.
0094In simulations involving the triggering conditions, following input of the triggering conditions, device input <b>250</b> may be received. The device input <b>250</b> may indicate whether the device configuration <b>118</b> is operational. For instance, the simulation module <b>204</b> may compare the device input <b>250</b> to information in the IOT database <b>116</b> to determine whether the device input <b>250</b> is consistent with an expected performance of the device configuration <b>118</b>. In response to the device input <b>250</b> being inconsistent with an expected performance, the simulation module <b>204</b> may deem the device configuration <b>118</b> not operational.
0095Based on the simulation, the determination module <b>202</b> may determine whether the device configuration <b>118</b> is operational. For example, in determining whether the device configuration <b>118</b> is operational, the determination module <b>202</b> may detect whether the runnable configuration exists and detect conflicting scenarios in the device configuration <b>118</b>.
0096In response to the device configuration <b>118</b> not being operational, the determination module may communicate a signal to the configuration module <b>206</b>. The configuration module <b>206</b> may reconfigure the device configuration <b>118</b> to include one or more replacement IOT devices (e.g., the IOT devices <b>106</b>) and/or update a network connection between the replacement IOT devices. After the network connection is updated, the simulation module <b>204</b> may again simulate the device configuration <b>118</b> using the information in the IOT database <b>116</b> for the replacement IOT devices and/or network connection information.
0097In response to the device configuration <b>118</b> being operational, the determination module <b>202</b> may communicate a signal representative thereof to the marketplace module <b>210</b>. The marketplace module <b>210</b> may be configured to display a marketplace. In some embodiments, the marketplace may be communicated to the user device <b>112</b>. In other embodiments, the user device <b>112</b> may view and interact with the marketplace by accessing the configuration controller <b>104</b> and/or the system server <b>126</b>.
0098The marketplace may provide one or more lists of IOT devices and/or virtual appliances (e.g., gateway modules and cloud services) and may enable purchase of the physical IOT devices, solution templates, the virtual appliances, or some combination thereof. Additionally or alternatively, the marketplace may interface with or provide links to one or more commercial sites on which a user may purchase the IOT devices and/or the virtual appliances.
0099In some embodiments, the marketplace module <b>210</b> may provide the lists of the IOT devices, solution templates, and virtual appliances prior to the configuration module <b>206</b> configuring the network connections. In some embodiments, the marketplace module <b>210</b> may provide the lists from which the IOT device selection <b>230</b> and/or the template selection <b>232</b> may be made. For example, the IOT device selection <b>230</b> may include a selection of one or more IOT devices <b>106</b> included in the lists. In these and other embodiments, the network connections may accordingly be configured to include the specific IOT devices <b>106</b> selected from a list provided by the marketplace module <b>210</b>.
0100Additionally, in response to the device configuration <b>118</b> being operational, the determination module <b>202</b> may communicate a signal representative thereof to the deployment module <b>208</b>. The deployment module <b>208</b> may be configured to deploy the device configuration <b>118</b>.
0101In some embodiments, the deployment module <b>208</b> may be configured to communicate suggested deployment locations of the IOT devices <b>106</b> to a user via the user device <b>112</b>. For example, the deployment module <b>208</b> may communicate a specific distance between the first IOT device <b>106</b>A and the second IOT device <b>106</b>B. Additionally or alternatively, the deployment module <b>208</b> may communicate a precise location of the first IOT device <b>106</b>A such as “place the first IOT device on the ceiling of the entry hall, three feet from the front door.”
0102The deployment module <b>208</b> may receive the user input <b>234</b> to initiate communication of the configuration parameters <b>226</b> to the IOT devices. The user input <b>234</b> to initiate communication of the configuration parameters <b>226</b> is represented in <figref idref="DRAWINGS">FIG. 2</figref> by an initiation message <b>254</b>. For example, the deployment module <b>208</b> may communicate deployment locations of the IOT devices <b>106</b> to the user. The user may position the IOT devices <b>106</b> according to the deployment locations. The user may then communicate the initiation message <b>254</b> via the user device <b>112</b>, which may indicate that the IOT devices <b>106</b> are deployed.
0103The deployment module <b>208</b> may upload the configuration parameters <b>226</b> to the IOT devices <b>106</b> and to any virtual appliances, physical hubs, gateways, etc. that may be included in the device configuration <b>118</b>. The configuration parameters <b>226</b> may include information sufficient to program or otherwise configure the IOT devices <b>106</b> to operate according to the device configuration <b>118</b>. The deployment module <b>208</b> may then notify the user when the configuration parameters <b>226</b> are successfully communicated to the IOT devices <b>106</b>.
0104The deployment module <b>208</b> may then confirm the device configuration <b>118</b>. The deployment module <b>208</b> may confirm the device configuration <b>118</b> using a triggering signal. In some embodiments, the triggering signal may include a user input sufficient to manually emulate a triggering condition in the device configuration <b>118</b>. For example, a user may manually trigger one or more of the IOT devices <b>106</b>. In response, the IOT devices <b>106</b> may communicate device input <b>250</b> to the communication module <b>252</b>. The deployment module <b>208</b> may record the device input <b>250</b> resulting from the triggering condition. The deployment module <b>208</b> may then compare the device input <b>250</b> with an expected performance based on capabilities in the IOT database <b>116</b>. When mismatch exists, the deployment module <b>208</b> may generate a ticket message indicating the mismatch.
0105The deployment module <b>208</b> may further record device input during actual usage of the device configuration <b>118</b>. For example, as the device configuration <b>118</b> is used, one or more actual triggering conditions may occur. The deployment module <b>208</b> may receive the device input <b>250</b> generated from the actual triggering conditions. The device configuration <b>118</b> may then compare the device input <b>250</b> from the actual triggering conditions with an expected performance based on capabilities in the IOT database <b>116</b>. When mismatch exists, the deployment module <b>208</b> may generate a ticket message indicating the mismatch and communicate the ticket message to an administrator, for example.
0106<figref idref="DRAWINGS">FIGS. 4A and 4B</figref> are a flow diagram of an example method <b>400</b> of constructing device configurations, arranged in accordance with at least one embodiment described herein. The method <b>400</b> may be programmably performed in some embodiments by the system server <b>126</b> described with reference to <figref idref="DRAWINGS">FIGS. 1 and 2</figref>. The system server <b>126</b> may include or may be communicatively coupled to one or more non-transitory computer-readable media (e.g., the memory <b>216</b> of <figref idref="DRAWINGS">FIG. 2</figref>) having stored thereon or encoded therein programming code or instructions that are executable by a processor to perform or cause performance of the method <b>400</b>. Additionally or alternatively, the system server <b>126</b> may include one or more processors (e.g., the processor <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>) that are configured to execute computer instructions to cause or control performance of the method <b>400</b>. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation.
0107With reference to <figref idref="DRAWINGS">FIG. 4A</figref>, the method <b>400</b> may begin at block <b>402</b>. At block <b>402</b>, user input may be received. The user input may be received from a user device. The user input may be effective to select a solution template for a device configuration. The device configuration may be for a particular automated interaction between two or more IOT devices. In some embodiments, a system server may receive the user input. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the system server <b>126</b> may receive the user input <b>234</b> from the user device <b>112</b>. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the user input <b>234</b> may include the template selection <b>232</b>. The user input <b>234</b> may be received by the communication unit <b>214</b> of the system server <b>126</b>.
0108At block <b>404</b>, it may be determined whether a complete solution template for the device configuration is selected. In some embodiments, a determination module may determine whether a complete solution template for the device configuration is selected. In some embodiment, the complete solutions templates may be marked such that the determination may be made. For example, the determination module <b>202</b> may determine whether the template selection <b>232</b> includes a complete solution template. In response to a complete solution template being selected (“YES” at block <b>404</b>), the method may proceed to block <b>420</b>. In response to a partial solution template being selected (“NO” at block <b>404</b>), the method may proceed to block <b>406</b>.
0109At block <b>406</b>, additional user input may be received. The additional user input may be effective to select two or more IOT devices implemented in the partial solution template. In some embodiments, a system server may receive the user input. For example, the communication unit <b>214</b> may receive the IOT device selection <b>230</b> communicated by the user device <b>112</b>. At block <b>408</b>, device capabilities may be accessed from the IOT database. In particular, the device capabilities of the selected IOT devices may be accessed. In some embodiments, a configuration module may access the device capabilities. For example, the configuration module <b>206</b> of <figref idref="DRAWINGS">FIG. 2</figref> may access device capabilities from the IOT database <b>116</b> for the IOT devices <b>106</b>.
0110At block <b>410</b>, a network connection may be configured between the selected IOT devices. In some embodiments, a configuration module may configure the network connection. For example, the configuration module <b>206</b> may configure a network connection between the first IOT device <b>106</b>A and the second IOT device <b>106</b>B. With reference to <figref idref="DRAWINGS">FIG. 1</figref>, the network connection may include a portion of the network <b>124</b>. In some embodiments, constructing the network connection may include a determination of whether the selected IOT devices are able to communicate with one another. In response to the selected devices being able to communicate with one another, one or more configuration parameters may be generated that enable communication between the selected IOT devices. In response to the selected devices not being able to communicate with one another, configuration parameters may be generated that enable communication between the selected IOT devices using one or more of a physical hub and a gateway module.
0111With reference to <figref idref="DRAWINGS">FIG. 4B</figref>, at block <b>412</b>, a device configuration may be simulated. In some embodiments, the device configuration may be simulated using capabilities accessed from the IOT database for the IOT devices. For instance, a simulation module such as the simulation module <b>204</b> of <figref idref="DRAWINGS">FIG. 2</figref> may simulate the device configuration <b>118</b> using device capabilities accessed from the IOT database <b>116</b>. At block <b>414</b>, it may be determined whether the device configuration is operational. For example, a determination module, such as the determination module <b>202</b>, may determine whether the device configuration <b>118</b> is operational. In some embodiments, a determination of whether the device configuration is operational includes detecting whether a runnable configuration exists and detecting conflicting scenarios in the device configuration. In response to the device configuration not being operational (“NO” at <b>414</b>), the method <b>400</b> may proceed to block <b>416</b>. In response to the device configuration being operational (“YES” at <b>414</b>), the method <b>400</b> may proceed to block <b>418</b>.
0112At block <b>416</b>, the device configuration may be reconfigured. In some embodiments, the device configuration may be reconfigured to include one or more replacement IOT devices. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the device configuration <b>118</b> may initially include the first IOT device <b>106</b>A. The determination module <b>202</b> may determine that the device configuration <b>118</b> is not operational. The configuration module <b>206</b> may then reconfigure the device configuration to include the second IOT device <b>106</b>B. Following block <b>416</b>, the method <b>400</b> may proceed to block <b>410</b> or block <b>402</b>. For instance, when the device configuration is reconfigured to include a replacement IOT device, the method <b>400</b> may proceed to block <b>410</b>. Additionally or alternatively, if the device configuration is not operational due to a larger issue, such as unsuitability for a particular circumstance, then the method <b>400</b> may proceed to block <b>402</b>.
0113At block <b>418</b>, a marketplace may be displayed. The marketplace may provide one or more lists of physical IOT devices, solution templates, virtual appliances, or some combination thereof. Additionally, the marketplace may enable purchase of the physical IOT devices and/or the virtual appliances. For example, a marketplace module such as the marketplace module <b>210</b> of <figref idref="DRAWINGS">FIG. 2</figref> may be display a marketplace to the user device <b>112</b>. The marketplace may include a list that includes the first IOT device <b>106</b>A. The marketplace may enable the purchase of the first IOT device <b>106</b>A. In some embodiments, block <b>418</b> of the method <b>400</b> may occur prior to block <b>402</b> and/or prior to block <b>406</b>. For instance, a user may use the marketplace to select a solution template (as in block <b>402</b>) and/or to select one or more IOT devices (as in block <b>406</b>).
0114At block <b>420</b>, the device configuration may be deployed. For example, a communication unit and a deployment module such as the communication unit <b>214</b> and the deployment module <b>208</b> of <figref idref="DRAWINGS">FIG. 2</figref> may update the IOT devices <b>106</b> with the configuration parameters. At block <b>422</b>, the device configuration may be confirmed. The device configuration may be confirmed using a triggering signal. For example, a deployment module such as the deployment module <b>208</b> may confirm the device configuration <b>118</b>. In circumstances in which the device configuration is not confirmed, the method <b>400</b> may proceed to block <b>402</b> or to block <b>410</b>. The determination of whether the method <b>400</b> proceeds to block <b>402</b> or block <b>410</b> may be based on the reason for the device configuration not being confirmed. For example, if the device configuration is not confirmed because of an unworkable solution template, then the method <b>400</b> may proceed to block <b>402</b>. Additionally or alternatively, if the device configuration is not confirmed because of an unworkable network connection, the method <b>400</b> may proceed to block <b>410</b>.
0115One skilled in the art will appreciate that, for this and other procedures and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps and operations are only provided as examples, and some of the steps and operations may be optional, combined into fewer steps and operations, or expanded into additional steps and operations without detracting from the disclosed embodiments.
0116<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram of an example method <b>500</b> of simulating a device configuration, arranged in accordance with at least one embodiment described herein. The method <b>500</b> may be programmably performed in some embodiments by the system server <b>126</b> described with reference to <figref idref="DRAWINGS">FIGS. 1 and 2</figref>. The system server <b>126</b> may include or may be communicatively coupled to one or more non-transitory computer-readable media (e.g., the memory <b>216</b> of <figref idref="DRAWINGS">FIG. 2</figref>) having stored thereon or encoded therein programming code or instructions that are executable by a processor to perform or cause performance of the method <b>500</b>. Additionally or alternatively, the system server <b>126</b> may include one or more processors (e.g., the processor <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>) that are configured to execute computer instructions to cause or control performance of the method <b>500</b>. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation.
0117The method <b>500</b> may begin at block <b>502</b>. At block <b>502</b>, a feasibility of interactions between the IOT devices may be verified. For example, a simulation module such as the simulation module <b>204</b> of <figref idref="DRAWINGS">FIG. 2</figref> may verify the feasibility of interactions between the first IOT device <b>106</b>A and the second IOT device <b>106</b>B. At block <b>504</b>, it may be confirmed that the interactions do not introduce safety concerns. For example, a simulation module such as the simulation module <b>204</b> may ensure the device configuration <b>118</b> does not introduce a safety concern such as a fire, personal injury, and the like.
0118At block <b>506</b>, it may be confirmed that the interactions do not introduce privacy concerns. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the simulation module <b>204</b> may ensure that the device configuration <b>118</b> does not introduce a privacy concern. The privacy concern may include publishing personal information to a public site. At block <b>508</b>, a step-by-step inspection may be conducted to debug the device configuration. For example, the simulation module <b>204</b> may conduct a step-by-step inspection of the device configuration <b>118</b>. In some embodiments, the simulation may include one or more triggering conditions. The triggering conditions may be provided by simulation module such as the simulation module <b>204</b> of <figref idref="DRAWINGS">FIG. 2</figref>. Additionally or alternatively, the triggering conditions may be input by a user to an IOT device involved in the simulation. For example, the user <b>102</b> may input a triggering condition to the first IOT device <b>106</b>A during a simulation of the first device configuration <b>118</b>A. In simulations involving the triggering conditions, following input of the triggering conditions, device input may be received. The device input may indicate whether the device configuration is operational. For instance, the device input may be compare to information in an IOT database to determine whether the device input is consistent with an expected performance of a device configuration.
0119<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram of an example method <b>600</b> of deploying a device configuration, arranged in accordance with at least one embodiment described herein. The method <b>600</b> may be programmably performed in some embodiments by the system server <b>126</b> described with reference to <figref idref="DRAWINGS">FIGS. 1 and 2</figref>. The system server <b>126</b> may include or may be communicatively coupled to one or more non-transitory computer-readable media (e.g., the memory <b>216</b> of <figref idref="DRAWINGS">FIG. 2</figref>) having stored thereon or encoded therein programming code or instructions that are executable by a processor to perform or cause performance of the method <b>600</b>. Additionally or alternatively, the system server <b>126</b> may include one or more processors (e.g., the processor <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>) that are configured to execute computer instructions to cause or control performance of the method <b>600</b>. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation.
0120A method <b>600</b> may begin at block <b>602</b>. At block <b>602</b>, suggested deployment locations may be communicated. The suggested deployment locations may be for one or more IOT devices included in a device configuration. The suggested deployment locations may be communicated to a user. For example, with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the suggested deployment locations may be communicated by the configuration controller <b>104</b> to the user device <b>112</b> via the network <b>124</b>.
0121At block <b>604</b>, user input may be received. The user input may be configured to initiate communication of configuration parameters to the IOT devices. For example, with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the user <b>102</b> may communicate user input configured to initiate communication of the configuration parameters to the IOT devices <b>106</b>. In some embodiments, the user input may be in response to the user <b>102</b> placing one or more of the IOT devices <b>106</b> in a suggested deployment location.
0122At block <b>606</b>, the configuration parameters may be uploaded to IOT devices. For example, with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the configuration parameters may be uploaded from the system server <b>126</b> to the IOT devices <b>106</b> via the network. The configuration parameters may also be uploaded to the cloud server <b>108</b>, the gateway module <b>110</b>, the physical hub <b>120</b>, or some combination thereof. At block <b>608</b>, the user may be notified when the configuration parameters are successfully uploaded to the IOT devices. For example, the system server <b>126</b> may notify the user <b>102</b> via the user device <b>112</b>.
0123<figref idref="DRAWINGS">FIG. 7</figref> is a flow diagram of an example method <b>700</b> of confirming a device configuration, arranged in accordance with at least one embodiment described herein. The method <b>700</b> may be programmably performed in some embodiments by the system server <b>126</b> described with reference to <figref idref="DRAWINGS">FIGS. 1 and 2</figref>. The system server <b>126</b> may include or may be communicatively coupled to one or more non-transitory computer-readable media (e.g., the memory <b>216</b> of <figref idref="DRAWINGS">FIG. 2</figref>) having stored thereon or encoded therein programming code or instructions that are executable by a processor to perform or cause performance of the method <b>700</b>. Additionally or alternatively, the system server <b>126</b> may include one or more processors (e.g., the processor <b>212</b> of <figref idref="DRAWINGS">FIG. 2</figref>) that are configured to execute computer instructions to cause or control performance of the method <b>700</b>. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation.
0124The method <b>700</b> may begin at block <b>702</b>. At block <b>702</b>, device input may be received. The device input may result from a user input to an IOT device that manually emulates a triggering condition in a device configuration. For example, with reference to <figref idref="DRAWINGS">FIG. 1</figref>, the first IOT device <b>106</b>A may be included in the first device configuration <b>118</b>A. The user <b>102</b> may manually emulate a triggering condition in the first IOT device <b>106</b>A. In response, the first IOT device <b>106</b>A may communicate device input to the system server <b>126</b>.
0125At block <b>704</b>, the device input resulting from the emulated triggering condition may be recorded. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the deployment module <b>208</b> may record the device input <b>250</b> communicated from the first IOT device <b>106</b>A. At block <b>706</b>, the device input may be compared with an expected performance based on capabilities in the IOT database. For example, with reference to <figref idref="DRAWINGS">FIG. 2</figref>, the deployment module <b>208</b> may compare the device input <b>250</b> with an expected performance based on the capabilities of the first IOT device <b>106</b>A in the IOT database <b>116</b>.
0126At block <b>708</b>, a ticket message indicating a mismatch may be generated when a mismatch exists. For example, the deployment module <b>208</b> may find a mismatch between the device input <b>250</b> from the first IOT device <b>106</b>A and an expected performance of the first IOT device <b>106</b>A. The expected performance of the first IOT device <b>106</b>A may be at least partially based on capabilities in the IOT database <b>116</b>.
0127The embodiments described herein may include the use of a special purpose or general purpose computer including various computer hardware or software modules, as discussed in greater detail below.
0128Embodiments described herein may be implemented using computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media may be any available media that may be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media may include non-transitory computer-readable storage media including Random Access Memory (RAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid state memory devices), or any other storage medium which may be used to carry or store desired program code in the form of computer-executable instructions or data structures and which may be accessed by a general purpose or special purpose computer. Combinations of the above may also be included within the scope of computer-readable media.
0129Computer-executable instructions may include, for example, instructions and data, which cause a general purpose computer, special purpose computer, or special purpose processing device (e.g., one or more processors) to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
0130As used herein, the terms “module” or “component” may refer to specific hardware implementations configured to perform the operations of the module or component and/or software objects or software routines that may be stored on and/or executed by general purpose hardware (e.g., computer-readable media, processing devices, etc.) of the computing system. In some embodiments, the different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). While some of the system and methods described herein are generally described as being implemented in software (stored on and/or executed by general purpose hardware), specific hardware implementations or a combination of software and specific hardware implementations are also possible and contemplated. In this description, a “computing entity” may be any computing system as previously defined herein, or any module or combination of modulates running on a computing system.
0131All examples and conditional language recited herein are intended for pedagogical objects to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Although embodiments of the present inventions have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11290537B1 | Cited by | United States of America | Applicant |
| US10140191B2 | Cited by | United States of America | Search report |
| US2018062919A1 | Cited by | United States of America | Search report |
| US9933768B2 | Cited by | United States of America | Applicant |
| US2018084517A1 | Cited by | United States of America | Search report |
| US12250547B2 | Cited by | United States of America | Applicant |
| US2018054327A1 | Cited by | United States of America | Search report |
| US2016128043A1 | Cited by | United States of America | Search report |
| US12494938B2 | Cited by | United States of America | Applicant |
| WO2023030664A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11381559B2 | Cited by | United States of America | Search report |
| CN113472584A | Cited by | China | Search report |
| US11632308B2 | Cited by | United States of America | Applicant |
| US11533222B2 | Cited by | United States of America | Search report |
| US11445572B2 | Cited by | United States of America | Search report |
| US10868895B2 | Cited by | United States of America | Applicant |
| CN109361753A | Cited by | China | Search report |
| US10175666B2 | Cited by | United States of America | Search report |
| US10181978B1 | Cited by | United States of America | Search report |
| US10749963B2 | Cited by | United States of America | Search report |
| US10929907B1 | Cited by | United States of America | Search report |
| US11537186B2 | Cited by | United States of America | Applicant |
| WO2019205907A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11343380B2 | Cited by | United States of America | Applicant |
| US11452059B2 | Cited by | United States of America | Applicant |
| US11201585B2 | Cited by | United States of America | Applicant |
| TWI750857B | Cited by | Taiwan Province of China | Examiner |
| US12481663B2 | Cited by | United States of America | Applicant |
| US10742739B2 | Cited by | United States of America | Applicant |
| US11265402B2 | Cited by | United States of America | Applicant |
| US2018034914A1 | Cited by | United States of America | Search report |
| US12401717B2 | Cited by | United States of America | Applicant |
| US11601810B2 | Cited by | United States of America | Applicant |
| CN107948333A | Cited by | China | Search report |
| US12063221B2 | Cited by | United States of America | Applicant |
| US2022271996A1 | Cited by | United States of America | Search report |
| US11228648B2 | Cited by | United States of America | Search report |
| US12245131B2 | Cited by | United States of America | Applicant |
| US11463526B2 | Cited by | United States of America | Applicant |
| US11758026B2 | Cited by | United States of America | Applicant |
| US11824675B2 | Cited by | United States of America | Applicant |
| US9774507B2 | Cited by | United States of America | Applicant |
| US12361250B2 | Cited by | United States of America | Search report |
| US10547469B2 | Cited by | United States of America | Search report |
| US11368327B2 | Cited by | United States of America | Applicant |
| CN106850397A | Cited by | China | Search report |
| US11671325B1 | Cited by | United States of America | Search report |
| US11582065B2 | Cited by | United States of America | Applicant |
| US11916928B2 | Cited by | United States of America | Applicant |
| US2017366969A1 | Cited by | United States of America | Search report |
| US10198925B2 | Cited by | United States of America | Search report |
| US10805115B2 | Cited by | United States of America | Search report |
| US11816323B2 | Cited by | United States of America | Applicant |
| US2016357523A1 | Cited by | United States of America | Pre-grant |
| US11449012B2 | Cited by | United States of America | Applicant |
| US11367340B2 | Cited by | United States of America | Applicant |
| US2017366969A1 | Cited by | United States of America | Search report |
| US2016241641A1 | Cited by | United States of America | Pre-grant |
| US11949741B2 | Cited by | United States of America | Applicant |
| US11687331B2 | Cited by | United States of America | Applicant |
| US11615697B2 | Cited by | United States of America | Applicant |
| US10530665B2 | Cited by | United States of America | Applicant |
| US11356926B2 | Cited by | United States of America | Applicant |
| US11792068B2 | Cited by | United States of America | Applicant |
| US10568524B2 | Cited by | United States of America | Search report |
| US12301379B2 | Cited by | United States of America | Applicant |
| US11626006B2 | Cited by | United States of America | Applicant |
| CN109479073A | Cited by | China | Search report |
| US11284331B2 | Cited by | United States of America | Applicant |
| CN109413182A | Cited by | China | Search report |
| US12341865B2 | Cited by | United States of America | Applicant |
| US10996964B2 | Cited by | United States of America | Applicant |
| WO2018128598A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11102064B2 | Cited by | United States of America | Applicant |
| US11677577B2 | Cited by | United States of America | Applicant |
| US10838710B2 | Cited by | United States of America | Applicant |
| US2017126489A1 | Cited by | United States of America | Pre-grant |
| US11368429B2 | Cited by | United States of America | Applicant |
| CN108062230A | Cited by | China | Search report |
| US11423756B2 | Cited by | United States of America | Applicant |
| US11553399B2 | Cited by | United States of America | Applicant |
| US11997584B2 | Cited by | United States of America | Applicant |
| US10255067B2 | Cited by | United States of America | Search report |
| WO2018202440A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2018034656A1 | Cited by | United States of America | Search report |
| CN109688053A | Cited by | China | Search report |
| US10904078B2 | Cited by | United States of America | Applicant |
| DE102018009911A1 | Cited by | Germany | Applicant |
| US11740997B2 | Cited by | United States of America | Search report |
| US11809174B2 | Cited by | United States of America | Applicant |
| US2018262497A1 | Cited by | United States of America | Search report |
| US11341840B2 | Cited by | United States of America | Applicant |
| US11750414B2 | Cited by | United States of America | Applicant |
| US12513110B2 | Cited by | United States of America | Applicant |
| US10816944B2 | Cited by | United States of America | Applicant |
| CN111935028A | Cited by | China | Search report |
| US10594831B2 | Cited by | United States of America | Search report |
| US11550636B2 | Cited by | United States of America | Search report |
| US11720571B2 | Cited by | United States of America | Search report |
| US2024356805A1 | Cited by | United States of America | Search report |
2 members in 2 offices; this record represents the family
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2016065653A1 | United States of America | A1 | |
| JP2016045964A | Japan | A |
47 transactions on the USPTO file
Abandoned after 2 non-final rejections, 1 final rejection and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Email NotificationEML_NTR | EML_NTR | |
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic request for Examiner InterviewM865E | M865E | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic request for Examiner InterviewM865E | M865E | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Cleared by OIPE CSRL194 | L194 | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB | |
| AssignmentAS | AS |
Numbers
- Publication
- 20160065653
- Application
- 14469402
Titles
- English
- INTERNET OF THINGS (IOT) DEVICE CONFIGURATION CONSTRUCTION
Classification
- CPC, 10
- H04L67/10
- H04L67/34
- G06F3/0484
- G06F3/0481
- H04L41/0843
- H04L41/0853
- H04L41/0869
- H04L41/0813
- H04W4/70
- Y04S40/00
- IPC, 2
- H04L29 08
- G06F3 0484