The present disclosure relates generally to asset management, and more specifically, to device deployment with automatic configuration and asset management.
Locations or work sites employing an Internet of Things (IoT) system can involve hundreds or thousands of edge devices such as sensors and small computer devices. Edge devices are routinely newly deployed and re-deployed in systems which require laborious and time consuming registration and configuration workflows for the edge devices to operate properly. For example, each edge device is typically requires separate network configuration in order to function.
IoT devices are typically configured by operators when they physically distributed to a location at a work site. Device deployment can involve a multitude of different configurations and installations of programs for a number of different sub-systems of an IoT system that conventionally requires considerable Information Technology (IT) and operational expertise and time.
Further, the devices can come from different vendors or manufactures that required different configuration workflows to integrate into the systems and separate registration into asset management systems. For example, management of IoT edge devices can include not only cyber managements such as network configuration changes on the devices but also physical managements such as location changes through the lifetime of the device.
In related art IoT systems, such as U.S. Pat. No. 8,010,640, titled “Systems and methods for auto-configuration of a generic data device coupled to a utility meter on a wireless network”, physical management processes are separate from configuration process for each IoT device which requires considerable time and effort on the part of operators to keep a system with hundreds or thousands of devices located throughout a location or work site.
Conventional related art IoT systems are typically only compatible with proprietary devices with limited configuration functionality. Related art approaches use vendor preconfigured devices that are not generally compatible with non-vendor devices, non-vendor IoT systems, and/or customized IoT systems. Moreover, related art preconfigured devices do not include integrated asset management and typically still require location specific configuration and installation.
Accordingly, conventional IoT device management approaches fail to provide acceptable solutions for efficient device deployment for a variety device with robust configuration and installation, and asset management integration.
An example implementation includes a method for provisioning an edge device where for a smart device located in proximity to the edge device, the method includes obtaining, by the smart device, a photo of a physical identifier of the edge device; determining a location from the smart device; transmitting information indicating the physical identifier and the location to a data server; receiving a set of configuration information; and providing the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information independent of communication with the data server.
Aspects of the present disclosure can include a system with a memory and processing device configured for device deployment with automatic configuration and asset management. For a smart device located in proximity to an edge device, the processing device is configured to obtain a photo of a physical identifier of the edge device; determine a location from the smart device; transmit information indicating the physical identifier and the location to a data server; receive a set of configuration information; and provide the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information independent of communication with the data server.
Aspects of the present disclosure can include a non-transitory computer readable medium storing instructions to provision an edge device. For a smart device located in proximity to the edge device, the instructions are to obtain a photo of a physical identifier of the edge device; determine a location from the smart device; transmit information indicating the physical identifier and the location to a data server; receive a set of configuration information; and provide the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information independent of communication with the data server.
Aspects of the present disclosure can include a means for provisioning an edge device, where for a smart device located in proximity to the edge device, means for obtaining, by the smart device, a photo of a physical identifier of the edge device; means for determining a location from the smart device; means for transmitting information indicating the physical identifier and the location to a data server; means for receiving a set of configuration information; and means for providing the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information independent of communication with the data server.
The following detailed description provides further details of the figures and example implementations of the present application. Reference numerals and descriptions of redundant elements between figures are omitted for clarity. Terms used throughout the description are provided as examples and are not intended to be limiting. For example, the use of the term “automatic” may involve fully automatic or semi-automatic implementations involving user or administrator control over certain aspects of the implementation, depending on the desired implementation of one of ordinary skill in the art practicing implementations of the present application. Selection can be conducted by a user through a user interface or other input means, or can be implemented through a desired algorithm. Example implementations as described herein can be utilized either singularly or in combination and the functionality of the example implementations can be implemented through any means according to the desired implementations.
The present disclosure relates generally to IoT devices, and more particularly, to automating deployment provisioning including both configuration of devices and maintenance of asset management databases.
In an example implementation, a method for provisioning an edge device where a smart device is located in proximity to the edge device, the method includes obtaining, by the smart device, a photo of a physical identifier of the edge device; determining a location from the smart device; transmitting information indicating the physical identifier and the location to a data server; receiving a set of configuration information; and providing the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information.
In an example implementation, the edge device may have limited or lack network connectivity prior to the configuration. In an example aspect of the present disclosure, the edge device can be provisioned independent of direct communication between the edge device and a data server (i.e., a directory server). In some examples, the edge device may have limited connectivity to the smart device (e.g., wired, Bluetooth, near field communication, barcode, infrared, etc.).
An example implementation is directed to automatic device configuration and registration methods for public network systems as described in reference to
The edge site 101 can involve an edge gateway (GW) 111 and a messaging server 112, and an operator 113. The operator 113 deploys a plethora of edge nodes 114 in different locations at the edge site 101. The operator 113 operates a smart device 115 (e.g., handheld computer, smartphone, etc.) and can use a system disk 116 and a sticker 117 for provisioning edge devices 114 as described herein. The smart device 115 is remotely connected to the directory server 103 (e.g., via the public network 105).
In an example implementation, a system disk 116 with an identifier (ID) 161 and a sticker 117 with ID 171 can include a common or associated ID 161 and 171. Each edge node 114 can be associated with one or multiple IDs 161 and 171. For example, the system disk 116 can store the ID 161 on a suitable place in a file system such as /etc/id.dat, and the sticker 117 can include the ID 171 as printed alphanumeric values, a barcode, hologram, or other means. In an example, ID 161 can be referred to as an electronic ID 161 stored in a non-transitory tangible media of the system disk 116. For example, electronic ID 161 can be read using communication protocols (e.g., wired, Bluetooth, near field communication, infrared, radio frequency, etc.). In an example, ID 171 can be referred to as an organic ID 171 that can include a unique identifier in a form that can be read without a network connection or independent of operation by the edge device 114. For example, organic ID 171 can be a printed ID such as a serial number or unique symbol on a sticker 117 that can be captured by a camera of the smart device 115 or input by the operator.
The operator 113 can assign the one or multiple IDs 161 and 171 to an edge node 114 or capture previously assigned IDs 161 and 171 using the smart device 115. In an example implementation, a pair involves the system disk 116 and the sticker 117 include the same identifier value such that the edge node 114 associated with the pair is identifiable by the electronic ID 161 and the organic ID 171. Thus, the edge node 114 can be identified by the electronic ID 161 via access to the system disk 116 and/or by the organic ID 171 independent of operation of the edge device 114.
The cloud site 102 involves a core server 121 that includes an asset database (DB) 122 as described further in reference to
At 202, the operator turns on the power of the edge node 114. At 203, the edge node 114 requests basic network setup information from the edge GW 111 by executing an edge node program from the system disk 116. The basic network setup information can includes network configuration information such as for the physical layer, data link layer, and network layer of the Open Systems Interconnection model (OSI model) and enable communication operations such as Universal Plug and Play (UPnP), Wi-Fi Protected Setup (WPS), Dynamic Host Configuration Protocol (DHCP), etc. At 204, the edge GW 111 returns the basic network setup information to the edge node 114.
At 205, the edge node 114 sends to the directory server 103 a first message with the ID 161 from the system disk 116. At 206, the operator 113 can capture a photo of the sticker 117 on the edge node using the smart device 115. In an example implementation, at 207, the smart device 115 decodes the photo of the sticker 117 to determine the organic ID 171.
At 208, the smart device 115 in proximity to the edge device 114 obtains location information, for example using a Global Positioning System (GPS) or any other locator device such as indoor location detector techniques. At 209, the operator 113 gives credentials to the smart device 115. For example, credentials can include a pair of an installer name and a password. At 210, the smart device 115 sends to the directory server 103 a second message including information indicating the ID 171, the credentials, and the location information.
At 211, the directory server 103 compares the first message received at 205 and the second message received from 210 by using the electronic ID 161 and organic ID 171 to verify the edge node 114 is the correct device and is being installed/configured by the correct operator; and reads the core server's IP address from the directory 131, as further described in reference to
After that 215, the core server 121 sends the extended configuration to the edge node 114 to activate it. The extended configuration includes endpoint information of the messaging server 112 and credentials for connecting to the messaging server 112. At 216, the edge node 114 connects to the messaging server 112 in accordance with the extended configuration.
The installer column 311 stores a name of the installer (e.g., a-abc-1234) and the password column 312 stores a password of the installer (e.g., qwer1234). The installer column 311 and the password column 312 are related to credentials that are used by the system. For example, credentials can include a pair of the installer name and the password. The core server's IP address column 313 stores endpoint information (e.g., an IP address).
The location information of where the device is installed is stored in the LAT column 413 and the LON column 414. The LAT column 413 stores a latitude information and the LON column 414 stores a longitude information; however other location information such as altitude, a photo that shows installation status, or an indoor positioning data can also be utilized in accordance with the desired implementation.
The IP address column 415 stores an IP address (e.g., 198.51.100.16) of the device. The IP address is related to the endpoint information of the device that is a sort of the location information in a cyber space. The model column 416 stores hardware related information (e.g., Model A, 4 GB, 32 GB) of the device. The hardware related information is generated by helper applications such as “dmesg” command of UNIX-based operation systems.
The datetime column 417 stores a timestamp of the when insertion of each row related to when the device is installed. For example, each row of the asset DB 122 is non-updatable and another row is inserted if any information update is required; however other time tracking techniques can also be utilized in accordance with the desired implementation. In an example implementation the asset DB 122 can be updated when the edge device is moved to a second location. For example, the smart device located in proximity to the edge device in the second location can determine the second location from the smart device, transmit information indicating the physical identifier and the second location to the asset DB 122, and the asset DB 122 can add a linked row with location information for the second location.
The role column 418 stores the role of the device and is set by asset managers. The installed column 419 stores a version number of software what is installed in the device.
The GPS module 615 can be used to obtain the location information; however other location means such as an indoor positioning system can also be utilized in accordance with the desired implementation. The secondary storage 617 is a persistent storage and includes a smart device program 671. The smart device program 671 describes operation steps of the smart device. The primary storage 616 is a volatile storage and can be used by the smart device program.
At 213, the edge node sends the core server's endpoint information to the core server including the IP address, the installer name from the credentials, location the information, and the location information. At 1105, the edge node waits until receiving the extended configuration from the core server. After receiving extended configuration, at 1106 the edge node installs the extended configuration into the system disk. At 216, the edge node connects to a messaging service based on the extended configuration. At 1107, the edge node finishes the flow.
At 1204, the directory server detects whether or not the message B is found or not. If at 1204 the message B is not found (N), the directory server stores the message A into the bucket#11241 and goes to the first step 1201.
If at 1204 the message B is found (Y), the directory server at 211 read the core server's IP address from the directory depending on the credential from the message A. At 212, the directory server sends the core server's IP address and the location info from the message A to the edge node from the message B. At 1205, remove the message B from the bucket#2. At 1206, the directory server finishes the flow.
If at 1202 the message A does not come from smart devices (N), the directory server detects whether or not the message A is came from edge node or not 1221. If at 1221 the message A comes from the edge node (Y), the directory server at 1222 searches for another message C from the bucket#1 with the same ID as the message A. If at 1221 the message A does not come from edge nodes (N), proceeds back to the first step 1201.
If at 1223 the message C is found (Y), the directory server returns to 211 to read from the director. If at 1223 the message C is not found (N), the directory server at 1231 stores the message A into the bucket#2 with the edge node's endpoint information and proceeds back to the first step 1201.
For the second example implementation, the system of
The cloud site 102 includes a core server 1421 with the asset DB 122. The directory server 1403 includes the directory 131. The smart device 1415 includes endpoint information of the directory server 1403 such as an IP address of the directory server 1403 or a host name of the directory server 1403.
At 1502, the operator provides credentials (e.g., a pair of an installer name and a password) to the smart device 1415. At 206, the operator captures a photo of the sticker 117 showing the organic ID 171 on the edge node 1414 by using the smart device 1415. At 1503, the smart device 1415 sends the photo and the credentials to the directory server 1403.
At 1504, the directory server 1403 verifies the edge node 1414 is the right device and is installed by the right operator, and read the core server's IP address from the directory 1431. At 1505, the directory server 1403 sends an autopilot setting from a directory 1431 to the smart device 1415.
The autopilot settings can include instructions (e.g., a script) to automatically perform multiple steps of the provision process to install and configure the edge node as described in reference to
At 1506 and 1507, the operator 113 connects the smart device 1415 to the edge node 1414 and turns on the power of the edge node 1414. Then at 1508, the smart device 1415 configures the edge node 1414 using the autopilot settings. At 1509 the smart device 1415 obtains location information, for example by GPS. At 1510 and 1511, the smart device sends the location information with the ID, and receives the extended configuration from the core server at 215.
At 214, the core server 1421 registers the set of information that is received from the edge node to the asset DB. After detecting the step 215 on step 1512, the edge node connects to the messaging server in accordance with the extended configuration 1513 and 216.
At 1705, the smart device detects whether or not the autopilot configuration has completed configuration and installation of the edge node or additional instructions are to be provided to the edge node. If at 1705 additional instructions are to be provided to the edge node (Y), then at 1703 the process returns to 1703 and the smart device reads the next step from the autopilot configuration. If at 1705 the autopilot configuration has completed and there are not additional instructions (N), then the processing is complete.
At 1504, the directory server reads the core server's IP address from the directory depending on the credential and model information recognized from the photo. At 1803, the directory server sends a core server's IP address and an autopilot configuration from the directory to the edge node depending on the credential. At 1804, the directory server finishes the flow.
Computer device 2205 can be communicatively coupled to input/user interface 2235 and output device/interface 2240. Either one or both of input/user interface 2235 and output device/interface 2240 can be a wired or wireless interface and can be detachable. Input/user interface 2235 may include any device, component, sensor, or interface, physical or virtual, that can be used to provide input (e.g., buttons, touch-screen interface, keyboard, a pointing/cursor control, microphone, camera, braille, motion sensor, optical reader, and/or the like). Output device/interface 2240 may include a display, television, monitor, printer, speaker, braille, or the like. In some example implementations, input/user interface 2235 and output device/interface 2240 can be embedded with or physically coupled to the computer device 2205. In other example implementations, other computer devices may function as or provide the functions of input/user interface 2235 and output device/interface 2240 for a computer device 2205.
Examples of computer device 2205 may include, but are not limited to, highly mobile devices (e.g., smartphones, devices in vehicles and other machines, devices carried by humans and animals, and the like), mobile devices (e.g., tablets, notebooks, laptops, personal computers, portable televisions, radios, and the like), and devices not designed for mobility (e.g., desktop computers, other computers, information kiosks, televisions with one or more processors embedded therein and/or coupled thereto, radios, and the like).
Computer device 2205 can be communicatively coupled (e.g., via I/O interface 2225) to external storage 2245 and network 2250 for communicating with any number of networked components, devices, and systems, including one or more computer devices of the same or different configuration. Computer device 2205 or any connected computer device can be functioning as, providing services of, or referred to as a server, client, thin server, general machine, special-purpose machine, or another label.
I/O interface 2225 can include, but is not limited to, wired and/or wireless interfaces using any communication or I/O protocols or standards (e.g., Ethernet, 802.11x, Universal System Bus, WiMax, modem, a cellular network protocol, and the like) for communicating information to and/or from at least all the connected components, devices, and network in computing environment 2200. Network 2250 can be any network or combination of networks (e.g., the Internet, local area network, wide area network, a telephonic network, a cellular network, satellite network, and the like).
Computer device 2205 can use and/or communicate using computer-usable or computer-readable media, including transitory media and non-transitory media. Transitory media include transmission media (e.g., metal cables, fiber optics), signals, carrier waves, and the like. Non-transitory media include magnetic media (e.g., disks and tapes), optical media (e.g., CD ROM, digital video disks, Blu-ray disks), solid state media (e.g., RAM, ROM, flash memory, solid-state storage), and other non-volatile storage or memory.
Computer device 2205 can be used to implement techniques, methods, applications, processes, or computer-executable instructions in some example computing environments. Computer-executable instructions can be retrieved from transitory media, and stored on and retrieved from non-transitory media. The executable instructions can originate from one or more of any programming, scripting, and machine languages (e.g., C, C++, C#, Java, Visual Basic, Python, Perl, JavaScript, and others).
Processor(s) 2210 can execute under any operating system (OS) (not shown), in a native or virtual environment. One or more applications can be deployed that include logic unit 2260, application programming interface (API) unit 2265, input unit 2270, output unit 2275, and inter-unit communication mechanism 2295 for the different units to communicate with each other, with the OS, and with other applications (not shown). The described units and elements can be varied in design, function, configuration, or implementation and are not limited to the descriptions provided.
In some example implementations, when information or an execution instruction is received by API unit 2265, it may be communicated to one or more other units (e.g., logic unit 2260, input unit 2270, output unit 2275). In some instances, logic unit 2260 may be configured to control the information flow among the units and direct the services provided by API unit 2265, input unit 2270, output unit 2275, in some example implementations described above. For example, the flow of one or more processes or implementations may be controlled by logic unit 2260 alone or in conjunction with API unit 2265.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations within a computer. These algorithmic descriptions and symbolic representations are the means used by those skilled in the data processing arts to convey the essence of their innovations to others skilled in the art. An algorithm is a series of defined steps leading to a desired end state or result. In example implementations, the steps carried out require physical manipulations of tangible quantities for achieving a tangible result.
Unless specifically stated otherwise, as apparent from the discussion, it is appreciated that throughout the description, discussions utilizing terms such as “obtaining” “receiving,” “determining,” “transmitting,” “providing,” “configuring,” “installing,” or the like, can include the actions and processes of a computer system or other information processing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other information storage, transmission or display devices.
For a smart device located in proximity to the edge device, the processor 2210 is configured to obtain a photo of a physical identifier of the edge device and determine a location from the smart device as illustrated in
In an example implementation, processor 2210 is configured to analyze the photo to determine the physical identifier as illustrated in
The processor 2210 is configured to transmit information indicating the physical identifier and the location to a data server and receive a set of configuration information as illustrated in
The processor 2210 is configured to provide the set of configuration information to the edge device, wherein the edge device is configured based on the set of configuration information independent of communication with the data server as illustrated in
In an example implementation, the edge device is configured using a script based on the set of configuration information, wherein the script includes parameters from the smart device. as illustrated in
In an example implementation, the processor 2210 is configured to obtain an operator authentication key, and transmit the information further comprising the operator authentication key and a smart device authentication key to the data server as illustrated in
In an example implementation, the edge device is in a second location, and the processor 2210 is configured to determine the second location from the smart device; transmit information indicating the physical identifier and the second location to a data server; receive a second set of configuration information; and provide the second set of configuration information to the edge device, wherein the edge device is configured based on the second set of configuration information independent of communication with the data server as illustrated in
Through the example implementations described herein, an edge device asset can be registered and configured using a smart device using wired, low power, and/or limited range communication including with a camera that can capture a physical identifier of an edge device.
The edge device may initially not be connected to any networked system, have limited connectivity, limited computing capability, and/or be operated by customized software and cannot communicate directly to a directory server for registration (e.g., provide data to a cloud or a management server) through a desired communication protocol. Such example implementations further allow for configuration of edge devices with limited computing capability while facilitating efficient registration and configuration to capture an identifier and location of such devices without having large costly registration functionality residing locally on each edge device.
Example implementations may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include one or more general-purpose computers selectively activated or reconfigured by one or more computer programs. Such computer programs may be stored in a computer readable medium, such as a computer-readable storage medium or a computer-readable signal medium. A computer-readable storage medium may involve tangible mediums such as, but not limited to optical disks, magnetic disks, read-only memories, random access memories, solid state devices and drives, or any other types of tangible or non-transitory media suitable for storing electronic information. A computer readable signal medium may include mediums such as carrier waves. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Computer programs can involve pure software implementations that involve instructions that perform the operations of the desired implementation.
Various general-purpose systems may be used with programs and modules in accordance with the examples herein, or it may prove convenient to construct a more specialized apparatus to perform desired method steps. In addition, the example implementations are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the example implementations as described herein. The instructions of the programming language(s) may be executed by one or more processing devices, e.g., central processing units (CPUs), processors, or controllers.
As is known in the art, the operations described above can be performed by hardware, software, or some combination of software and hardware. Various aspects of the example implementations may be implemented using circuits and logic devices (hardware), while other aspects may be implemented using instructions stored on a machine-readable medium (software), which if executed by a processor, would cause the processor to perform a method to carry out implementations of the present application. Further, some example implementations of the present application may be performed solely in hardware, whereas other example implementations may be performed solely in software. Moreover, the various functions described can be performed in a single unit, or can be spread across a number of components in any number of ways. When performed by software, the methods may be executed by a processor, such as a general purpose computer, based on instructions stored on a computer-readable medium. If desired, the instructions can be stored on the medium in a compressed and/or encrypted format.
Moreover, other implementations of the present application will be apparent to those skilled in the art from consideration of the specification and practice of the teachings of the present application. Various aspects and/or components of the described example implementations may be used singly or in any combination. It is intended that the specification and example implementations be considered as examples only, with the true scope and spirit of the present application being indicated by the following claims.