The unsexy IoT
deepstream.io
deepstream.io
Some of the most amusing posts:
- Nest not being able to function while there is service outage (e.g. can't change temperature if server is down) https://twitter.com/Jenthulhu/status/688918036791840768
- Tried to install an Spotify update for the car, ended disabling brakes. https://twitter.com/internetofshit/status/687693238103224320
- Extortion by your own appliances (in-app-purchases + IoT, parody?): https://twitter.com/internetofshit/status/633278514284920833...
- Samsumg smart fridge exposes your Google credentials: https://twitter.com/internetofshit/status/636102318585475072...
- Can't change thermostat while updating: https://twitter.com/internetofshit/status/684831858463387648...
- Mall smart screens get blue screen of death: https://twitter.com/internetofshit/status/652403071859970048
The sad thing is, these days you only seem to be able to make money by holding your customers hostage in your online systems (cloud) or ecosystems. I miss the days where developers could make money selling just software.
This was actually a software bug shipped in an automatic update. The bug caused the Nest battery to drain faster than the HVAC power line could charge it. In my experience, Nest works fine when not connected to the Internet.
The entire hype wave of IoT has more or less passed right over us. Nobody has heard our name, save for the gas industry itself. But that industry is about to (not literally) explode. Helium is an extremely lucrative industry and is growing by the minute, and there's really nobody in this space but us. Remote monitoring - IoT - has never been more critical to helium than it has now. Without going into too much detail, knowing the pressure levels of your tank 24/7 can save you a lot of money.
So where do I come in? Our platform is written in C#, with the front-end done in Silverlight. I'm the dude getting us off it with some really hip JS work in React. Before that I wrote a lot of microservices to handle various aspects of our system. We were in a pretty bad state when I got there so I spent a lot of time improving our development team. We didn't have PRs for a long time. For a first job out of college, it's not bad. I get to do a lot of cool work, and on my current project I've made every technical decision. But sometimes I wish that we could attract better talent. Oh well, I'm (hopefully) leaving soon.
Anything that you can share about it?
The language geek in me loves the use of C#, Java and similar safe stacks in the IoT domain. :)
I wasn't here when the C# decision was made, but it's worked out really well for us so far, Silverlight notwithstanding. Microservices work out really well for us too because there's a lot of code written for specific RTUs which will not (and should not) be shared, and having them explicitly separated keeps everything tidy. Microservices communicate via a centralized publisher using WCF, which uses MSMQ as the underlying transport method. Our #1 priority is to never loose data so these technologies are a pretty safe bet. Like I mentioned before, C# has good support for low-level stuff, but we don't do as much low-level as you think. Our greatest challenge is handling several distinct protocols with as much as the same code path as possible, and C# has really great generics support which makes our lives easy. We don't require the performance a C++ platform would bring.
To elaborate a bit more, our basic control flow goes something like:
Poll unit -> get data -> push data -> translate data -> assign data to business objects -> operate on data -> present data
Each step usually involves a save to the database of critical info at that stage.
I am currently aware of stuff using .NET CF, the old WinCE/Pocket PC stack or just doing straight IO control from the PC side to "dumb" firmware that just follows the given commands.
And it's hard to remote because we have a poorly architected and somehow buggy SVN repo. git-svn can't load SVN history from it, so I don't get to use that. Still using VS2010 for the C# to target Silverlight 4, using my own free .edu ReSharper license, just factored out an entire Service from behind a C# Web Api by exposing solution-wide data classes.
Best bit? I don't have any concrete spec to build to. All I have is that it should look 'a bit like this'.
RIP me.
IoT, like BigData before it, is suffering from an overload of people building technology for the sake of technology. I have done a lot of hands-on work in the Remote Service side of IoT, implementing solutions for GE, the TSA, etc.
At no point did I ever encounter a customer who longingly cried out "Woe is me, is there a horizontal technology anywhere that kinda solves a piece of my problem?!".
I fear that as we follow down the hype curve in IoT over the next 24 months, the roadsides will be littered with interesting and functional platforms that failed to solve a business problem.
Companies like the one described above will continue to make money and solve problems without any of the press that comes along with each new IoT platform.
And this is the gap that I don't want to be bridged. One of the reasons I love my rpi's, is that I end up with ultimate control over my device and it's data. At the end of the day, I decide what leaves my home, not $smart_company. If I decide to submit that data to them, sure, they can run with it, but if they require me to send it? I'm not even going to consider their product.
The data-crunching would also have to be done on my server, or I'm not interested. Yes, I understand that my home-server is probably not powerful enough to do the processing required, but I'll live without whatever feature requires it.
Thanks
That said, it's definitely not useful everywhere, e.g. if you use TLS and the application is only for stuff at home, you're probably fine.
If it's a choice between $smart_company or nobody though, I'll take nobody. Thanks to firewalls and blocking outbound connections from IoT devices, it's often not that black and white.
Industrial IoT is where the value is - and it's been around for years. Airlines and manufacturers like Boeing and Airbus have streams of data from planes all over the world that allow them to pick trends, predict failures, and take preemptive action. Agriculture use IoT to take real-time measurements across their entire farms without spending hours driving, and get their robotic tractors to go respond with water/fertilizer/pest control. Consumer IoT isn't in a position to get these 'aggregate' benefits.
The parent post mentioned tracking of airplanes. I wouldn't mind if a company monitored my home heating system or refrigerator and notified me if they were about to fail, as these failures can be expensive and a huge hassle if not anticipated. Also consumers already benefit from alarm systems and cameras they can monitor remotely. Heck, alarm systems have been centrally monitored for decades, just over proprietary networks rather than the Internet.
I'd be worried that the pre-emptive maintenance would be far more expensive. You can already get heating system insurance, but I wouldn't trust the IoT system to not over-order maintenance in order to maintain the company's profits.
I saw an advert for HP's printer ink subscription service: http://www8.hp.com/uk/en/ads/instant-ink/overview.html and recoiled in horror. It's already the most expensive liquid most people will buy, and you want to let the printer order it for you?
We're back to the door in Ubik that asked the user for a nickel before it would open every time.
Beats running out of ink at 10pm when I need a printout by tomorrow morning.
The "unsexy" IoT can be really unsexy. One customer wanted to get their data out of SCADA (www.scada.com), and as it turns out, the only way to get telemetry data out of their SCADA boxes was through emails as CSV attachments.
We ended up working with a third party dev shop to build a simple mail server that parses the incoming CSVs and send them to our backend so that the vendor could analyze the data coming from SCADA (which in turn came from heavy industry devices) using SQL, Salesforce, etc.
I never thought that MIME attachments would be a critical part in a "big data", "IoT" analytics pipeline...
SMTP has its own advantages over HTTP in M2M/IoT space, both in terms of simplicity and robustness. Sure, it's not as tightly coupled or feature rich as a web API, but that might not be such a bad thing.
Herein lies the problem. IoT should not provide that data to the third parties.
Also this:
> We have become more comfortable with sharing personal data, e.g. when it comes to incorporating wearables or fitness trackers into our daily routine.
That those are the only reasonable examples one could come with only shows that the "sexy" IoT is just a bunch of bullshit, overpriced toys that are only meant to monetize people's data even more. This trend should be nipped in the bud.
RE "unsexy" IoT, the article says:
> It is now almost completely based on open protocols, rather than the proprietary ones of the past that were used to tie customers to a specific vendor.
I didn't know that. Somehow I was led to believe all those protocols are closed and licensed, requiring you to join some "consortium" or "alliance", paying a $shitton entry/licensing fee. I'll look into it. If there are established open, working standards out there, then it's what I want to use in my DIY IoT / home automation solutions.
EDIT:
> (...) into your app.
That's another problem. Our obsession with apps. This is something that really needs to be culled too. One of the biggest factor that makes the "sexy IoT" barely usable is that every device has its own app. Which means, every company gets to develop a shit UI (each crappy in different way), and the time it takes to switch between apps is several seconds. This should all be standardized - I should have just one app for all my IoT, and it definitely must not be made by one of the vendors (for the same reason nobody uses software provided by e.g. printer vendors).
To an extent, maybe. There's tremendous value in this space for all kinds of things. The canonical example from Bill Joy's time is a fridge that predicts your eating habits and keeps you stocked with the items you need for dinner via automated delivery services.
> overpriced toys that are only meant to monetize people's data even more. This trend should be nipped in the bud.
"The internet is just a fad."
> I was led to believe all those protocols are closed and licensed, requiring you to join some "consortium" or "alliance", paying a $shitton entry/licensing fee.
There are plenty. This is one of the ones I'm familiar with: http://github.com/spark
> That's another problem. Our obsession with apps.
I think that even apps will be marginalized over time. People generally don't want to interact directly with software/technology at all. They want it to "just work" ala Google search. The best "IoT" devices will seamlessly augment existing interfaces and technologies instead of inventing new ones.
Yes, but in this canonical example the prediction could, and IMO should, be entirely done client-side; only actual food orders would be done on-line.
> There are plenty. This is one of the ones I'm familiar with: http://github.com/spark*
Thanks! Though this still looks like the "sexy IoT" generation protocol; I was wondering about the article's assertion that "unsexy IoT" is now based on open protocols.
Also, it might be "unsexy" but buildings consume 70-ish percent of US electricity, a lot of which is controlled by BACnet and friends... and it turns out there's a ton of low-hanging fruit that's only a (carefully crafted, ASN.1-ish) UDP packet away..
... which, while necessary for the IoT dream, is a very very very dangerous thing.
Another downside of an upside is the idea of over-the-net updatable firmware for all devices in your house. The unfortunate flipside of easily-updated-by-the-vendor software is that the initial software will not be fully tested--"we can fix any 'little' bugs later"--and future releases will also not be adequately tested. Not to mention the glaring security hole when your entire house is run by devices and sensors that can be updated remotely.
It's going to get messy...
That's a really scary idea from the security point of view and something that bothers me about the IoT craze. Every consumer device visible on the Internet should quickly and reliably self-update its software if a security issue is found and remote updates are still a bit tricky to implement in embedded devices (little storage, diverse hardware).
It's often painfully hard to explain that the kickstarter-sexy projects are only the tip of the iceberg.
A BLE "smart" waffle machine would surely be fun, and good material for @internetofshit. But while we're looking at useless/gadgets stuff, there are a LOT of useful (or at least midly interesting) things happening in the IoT.
Unsexy doesn't mean old. And IoT doesn't mean "smart device". A dumb sensor sending raw data can bring in a lot of valuable data.
Metering is still a thing, and i see new projects every week in various fields : agriculture, public equipments, healthcare, safety, ... Lot of independent things that don't need to be used by a user, and that you don't especially know they are "connected"