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 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.
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 –
Tip – To know more about RDF and how to model entities and ontology, kindly visit this link – http://navveenbalani.com/index.php/2010/05/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/.
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).
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/