19

If I wanted to use my phone to control a simple Wi-Fi connected device that just turns the light on or off, or a simple temperature gauge, why don't I just communicate directly with the device instead of going through a cloud? No data persistence or heavy processing or any other fancy stuff to deal with.

Is there anything stopping me from designing such a simple IoT product and just start mass producing it and selling it? Seems cheaper to cut out the middle man and not have to deal with a cloud's cost/message fees.

6
  • 7
    Your premise seems flawed as you're implying that all current solutions depend on cloud services. In a very broad sense of IoT (internetworked things) there are applications that do not do so, e.g. in a smart home setting it is possible to handle your sensors and their data on you local intranet only. Another example, the Philips Hue system (some consider that IoT) can operate w/o internet access thus w/o cloud services. The real question needs to be what is the actual benefit (if there is any) of a cloud enabled infrastructure to your actual product?
    – Ghanima
    Commented Feb 9, 2017 at 10:42
  • ok that puts things into perspective. Commented Feb 9, 2017 at 11:23
  • @immibis as long as you stay within your own LAN (i.e. within the reach of your WiFi), NAT isn’t an issue at all. Once the Internet comes into play, NAT issues can be overcome by setting up a VPN. Even if it weren’t for NAT, you probably wouldn’t want to expose your entire home network to the Internet.
    – user149408
    Commented Feb 10, 2017 at 10:58
  • Do note that there's plenty of online platforms (pastebin, mailinator, ...) that can be creatively used to bypass the need for a dedicated message distribution server. Since both endpoints of the conversation - the phone and the device - will live on their own addresses not shared but with a few other devices at most, you shouldn't expect to run into bandwidth/volume limitations of such services. For an IoT switch or low-bandwidth sensor, I'd just abuse pastebin or mailinator and call it a day. I won't openly admit to doing any of that though of course :) Or you can use plain old email. Commented Feb 10, 2017 at 16:06
  • "Seems cheaper to cut out the middle man and not have to deal with a cloud's cost/message fees." So, we're talking about saving a few thousandths of a cent?
    – NPSF3000
    Commented Feb 10, 2017 at 16:58

4 Answers 4

10

While you can design an IoT gadget to work via direct connection with the user's phone, a device that only works in that manner may be too limiting for many users:

  • If the user is not at home, then they are unlikely to be able to interact with the device directly, as allowing inbound connection attempts to the home network is generally unacceptable from a security standpoint, and most mobile carriers also block inbound connection attempts to the phone. Instead, out-of-home requests need to be proxied through a server reached by outbound connections from both the phone and the IoT device.

  • If the user is at home, but their phone is presently on a mobile network rather than their home network, then the above issue still applies. Asking the user to switch their phone from mobile to wifi may or may not be acceptable to different users and depends to some degree on their phone's wifi battery usage; also some phones choose between both dynamically in a way that may be problematic if you require the wifi network.

  • Connection between the phone and device by some other method like BTLE can be an advantage, but is range limited so may not work in all parts of the home or surrounding property, and obviously will not work when away from home.

So while you can build a device that doesn't require the support of out-of-home server infrastructure, it's probably better to build a device that can make effect use of a relay server, if reachable or allowed by user preference settings.

13

Yes, there are plenty of applications in the market already which do not rely on cloud services. The heirarchy of complexity which a user may choose to install with a specific product goes something like this:

  1. Device with dedicated remote control
  2. Device with phone app and in-house link node
  3. Node linked to cloud for user remote access by phone (tunneling and DNS resolution)
  4. Cloud provisioned service and database

Any one provider may address part of the chain. IFTTT for example only provides the cloud service and phone app - the services are all third-party.

Google's NEST thermostat should work fine stand-alone (even if it is an expensive implementation in that mode).

Security cameras fit various combinations of these models, depending if they rely on user subscription or one-off sale costs.

From a commercial point of view, there are two key points to dependance on cloud infrastructure. First is suitability for evaluation/partial installation (whilst keeping initial costs down), the 2nd is the ability to maintain limited service in the absence of backhaul (power-cut, etc).

0
8

If you only want control inside the home sure it is possible.

