When creating a controller that will use devices connected to the internet, you must solve the problem of finding the devices you want to use. You can choose to preconfigure the identities of the devices in a production environment, or to manually configure the identities after installation. These methods require additional effort on the part of the manufacturer, operator, or installer. It would be nice if the things could discover themselves somehow.
In local area networks, discovery is easier. You can use a multi-cast based protocol, such as the Simple Service Discovery Protocol (SSDP), part of Universal Plug and Play (UPnP), to let your devices multi-cast their existence and capabilities in the network. Controllers can listen to these messages, and connect to suitable devices they find. But on the internet, such a method is not feasible for many reasons, and it is difficult to secure.