Rapid gateway swap

Systems, software, and methods are provided to rapidly configured replacement gateways and other devices when needed. Configuration information may be received and stored in memory. The information may be sent to a first device or gateway. If the first device or gateway needs to be reconfigured, the information may be resent to the first device or gateway. If the first device or gateway fails, the information may be send to a second device or gateway to configure the second device for use in the system, thereby rapidly swapping the first device and second device.

BACKGROUND

Many systems allow for some control of devices using remote devices, the Internet, and the cloud. These systems are cumbersome and the user may need to know and use device specific information to control and configure the devices. The devices may include routers, modems, gateways, etc.

Overview

Systems, software, and methods are provided to rapidly configured replacement gateways or other devices, when needed. Configuration information may be received and stored in memory. The information may be sent to a first device. If the first device needs to be reconfigured, the information may be resent to the first device. If the first device fails, the information may be send to a second device to configure the second device for use in the system.

DESCRIPTION

What has yet to be seen in the controls industry is a complete end to end solution that is centered on the cloud being the central intelligence. With existing industry solutions, the gateway typically acts as the computing resource, translating between internal network protocols and the Internet or other network, housing the access list of items that it is allowed to communicate with, making decisions, etc. However, difficulties may arise when a device fails or is compromised, either by environmental circumstances or plain electronic or mechanical failure. All data may be lost and the end user may have to spend countless hours trying to reconfigure everything to its last known state. By transferring the computing process to the cloud, a gateway can be treated as a mere communication bridge between the internal networks and the Internet, and keeps the settings, data, computing, access lists, decision making, etc. in a centralized location.

The purpose of this invention is to make disaster recovery of a gateway a much less time consuming and costly process. With cloud based intelligence, all the meaningful data may be kept in a highly redundant, high uptime, scalable environment. This makes the recovery procedure as simple as changing the unique device identifier (UDID) of the failed gateway to the new gateway UDID from a web browser connected to the cloud platform to regain full function from the control system, as all settings are stored in a centralized location in the cloud.

In principle, this cloud based service allows a user to quickly and efficiently replace hardware components (gateways or other devices or components) which are not functioning properly without the time and cost of reconfiguring various devices in the system. A virtualized configuration for each gateway or other device may be stored centrally in the cloud infrastructure and is the means to which a gateway interacts with both the cloud and other associated devices.

Web device150communicates over link161to cloud services110. Internet router121communicates over link161to cloud services110. Gateways120communicate over link161to Internet Router130. Devices130communicate over link164to gateways120. Displayed information151indicates a change in gateway UDID while keeping the same device data intact. Location1indicates a physical change in gateways while retaining the same physical device connections.

Cloud services110is shown as a generic cloud, with multiple underlying services and technologies which comprise a singular service to an end user. Cloud services or infrastructure110refers to anything which is part of a service that is hosted remotely and accessible from anywhere via the Internet or other communication network or protocol. Cloud services act as a central resource for communicating with devices130and web devices150.

Cloud services110provide centralized messaging, computing, data storage, analytics, user management, device130management, gateway120management, account management, location140management, control messaging, asynchronous state messaging and displayed information151. Cloud services110acts as a resource that sends and receives data from multiple gateways and multiple devices and allows for the replacement of gateway120UDID to facilitate the physical change in gateway hardware while retaining all device information associated with the previous gateway or other device.

Gateway120is a communication bridge that connects device130to cloud services110via link164to Internet router121. Gateway120consists of a messaging translator that can receive communication via any device messaging protocol (i.e. Zigbee, Z-wave, Jennet-ip, Enocean, Wi-Fi, powerline communication, Bacnet, Lonworks, Modbus, etc. . . . ) and translate to a common cloud messaging protocol. Gateway120provides a path from any device messaging protocol to cloud services110.

Internet router121is any standard Internet router that takes network traffic (i.e. TCP/IP or UDP) from a private network and provides access to the public Internet. Internet router121connects gateway120to cloud services110by bridging link161to link161.

Location1140is any physical site that one or more gateway120and device130components physically reside. Examples include, but are not limited to: commercial buildings, residential homes, industrial buildings, hospitals, hotels, motels, multiple dwelling units, agricultural facilities, etc.

Web device150may include any web-connected device that can send and receive messages and display information. Web device150communicates to cloud services110via link161. Examples may include: smartphones, tablet computers, laptop computers, desktop computers, server computers, etc. Web device150consists of a user interface152to visualize displayed information151and provide control of displayed information151via touch or human interface device (i.e. track pad or mouse).

User interface152may also receive user inputs from a user to be sent to cloud serves110. The user inputs could include grouping information, login information, etc.

Displayed information151is received from cloud services110through web device150. No displayed information151is stored on web device150. It is just visualized information received from cloud services110. In this way, displayed information151is decoupled from any web device150and allows user to see any information provided by cloud services110without the need to be physically connected. Displayed information151can consist of device130status, state, location, groups, etc. . . . . Displayed information151can also consist of gateway120statuses, UDID, location, associated devices130, etc. . . . . Displayed information151connects to cloud services110, which provides a list of devices based on location140and has no dependencies on which gateway120the device130is connected to cloud services110through.