The problem is if you want to offer control from outside the home things get difficult. Neither the client or the server are likely to have a static IP, there are likely to be firewalls and/or NATs in the way.

It is possible for the user to set up port forwarding/exceptions in their router/firewall and set up some kind of dynamic DNS to track their dynamic IP and point their client at the dynamic DNS entry but it takes a technical user to do it and it creates security issues.

Having a server in a known location on the public Internet is the easiest way to make sure your things can communicate with each other regardless of dynamic IPs, NATS, egress only firewalls etc. There are still some security issues but they are reduced as you can enforce security policies on the server which you can more easily monitor and update.

Ipv6 loses the NAT but dynamic IPs and egress only firewalls are still likely to be common.

3
  • Another quick question, even if the cloud is public, the cloud itself must still send messages to the iot device as well. Wouldn't the cloud run into the same problems that you listed when trying to communicate with the device? Commented Feb 14, 2017 at 8:58
  • As long as the device opens the connection to the server and keeps it open by sending periodic keepalive messages messages can pass in both directions down that connection. Commented Feb 14, 2017 at 12:15
  • Cloud-connected IoT devices must still communicate with the cloud through your home network. This is accomplished by "punching a hole" for that traffic in your router's setup. Unlike your computers and phones, how secure that is is entirely up to the cloud vendor. It's generally safer to isolate all IoT connections to their own router that is then plugged into your main "gateway" router. At least then, malicious software infecting the IoT device can't see your computers (probably). Commented Feb 4, 2018 at 8:13
7

Typically, IoT is expected to offer advanced connectivity of devices, systems, and services that goes beyond machine-to-machine (M2M) communications

https://en.wikipedia.org/wiki/Internet_of_things

IoT devices go beyond inter-device communication. Take for example a TV remote, it is an embedded device which communicates with the TV through an infrared signal to instruct the TV to do something like change channels. Would you consider this an IoT device?

IoT devices 'go beyond' by:

  • Allowing more automation in the home.
  • Collecting, storing and aggregating large amounts of data into information that is useful to the user and easy to understand.
  • Allowing users to access information and control devices from inside the home, and even from the outside via the internet.

These features could be fully implemented in your product and without cloud services, it's more a case of deciding if the features you want your IoT product to have would benefit from cloud infrastructure. The benefits come in different areas:


Data

Data can be kept on the cloud instead of including a storage media on device. This has many benefits:

  • Cost effective - Pay only for the storage needed, on device storage will add a fixed cost per device and 100% utilisation is unlikely.
  • Flexible - Storage can be increased when needed. On device storage is fixed and will limit the amount of data a device can hold. You could create a device that lets the user provide a storage media like an SD card, this however adds another decision the customer has to make about what card to purchase for their needs and this complexity may deter some customers from buying the product.
  • Redundancy - Cloud storage is typically sold with redundancy measures included, meaning that data is backed up and is very unlikely to be lost.
  • Centralised - If your IoT device is one which customers may buy multiple of, data can be brought together on the cloud to provide a more uniform experience.
  • Access to data - If the data is retained on a cloud service, you as the product provider can access that data. This is useful to see how consumers use your product and can shape improvements in your products.

Software Services

It's likely that your IoT devices will have an aspect of interaction with the user through software. By utilising the cloud your products software could benefit from:

  • Automatic updates - If you are continually developing new features for your product, using the cloud can ease the distribution of firmware updates. Devices could query the cloud for updates automatically, taking this task away from the user. This could be especially useful if you discover a security issue with your product, being able to push an patch to all existing devices will avoid the issue of some customers not updating their devices manually. Preventing your devices from being hacked and used for malicious purposes will prevent you from receiving bad publicity.
  • Web technology - Web applications are built on the idea that users may access the application from a different range of devices, all with differing operating systems and screen resolutions. As web apps are accessed through internet browsers the user doesn't need to install software on their own devices, users can simply go to a link and login to access their IoT interface. Customers can receive new features in their software interface without having to go through the task to update the software on each of their devices. Hosting this interface online also reduces the hardware requirements of the device and thus unit cost.
  • Features - Some cloud services could be implemented in your product to enhance its features, for example Amazon Lex is available as a cloud service which can be used to enable a user to use voice commands to interact with your device.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.