BACKGROUND

The “Internet of Things” (hereinafter referred to as “IoT”) includes one or more embedded devices communicating within the Internet infrastructure. These embedded devices (also referred to herein as “IoT devices”) may communicate together to perform various functions such as collecting sensor data and modifying configurations of a device such as a thermostat or lightbulb. Accordingly, IoT results in new, wide-ranging types of applications in which virtually any type of physical object can be configured to provide information about itself or its surroundings and/or may be controlled remotely via client devices over the Internet. For example, the IoT devices may include physical objects such as lightbulbs, thermostats, and fans for a facility. To maintain portability and scalability, the IoT devices are typically designed to have limited functionalities and to connect to other devices using short range network channels such as Bluetooth Low Energy and/or WiFi. In many cases, the IoT devices are unable to connect directly to the Internet and need to be connected to one or more hub devices that can connect to the Internet on behalf of the IoT devices and/or manage operations for the IoT devices.

Many types of errors and malfunctions arise during the deployment and operation of IoT devices. In various situations, these errors and malfunctions may include not being able to connect to the Internet, not being able to receive or install a firmware and/or software update, not having the appropriate permissions or credentials to access a computing resource or service, having a connectivity problem with a router or a hub device, and many other types of errors. In many situations, the errors experienced by IoT devices involve individual correction after a cumbersome troubleshooting process that requires extensive human involvement, and that in some cases requires human-to-human communication between a first person responsible for, and with access to, a deployed IoT device, and a second person with domain specific knowledge regarding technical aspects of the deployed IoT device and its network environment. This approach is difficult and inefficient, results in undue IoT device downtime, and does not scale to large collections of connected IoT devices.

