---
title: Building Application with GE Predix IoT Platform
type: article
date: 2018-12-01
source: website
original_url: "https://navveenbalani.dev/index.php/articles/building-application-with-ge-predix-iot-platform/"
topics: ["iot"]
legacy_categories: ["iot"]
tags: ["iot-guide"]
summary: "This article is part of IoT Architecture Series - <https://navveenbalani.dev/index.php/articles/internet-of-things-architecture-components-and-stack-view/ In this article, we would look at how to realize the IoT use case using Predix Cloud platform. As quoted from the Predix…"
draft: false
---

This article is part of IoT Architecture Series - <https://navveenbalani.dev/index.php/articles/internet-of-things-architecture-components-and-stack-view/>

In this article, we would look at how to realize the IoT use case using Predix Cloud platform.  As quoted from the Predix website – “Predix brings together GE’s legacy of industrial domain expertise with our deep investments in cutting-edge technology and data science. The result? An industrial cloud platform (PaaS) that helps you build connectivity into your Industrial Internet strategy – across all verticals.”

Predix platform is targeted towards creating Industrial Internet applications. The Predix platform provides out of the box support
for industry protocols like Modbus, DDS, and OPC-UA, which makes it easier to
integrate with existing industrial devices, along with a dedicated software
stack “Predix Machine” which can be run on edge devices or machine controllers
(in manufacturing plants) to do local analytics.

 The
Predix platform is built on open source
CloudFoundry platform and provides a catalog of services to develop, compose
and deploy Industrial Internet
applications.

*Note - From
a strategy perspective, whether it’s IBM, Amazon, Microsoft or Predix platform,
all provides a scalable cloud platform (PaaS), development tools and set of
services (analytics, real-time streaming, databases, reporting, etc.) and device
SDKs targeted towards building IoT applications. All of these big players are
building an ecosystem of partners from working with Original Equipment
Manufacturer (OEM) to embed their device stack, or partnering with system
integrators, independent software vendors, start-ups and development
communities to enable them quickly to build internet of thing applications.*

In the [first article](/articles/internet-of-things-architecture-components-and-stack-view), we had discussed about a generic Enterprise IoT stack. The following shows our representation on how the Predix IoT services can be mapped to our generic Enterprise IoT stack.

Let’s go through the components in details.

**Predix
Machine**

Predix Machine is a software stack component
that can run on any class of devices (supporting Java runtime) or installed on
a device gateway and provides connectivity to the Predix Cloud platform. We had talked about smart gateway in Chapter
1 which provides local analytical and filtering support at the edge of devices.
The Predix Machine is an example of a
smart gateway providing analytical and operational services at the edge, along
with secured bi-directional connectivity
to industrial devices.  Predix Machine can
integrate with existing industrial devices through its inbuilt support for protocols like Modbus, OPC-UA, MQTT or TCP and
then transmit the required data of interest from these industrial devices to
the Predix Cloud. For connectivity to Predix cloud, Predix Machine provides support
for secured HTTPS, MQTT, and WebSocket
protocol. Essentially, existing industrial devices can easily be connected to
the cloud for data collection, analytics, and remote monitoring.