Link161uses various communication media, such as air, space, metal, optical fiber, or some other signal propagation path, including combinations thereof. Link161could use various communication protocols, such as Internet Protocol (IP), Ethernet, Wireless Fidelity (Wi-Fi), Time Division Multiplexing (TDM), Asynchronous Transfer Mode (ATM), Code Division Multiple Access (CDMA), Evolution-Data Optimized (EV-DO), single-carrier radio transmission technology, Frame relay, optical, synchronous optical networking (SONET), or some other communication format, including combinations, improvements, or variations thereof. Link161could be a direct link or may include intermediate networks, systems, or devices.

In this example, a user may receive an indication that gateway1231is not operating properly. All information may have been previously received and stored in the cloud110from a user or from gateway1231, or from another source. The user may then indicate to resend the saved information to gateway1231in an attempt to get gateway1231working properly again.

If gateway1231s not operating properly, the user may indicate, via interface151to remove gateway1231and insert gateway1234, thereby “swapping” the gateways. Once the gateways are swapped at location1140, the previously stored configuration data for Gateway1231may be loaded onto gateway1234. This would save time, money, and configuration error, and have the entire system100up and running properly. It will be appreciated that gateway1234may be a previously connected redundant device, which may be swapped in.

FIG. 2is an example description of the flow in which an application retrieves information from multiple gateways simultaneously in a seamless interface. This is made possible through the use of a consolidated database200with multiple collections. Each collection stores separate data that can then be referenced across each collection. By doing this, data can be complied from multiple gateways120and display that information as one list to the user interface151. This gives the user a seamless experience and removes the need to access each gateway120directly or have the knowledge of which gateway120each device130is connected to in order to control or receive information from a specific device. Gateway list400can be displayed as individual gateway120(s) or as a higher level view of entire gateway list in account and individual state.

FIG. 3describes the contents of an example database200. Database200consists of multiple collections of data. These collections are defined as Accounts, Users, Locations, Gateways, Devices, Areas, Scenes and Fixtures. Accounts represent the highest level in the data hierarchy. All collections or data grouping fall under a specific account, which helps define access to overall data for an account. Users represent individual user accounts that are part of the overall account. Locations represent the physical sites that fall under an account. An account can have a limitless amount of locations associated with it. Gateways represent the physical Gateways120devices that fall under a specific location(s). Devices represent the Devices130that are connected to the Gateways120and fall under the gateways collection. Fixtures represent a collection of one or more devices and fall under gateways. Areas represent a collection of one or more fixtures and fall under locations. By doing so, an area is able to have fixtures from any gateway, without regard to physical connection. Scenes represent a collection of one or more fixtures and can store a specific set point and fall under locations. By doing so, a scene is able to have fixtures, with specific set points from any gateway, without regard to physical connection.

FIG. 4describes an example user interface in which Gateway list400displays all gateways120associated with an account. This collection details out the number of device130(s) associated with each gateway, state of each gateway, ID of each gateway and location140each gateway. All gateway130(s) must have a UDID (Unique Device ID) entered in order to be displayed and connect to an account.

In this example, Gateway1231is operating properly, and its location140and devices130may be visible to the user. Gateway1232may have just be installed or activated. Gateway1233may be indicated as not working properly. Configuration and other information may be re-downloaded to gateway1233in an attempt to get it working properly. Another gateway may also be swapped in the place of gateway1233, and configuration information downloaded to it to rapidly swap gateways and reduce downtime of the system.

FIG. 5describes an example method in which a gateway130is swapped without any data loss regarding location140and device(s)130. This system is designed to allow a user/account owner to easily swap one gateway with another, either due to failure or otherwise, without the need to reprogram or commission any associated information. In this way, if for example a gateway1233were to fail, the user/account owner only need to replace the gateway120UDID with a new gateway120UDID and all associated information is automatically paired with the new gateway1234.

FIG. 6is a method600of rapidly configuring one or more gateways or other hardware devices, according to an example. Method600includes receiving configuration information for one or more devices, or a user, or other source610. Devices may be able to connect to a network and then to the Internet. The devices may include a gateway, or other hardware or software defined device. The device(s) may provide information about itself to the gateway after generally automatically connecting or identifying itself to the gateway or other device.

Method600also includes storing the configuration information620, which may include configuration information for a device to a cloud based storage or other storage. A user may input this information, and/or the information may be predetermined and predefined. Some devices may be associated with a gateway.

The saved information may be sent to a first device. The information may be used in part to configure the device for use within the system100. The information from the devices may be received by the device and used in part to configure the device.

If the first device requires reconfiguration or the first device did not configure properly, the saved information may be resent to configure the first device640. If the first device fails or otherwise need to be replaced or redundancy is desired, the stored information may be sent to a second device650. The second device may receive and use the information at least in part to configure itself for use in the system.

Although the example method is used for rapidly swapping gateways, it should be understood that the method could apply to any situation for configuring or reconfiguring one or more devices.

Additionally, it should be understood that the order of events in method600could be rearranged or accomplished concurrently by various different devices, etc.

