Hacker News new | ask | show | jobs
by extrapickles 3729 days ago
Nice idea.

How would your service handle poor internet connectivity of the IOT devices? I've done network connected devices for companies in the past, and the trickiest technical part was always how the device/service behaved in the presence of network failure (was harder than making the devices pass IP69K testing).

1 comments

As of now we here is our plan: 1. Devices can either be always connected ( using websockets / ajax / any other technology) or 2. Devices can define what is the maximum time before which a device is deemed as disconnected ( could be secs / hours / days). If they don't send data in a certain period of time or if they don't respond in a certain period of time. 2.a. For devices following this - the time will depend on internal memory and how much they can store and process, as whenever they have connection, they can send time stamped data in bulk. We need a way to determine how to acknowledge since we may lose connection after getting the data but before sending ack. At that point, we may just discard the data ( but there might be a better solution ) and device can send data ( not very effective). 2.b. The developers can determine the timeout in sending commands and also do they want to queue up all pending commands or just send the latest one.For instance, if I want to turn on something, and I send 100 'on' commands; do we have to send 100 of them or just the last one and for how long is the command effective before it is determined a timeout and we can flag a connection lost. The developer will be able to define all of that and for starters with simple application, they can just leave all that to default as most of the times it will just work.

How the h/w implements it, is up to the hardware developers ( we plan on developing some ourselves using different technologies and hardware ( raspberry PI, Intel Edison, some using sim cards, etc and using different protocols) and others can leverage off of that). The server side: receiving data, sending data, analyzing data, displaying data and detecting disconnection is what we will handle and the phone app / website for all of that.