Selecting IoT Platform for Agricultural Machinery (Part 2 Platforms)
February 17, 2019
In this article I declare the IoT platforms included in this case study. The study includes 13 platforms, some of them are of top ranked trademarks in the industry (such as Amazon, Microsoft, IBM, GE, …), and some others are open source platforms. The selection was based on the customer specifications explained in the introductory article of the study.
In the below sections, I draw a global overview of each platform, with a focus on the main features on Cloud and edge sides that matches the customer specifications.
1. AWS IoT Platform
Amazon Web Services (AWS) IoT platform is well-known by its multi-task components in both Cloud and Edge sides. It supports MQTT and HTTP data transfer protocols between Edge devices and the Cloud, as well as device shadows for updating device functional status once it is connected to the cloud.
The Edge component (AWS Greengrass) comes with support of many types of edge devices, including NVIDIA Jetson TX2. Because it comes as Java Script package, it is compatible with many hardware / CPUs, and runs under different OS platforms, including Linux (Ubuntu), Windows, and Mac. AWS Greengrass comes with rich SDK, supporting different programming languages (such as C, C++, Java, and Python).
AWS Greengrass Architecture
source (AWS Greengrass Developer Guide)
AWS Greengrass can be easily integrated with other useful AWS products, such as AWS Lambda functions, which enable users to schedule serverless jobs, run stream processing tasks, deploy and run ML and image processing procedures. AWS Greengrass supports both ModBus and CANBus messaging protocols.
2. Azure IoT Suite
Azure IoT Suite is the standard Microsoft service for managing Edge devices over IoT infrastructures. It shares multiple similarities with AWS IoT platform. One of such similarities is that it adopts the same synchronization strategy as AWS IoT platform, by generating JSON docs (namely Device Twins) to update device status in the cloud, which is similar to AWS device shadows. It is also integrated with Azure Functions, which are similar to AWS functions in executing serverless jobs. In addition, Azure IoT Suite support three types of Data Transfer Protocols (MQTT, AMQP, and HTTP), and it’s Edge component (Azure IoT Edge) can be integrated with other Azure/MS services to handle different tasks on edge side, such as Stream Analytics, ML/Image Processing, jobs scheduling, and visualization.
Moving to Azure Edge , I find some limitations when compared with AWS Greengrass. One of these limitations is that it supports shorter list of Programming Languages (including C, Python, .NET core, Java, and Node.js). The second limitation is that it’s Python and ML modules does not support Edge devices with ARM processors. Thirdly, it is compatible only with Windows and Linux platforms. Nevertheless, the price model of Azure IoT platform is highly competitive to that of AWS.
3. IBM Watson IoT
The third IoT platform in this study is the IBM’s Watson IoT Platform. Watson IoT platform adopts similar strategies for device management as those of AWS and Azure platforms. It supports MQTT and HTTP protocols for data transfer. It has REST API to monitor Edge devices from the Cloud. It integrates with Cloud Analytics Service to build ML models on the Cloud and deploy them on Edge devices.
In The Edge side, IBM provides a free-of-charge SDK called Edge Analytics SDK. This SDK provide specific configurations to be installed on NVIDIA Jetson TX2 chips. It supports both MQTT and HTML protocols for data transfer. It has no specifications for CPU/OS platforms, which makes it more flexible than Azure Edge component.
Watson IoT Platform Edge components
source (Watson IoT Platform Edge overview (Preview))
Although Edge Analytics SDK supports multiple programming languages (such as C#, C++, Python, and Java), it does not execute serverless implementations on Edge devices. It also does not support OTA updates. Jobs scheduling is possible through the integration of IBM Cloud Functions. The SDK supports both stream data processing and ML deployment /execution through services like Gateway Device and Edge Analytics. There is no support for visualization on the Edge side. In addition, the SDK does not natively support ModBus and CANBus messaging protocols.
4. Google Cloud IoT
Google provides Cloud IoT service called Cloud IoT Core. This service enables device management through different scripting languages (such as C#, GO, Java, and Node.js). It supports Data Transfer using MQTT and HTTP protocols. It enables data exporting from Edge devices to the Cloud in different formats (such as JSON, Text files, or Binary data). It supports Cloud-side visualization using Stackdriver Monitoring service. Machine learning is supported by Cloud ML Engine service.
Moving to the Edge component, Google introduces an open-source Android OS called Android Things. The main drawback of this component is that it must be installed either as OS or as an Image on top of Windows, Mac, or Linux. This problem contradicts with the customer demand to have the Edge services running under Linux Ubuntu OS. Android Things also does not support ARM processors. It supports all programming languages of Android Studio (such as SQL, Java 8, C++, and Kotlin). Some features are supported by Android Things, including OTA updates, Jobs Scheduling, and ML Models Deployment. Android Things has no built-in support for ModBus messaging system.
5. GE Predix Platform
Predix Platform is the official industrial IoT Platform of General Electric Digital. Predix supports Edge Nodes Connectivity over three modules: an M2M Machine Gateway, a Cloud Gateway, and a Mobile Gateway. Each Module comes with it’s suitable data transformation Protocols. Connections are handled through virtual network that supports wired and satellite connections. The platform enables data synchronization between the Cloud and Edge Nodes through Predix Mobility service.
On the Edge side, Predix introduces a software layer called Predix Machine, which acts as a pipeline between the Cloud and the Edge Nodes. Predix Machine supports Jetson TX2 specifications, as well as HTTP/HTTPs, MQTT protocols for data connectivity. It comes with different programming APIs (Java, C/C++, and Python). Predix Software can be integrated with post-sales services, such as customized software development and machine learning consultations. The price model of Predix Platform is very expensive in comparison with any other platform in this study.
6. Bosch IoT Suite
Bosch IoT Suite is a robust IoT Platform with high level of flexibility and customization. The basic component of the Cloud-side is called Bosch IoT Remote Manager, which supports monitoring, centralized configuration and software provisioning among other services. Data connectivity is managed by Bosch IoT Hub, which supports numerious types of Protocols (e.g. MQTT and HTTP). The platform supports Machine Learning solutions using Bosch IoT Analytics.
Bosch IoT Platform Infrastructure
(source: Bosch IoT Device management and monitoring for IoT)
On the Edge side, Bosch IoT Gateway acts as a bridge between the Cloud and the Edge Nodes. It is compatible with JTX2 specifications and supports remote configurations and checks on Edge Nodes. It has an Eclipse Plug-in to run scripts using different programming languages. It supports jobs scheduling, OTA updates, and visualization services.
7. Eclipse IoT
Eclipse introduces an open source IoT platform, consists of a Cloud component called Kapua, and an Edge component called Kura. In the current version, Kapua supports only MQTT protocol data transfer, and provides a browser API for managing and updating Edge devices. It uses Message Broker to synchronize Edge devices with the Cloud. It comes with an Admin console called Kura Gateway for monitoring.
Eclipse IoT Platform Services
(source: Eclipse IoT Cloud Platform Stack)
The Edge component – Kura – supports NVIDIA Jetson TX2 specifications, as well as ARM processor and Linux (Ubuntu) OS. It also supports all programming languages included in the Eclipse IDE. In addition, Kura supports OTA updates on Edge devices, and jobs scheduling via agileWORKFLOW or Eclipse Launch Scheduler plugins. It also supports stream data processing using StreamBase Studio IDE. One of Kura’s limitations is that it has neither native support to ML/image processing software, nor Edge-side visualization tool. It uses image update strategy to update devices software, with no guarantee that it won’t be interrupted. It also has no support to field buses (such as ModBus and CANBus).
8. Kaa IoT Platform
Kaa IoT platform is a (Apache 2.0 Licensed) free middleware that binds IoT devices to the Cloud. It supports both SQL and NoSQL data storage, with support of Apache Zookeeper as jobs’ coordinator. It enables HTTP and TCP data transfer, and comes with Administration and Monitoring user interfaces.
The Edge component of Kaa platform (called Kaa Endpoint SDK) supports multiple protocols for data exchange between the Server and the Edge devices (such as HTTP, MQTT, CoAP, … etc.). The Platform supports Linux, Windows, Android, iOS, amonth other OSs. It supports also Edge devices with different hardware/CPU settings. The SDK comes in different programming languages (such C, C++, Java, and Objective C). The new release (Kaa 1.0) supports OTA updates, as well as jobs’ Scheduling. Although Kaa SDKs has no native integration with ML/image processing tools, it has enough flexibility to be integrated with stream processing engines like Apache Spark. Kaa platform has also rich documentations available in text and YouTube videos for a variety of use cases.
9. Ayla IoT Platform
Ayla IoT Platform is an IoT Software produced by Ayla Networks. It’s Cloud component is called Ayla Cloud Service. It supports multiple Protocols for data connectivity, including WiFi, Bluetooth, Ethernet. It supports also multi-layer authentications for secure registration and logging of Edge devices. It also has a built-in tool for Visualization and Reporting.
Ayla Embidded Agents acts as the Edge component of the Ayla Platform. It supports Linux-based devices (such as Jetson TX2), as well as many other operating systems. It also has support to OTA Updates, Scheduling, realtime data processing, as well as a Machine Learning service called mnubo. Ayla Platform has no native support to data visualization on the Edge devices.
10. ThingsBoard IoT
Another IoT platform in this study is called ThingsBoard. ThingsBoard is an open source platform for devices’ management in IoT environments. It has two basic components: a Cloud component called ThingsBoard Cluster, and an Edge component called ThingsBoard Iot Gateway. ThingsBoard Cluster supports MQTT, CoAP and HTTP protocols for data connectivity. It uses Web and REST APIs for device management and monitoring. It also supports writing ML solutions using any programming language and distribute it on Edge devices.
On the Edge side, ThingsBoard IoT Gateway can be installed on specific devices called Gateway devices, and accordingly has no specifications of hardware/software settings on Edge devices. It supports a wide range of programming languages. OTA updates on Edge devices are not explicitly supported. Stream data processing is supported by using Apache Kafka as a plugin, as well as Apache Spark streaming through MQTT Sessions. ThingsBoard Iot Gateway has no built-in solution for deploying and running ML/image processing solutions. It supports Modbus messaging system as a fieldbus.
11. Mbed IoT Platform
Mbed IoT Platform is another open source IoT Platform with two components: Mbed Cloud and Mbed Edge. Mbed Cloud supports data connectivity through CoAP/HTTP, TLS DTLS and OMALWM2M Protocols. It also has REST API for Edge devices administration and software updates. It supports Asynchronous REST Requests between the Cloud and the Edge devices.
In the other side, Mbed Edge component supports Jetson TX2 hardware specifications on Edge devices. It can be installed on Linux OS devices with min 10,4 MB hard drive space. It has C++ API for programming. It comes with no built-in apps with it. It has limited support to OTA Updates, and no solution for Jobs Scheduling.
12. ARTIK IoT Platform
ARTIK is the official Samsung’s IoT Platform. The Platform supports Data Transfer through WiFi, Bluetooth, ZigBee, and Threads. It provides REST API for Tasks Management. It also support Grouping of Edge devices, as well as Secure Device Registration. It supports also Data Synchronization through Device Mirror utility.
On the Edge side, ARTIK provides different Hardware Modules to be installed on Edge devices. The most suitable module should be selected based on the specifications of each Edge device. ARTIK is running stable on Linux systems. It has rich SDKs with a variety of programming languages (e.g. Java, Objective C, PHP, Ruby, and Python). ARTIK supports OTA Updates, and it’s Rule Engine has native support of Jobs Scheduling.
13. ThingWorx IoT Platform
ThingWorx is an Industrial IoT Platform produced by PTC. ThingWorx supports numinous types of Data Transfer Protocols (such as OPC, MQTT, REST, EFM, and ODBC). It supports Edge Synchronization through a Digital Twin tool. It has also APIs for managing and monitoring Edge devices.
On the Edge side, ThingWorx support hardware specifications similar to those of Jetson TX2 chips. It is also compatible with Linux devices, and comes with rich SDKs for different programming languages (C, Java, .NET, iOS, and Android). It supports machine learning solutions through ThingWorx Analytics. It has also solutions for OTA Updates and Jobs Scheduling through Schedular Template. ThingWorx has no built-in tool of data visualization on the Edge devices.