FIG. 7illustrates a computing environment700according to one example. Computing environment700includes computing system710and computing system750. Computing system710, in the present example, corresponds to user device, and computing system750corresponds to cloud services150. Computing system710can include any smart phone, tablet computer, laptop computer, or other computing or mobile device capable of reading, and/or recording data about systems, devices, locations, and/or equipment, etc. Computing system750can include any server computer, desktop computer, laptop computer, or other device capable of storing and managing the data received from computing system710and database200, as well as modules for controlling devices, as described herein.

InFIG. 7, computing system710includes processing system716, storage system714, software712, communication interface718, and user interface720. Processing system716loads and executes software712from storage system714, including software module740. When executed by computing system710, software module740directs processing system716to receive configuration information, devices, locations, and/or equipment, etc. Such data could include any of the information described above, including but not limited to the functionality described forFIGS. 1-6.

Although computing system710includes at least one software module in the present example, it should be understood that one or more modules could provide the same operation. Similarly, the computing systems may be distributed using other computing systems and software.

Additionally, computing system710includes communication interface718that can be further configured to transmit the user inputs and data to computing system750using communication network705. Communication network705could include the Internet, cellular network, satellite network, RF communication, blue-tooth type communication, near field, or any other form of communication network capable of facilitating communication between computing systems710,750. This includes systems described above for links161and164.

Referring still toFIG. 7, processing system716can comprise a microprocessor and other circuitry that retrieves and executes software712from storage system714. Processing system716can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system716include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations of processing devices, or variations thereof.

Storage system714can comprise any storage media readable by processing system716, and capable of storing software712. Storage system714can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Storage system714can be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems. Storage system714can comprise additional elements, such as a controller, capable of communicating with processing system716.

Examples of storage media include random access memory, read only memory, magnetic disks, optical disks, flash memory, virtual memory, and non-virtual memory, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and that may be accessed by an instruction execution system, as well as any combination or variation thereof, or any other type of storage media. In some implementations, the storage media can be a non-transitory storage media. In some implementations, at least a portion of the storage media may be transitory. It should be understood that in no case is the storage media a propagated signal.

Although one software module is shown, the software may be distributed across many devices, storage media, etc.

User interface720can include a mouse, a keyboard, a camera, image capture, a Barcode scanner, a QR scanner, a voice input device, a touch input device for receiving a gesture from a user, a motion input device for detecting non-touch gestures and other motions by a user, and other comparable input devices and associated processing elements capable of receiving user input from a user. These input devices can be used for defining and receiving data about the systems, devices, locations, and/or equipment, etc. Output devices such as a graphical display, speakers, printer, haptic devices, and other types of output devices may also be included in user interface720. The aforementioned user input and output devices are well known in the art and need not be discussed at length here.

Application interface730can include data input735and data presentation737. In one example, data input735can be used to collect information regarding configuration, devices, locations, etc. to be controlled.

Further, application interface730could include data presentation portion737, which could be used to present information about configuration, systems, devices, locations, and/or equipment, etc. It should be understood that although computing system710is shown as one system, the system can comprise one or more systems to collect data.

In an example, computing system750includes processing system756, storage system754, software752, and communication interface758. Processing system756loads and executes software752from storage system754, including software module760. When executed by computing system750, software module760directs processing system710to store and manage the data from computing system710, devices, gateways, and other computing systems. The data can include information about configuration, devices, locations, etc., as well as one or more software module to control, configure, manipulate devices, etc.

Although computing system750is shown as including one software module in the present example, it should be understood that one or more modules could provide the same operation.

Additionally, computing system750includes communication interface758that can be configured to receive the data from computing system710using communication network705.

Referring still toFIG. 7, processing system756can comprise a microprocessor and other circuitry that retrieves and executes software752from storage system754. Processing system756can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system756include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations of processing devices, or variations thereof.

Storage system754can comprise any storage media readable by processing system756, and capable of storing software752and data from computing system710. Data from computing system710may be stored in a database or any other form of digital file. Storage system754can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Storage system754can be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems. Storage system754can comprise additional elements, such as a controller, capable of communicating with processing system756.

Examples of storage media include random access memory, read only memory, magnetic disks, optical disks, flash memory, virtual memory, and non-virtual memory, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and that may be accessed by an instruction execution system, as well as any combination or variation thereof, or any other type of storage media. In some implementations, the storage media can be a non-transitory storage media. In some implementations, at least a portion of the storage media may be transitory. It should be understood that in no case is the storage media a propagated signal.

In some examples, computing system750could include a user interface The user interface can include a mouse, a keyboard, a voice input device, a touch input device for receiving a gesture from a user, a motion input device for detecting non-touch gestures and other motions by a user, and other comparable input devices and associated processing elements capable of receiving user input from a user. This configuration may eliminate the need to receive information from a user device.

Output devices such as a graphical display, speakers, printer, haptic devices, and other types of output devices may also be included in the user interface. The aforementioned user input and output devices are well known in the art and need not be discussed at length here.

It should be understood that although computing system750is shown as one system, the system can comprise one or more systems to store and manage received data.