IoT platforms are such a thing that unites the actual “things” and the “Internet”. In essence, this is a key development tool for IoT applications and services, combining physical objects and the Network.
However, many vendors who are trying to “keep their nose in the wind,” offer “IoT platforms”, which are fundamentally different from each other. And in a number of cases, they are not a “platform” in the broad sense of the word, but obviously they have reason to consider themselves as such – there is a “thing”, there is a certain resource on the Internet that receives/transmits data from/to the “thing”. And doing something there (trying to do) with this data. Consequently, it is quite possible for itself to claim the high title of the house of the exemplary life of the platform. Moreover, a clear and specific definition of the IoT platform simply does not exist.
And here are four types of platforms, which are called “IoT platforms”:
1. Connectivity/M2M platforms. In their work, platforms focus on communicating smart objects through telecommunications networks, but rarely on processing signals from sensors (an example of such a platform: Sierra Wireless with the AirVantage product)
2. IaaS backends. Infrastructure-as-service servers providing hosting space and computing power for applications and services were previously optimized for desktops and mobile applications, but now IoT is in focus (for example, IBM Bluemix but not IBM IoT Foundation).
3. Hardware-specific software platforms. Some companies selling smart gadgets create their own software backend and talk about it as an IoT platform. But since this platform is closed to everyone else, the legitimacy of such a name is questionable (for example, Google Nest).
4. Consumer / Enterprise software extensions. Existing corporate software packages and operating systems such as MS Windows 10 are becoming increasingly open for integrating IoT devices. Currently, this area is still underdeveloped to be called the IoT platform, but its future is very promising.
In general, everything is confused and there is no clarity in the terminology. What is also aggravated by the “fashionable” theme and the desire of IoT application development platform to combine marketer’s fantasies, such as IBM (IoT Foundation application enablement platform + Bluemix IaaS backend).
We have identified eight components of a full-fledged IoT platform:
1. Communication and normalization (Connectivity & normalization): mixing different protocols and data formats in one “software” interface, ensuring accurate data and interaction with all devices.
2. Device Management (Device management): to ensure proper operation of connected “Internet of Things”, their configuration, smooth operation, “knurled” patches and updates. Moreover, not only the software itself “things”, but also applications running on the device or border gateways.
3. Database: everything is quite clear and transparent here – scalable data storage from “things”. Requirements for these data, an attempt to restore order in the processing and transfer of data from, for example, different “platforms” or even to information systems of “third parties”.
4. Processing and management actions (Processing & action management): data derived from the “things” will eventually affect the events in reality. Therefore, the “platform” should be able to build processes, “event triggers” and other “smart actions” based on specific sensor data.
5. Analytics: data from “things” are valuable in their own right. Therefore, the existence of a set of tools for their analysis is the all-time requirement for the “platform”. If we also include data clustering and deep machine learning up to predictive analytics, then the value of the “platform” obviously grows.
6. Visualization: all of the above analytics and in general it would be nice to show in such a way that people can understand, be nice and beautiful. Build graphics, models, just visualize what happens to the “things”. Well, just a convenient interface.
7. Additional tools (Additional tools): a set of tools that allows developers to IoT prototyping, test and try different systems. Applications, widgets, mashups – that’s all. It is advisable not to go deep into the code and hardcore programming.
8. External Interfaces: Platform integration is one of the main features. The world of Internet development today does not tolerate closed solutions. You may always need to transfer and exchange with third-party systems. Therefore, this IoT platform must have application programming interfaces (APIs), software development kits (SDKs) and gateways.
A full-fledged IoT platform should be considered as such a platform that allows you to develop appropriate applications/solutions (IoT Application Enablement Platform).
The number of IoT application development platforms is too long so we have listed a few development platforms that have made a mark in the market:
1. Bug Labs is an example of a bottom-up development strategy. The guys from the “Error Lab” (nicely, by the way), started developing and custom-made hardware for IoT, but then overgrown with a bunch of web applications and became a platform that earns from developing “custom solutions”. For example, such. Bug Labs currently has a dweet and freeboard dashboard messaging and notification platform for creating IoT output and visualization panels.
2. DeviceHive – a platform for managing all kinds of devices based on DataArt – AllJoyn fork (first point). Designed for rapid deployment on popular cloud services: Azure, AWS, Apache Mesos and OpenStack. DeviceHive focuses on analyzing big data using tools such as ElasticSearch, Apache Spark, Cassandra, and Kafka. Works on any device running Ubuntu Snappy Core. The software itself is built on a modular basis with the ideology of an “intermediate gateway”. Well, that is, the “thing” itself connects to the border in the form of, for example, Raspberry PI (here is a list of supported hardware where Snappy Core works), and then “clings” to the cloud where DeviceHive is deployed.
3. Eclipse IoT (Kura) – IoT solution from the Eclipse Foundation. The basis is the Kura API container container. Written in Java / OSGi and an aggregation platform for M2M applications running on service gateways. Kura uses Eurotech Everywhere Cloud IoT, seamlessly integrates with Apache Camel. The Eclipse IoT subprojects include the Paho messaging protocol infrastructure and the full MQTT Mosquitto stack for lightweight servers with the Eclipse SmartHome environment. There is also a Java implementation of the CoAP protocol called Californium and something else. A lot of everything.
4. GE Predix This platform has already been mentioned above. This is essentially PaaS (platform as a service) for industrial IoT and is based on Cloud Foundry. The platform is able to “manage assets, ensure the safety of devices and prepare analytics in real time. Well, everything else that platforms should be able to do, of course, is data collection, storage and accessibility. GE developed a GE Predix, first of all for its own needs. Accordingly, it has some industry specifics – power engineering. Predix is considered one of the most successful IoT platforms and it is claimed that it generates about $ 6 billion for the developer.
5. Home Assistant is a platform for mass use for home automation. Written in Python.
6. Node-RED is a Node.js visual development tool. There is a browser “streams” editor with which you can design entire IoT networks with nodes and hubs. Once nodes can be quickly deployed as “runtimes” on a bunch of servers and / or in the clouds. Data exchange is based on JSON, which is logical. “Things” are supported on boards with Linux, and cloud support is Docker, IBM Bluemix, AWS and Azure.
7. OpenRemote is a system that was originally developed for building automation. OpenRemote different rare broad support network of specifications and protocols, such as 1-Wire-, EnOcean, XPL, Insteon, and the X10. Everything else is standard – rules, scenarios and events. Of course, cloud design tools for the user interface, installation and configuration, as well as remote updates and diagnostics.
8. OpenThread is a spin-off from the well-known company Nest (bought by Google for $ 3.2 billion) with open source. Sharpened under the device on 6LoWPAN, but there is support for other protocols. Works on iron platforms from ARM, Atmel, Microchip, Dialog, Qualcomm and TI. OpenThread implements the network roles of the Thread model: End Device, Router, Leader, and Border Router.
9. Zetta is a server-oriented IoT platform on Node.js and REST / WebSockets. Uses a development philosophy based on “reactive programming threads” (I don’t know what it is). Advertised as API-first system with Siren hypermedia interfaces. Any device is presented as a set of API REST, and is associated with cloud services, where there are tools for visualization and support for machine analytics Splunk. The platform supports any Linux shawls and Arduino. Uses Heroku to create geo-distributed networks, which also sounds very cool.
10. Physical Web / Eddystone is an open source developed by Google. They were trying to create something very similar to Apple’s iBeacon. Beacons on Bluetooth 4.0 with “energy saving” (BLE) support should transmit URLs to your smartphone. The idea is that smartphone owners can interact with any device with BLE support, such as parking meters, signs or retail products.