*Tip –
Using other cloud platforms or solutions, you can still connect to Industrial
devices. There are alternatives like using the Modbus Driver i.e.* [*http://eclipse.github.io/kura/doc/kura-modbus-driver.html*](http://eclipse.github.io/kura/doc/kura-modbus-driver.html) *or building your own adapter and integrating it with your IoT Stack.*

Predix software stack is developed using
Java/OSGI framework and provides an OSGI based container for running
applications and services. Using the Predix
Machine Software SDK, you can customize the OSGI container to generate the
container code for only the required features. For instance, you can skip a generation of “Predix
Machine Store and Forward” feature if you don’t require local processing
on devices. If you are deploying the Predix
Machine to a gateway device, you would
need most of the feature set, and while
deploying it on the sensor nodes, you
would need to cut down the feature set to bare minimum. The documentation at <https://www.predix.io/docs/> (<https://www.predix.io/docs/#MgHwD2pM>)
provides clear guidelines on the feature set, memory requirements, and footprint for each of these features and a list
of verified platforms where Predix
Machine was successfully installed and executed.

*Tip -
An open source alternative to Predix
Machine is Eclipse Kura. Eclipse Kura (*[*https://www.eclipse.org/kura/*](https://www.eclipse.org/kura/)*) is an open source OSGI based IoT gateway that
provides similar capabilities. For details, have a look at the Kura
architecture at -* [*http://eclipse.github.io/kura/doc/intro.html*](http://eclipse.github.io/kura/doc/intro.html)

For management of devices, the Predix EdgeManager service is provided. The
EdgeManager provides a single interface for monitoring devices, configuring
security and carrying out various device management functionalities.

**Core
Platform**

The core platform comprises of messaging
and storage services. The messaging middleware
service is offered by RabbitMQ (by Pivotal). Essentially, this is a scalable
secured RabbitMQ installation managed by
the Predix Cloud. The messaging
middleware service as described in Chapter 1 – IoT Messaging Middleware section
provides scalable, highly available and persistent reliable messaging between
devices and various cloud services. RabbitMQ by default supports the AMQP protocol.
RabbitMQ also supports MQTT protocol and programming APIs like Java, .NET, and Erlang.

From a storage service perspective, Predix provides a choice of Time Series service for
handling time series data, SQL Database (PostgreSQL) for SQL based interactions,
a high-performance Key-Value store
database and a Blobstore for handling very large object storages (like medical
images which span in GBs). The choice of
using one storage service as opposed to others depends on the application
requirements. We had discussed the requirements earlier during the course of this chapter. The storage services are in-line
with rest of the cloud providers.

Predix also provides an Asset Data service to
enable creating asset model that describes the logical structure and relationships
between the assets and create instances of the asset model. You can design the
asset model based on your requirements, for instance,
aircraft device equipment would be different from oil manufacturing equipment.

In future, we envision various pre-built asset
models available in the catalog to help kick start IoT application for various
industry verticals.

---

*Tip - We had explained the concept of the abstract data model as part of Solutions Layer section in first article. The abstract data model is a superset of Asset Data model**.***

---

The Asset service consists of a REST API layer, a query engine, and an Apache
Cassandra NoSQL graph database. The underlying representation of graph database
is available as RDF (Resource Description Format),
and each data can be represented as a triple (or tuple) of “Subject”, “Predicate” and “Object.” The object can be
a value or a reference pointing to a Subject. Using RDF provides flexibility
for modeling any domain (or any
information in the world) as a set of triples. You can design models and
relationship and later exploit these facts as part of the application. For
instance, you can model a vehicle engine as follows –

|  |  |  |
| --- | --- | --- |
| Subject | Predicate | Object |
| /audi/aux566 | serialNumber | XXXX-YYYY-ZZZZ |
| /audi/aux566 | manufacturingDate | 2015-11-11 |
| /audi/aux566 | engineType | XX |
| /audi/aux566 | fuelType | Diesel |
| /audi/aux566 | Torque | XX RPM |
| /audi/aux566 | Power | XX KWT |
| /audi/aux566 | displacement | CMQ |

*Tip –
To know more about RDF and how to model entities and ontology, kindly visit
this link -* [*/articles/introduction-to-semantic-web)*/. There are ontology models available on
the web for various industries, like for automotives
you can refer to this link   -* [*https://www.w3.org/community/gao/*](https://www.w3.org/community/gao/)*.*

**Analytics
Services**

Predix Analytics services provide an
environment for running analytics code as a service in Predix Cloud. The
Analytics services include the following set
of services -

- Analytics Catalog to catalog
  your analytics artifacts. The catalog is the central repository for all your analytics artifacts.
- Analytical Orchestration to
  create orchestration between analytics components.
- Analytics Runtime,
  which provides a scalable runtime for executing analytics orchestration.
- Analytics User Interface to
  upload your analytics artifacts to Analytics Catalog.

You can develop your analytics code in supported
languages such as Python, MATLAB or Java and publish
the analytics code to the Analytics Catalog.

*Note -
The analytics code needs to be developed and deployed as per the Analytics
process outlined in the Predix
documentation -* [*https://www.predix.io/docs/?r=45293#Qd2kPYb7*](https://www.predix.io/docs/?r=45293#Qd2kPYb7)*. Basically,
you need to package your code and provide a configuration file for deployment as per the outlined process.*

The Analytics services provide a very good
option of leverage existing skills and expertise for building analytics code.
Python and MATLAB are widely used in
building machine learning algorithms, and
one can tap into the existing ecosystem to build machine learning algorithms
and analytics component based on the industrial use cases.

Apart from your analytics code, there are
analytics services offered by ecosystem
partners/vendors like Geo-Enhance (by Pitney Bowes) for Geolocation tracking and
Anomaly Detection (by ThetaRay) to identify and detect unknown threats and
maintenance events to prevent outages. The analytics services from partners and
ecosystems would definitely grow over a period of time.

*Note
– The real value addition offered by any IoT cloud provider would be out of box
analytics services for various industries and industry solution templates (refer
to solutions layer section in Chapter 1) which can be quickly assembled to
create industrial solutions.*

The Analytics runtime service provides orchestration of analytic components from the
Analytic Catalog and executes them based
on rules, timers or events. The orchestration code is specified using the
standard BPMN (Business Process Modelling Notation) notation. There is a
series of step that needs to be performed
for orchestrating and running the analytical code, which is very well documented at Predix website (reference - [https://www.predix.io/docs/?r=212627#nQNINP9Q](https://www.Predix.io/docs/?r=212627#nQNINP9Q)).

**Custom
Solutions**

These are end-to-end IoT industrial solutions developed using Predix cloud services and third-party services.  Apart from the above services, Predix cloud provides a bunch of other services that can be used as part of building IoT applications like – user account, authentication, and tenant management services, Mobile SDK for building industrial mobile applications, DevOps services or a Dashboard Seed service to setup contextual monitoring application. You can find all the services in the catalog view of Predix website at <https://www.predix.io/catalog/>

In the next article, [we will implement the elevator solution using Predix IoT stack.](/articles/connected-elevator-solution-using-predix-iot-stack)