Computer-implemented method, device provisioning system, and computer program (Internet of Things device provisioning)
The method automatically identifies and provisions IoT devices using event data, addressing the inefficiencies of manual provisioning by enhancing accuracy and security in device type recognition.
Patent Information
- Application Number
- JP2021170569
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-10-26
- Filing Date
- 2021-10-18
- Publication Date
- 2025-01-22
- Estimated Expiration
- 2041-10-18
AI Technical Summary
The manual provisioning of IoT devices at scale is ineffective due to the exponential growth in the number of devices, and conventional techniques often oversimplify the process by assigning devices to the same type without accurate identification.
A computer-implemented method that automatically identifies the device type of IoT devices based on sample event data, using an event schema to match with a device type schema list, and provisions the device with validated credentials.
Enables accurate and efficient provisioning of IoT devices by automatically identifying their type, improving reporting, security, and update management, while preventing device spoofing and ensuring appropriate resource allocation.
Smart Images

Figure 0007619736000001 
Figure 0007619736000002 
Figure 0007619736000003
Abstract
Description
[Background technology]
[0001] The Internet of Things (IoT) is a system of interrelated computing devices, mechanical or digital machines, objects, animals or people, or a combination thereof, that are provided with unique identifiers (UIDs). The IoT enables the ability to transfer data over a computer network without requiring human-to-human or human-to-computer interaction. Devices or objects (i.e., "things") in the Internet of Things may include, for example, a heart monitor implant, a household appliance, an incandescent light bulb, a car with built-in sensors, or any device, or combination thereof, that may be assigned an IP address and that can transfer data over a computer network.
[0002] An IoT ecosystem may comprise Internet-enabled devices that use embedded processors, sensors, and communication hardware to collect, transmit, and act on data obtained from the IoT device's surrounding environment. IoT devices can share the data they collect by connecting to IoT gateways or other edge devices. This data may be transmitted to a cloud computing environment or analyzed by a computer system running locally. IoT devices may communicate with each other or with other associated devices on a computer network. Depending on the connection, network, and communication protocols used, IoT devices may be able to interact seamlessly with any human interaction and may be used to monitor business processes, improve customer experience, increase productivity, influence business decisions, and integrate or adapt business models. Summary of the Invention [Problem to be solved by the invention]
[0003] The number of IoT devices is currently in the billions and is expected to grow exponentially. Given the volume of devices, manually provisioning devices at scale is ineffective. [Means for solving the problem]
[0004] Aspects of the disclosure may include computer-implemented methods, computer program products, and systems. An example of a computer-implemented method for provisioning an Internet of Things (IoT) device includes receiving an event schema of an IoT device at a device provisioning system. The event schema includes one or more event types collected by the IoT device. The method further includes comparing the one or more event types from the event schema with a plurality of combinations of one or more event types in a device type schema list to identify a match between the one or more event types in the event schema from the IoT device and one of the plurality of combinations of one or more event types in the device type schema list, and in response to identifying the match, assigning a device type to the IoT device based on a correlation in the device type schema list between the device type and the matched one or more event type combinations, and provisioning the IoT device with validated credentials based on the assigned device type. [Brief description of the drawings]
[0005] Example embodiments are described with additional specificity and detail through the use of the accompanying drawings, with the understanding that the drawings depict example embodiments only and are therefore not to be considered limiting in scope.
[0006] [Figure 1]FIG. 1 is a block diagram of one example embodiment of an example computing environment that can automate registration of IoT devices based on sample event data received from the IoT devices.
[0007] [Diagram 2] FIG. 1 is a high-level block diagram of one embodiment of an exemplary device provisioning system.
[0008] [Diagram 3] FIG. 1 is a high-level block diagram of one embodiment of an exemplary IoT device.
[0009] [Figure 4] 1 is a flow chart illustrating one embodiment of an exemplary method for provisioning an IoT device.
[0010] [Diagram 5] 5 is a flow chart illustrating another embodiment of an example method 500 for provisioning an IoT device.
[0011] [Figure 6] 1 illustrates a cloud computing environment in accordance with an embodiment of the present disclosure.
[0012] [Figure 7] 1 illustrates abstraction model layers according to an embodiment of the present disclosure.
[0013] In accordance with common practice, the various described features are not drawn to scale, but are drawn to emphasize particular features relevant to the exemplary embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0014] In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which specific exemplary embodiments are shown by way of illustration. It is to be understood, however, that other embodiments may be utilized and that logical, mechanical and electrical changes may be made. Furthermore, the methods illustrated in the drawings and herein should not be construed as limiting the order in which individual steps may be performed. Accordingly, the following detailed description is not to be construed in a limiting sense.
[0015] FIG. 1 illustrates a block diagram of one exemplary embodiment of an exemplary computing environment 100 that can automate registration of IoT devices based on sample event data received from the IoT devices, according to an embodiment of the present disclosure. The embodiment of the computing environment 100 illustrated in FIG. 1 includes multiple computer systems and devices interconnected via a computer network 102. The network 102 can be implemented using any number of any suitable physical or logical communication topologies or combinations thereof. The network 102 can include one or more private or public computing networks. For example, the network 102 can comprise a private network associated with the workload (e.g., a network having a firewall that blocks unauthorized external access). Alternatively or additionally, the network 102 can comprise a public network, such as the Internet. Thus, the network 102 can form part of a packet-based network, such as a local area network, a wide area network, or a global network, such as the Internet, or a combination thereof. The network 102 can include one or more servers, networks, or databases, and can transfer data between the interconnected devices and systems via the network 102 using one or more communication protocols. Thus, examples of network 102 may include a local area network (LAN), a home area network (HAN), a wide area network (WAN), a backbone network (BBN), a peer-to-peer network (P2P), a campus network, an enterprise network, the Internet, a cloud computing network, or any other network or combination known to those skilled in the art.
[0016] Further, although shown as a single entity in Figure 1, in other examples, network 102 may comprise multiple networks, such as a combination of public and / or private networks. Communications network 102 may include various types of physical communications channels or "links." These links may be wired, wireless, optical, or any other suitable medium. In addition, communications network 102 may include various network hardware and network software for performing routing, switching, and other functions, such as routers, switches, base stations, bridges, or any other equipment that may be useful to facilitate data communications.
[0017] The multiple computer systems and devices interconnected via the network 102 in this example include a device provisioning system 106 configured to implement a provisioning service, an IoT platform 108, and multiple IoT devices 104-1...104-N (collectively referred to hereinafter as "IoT devices 104"). N represents the total number of IoT devices. Although only one IoT platform is shown in this example for ease of illustration, it should be understood that more than one IoT platform 108 may be utilized in other embodiments. Similarly, it should be understood that the number of IoT devices 104 is not limited to the number shown in the drawings. That is, although two IoT devices 104 are shown in FIG. 1, it should be understood that more than two IoT devices may be utilized in other embodiments. In particular, the number of IoT devices 104, IoT platforms 108, or any other replicated components or systems shown by the drawings may be any number supported by the network 102 and computing environment.
[0018] Each of the embodiments of the IoT devices 104, the IoT platform 108, and the device provisioning system 106 may be a dedicated computer system comprising a dedicated configuration of hardware, software, or a combination thereof as illustrated and described herein. The embodiments of the device provisioning system 106, the IoT platform 108, and other network-accessible systems may be a desktop computer, a laptop computer, a tablet computer, a smartphone, a server computer, or any other computer system known in the art. In some embodiments, the IoT platform 108, the device provisioning system 106, or other network-accessible systems, or combinations thereof, may represent a computer system that utilizes clustered computers and components to operate as a single pool of seamless resources when accessed through the network 102. For example, such embodiments may be used in data center, cloud computing, storage area network (SAN) and network attached storage (NAS) applications.
[0019] In some embodiments, the IoT platform 108, device provisioning system 106, or other network accessible system, or a combination thereof, may represent a virtual machine provisioned by a host computer on the network 102. For example, the device provisioning system 106, or IoT platform 108, or a combination thereof, may host multiple virtual machines that access or provision each IoT device 104, or a combination thereof. In some embodiments, the IoT device 104 may have embedded virtualization features, allowing the IoT device 104 to be provisioned using a management layer with separate slots that can be assigned one or more types of functionality to be provisioned. An IoT device 104 with virtualization capabilities may be able to be provisioned for multiple functionality on the original hardware of the IoT device 104.
[0020] An IoT device 104 may be any physical device or object embedded with electronics, circuitry, software, sensors, actuators, or connection hardware, or a combination thereof, that may enable the IoT device 104 to connect to the computer network 102, collect data, or exchange data. For example, an IoT device may include a refrigerator, a microwave oven, a conventional oven, a light switch, a doorbell, an air conditioning system, a water heater, a temperature sensor, or any other device configured to communicate over the network 102 to collect or transmit data, or a combination thereof. In many examples, a particular device is enabled to communicate over the network by embedding a generic communication chip into the device. That is, the same type of communication chip or module may be embedded into different types of devices. For example, both a refrigerator and a microwave oven may be embedded with the same type of communication chip. In some embodiments, the communication chip may be manufactured by a third party for placement into devices manufactured by another manufacturer.
[0021] The modularity of the communication chip to be used in different types of devices provides cost and manufacturing efficiencies. However, it is very difficult to impossible to track or know in advance which type of device a given communication chip will be embedded into. This presents a technical challenge to properly provision the communication chip to enable it to communicate with the IoT platform 108. As will be appreciated by those skilled in the art, device provisioning is the process of attaching a certificate to a device identity. The device identity is used to uniquely identify a particular device and may be used for functions such as, but not limited to, providing push notifications and performing reports. For example, the system uses the device identity to identify which device a notification is being sent to, or to identify how many devices are using the server, etc. Knowing the device identity also enables many security integration possibilities, such as determining which IoT devices are allowed to communicate with a given IoT platform. Additionally, knowing the device identity may enable more specific and relevant reporting and processing of data from the device. Furthermore, security updates may only be relevant to a particular device type. However, without knowledge of what type of device the communications module / chip is located in, the update may be rolled out to more devices than needed.
[0022] Some conventional techniques for addressing this provisioning challenge involve manual intervention in the device provisioning process. However, the number of IoT devices is currently in the billions and is expected to grow exponentially. Given the volume of devices, manually provisioning devices at scale is ineffective. Other conventional techniques oversimplify the device provisioning process, such as by assigning any device from a given manufacturer to the same device type. However, the embodiments described herein enable an automated device provisioning process while also allowing more complex procedures to be implemented so that the provisioning process more accurately provisions devices based on their actual device type.
[0023] In particular, as described herein, the device provisioning system 106 enables automatic detection of device type based on sample event data provided by a given IoT device 104. Sample event data refers to actual events exposed by an IoT device. The event data exposed by an IoT device depends on the type of device. For example, a refrigerator may expose event data related to temperature readings, pressure measurements in a capacitor, etc. However, a microwave oven may collect and expose event data related to, for example, electromagnetic (EM) radiation levels. Thus, the specific event data collected and exposed by an IoT device will differ based on the type of device.
[0024] The device provisioning system 106 is configured to analyze the sample event data from the IoT devices 104 to identify a respective device type for each of the IoT devices. The identified device type is then provided to the IoT platform 108 for use in provisioning the IoT devices 104 based on the identified device type.
[0025] In operation, one or more of the IoT devices 104 request connection to the IoT platform 108 by submitting a request for registration of the IoT device 104 over the network 102. As mentioned above, an embodiment of an IoT device 104 may refer to a physical object that may be embedded with technology that enables network communication with other IoT devices 104, computer systems, servers, gateways, and environments external to the IoT device 104. The IoT device 101 may be internet connectable and may include characteristics, parameters, and attributes that may be typical of a network-enabled computer system, such as an IP address and a MAC address. Examples of IoT devices 104 may include, but are not limited to, security systems, speakers, household appliances, toys, televisions, thermostats, smoke detectors, cameras, sensors, lighting systems, automobiles, or any other object that may be embedded with network-enabled communication technology. An exemplary IoT device is described in more detail with respect to FIG. 3.
[0026] In addition to the provisioning request, the IoT device 104 is also configured to provide an event schema document (also referred to herein as an “event schema” or “schema”) to the device provisioning system 106. The event schema document defines characteristics of the event data, such as the name and type of the event. In particular, the event schema document is used to define attributes of the event data provided to the device provisioning system 106. Thus, the event schema document functions similarly to an XML Schema Document (XSD), but for event data in the IoT ecosystem. In some embodiments, sample event data may be provided as part of the event schema document. In other embodiments, the event data and the event schema are provided separately. Additionally, as used herein, the term event type refers to a type of event, rather than a specific value of the data. Exemplary event types include, but are not limited to, status, readings, measurements, and the like. For example, a status may refer to a status of a component (e.g., operational, standby, etc.), while a reading or measurement may indicate that the value was measured at a given time (such as a temperature reading). Additionally, the type may be more specific in some embodiments, such as, for example, a temperature reading, a pressure reading, an ambient light measurement, etc.
[0027] Based on the particular event types and event schema provided by the IoT device 104, the device provisioning system 106 can identify a device type for a given IoT device. In particular, the device provisioning system 106 maintains a schema list 110 that correlates different combinations of event types to different device types. For example, the schema list 110 may indicate that the event types of a capacitor pressure reading and a temperature reading are both correlated with a device type of a refrigerator. Thus, the device provisioning system 106 is configured to identify a device type for a given IoT device by identifying a match between the event types provided with the event schema from the IoT device 104 as grouped together in the schema list 110. If a match is found, the IoT device is classified as that device type. The device type classification is provided to the IoT platform 108 for use in validating the credentials of the IoT device 104. In some embodiments, the device provisioning system is configured to validate the credentials of the IoT device 104. For example, in some such embodiments, the IoT platform 108 and the device provisioning system 106 are implemented as a single system, as opposed to the separate systems shown in FIG.
[0028] An IoT platform 108 may refer to the supporting software that connects hardware (such as IoT devices 104), access points, and networks to end-user applications accessible through the IoT platform 108. The IoT platform 108 may enable users to automate the physical and computing environment 100 by handling management tasks and data visualization. An embodiment of the IoT platform 108 may perform multiple functions within the computing environment 100, including the functions of a data controller, a gateway device, a communication network, a data analyzer, a data translator, or an application service, or a combination thereof (including, in some embodiments, the functions of an end-user application, or a device provisioning system 106). An embodiment of the IoT platform 108 may act as middleware between a remotely connecting IoT device 104 and one or more applications or devices that may be connected or accessible through the IoT platform 108.
[0029] The IoT platform 108, in this embodiment, is also responsible for issuing or maintaining the credential database 112, which contains authenticated credentials. The IoT platform 108 can compare the credentials received from the IoT device 104 with the verified credentials in the credential database 112 and can confirm with the device provisioning system 106 whether the credentials presented by the IoT device 104 are in fact authentic. As mentioned above, in some embodiments, the device provisioning system 106 can be responsible for maintaining the credential database 112.
[0030] An embodiment of the IoT platform 108 may be responsible for enabling one or more features of the IoT devices 104 registered with the IoT platform 108. For example, the IoT platform 153 may equip or enable the IoT devices 101 with real-time monitoring capabilities, remote control capabilities, configurable alerts, notifications, and pluggable cloud services. An embodiment of the IoT platform 108 may also integrate the IoT devices 104 with mobile computing devices, smartphone technologies, and applications. Additional examples of applications of the IoT platform in the field of IoT devices 104 may include remote monitoring of the IoT devices 104 and vehicles equipped with the IoT devices 104, predicting equipment maintenance, and collecting sensor data for real-time analysis in various fields such as, but not limited to, healthcare, hospitality, and travel, including monitoring the end-to-end movement of physical goods / products. The IoT platform 108 may utilize a large network of registered IoT devices 104 for large-scale solutions including the use of a network of IoT devices 104 for smart city infrastructure and public services including metering of the power grid, monitoring air quality, and controlling the functionality of "smart" buildings.
[0031] An embodiment of the IoT platform 108 may also be referred to as an IoT cloud when the IoT platform 108 operates using a cloud computing environment, such as the exemplary cloud computing environment described below. The IoT platform 108 operating as an IoT cloud may be utilized as a Platform as a Service (PaaS). The IoT PaaS may enable users and clients to rent the cloud infrastructure, the IoT platform 108, and even the IoT devices 104 all from a single technology provider.
[0032] Thus, by enabling the device provisioning system 106 to automatically identify the device type of an IoT device 104 based on event data, the embodiments described herein can improve the efficiency and security in the provisioning and registration of an IoT device 104 to an IoT platform 108. An example device provisioning system is described in more detail below with respect to FIG.
[0033] 2 is a high-level block diagram of one embodiment of an exemplary device provisioning system 200. The device provisioning system 200 may be implemented as the device provisioning system 106 in FIG. 1. In the example shown in FIG. 2, the device provisioning system 200 includes memory 225, storage 230, one or more processors 205 (also referred to herein as CPUs 205), and a network interface 215 that are communicatively coupled via an interconnect (e.g., bus) 220. It should be understood that the device provisioning system 200 is provided only as an example, and that in other embodiments, the device provisioning system 200 may be implemented differently. For example, in other embodiments, some of the components shown in FIG. 2 may be omitted, or other components may be included, or combinations thereof may be made.
[0034] Each CPU 205 retrieves and executes programming instructions stored in memory 225 or storage 230, or a combination thereof. Interconnect 220 is used to move data, such as programming instructions, between CPU 205, storage 230, network interface 215, and memory 225. Interconnect 220 may be implemented using one or more buses. CPU 205 may be a single CPU, multiple CPUs, or a single CPU with multiple processing cores, in various embodiments. In some embodiments, processor 205 may be a digital signal processor (DSP). Memory 225 is generally included to represent random access memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), or flash). Storage 230 is generally included to represent non-volatile memory, such as a hard disk drive, solid state device (SSD), removable memory card, optical storage, or flash memory device. In alternative embodiments, storage 230 may be replaced by a storage area network (SAN) device, cloud, or other device communicatively coupled to the device provisioning system 200 via a communications network coupled to the network interface 215.
[0035] In some embodiments, memory 225 stores provisioning instructions 211 and storage 230 stores provisioning log 209 and device type schema list 217. However, in various embodiments, provisioning instructions 211, provisioning log 209 and device type schema list 217 are stored partially in memory 225, partially in storage 230, or entirely in memory 225 or entirely in storage 230. Additionally, while storage 230 is illustrated as a single monolithic entity and memory 225 is illustrated as a single monolithic entity, it should be understood that in other embodiments storage 230 or memory 225 or a combination thereof may each be comprised of multiple separate memory devices.
[0036] When executed by the CPU 205, the provisioning instructions 211 cause the CPU 205 to automatically identify a device type of each IoT device based on event data provided by the IoT device, as described herein. In particular, the provisioning instructions 211 include instructions for the schema engine 213. The schema engine 213 is configured to compare event types received from the IoT device with event types stored in the device type schema list 217. If a match is found, the provisioning instructions 211 classify the IoT device as the device type indicated in the identified match from the device type schema list 217. Additionally, the provisioning instructions 211 cause the CPU 205 to maintain entries in the provisioning log 209 during the provisioning process. For example, in some embodiments, the provisioning instructions 211 cause the CPU 205 to perform a method, such as method 400 or method 500, or a combination thereof, during provisioning of the IoT device.
[0037] Further, as noted above, in some embodiments, one or more of the components and data shown in Figure 2 include instructions or statements executed on the processor 205, or instructions or statements interpreted by instructions, or statements executed on the processor 205 to perform functions as described herein. In other embodiments, one or more of the components shown in Figure 2 are implemented in hardware via semiconductor devices, chips, logic gates, circuits, circuit cards, or other physical hardware devices, or combinations thereof, in place of, or in addition to, a processor-based system.
[0038] 3 is a high-level block diagram of one embodiment of an exemplary IoT device 300. The IoT device 300 may be implemented as the IoT device 104 in FIG. 1. The exemplary IoT device 300 includes a communications module 360. As mentioned above, in some embodiments, the communications module 360 may be fabricated as a generic module that may be included in many different types of devices. In this example, the communications module 360 includes a processor 362, a network interface 364, and a memory 366. The network interface 364 is configured to enable communication with an IoT platform and a device provisioning system, such as the IoT platform 108 and the device provisioning system 106, over a network, such as the network 102.
[0039] In this example, memory 366 includes authentication information 370, address 372, and schema 374. Authentication information 370 is network connection information and authentication documentation. In the example shown in FIG. 3, authentication information 370 is stored in memory 366 on IoT device 300. However, in other embodiments, authentication information 370 may be accessible via a network-accessible storage device. An embodiment of authentication information 370 may store authentication information that may be used to access the IoT platform. Examples of authentication information may include a user / password combination, a security token, or a digital certificate. One or more combinations of authentication information may be implemented for added security.
[0040] The authentication information 370 may enable computing systems, platforms, and networks to verify the authenticity of the IoT device 300 to ensure that unauthorized devices are not masquerading as legitimate IoT devices 300. For example, the digital certificate may use a public key, a private key, or a digital signature issued by a digital certificate manager responsible for maintaining the authentication information 370 of the IoT device 300. To verify the authenticity of the authentication information 370, the digital key and / or the digital signature may be matched to a digital certificate presented by the IoT device 300 at the time of registration of the IoT device 300. Examples of digital certificates may include server or client certificates that may communicate securely using Secure Sockets Layer (SSL), object signing certificates that include digitally signed objects, and signature verification certificates. The most common format of public key certificates that may be used may be digital certificates issued in X.509 format.
[0041] The authentication information 370, which may be maintained as a digital certificate, a security token, and a default username / password, may be preloaded into the IoT device 300 by a manufacturer of the communication module 360, a distributor, or an administrator of the IoT device 300. The preloaded authentication information 370 may enable the IoT device 300 to contact the IoT platform to register the IoT device 300 for the first time and to authenticate the IoT device 300. In some embodiments, during registration of the IoT device 300, the authentication information 370 may be modified by the device provisioning system or the IoT platform. For example, during registration of the IoT device 300, a new username / password combination may be set to access the IoT platform. Alternatively, during registration of the IoT device 300, the device provisioning system may issue new authentication information by issuing a new digital certificate or security token to the IoT device 300 as part of the registration process.
[0042] In some embodiments, such as that shown in the example of FIG. 3, the IoT device 300 is pre-programmed or embedded with a URL or other network address protocol 372 (collectively referred to herein as “address 372”). In some embodiments, the address 372 may direct the IoT device 300 to a device provisioning system or IoT platform in connection with use of the IoT device 300. Upon navigating to the URL or network address embedded in the IoT device 300, the IoT device 300 may connect to the device provisioning system and initiate automatic registration of the IoT device 300. For example, the IoT device 101 may initially be directed toward the URL of the IoT platform. However, the IoT device 300 may be identified as an unregistered device and then redirected to the device provisioning system to first complete the registration process before accessing the IoT platform.
[0043] In the example shown in FIG. 3, the memory 366 also stores a schema 374. As mentioned above, the schema 374 includes information regarding event types collected and exposed by the IoT device 300. The IoT device 300, in this embodiment, also includes one or more input / output (I / O) devices 376 and one or more sensors 378. The one or more I / O devices 376 enable the IoT device to interact with a user or other IoT devices or a combination thereof in an environment surrounding the IoT device. For example, the I / O devices 376 may include, but are not limited to, a display screen, a speaker, a microphone, a control panel, etc. The one or more sensors 378 are each configured to collect data regarding the IoT device. For example, the sensors 378 may include, but are not limited to, a temperature sensor, a pressure sensor, a lighting sensor, a timer, etc. The sensors 378 or I / O devices 376 or a combination thereof provide event data related to the schema 374 of the IoT device 300 that is provided to the device provisioning system for automatic identification of the device type of the IoT device 300.
[0044] It should be understood that IoT device 300 is provided by way of example only, and that in other embodiments IoT device 300 may be implemented differently. For example, it should be understood that in other embodiments, other components may be used in addition to or instead of those shown, and some components shown in FIG. 3 may be omitted. For example, in some embodiments, I / O device 376 may be omitted. Additionally, in some other embodiments, processor 362 is not implemented as part of communication module 360.
[0045] 4 is a flow chart illustrating one embodiment of an exemplary method 400 for provisioning an IoT device. Method 400 may be implemented by a device provisioning system, such as device provisioning system 106 or 200. For example, method 400 may be implemented by a CPU, such as CPU 205 in device provisioning system 200, executing instructions, such as provisioning instructions 211. It should be understood that the order of operations in exemplary method 400 is provided for purposes of explanation, and that in other embodiments, methods may be performed in a different order. Similarly, it should be understood that in other embodiments, some operations may be omitted or additional operations may be included.
[0046] At 402, a provisioning or registration request is received from an unprovisioned IoT device at a Device Provisioning Service (DPS) along with an event schema including event type data. In some embodiments, a Uniform Resource Locator (URL) or other network address of the Device Provisioning Service is burned or preloaded into the IoT device by the IoT device manufacturer. In this manner, the IoT device can send the request and event schema directly to the Device Provisioning Service. In other embodiments, the URL or other network address of the device manufacturer is preloaded into the IoT device. In such embodiments, the requesting device manufacturer can redirect the event schema to the Device Provisioning Service. Similarly, in other embodiments, the IoT device is preloaded with the URL or other network address of the IoT platform, and the IoT platform redirects the initial request and schema to the Device Provisioning Service.
[0047] At 404, the device provisioning service logs the received request, such as in the provisioning log 209 of FIG. 2. At 406, the device provisioning service executes a schema engine configured to compare the event type data in the received event schema with the contents of a device type schema list, such as the device type schema list 217, to identify a match. In some embodiments, the device type schema list may be pre-populated with different combinations of event type data and corresponding device types. In other embodiments, the device provisioning service is configured to build or update or combine the device type schema list based on the event schema received from the IoT device, for example, as described in the example method 500 below. Furthermore, it should be understood that in some embodiments, the device provisioning system may be implemented across multiple distributed devices. In such embodiments, the schema engine may be implemented on a different device than the device configured to communicate with the IoT device.
[0048] At 408, in response to identifying the schema match, the schema statement is returned to the device provisioning system. As used herein, returning the schema statement to the device provisioning service may refer to generating a schema statement or providing a schema statement from one component of the device provisioning system to another component of the device provisioning system, or a combination thereof. For example, as described above, one device may be configured to implement a schema engine and another device may be configured to communicate with an IoT device. The identified schema match is an indication that a combination of one or more event types in the device type schema list matches one or more event types in the event schema received from the IoT device. Thus, based on the match, the device provisioning system can classify the IoT device type in the schema statement.
[0049] At 410, the schema statement is logged in a provisioning log. At 412, a provisioning request is sent to an IoT platform (also referred to as an IoT cloud service). Additionally, along with the provisioning request, the device provisioning system sends the specified device type in the schema statement to the IoT platform. In this way, the IoT platform can not only verify the authentication information as described above, but also register the IoT device based on the specified device type. As described above, this allows for various benefits, such as, but not limited to, improved reporting based on device type, improved tracking and rollout of updates / repairs, improved security to prevent device spoofing, etc.
[0050] At 414, the device provisioning service receives the validated credentials from the IoT platform, as described above. For example, in response to validating the credentials received from the IoT device, the IoT platform may return a signed certificate to the device provisioning system for transmission to the IoT device. At 416, the response from the IoT platform is logged without the validated credentials. In other words, the event of receiving the validated credentials is logged, but the device provisioning system does not log the actual validated credentials in the provisioning log. At 418, the validated credentials, device ID, token, etc. are returned to the IoT device being provisioned. At 420, a successful return code from the IoT device is received and logged without logging the correct credentials.
[0051] It should be understood that method 400 is provided as an example, and that modifications of method 400 may be implemented in other embodiments. For example, one or more of the logging operations may be omitted or modified. Similarly, in some embodiments, the device provisioning system may be implemented as part of an IoT platform, and thus the device provisioning system may perform validation of received authentication information.
[0052] 5 is a flow chart illustrating another embodiment of an example method 500 of provisioning an IoT device. Method 500 may be implemented by a device provisioning system, such as device provisioning system 106 or 200. For example, method 500 may be implemented by a CPU, such as CPU 205 in device provisioning system 200, executing instructions, such as provisioning instructions 211. It should be understood that the order of operations in example method 500 is provided for purposes of explanation, and that in other embodiments, methods may be performed in a different order. Similarly, it should be understood that in other embodiments, some operations may be omitted or additional operations may be included.
[0053] The example method 500 enables the device provisioning system to create and / or update a device type schema list based on event data received from an IoT device. For example, as described above, in some embodiments, the device type schema list may be pre-populated with associations between device types and one or more combinations of event types. If a combination or pattern of event types received from an IoT device does not match a stored combination of event types in the device type schema list, the method 500 enables the device type to be identified and the device type schema list to be updated. Additionally, if the device type schema list is not pre-populated, the method 500 enables the device type schema list to be created.
[0054] At 502, a provisioning request is received at the device provisioning system from a communication module of an IoT device to be provisioned along with an event schema, as described above. The communication module allows the IoT device to communicate with the device provisioning system. For the initial event schema received from the device and the provisioning request, information on where to direct the event schema can be hardwired or preloaded into either the device manufacturer, the IoT platform or the device provisioning system, as described above. If hardwired to the device manufacturer's site, the site redirects the request to the IoT platform or the device provisioning system. At 504, the device provisioning system compares the event data from the event schema to determine whether there is a match in the device type schema list. In other words, it is determined whether the device type associated with the event data has been previously identified.
[0055] If it is determined at 506 that the device type of the received event data (e.g., a combination of event types as described above) has been previously identified, then the IoT device is classified at 508 into the corresponding device type and provisioned with given credentials that are returned to the IoT device, as described above. If it is determined at 506 that the device type of the received event data has not been previously identified, then the device provisioning system directs the event schema and credentials received from the IoT device to the original equipment manufacturer (OEM) of the IoT device at 510 to determine the device type. The information for directing the event to the OEM may be a priori hardwired or preloaded. In the example of a communication module manufactured by a third party and embedded in an IoT device, the OEM referred to is the OEM of the IoT device as opposed to the manufacturer of the communication module. The OEM may check the hardcoded credentials, assign a device type, and send it back to the device provisioning system. For example, the hardcoded credentials may include the serial number of the device provided by the OEM. In such a situation, the OEM may provide the device type based on the serial number communicated by the device provisioning system. At 512, the device provisioning system updates the device type schema list based on the response from the OEM. The DPS now has a correlation between the event types received from the IoT devices and the device types for future processing.
[0056] The method 500 then proceeds to 508 where the IoT device is classified and provisioned based on the identified device type as described above. The method 500 then returns to 502 to receive subsequent event data from the same or other IoT devices. Thus, the IoT device is provisioned only the first time the event schema and request are sent. Thereafter, the IoT platform identifies the IoT device when it sends a request with verified credentials provided by the IoT platform in the provisioning process. The DPS also ensures that the initial event is persisted and, if necessary, forwarded to the IoT platform after checking with the OEM for the device type. If more than one IoT device sends a similar event type, the device type will be the same for the different IoT devices, for which the device ID will be returned uniquely. Thus, the updated device type schema list can be used to identify subsequent IoT devices of the same device type but not necessarily of the same manufacturer.
[0057] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to a cloud computing environment. Rather, embodiments of the invention may be implemented in conjunction with any other type of computing environment now known or later developed.
[0058] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0059] The characteristics are as follows:
[0060] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring human interaction with the provider of the service.
[0061] Broad Network Access: Functionality is available over the network and is accessed through standard mechanisms facilitating use by heterogeneous thin- or thick-client platforms (eg, cell phones, laptops, and PDAs).
[0062] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated depending on demand. Although consumers generally have no control or knowledge of the exact location of the resources provided, there is an implication of location independence in that they may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).
[0063] Rapid Elasticity: Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear unlimited, and any amount can be purchased at any time.
[0064] Metered Services: Cloud systems automatically control and optimize resource usage by utilizing metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled and reported, providing transparency to both providers and consumers of the services utilized.
[0065] The service model is as follows:
[0066] Software as a Service (SaaS): The functionality offered to the consumer is the use of a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). With the possible exception of limited user-specific application configuration settings, the consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application functions.
[0067] Platform as a Service (PaaS): The functionality offered to the consumer is the deployment of applications created or acquired by the consumer, written with programming languages and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and potentially the application host environment configuration.
[0068] Infrastructure as a Service (IaaS): The functionality offered to the consumer is to provision processing, storage, network and other basic computing resources. The consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, deployed applications, and in some cases has limited control over network components (e.g., host firewalls).
[0069] The deployment models are as follows:
[0070] Private Cloud: The cloud infrastructure is operated solely for an organization. It may be managed by that organization or a third party and may reside on-premise or off-premise.
[0071] Community Cloud: Cloud infrastructure is shared by several organizations to support a particular community of shared concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by these organizations or by a third party and may reside on-premise or off-premise.
[0072] Public Cloud: The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization that sells cloud services.
[0073] Hybrid Cloud: The cloud infrastructure is a composite of two or more clouds (private, community or public) that remain unique entities but are bound together by standard or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing across clouds).
[0074] Cloud computing environments are service-oriented and emphasize statelessness, low coupling, modularity and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0075] Referring now to FIG. 6, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers may communicate, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described above (not shown). This allows the cloud computing environment 50 to provide infrastructure, platform, or software, or combinations thereof, as a service without the cloud consumer having to maintain resources on the local computing device. It is understood that the types of computing devices 54A-N shown in FIG. 6 are intended to be exemplary only, and that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device (e.g., using a web browser) over any type of network or network-addressable connection, or combinations thereof.
[0076]
[0046] Referring now to Figure 7, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 6) is shown. It should be understood up front that the components, layers and functions shown in Figure 7 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0077] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0078] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0079] In one example, management layer 80 may provide the functions described below: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and charging or billing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks as well as protection of data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and achievement 85 provides advance preparation and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0080] The workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and device provisioning processing 96.
[0081] The present invention may be a system, method or computer program product, or combination thereof, at any possible level of technical detail integration. The computer program product may include one (or more) computer readable storage medium having computer readable program instructions for causing a processor to perform aspects of the present invention.
[0082] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves with instructions recorded on them, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium, itself, should not be interpreted as a transitory signal, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over an electrical wire.
[0083] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to a respective computing / processing device or to a network, external computer or external storage device, for example, via the Internet, a local area network, a wide area network or a wireless network or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers or edge servers or a combination thereof. A network adapter card or network interface in each computing / processing device receives computer-readable program instructions from the network and transfers the computer-readable program instructions for storage on a computer-readable storage medium in the respective computing / processing device.
[0084] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk® or C++, procedural programming languages such as the “C” programming language, or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), and a connection to an external computer may be made (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.
[0085] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products, or combinations thereof, according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0086] These computer readable program instructions may be provided to a computer processor or other programmable data processing apparatus to produce a machine such that the instructions, executed via the computer processor or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts or block diagrams or combinations thereof. These computer readable program instructions may also be stored on a computer readable storage medium capable of instructing a computer, programmable data processing apparatus or other device or combinations thereof to function in a particular manner such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts or block diagrams or combinations thereof.
[0087] The computer readable program instructions may also be loaded into a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus or other device to generate a computer-implemented process, such that the instructions executed on the computer, other programmable apparatus or other device implement the functions / operations specified in one or more blocks of the flowcharts or block diagrams or a combination thereof.
[0088] The flowcharts and block diagrams in the figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions shown in the blocks may be performed out of the order shown in the figures. For example, two blocks shown in succession may actually be realized as one step, or may be executed simultaneously, substantially simultaneously, partially or fully in a time-overlapping manner, or the blocks may be executed in reverse order depending on the functions involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations, or executes a combination of dedicated hardware instructions and computer instructions.
[0089] Although specific embodiments have been illustrated and described herein, it will be understood by those skilled in the art that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. It is therefore manifestly intended that this invention be limited only by the claims and the equivalents thereof.
Claims
1. 1. A computer-implemented method for provisioning an Internet of Things (IoT) device, comprising: receiving an event schema for the IoT device at a device provisioning system, the event schema including one or more event types to be collected by the IoT device; comparing the one or more event types from the event schema to a plurality of combinations of one or more event types in a device type schema list to identify a match between the one or more event types in the event schema from the IoT device and one of a plurality of combinations of the one or more event types in the device type schema list; In response to identifying a match, assigning a device type to the IoT device based on a correlation in the device type schema list between a device type and the matched combination of one or more event types; provisioning the IoT device with validated credentials based on the assigned device type; A computer-implemented method comprising:
2. The step of provisioning the IoT device includes: sending the assigned device type to an IoT platform; receiving the validated authentication information of the IoT device from the IoT platform; having 10. The computer-implemented method of claim 1.
3. The computer-implemented method of claim 1 or 2, wherein receiving the event schema comprises receiving the event schema together with a provisioning request and authentication information hard-coded in the IoT device.
4. 4. The computer-implemented method of claim 1, wherein receiving the event schema of the IoT device comprises receiving the event schema from an IoT platform that forwards the event schema from the IoT device to the device provisioning system.
5. in response to not identifying a match, forwarding authentication information received from the IoT device to a device manufacturer of the IoT device; receiving a device type of the IoT device from the device manufacturer; updating the device type schema list based on the event schema of the IoT device and the device type received from the device manufacturer; The computer-implemented method of claim 1 , further comprising:
6. logging receipt of the event schema of the IoT device in a provisioning log; logging in the provisioning log the schema statements of the identified matches; logging the provisioning of the IoT device without logging the validated credentials. The computer-implemented method of claim 1 , further comprising:
7. The computer-implemented method of claim 1 , further comprising validating credentials of the IoT device in the device provisioning system.
8. a network interface coupled to a communications network; a memory configured to store a device type schema list, the device type schema list correlating each of a plurality of device types with each of a plurality of combinations of one or more event types; a processor communicatively coupled to the memory and to the network interface, receiving an event schema of an IoT device via a network interface, the event schema including one or more event types to be collected by the IoT device; comparing the one or more event types from the event schema with a plurality of combinations of the one or more event types in the device type schema list to identify a match between the one or more event types in the event schema from the IoT device and one of a plurality of combinations of the one or more event types in the device type schema list; In response to identifying a match, assigning a device type to the IoT device based on a correlation in the device type schema list between a device type and the matched combination of one or more event types. a processor configured to execute A device provisioning system comprising:
9. The device provisioning system of claim 8 , wherein the processor is configured to validate credentials of the IoT device.
10. The processor, sending the assigned device type to an IoT platform for use in validating the credentials of the IoT device; receiving validated authentication information for the IoT device from the IoT platform; configured to execute 10. A device provisioning system according to claim 8 or 9.
11. 11. The device provisioning system of claim 8, wherein the received event schema is received together with a provisioning request and authentication information hard-coded within the IoT device.
12. 12. The device provisioning system of claim 8, wherein the event schema of the IoT device is from an IoT platform that forwards the event schema from the IoT device to the network interface of the device provisioning system.
13. The processor further comprises: in response to not identifying a match, forwarding authentication information received from the IoT device to a device manufacturer of the IoT device; receiving a device type of the IoT device from the device manufacturer; updating the device type schema list based on the event schema of the IoT device and the device type received from the device manufacturer; configured to execute A device provisioning system according to any one of claims 8 to 12.
14. The processor further comprises: logging receipt of the event schema of the IoT device in a provisioning log stored in the memory; logging in the provisioning log the schema statements of the identified matches; Logging the provisioning of the IoT device without logging validated credentials. configured to execute A device provisioning system according to any one of claims 8 to 13.
15. The processor: receiving an event schema for an IoT device, the event schema including one or more event types to be collected by the IoT device; comparing the one or more event types from the event schema to a plurality of combinations of one or more event types in a device type schema list to identify a match between the one or more event types in the event schema from the IoT device and one of a plurality of combinations of the one or more event types in the device type schema list; In response to identifying a match, assigning a device type to the IoT device based on a correlation in the device type schema list between a device type and the matched combination of one or more event types. A computer program that executes the following:
16. The computer program product of claim 15 , further comprising causing the processor to perform a step of validating credentials of the IoT device.
17. The processor, sending the assigned device type to an IoT platform for use in validating credentials of the IoT device; receiving validated credentials of the IoT device from the IoT platform; 17. The computer program product according to claim 15 or 16, further comprising:
18. 18. The computer program product of claim 15, wherein the received event schema is received together with a provisioning request and authentication information hard-coded in the IoT device.
19. The processor, in response to not identifying a match, forwarding authentication information received from the IoT device to a device manufacturer of the IoT device; receiving a device type of the IoT device from the device manufacturer; updating the device type schema list based on the event schema of the IoT device and the device type received from the device manufacturer; 19. A computer program product according to any one of claims 15 to 18, further comprising the steps of:
20. The processor, logging receipt of the event schema of the IoT device in a provisioning log stored in memory; logging in the provisioning log the schema statements of the identified matches; logging provisioning of the IoT device without logging validated credentials; 20. The computer program product of claim 15, further comprising:
Citation Information
Patent Citations
Device provisioning system
JP2019004391A
System, method and program for provisioning, and network device
JP2019148991A
Automated provisioning for IOT devices
JP2019535086A
IOT provisioning service
KR1020190065409A
Provisioning connectivity service data in a telecommunications network
US20140128050A1