Programming Options

groov EPIC has a lot of options for programming; this site covers the following:

  • Secure Shell (SSH) for custom programming applications.
  • REST APIs that provide HTTPS access to control and data.
  • OptoMMP, the underlying memory-map protocol in EPIC.
  • IEC 61131-3 for control programming.
  • Ignition Edge with external PLC drivers.
  • MQTT Sparkplug for communicating device I/O and variable data over secure sockets.
  • Node-RED provides connectivity between Internet of Things (IoT) devices, cloud services, and more.

There are also more programming tools covered on our training site:

This developer guide breaks down each of these options, highlighting their capabilities, to give you an idea of what tools are available for your own applications.

See the links in each section below for more details.

Secure Shell (SSH) Access

The groov EPIC processor runs a custom embedded Linux distribution as its operating system, which was put together using an EPIC-specific Yocto recipe. SSH gives you root access to the raw command line of this operating system, as well as all the files, programs, and programming options that it has onboard.
There are sample shell programs available in the Opto Developer GitHub repository.

For more details, check out Getting Started with groov EPIC Secure Shell.


Representational State Transfer Application Programming Interface (REST API)

The easiest methods to set up and test are the REST APIs, which are also very flexible and powerful. These tools define a set of requests and responses that you can make over http and https to manually or programmatically access your groov EPIC data and I/O.

Since HTTP is such a widely used standard it’s possible to interface with the REST APIs through modern web browsers, console curl commands, HTTP libraries for languages like Python, and API-specific applications like Postman, as well as many other methods.

The results that are returned are formatted with JavaScript Object Notation (JSON), which is a common, well documented standard that is very easy for applications to process. Most languages have several ways of dealing with JSON.

For more details, check out Getting Started with the REST APIs for groov EPIC.


Opto Memory-Mapped Protocol (OptoMMP)

Beyond the http- and https-compatible API’s you can also use OptoMMP to write low-level instructions directly to the addressed memory on the device.
OptoMMP is a memory-mapped protocol based on the IEEE 1394 standard that is used to create custom software applications for remote monitoring, industrial control, and data acquisition, all across the single port 2001.
For a list of compatible hardware, see the OptoMMP Protocol Guide (form 1465).

For more details search the forum or see the following links:


IEC 61131-3

IEC 61131-3 is part of the open international standard for programmable logic controllers (PLCs) that has been around for over twenty-five years. It defines several standards: Ladder Diagram (LD), Function Block Diagram (FBD), Sequential Function Chart (SFC), and Structured Text (ST).

groov EPIC implements these standards using the CODESYS Runtime Engine, and applications are developed in the CODESYS Development System V3, which is available free of charge from the CODESYS Store.

Further documentation on how to activate and use these standards is coming soon!


Ignition Edge

Ignition Edge is a software application by Inductive Automation embedded in the groov EPIC. This software is equipped with OPC UA and has built-in drivers to access data from many PLCs such as Allen-Bradley, Siemens, Modbus, SNAP PAC, and other groov EPICs.

As well as the communication options Ignition Edge brings there is also a full data interface with unlimited tags, and full MQTT implementation using the Sparkplug specification by Cirrus Link, which is described in more detail below.

For more details, check out Inductive Automation’s website.


MQTT Sparkplug

MQTT is a simple, flexible, and widely adopted communication protocol for Internet of Things (IoT) applications that uses a publish-subscribe or “pub-sub” communication model. If you’re unfamiliar with MQTT or the pub-sub architecture check out our Opto Video on How to Get Started with MQTT and our Opto blog posts on the difference between request-response and pub-sub and when to use each.

Sparkplug is a more robust implementation of MQTT created by Cirrus Link that builds off of MQTT and makes the protocol even more suited for industrial automation applications and the high demands of that field, without breaking the constraints set by the original protocol. To learn more about this specification, check out our Intro to MQTT with Sparkplug video. If you’re already familiar, we have another Opto Video on publishing PLC tags via MQTT & Sparkplug so you can see it in action.

MQTT itself is an ISO standard protocol, and Sparkplug is also an open standard, governed by the Eclipse Tahu Project, and has libraries for C#, Java, JavaScript, and Python all available on the public GitHub repository.

The EPIC control engine can send Sparkplug-compliant payloads separately to running Ignition Edge software, both of which are set up, enabled, and disabled through their respective groov Manage menus. To make EPIC data available through ignition tags you can run both at the same time.

More training coming soon:



Node-RED is a browser-based flow programming environment for interconnecting IoT devices, databases, cloud services, and the groov EPIC. It was originally developed by IBM Emerging Technology Services and is now open-source, has a default “core” node for most basic tasks, and thousands of external Node packages like PAC, groov, MS SQL, and MySQL nodes among many others at

You can use Node-RED on the EPIC processor itself, or access your groov data-store tags, PAC control variables and I/O from another system running Node-RED, for example; a windows or linux computer, the groov Edge Appliance, cloud servers, even from lightweight computers like the Raspberry Pi.

It is both the runtime and editor, ultimately compiling to Javascript; of particular interest to developers is the function node, which exposes a block of Javascript to the programmer to freely enter raw code that will run in the flow using data from and providing data to the other nodes.

For more details, check out these resources:


The following resources provide comprehensive information about the groov EPIC processor:

The following training topics and videos teach you about important tasks to help you customize, maintain, and backup your groov EPIC system: