New

Building Application with GE Predix IoT Platform

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, 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 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/) 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

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 –

SubjectPredicateObject
/audi/aux566serialNumberXXXX-YYYY-ZZZZ
/audi/aux566manufacturingDate2015-11-11
/audi/aux566engineTypeXX
/audi/aux566fuelTypeDiesel
/audi/aux566TorqueXX RPM
/audi/aux566PowerXX KWT
/audi/aux566displacementCMQ

*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/.

**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*. 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).

**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.

iot