I don't understand the idiotic obsession of running *everything* through "the cloud".
To a certain extent blame NAT - though I think it would have happened anyway.
I'm well aware of the difficulty NAT causes for inbound connection, there's also the issue that most customer sites won't have DNS records and will be using non-static IP. In other words, it's hard to find them and if you do, they are likely to move somewhere else.
But these are no reason to run "everything" through the cloud. There is no technical reason not to run the "brains" of the system locally, and use a connection to an external server just for remote access.
There is in fact several very good technical reasons NOT to:
The system would keep working!
At one time I did a wind turbine controller supporting remote logging and control via a central server, and it did not require the customer to have anything special for an internet connection, nor did it require him to configure anything in his router. But ... guess what ... when the internet went down, it continued to operate. The turbine didn't shut down, not did it spin out of control. It continued to operate just fine. The local control panel still worked, the big red E-STOP button remained operational.
Better response time. Operations between device and local controller are essentially instant. When your switch has to inform a cloud based server that it should turn on your light... not so much!
Much less processing and storage is required on the server. This translates to being able to serve more users at less expense.
Much less internet traffic. Only remote access requests need be handled, again ability to serve more users at less expense.
There are however much more compelling business reasons to make it fully cloud based.
If you use the server only to provide remote access, then you can only track what the user does to his home remotely. If you put the brains of the system in the house, and only do communication for out-of-the-house events, then you can only track out-of-the-house events. But... require all of the sensors and switches feed into your server, and you can track *everything* that goes on in the house. The opportunity for data mining is exponentially greater, and it would seem more than makes up for the added cost of providing the services.
You might even be able to get away with charging him a few $/month for the "service" (although most people will balk at this long before they have any concern about their personal data being mined).
You have much more control over how well it works, can "retire" features in older units, make them operate slower and less reliably, or right-out disable them ... Planned obsolescence is part of every product model, but forced obsolescence works even better! (Not being cloud central doesn't protect you from this as "mandatory" updates can accomplish the same thing, but it's much less obvious if it happens slowly over time rather than right after an update goes out).
Dave