---
title: The Art of the Possible with Corso Systems
description: Alex Marcy, CEO of Corso Systems, explains how to use groov REST APIs in this Art of the Possible guest blog.
image: https://blog.opto22.com/hubfs/Corso1.png
---

- [Log in](https://www.opto22.com/logon?returnurl=%2f)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

[![Opto 22 Logo](https://blog.opto22.com/hubfs/opto22_lightsilvergradient_800px.png "Opto 22 Logo")](https://www.opto22.com)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

 

# The Art of the Possible with Corso Systems

# OptoBlog

# The Art of the Possible with Corso Systems

Posted by [Janice Colmer](https://blog.opto22.com/optoblog/author/janice-colmer) on Mar 22, 2023, 9:30:00 AM

- [Tweet](https://twitter.com/share)

### While *groov* EPIC and *groov* RIO products seamlessly integrate with [SCADA systems like Ignition](https://inductiveautomation.com/resources/article/musthave-scada-features-for-the-modern-era) from [Inductive Automation](https://inductiveautomation.com/), they also have a built-in Application Programming Interface (API) you can use to access much of the information and features of the platform. 

Alex Marcy, CEO of [Corso Systems](https://corsosystems.com/), explains how in this Art of the Possible guest blog.

### *groov* REST APIs

For this post, we will focus on the *groov* Manage and *groov* View REST APIs. Specific information on everything contained within each of these APIs can be found on the [Opto 22 Developer](https://developer.opto22.com/) site. (This blog post will also work with the PAC Control REST API if you are using it.)

Our goal is to extract the information available from the API specification installed on your *groov* device, then generate a file you can import into an Ignition project and use the Ignition scripting environment to call the *groov* REST API directly from Ignition.

Using the *groov* Manage API with Ignition allows you to see what I/O modules you have installed, get information about each of the channels, and read and write to I/O and MMP (memory map) addresses. This is helpful if you are building out a tool for maintenance folks to get more detailed information about your PLC than simply I/O points, and it allows you to make everything dynamic and templatized in Ignition. 

Without going into all the technical details, Opto 22 has documented these APIs using the OpenAPI Specification. This approach gives you a clearly documented way to see all of the functionality of the API using a tool called Swagger. Follow these links to see the Swagger page for the [*groov* Manage REST API](https://developer.opto22.com/static/generated/manage-rest-api/swagger-ui/index.html), and the [*groov* View REST API](https://developer.opto22.com/static/generated/groov-rest-api/swagger-ui/index.html?url=/static/generated/groov-rest-api/swagger.yaml). For this post, we will leverage the OpenAPI specification along with an open-source tool called OpenAPI Generators to generate a Python version of the API.

Normally, you would interact with the API call as seen in the Swagger documentation. Call a particular URL with an HTTP GET or POST method, pass along whatever parameters you need, and the API will return the relevant information. Using the tools in this post, we can extract the API into Python files, import them into Ignition, then use the scripting interface to call the Opto 22 *groov* APIs. 

![Corso1](https://blog.opto22.com/hs-fs/hubfs/Corso1.png?width=500&height=334&name=Corso1.png)

### Securing the Premises

First, make sure you have Ignition installed on your computer and you have a [*groov* EPIC](https://www.opto22.com/products/groov-epic-system) or [RIO](https://www.opto22.com/products/groov-rio) set up to communicate with that Ignition installation. Note: If you're using Ignition running on your EPIC or RIO, these next steps are not required.

Next, you need to download the public certificate from your *groov* device. If you haven’t created a public certificate yet, do that first. [View the instructions for creating a public certificate here](https://blog.opto22.com/optoblog/certificates-epic-tools-to-design-a-cybersecure-automation-system). Typically this file downloads as “cert.pem”. We will use this file now and also when we are working with the Ignition installation later in this post.

If you don’t already have Java installed on your computer, do that next. We typically use the OpenJDK. [Click here to download the latest version of OpenJDK from their website](https://openjdk.org/). Once you have Java installed, you need to run a command (with elevated privileges) in a command prompt to add the public certificate to the Java certificate keystore.

Assuming you are adding the certificate for the first time, the default password is “changeit” with no quotes.

In the command prompt, enter the command:

> ```
> keytool -import -file “path-to\cert.pem” -alias opto22 -cacerts
> ```

When you're prompted for a password, use changeit if you haven’t set a password yet, then set a new strong password, and it will import the certificate.

### Sharpening Your Tools

Next, you need to download the [ignition-codegen](https://github.com/CorsoSource/IgnitionCodegen) tool from the Corso Systems Github repository. This page has additional detailed information on the tasks we’re describing in this post. Most notably—as of the time of this writing—you will need to install a few Python libraries to the user-lib\\pylib folder in your Ignition installation folder. Specific installation instructions are contained in the [ignition-codegen README file](https://github.com/CorsoSource/IgnitionCodegen/blob/master/README.md).

Finally, in the ignition-codegen README file, you will see a link to the [OpenAPI Generator JAR file](https://github.com/OpenAPITools/openapi-generator#13---download-jar). Download this file as well.

Once you have the ignition-codegen tool downloaded, you need to find the Swagger UI in your *groov* device. To access it, go to the *groov* Manage Home page > Info and Help > REST APIs. Here you will see links to the *groov* Manage and *groov* View APIs, as well as the *groov* Authentication Service and PAC Control from *groov* pages. Click the *groov* Manage link and watch for the Swagger page to load. Look for the link ending in .yaml right below the title on the Swagger page and click it.

We now have everything we need to generate the Ignition Python resources.

Going back to the ignition-codegen README, you will see the command we need to run. This command is slightly different on Windows vs. Mac or Linux. The following is the Windows version:

> `java -cp /path/to/openapi-generator-cli.jar;/path/to/ignition-codegen.jar org.openapitools.codegen.OpenAPIGenerator generate ` `
> 
> `    --generator-name ignition-codegen ``
> 
> `    --input-spec /path/to/openapi.yaml ``
> 
> `    --generate-alias-as-model --output ./Opto22API`

For a real-world example, this is the command we ran while writing this post:

> `java -cp openapi-generator-cli-7.0.0-20220526.055920-1.jar;ignition-codegen-openapi-generator-1.1.2.jar org.openapitools.codegen.OpenAPIGenerator generate --generator-name ignition-codegen --input-spec https://10.18.15.99/manage/public/static/swagger/manage-api-public.yaml --generate-alias-as-model --output C:\Users\Alex\Downloads\Opto22API`

### Documentation is Key

Running this command creates “docs.zip” and “project.zip” files in the directory you specified in the output parameter above.

The docs.zip file contains the Python version of the Swagger UI, giving you information (contained in Markdown files) about each of the API calls and how to use them. As an exercise for you, take these files and create a Perspective page to view them using the Markdown component.

The DefaultApi.md file is of special interest in the docs.zip. This describes all of the API calls available to you, along with example code of how to call them using Python scripting in Ignition.

The next step is to open a Designer, and either open an existing project you want to import the Python API files into, or create a new project. In the Ignition Designer go to File > Import and import the projects.zip file, and import everything. Save your project and you are almost ready to go.

![Corso2](https://blog.opto22.com/hs-fs/hubfs/Corso2.png?width=400&height=592&name=Corso2.png)

![Corso3](https://blog.opto22.com/hs-fs/hubfs/Corso3.png?width=308&height=399&name=Corso3.png)

Next, you will need to generate an API Key for a user on the *groov* device if you haven’t already. The process to generate this API key is described on the [REST API Getting Started Page](https://developer.opto22.com/groov/manage/getting-started/). Once you have the API Key, keep it handy as you will need it to call the API from Ignition.

You also need to put the cert.pem file you downloaded earlier somewhere accessible from Ignition. To keep things simple we put it in the Ignition install directory in the data\\certificates\\cert.pem folder. Simply copy the file you downloaded earlier into that directory, or some other directory on the computer where Ignition is installed.

For examples of the code you will need to write, look for the DefaultApi.md file in the docs.zip file. This file describes in detail all of the API calls available, with example code you can use for accessing any of them.

### I Need Those Codes

In this example, we will use the get\_channel\_descriptions() call. You can see the original call on this [Opto 22 Developer page](https://developer.opto22.com/static/generated/manage-rest-api/swagger-ui/index.html#/default/getChannelDescriptions).

![Corso4](https://blog.opto22.com/hs-fs/hubfs/Corso4.png?width=697&height=91&name=Corso4.png)

For our purposes the code from the DefaultApi.md file looks like this:

> `from __future__ import print_function import time import openapi_client from openapi_client.rest import ApiException from pprint import pprint # Enter a context with an instance of the API client with openapi_client.ApiClient(configuration) as api_client:     # Create an instance of the API class     api_instance = openapi_client.DefaultApi(api_client)          try:         api_response = api_instance.get_channel_descriptions()         pprint(api_response)     except ApiException as e:         print('Exception when calling DefaultApi->get_channel_descriptions: %s\n' % e)`

If you want to go into the configuration file and manually set the values there, you can use this code *as is* in any scripting environment in Ignition: button presses, tag event scripts, gateway event scripts, etc. Or as we show in this example, in the Script Console where we build the configuration object directly:

> `from __future__ import print_function import time import openapi_client from openapi_client.rest import ApiException from pprint import pprint from openapi_client.configuration import Configuration from openapi_client.api_client import ApiClient configuration = Configuration(     api_key = {'apiKey':"fLEVdxaiK3igQZEN9bgd8zq8DVVHF4Jb"},     ssl_ca_cert="C:\Program Files\Inductive Automation\Ignition\data\certificates\cert.pem" ) # Enter a context with an instance of the API client with openapi_client.api_client.ApiClient(configuration) as api_client:     # Create an instance of the API class     api_instance = openapi_client.api.default_api.DefaultApi(api_client)     try:         api_response = api_instance.get_channel_descriptions()#api_instance.get_channel_descriptions()         print(api_response)     except ApiException as e:         print('Exception when calling DefaultApi->get_channel_descriptions: %s\n' % e)`

In the code above you can see where we set up the configuration object to store our API key from the *groov* Manage page, and mapped the Public Certificate file we downloaded from the *groov* EPIC and put it in the data\\certificates folder in our Ignition install directory.

As expected from the Swagger documentation, this code returns a JSON object with the channel descriptions for all of the channels on the *groov* EPIC:

![Corso5](https://blog.opto22.com/hs-fs/hubfs/Corso5.png?width=785&height=128&name=Corso5.png)

### Wrapping Up

The *groov* REST APIs are powerful tools that work with any of Opto 22’s flagship products. Through the API, you can get access to information about the configuration of the device in addition to data from I/O channels—and even handle some of the basic network configuration tasks.

Combining the power of the REST API with Python scripting in Ignition is easy to do using the OpenAPI specification with the support of the OpenAPI generators. 

We hope this gives you a solid foundation to build on with your Opto 22 and Ignition projects!

— Alex Marcy  
*CEO, Corso Systems*

Alex Marcy is the founder and CEO of [Corso Systems](https://corsosystems.com/), a system integrator specializing in Ignition, Opto 22, and Manufacturing Execution Systems. He prioritizes building a diverse team prepared to solve any problem the manufacturing world can throw their way.

 ![AlexMarcy_CorsoSystems](https://blog.opto22.com/hs-fs/hubfs/AlexMarcy_CorsoSystems.jpg?width=125&height=200&name=AlexMarcy_CorsoSystems.jpg)

 

 

 Topics: [groov EPIC](https://blog.opto22.com/optoblog/topic/groov-epic), [Ignition](https://blog.opto22.com/optoblog/topic/ignition), [Art of the Possible](https://blog.opto22.com/optoblog/topic/art-of-the-possible)

### Written by [Janice Colmer](https://blog.opto22.com/optoblog/author/janice-colmer)

<https://blog.opto22.com/optoblog/author/janice-colmer>

Janice has worked at Opto 22 for over 20 years and is part of the marketing team that strives to share new and relevant content with the industrial automation industry. She enjoys books, camping, country music, and spending time with family and friends.

Find me on:

[LinkedIn](https://www.linkedin.com/in/jcolmer/)

### Subscribe to Email Updates

### Recent Posts

### Posts by Topic

- [groov EPIC (503)](https://blog.opto22.com/optoblog/topic/groov-epic)
- [groov RIO (300)](https://blog.opto22.com/optoblog/topic/groov-rio)
- [optonews (218)](https://blog.opto22.com/optoblog/topic/optonews)
- [IIoT (214)](https://blog.opto22.com/optoblog/topic/iiot)
- [groov (192)](https://blog.opto22.com/optoblog/topic/groov)
- [IoT (148)](https://blog.opto22.com/optoblog/topic/iot)
- [Internet of Things (131)](https://blog.opto22.com/optoblog/topic/internet-of-things)
- [Ignition (130)](https://blog.opto22.com/optoblog/topic/ignition)
- [Node-RED (128)](https://blog.opto22.com/optoblog/topic/node-red)
- [PACs (127)](https://blog.opto22.com/optoblog/topic/pacs)
- [MQTT (125)](https://blog.opto22.com/optoblog/topic/mqtt)
- [Events & conferences (117)](https://blog.opto22.com/optoblog/topic/events-conferences)
- [Case studies (107)](https://blog.opto22.com/optoblog/topic/case-studies)
- [Industrial Internet of Things (104)](https://blog.opto22.com/optoblog/topic/industrial-internet-of-things)
- [Videos (96)](https://blog.opto22.com/optoblog/topic/videos)
- [Updates (82)](https://blog.opto22.com/optoblog/topic/updates)
- [Tips (81)](https://blog.opto22.com/optoblog/topic/tips)
- [Integrators (75)](https://blog.opto22.com/optoblog/topic/integrators)
- [OptoPartner (75)](https://blog.opto22.com/optoblog/topic/optopartner)
- [Remote monitoring (75)](https://blog.opto22.com/optoblog/topic/remote-monitoring)
- [Ignition Edge (73)](https://blog.opto22.com/optoblog/topic/ignition-edge)
- [I/O (69)](https://blog.opto22.com/optoblog/topic/io)
- [Process control (69)](https://blog.opto22.com/optoblog/topic/process-control)
- [Webinars (69)](https://blog.opto22.com/optoblog/topic/webinars)
- [Energy management (64)](https://blog.opto22.com/optoblog/topic/energy-management)
- [CODESYS (61)](https://blog.opto22.com/optoblog/topic/codesys)
- [Training (57)](https://blog.opto22.com/optoblog/topic/training)
- [PAC Control (51)](https://blog.opto22.com/optoblog/topic/pac-control)
- [PAC Project (49)](https://blog.opto22.com/optoblog/topic/pac-project)
- [groov View (49)](https://blog.opto22.com/optoblog/topic/groov-view)
- [OEM (48)](https://blog.opto22.com/optoblog/topic/oem)
- [cybersecurity (48)](https://blog.opto22.com/optoblog/topic/cybersecurity)
- [Discrete control (45)](https://blog.opto22.com/optoblog/topic/discrete-control)
- [digital transformation (45)](https://blog.opto22.com/optoblog/topic/digital-transformation)
- [Machine builder (40)](https://blog.opto22.com/optoblog/topic/machine-builder)
- [Firmware (39)](https://blog.opto22.com/optoblog/topic/firmware)
- [edge computing (39)](https://blog.opto22.com/optoblog/topic/edge-computing)
- [EPIC (37)](https://blog.opto22.com/optoblog/topic/epic)
- [system integrator (37)](https://blog.opto22.com/optoblog/topic/system-integrator)
- [Inductive Automation (35)](https://blog.opto22.com/optoblog/topic/inductive-automation)
- [groov Manage (33)](https://blog.opto22.com/optoblog/topic/groov-manage)
- [industrial automation (33)](https://blog.opto22.com/optoblog/topic/industrial-automation)
- [Data acquisition (30)](https://blog.opto22.com/optoblog/topic/data-acquisition)
- [Ignition Community Conference (30)](https://blog.opto22.com/optoblog/topic/ignition-community-conference)
- [Security (30)](https://blog.opto22.com/optoblog/topic/security)
- [Sparkplug (30)](https://blog.opto22.com/optoblog/topic/sparkplug)
- [Factory Training (29)](https://blog.opto22.com/optoblog/topic/factory-training)
- [Networking (28)](https://blog.opto22.com/optoblog/topic/networking)
- [snap pac (27)](https://blog.opto22.com/optoblog/topic/snap-pac)
- [REST API (26)](https://blog.opto22.com/optoblog/topic/rest-api)
- [New products (25)](https://blog.opto22.com/optoblog/topic/new-products)
- [Technology Partners (23)](https://blog.opto22.com/optoblog/topic/technology-partners)
- [Water & wastewater (22)](https://blog.opto22.com/optoblog/topic/water-amp-wastewater)
- [PLCs (21)](https://blog.opto22.com/optoblog/topic/plcs)
- [manufacturing (21)](https://blog.opto22.com/optoblog/topic/manufacturing)
- [API (20)](https://blog.opto22.com/optoblog/topic/api)
- [developer (20)](https://blog.opto22.com/optoblog/topic/developer)
- [groov EPIC Learning Center (20)](https://blog.opto22.com/optoblog/topic/groov-epic-learning-center)
- [Cirrus Link Solutions (19)](https://blog.opto22.com/optoblog/topic/cirrus-link-solutions)
- [OptoU (19)](https://blog.opto22.com/optoblog/topic/optou)
- [smart manufacturing (19)](https://blog.opto22.com/optoblog/topic/smart-manufacturing)
- [Electronics (18)](https://blog.opto22.com/optoblog/topic/electronics)
- [HMI (18)](https://blog.opto22.com/optoblog/topic/hmi)
- [OPC UA (18)](https://blog.opto22.com/optoblog/topic/opc-ua)
- [Oil & gas (18)](https://blog.opto22.com/optoblog/topic/oil-gas)
- [groov rio emu (18)](https://blog.opto22.com/optoblog/topic/groov-rio-emu)
- [Food & beverage (17)](https://blog.opto22.com/optoblog/topic/food-amp-beverage)
- [OptoPartner video (17)](https://blog.opto22.com/optoblog/topic/optopartner-video)
- [energy monitoring (17)](https://blog.opto22.com/optoblog/topic/energy-monitoring)
- [podcast (17)](https://blog.opto22.com/optoblog/topic/podcast)
- [Building management (16)](https://blog.opto22.com/optoblog/topic/building-management)
- [Awards and recognition (15)](https://blog.opto22.com/optoblog/topic/awards-and-recognition)
- [REST (15)](https://blog.opto22.com/optoblog/topic/rest)
- [SCADA (15)](https://blog.opto22.com/optoblog/topic/scada)
- [mobile (15)](https://blog.opto22.com/optoblog/topic/mobile)
- [Migration (14)](https://blog.opto22.com/optoblog/topic/migration)
- [OptoChannel (13)](https://blog.opto22.com/optoblog/topic/optochannel)
- [EPIC Security (12)](https://blog.opto22.com/optoblog/topic/epic-security)
- [Opto 22 product support (12)](https://blog.opto22.com/optoblog/topic/opto-22-product-support)
- [groov Manage series (12)](https://blog.opto22.com/optoblog/topic/groov-manage-series)
- [I/O modules (11)](https://blog.opto22.com/optoblog/topic/i-o-modules)
- [Modbus (11)](https://blog.opto22.com/optoblog/topic/modbus)
- [OptoForum (11)](https://blog.opto22.com/optoblog/topic/optoforum)
- [PAC Manager (11)](https://blog.opto22.com/optoblog/topic/pac-manager)
- [power monitoring (11)](https://blog.opto22.com/optoblog/topic/power-monitoring)
- [PAC Display (10)](https://blog.opto22.com/optoblog/topic/pac-display)
- [oil and gas (10)](https://blog.opto22.com/optoblog/topic/oil-and-gas)
- [Art of the Possible (9)](https://blog.opto22.com/optoblog/topic/art-of-the-possible)
- [Deepsea Challenge (9)](https://blog.opto22.com/optoblog/topic/deepsea-challenge)
- [IntegrateLive! (9)](https://blog.opto22.com/optoblog/topic/integratelive)
- [OT data (9)](https://blog.opto22.com/optoblog/topic/ot-data)
- [RESTful server (9)](https://blog.opto22.com/optoblog/topic/restful-server)
- [Raspberry Pi (9)](https://blog.opto22.com/optoblog/topic/raspberry-pi)
- [holiday schedule (9)](https://blog.opto22.com/optoblog/topic/holiday-schedule)
- [white paper (9)](https://blog.opto22.com/optoblog/topic/white-paper)
- [Automation World (8)](https://blog.opto22.com/optoblog/topic/automation-world)
- [Edge I/O (8)](https://blog.opto22.com/optoblog/topic/edge-i-o)
- [I/O (8)](https://blog.opto22.com/optoblog/topic/i-o)
- [PID loop control (8)](https://blog.opto22.com/optoblog/topic/pid-loop-control)
- [SSRs (8)](https://blog.opto22.com/optoblog/topic/ssrs)
- [Unified Namespace (8)](https://blog.opto22.com/optoblog/topic/unified-namespace)
- [data visualization (8)](https://blog.opto22.com/optoblog/topic/data-visualization)
- [holiday hours (8)](https://blog.opto22.com/optoblog/topic/holiday-hours)
- [webinar (8)](https://blog.opto22.com/optoblog/topic/webinar)
- [IEC 61131-3 (7)](https://blog.opto22.com/optoblog/topic/iec-61131-3)
- [MQTT implementation (7)](https://blog.opto22.com/optoblog/topic/mqtt-implementation)
- [Who's groovin (7)](https://blog.opto22.com/optoblog/topic/whos-groovin)
- [groov server for windows (7)](https://blog.opto22.com/optoblog/topic/groov-server-for-windows)
- [secure shell (7)](https://blog.opto22.com/optoblog/topic/secure-shell)
- [ARC Forum (6)](https://blog.opto22.com/optoblog/topic/arc-forum)
- [Careers (6)](https://blog.opto22.com/optoblog/topic/careers)
- [EPIC Security Series (6)](https://blog.opto22.com/optoblog/topic/epic-security-series)
- [Eclipse Foundation (6)](https://blog.opto22.com/optoblog/topic/eclipse-foundation)
- [Ignition Cloud Edition (6)](https://blog.opto22.com/optoblog/topic/ignition-cloud-edition)
- [Ignition Community Live (6)](https://blog.opto22.com/optoblog/topic/ignition-community-live)
- [Linux (6)](https://blog.opto22.com/optoblog/topic/linux)
- [data center (6)](https://blog.opto22.com/optoblog/topic/data-center)
- [interactive demo (6)](https://blog.opto22.com/optoblog/topic/interactive-demo)
- [machine monitoring (6)](https://blog.opto22.com/optoblog/topic/machine-monitoring)
- [open source (6)](https://blog.opto22.com/optoblog/topic/open-source)
- [ssh (6)](https://blog.opto22.com/optoblog/topic/ssh)
- [technical tips (6)](https://blog.opto22.com/optoblog/topic/technical-tips)
- [Anniversary (5)](https://blog.opto22.com/optoblog/topic/anniversary)
- [Digital I/O for Raspberry Pi (5)](https://blog.opto22.com/optoblog/topic/digital-i-o-for-raspberry-pi)
- [IIoT System Architecture (5)](https://blog.opto22.com/optoblog/topic/iiot-system-architecture)
- [OptoNews 2015-12-02 (5)](https://blog.opto22.com/optoblog/topic/optonews-2015-12-02)
- [OptoOPCServer (5)](https://blog.opto22.com/optoblog/topic/optoopcserver)
- [SVG (5)](https://blog.opto22.com/optoblog/topic/svg)
- [certificate (5)](https://blog.opto22.com/optoblog/topic/certificate)
- [cloud computing (5)](https://blog.opto22.com/optoblog/topic/cloud-computing)
- [product philosophy (5)](https://blog.opto22.com/optoblog/topic/product-philosophy)
- [software (5)](https://blog.opto22.com/optoblog/topic/software)
- [system integration (5)](https://blog.opto22.com/optoblog/topic/system-integration)
- [CODESYS blog series (4)](https://blog.opto22.com/optoblog/topic/codesys-blog-series)
- [COVID-19 Update (4)](https://blog.opto22.com/optoblog/topic/covid-19-update)
- [EdgeX (4)](https://blog.opto22.com/optoblog/topic/edgex)
- [HiveMQ (4)](https://blog.opto22.com/optoblog/topic/hivemq)
- [OpenVPN (4)](https://blog.opto22.com/optoblog/topic/openvpn)
- [OptoDataLink (4)](https://blog.opto22.com/optoblog/topic/optodatalink)
- [OptoNews 2015-03-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-03-04)
- [OptoNews 2015-03-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-03-18)
- [OptoNews 2015-04-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-01)
- [OptoNews 2015-04-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-15)
- [OptoNews 2015-04-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-29)
- [OptoNews 2015-05-21 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-05-21)
- [OptoNews 2015-06-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-06-03)
- [OptoNews 2015-06-17 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-06-17)
- [OptoNews 2015-07-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-01)
- [OptoNews 2015-07-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-15)
- [OptoNews 2015-07-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-29)
- [OptoNews 2015-08-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-08-12)
- [OptoNews 2015-08-26 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-08-26)
- [OptoNews 2015-09-09 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-09-09)
- [OptoNews 2015-09-23 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-09-23)
- [OptoNews 2015-10-07 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-10-07)
- [OptoNews 2015-10-21 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-10-21)
- [OptoNews 2015-11-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-11-04)
- [OptoNews 2015-11-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-11-18)
- [OptoNews 2015-12-16 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-12-16)
- [OptoNews 2016-01-06 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-01-06)
- [OptoNews 2016-01-20 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-01-20)
- [OptoNews 2016-02-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-02-03)
- [OptoNews 2016-02-17 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-02-17)
- [OptoNews 2016-03-02 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-02)
- [OptoNews 2016-03-16 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-16)
- [OptoNews 2016-03-30 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-30)
- [OptoNews 2016-04-13 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-04-13)
- [OptoNews 2016-04-27 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-04-27)
- [OptoNews 2016-05-11 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-05-11)
- [OptoNews 2016-05-25 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-05-25)
- [OptoNews 2016-06-08 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-06-08)
- [OptoNews 2016-06-22 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-06-22)
- [OptoNews 2016-07-06 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-07-06)
- [OptoNews 2016-08-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-03)
- [OptoNews 2016-08-31 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-31)
- [OptoNews 2016-09-14 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-09-14)
- [OptoNews 2016-09-28 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-09-28)
- [OptoNews 2016-10-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-10-12)
- [OptoNews 2016-10-26 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-10-26)
- [OptoNews 2016-11-09 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-11-09)
- [OptoNews 2016-11-30 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-11-30)
- [OptoNews 2016-12-14 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-12-14)
- [OptoNews 2017-01-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-01-04)
- [OptoNews 2017-01-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-01-18)
- [OptoNews 2017-02-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-02-01)
- [OptoNews 2017-02-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-02-15)
- [OptoNews 2017-03-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-01)
- [OptoNews 2017-03-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-15)
- [OptoNews 2017-03-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-29)
- [OptoNews 2017-04-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-04-12)
- [Optomux (4)](https://blog.opto22.com/optoblog/topic/optomux)
- [UNS (4)](https://blog.opto22.com/optoblog/topic/uns)
- [machine data (4)](https://blog.opto22.com/optoblog/topic/machine-data)
- [product design (4)](https://blog.opto22.com/optoblog/topic/product-design)
- [serial module (4)](https://blog.opto22.com/optoblog/topic/serial-module)
- [DMC guest blog (3)](https://blog.opto22.com/optoblog/topic/dmc-guest-blog)
- [Discovery Day (3)](https://blog.opto22.com/optoblog/topic/discovery-day)
- [G4 I/O (3)](https://blog.opto22.com/optoblog/topic/g4-i-o)
- [GIF (3)](https://blog.opto22.com/optoblog/topic/gif)
- [GPIO (3)](https://blog.opto22.com/optoblog/topic/gpio)
- [ICC (3)](https://blog.opto22.com/optoblog/topic/icc)
- [Insider (3)](https://blog.opto22.com/optoblog/topic/insider)
- [Made in USA (3)](https://blog.opto22.com/optoblog/topic/made-in-usa)
- [OEE (3)](https://blog.opto22.com/optoblog/topic/oee)
- [OptoMMP (3)](https://blog.opto22.com/optoblog/topic/optommp)
- [OptoNews 2016-08-17 (3)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-17)
- [OptoTagPreserve (3)](https://blog.opto22.com/optoblog/topic/optotagpreserve)
- [YouTube (3)](https://blog.opto22.com/optoblog/topic/youtube)
- [control engineering (3)](https://blog.opto22.com/optoblog/topic/control-engineering)
- [groov RIO Learning Center (3)](https://blog.opto22.com/optoblog/topic/groov-rio-learning-center)
- [open source software (3)](https://blog.opto22.com/optoblog/topic/open-source-software)
- [python (3)](https://blog.opto22.com/optoblog/topic/python)
- [virtual workshop (3)](https://blog.opto22.com/optoblog/topic/virtual-workshop)
- [AI (2)](https://blog.opto22.com/optoblog/topic/ai)
- [Aggregates & concrete (2)](https://blog.opto22.com/optoblog/topic/aggregates-amp-concrete)
- [Build-a-Thon (2)](https://blog.opto22.com/optoblog/topic/build-a-thon)
- [Expert Interview series (2)](https://blog.opto22.com/optoblog/topic/expert-interview-series)
- [Firmware Engineer (2)](https://blog.opto22.com/optoblog/topic/firmware-engineer)
- [LDAP (2)](https://blog.opto22.com/optoblog/topic/ldap)
- [LoRaWAN (2)](https://blog.opto22.com/optoblog/topic/lorawan)
- [MES (2)](https://blog.opto22.com/optoblog/topic/mes)
- [MariaDB (2)](https://blog.opto22.com/optoblog/topic/mariadb)
- [Sepasoft (2)](https://blog.opto22.com/optoblog/topic/sepasoft)
- [Snowflake (2)](https://blog.opto22.com/optoblog/topic/snowflake)
- [Spanish (2)](https://blog.opto22.com/optoblog/topic/spanish)
- [Technical Writer (2)](https://blog.opto22.com/optoblog/topic/technical-writer)
- [Version 3.4 update (2)](https://blog.opto22.com/optoblog/topic/version-3-4-update)
- [Windows 10 (2)](https://blog.opto22.com/optoblog/topic/windows-10)
- [automation 101 (2)](https://blog.opto22.com/optoblog/topic/automation-101)
- [compliance (2)](https://blog.opto22.com/optoblog/topic/compliance)
- [email notifications (2)](https://blog.opto22.com/optoblog/topic/email-notifications)
- [firewall (2)](https://blog.opto22.com/optoblog/topic/firewall)
- [serial (2)](https://blog.opto22.com/optoblog/topic/serial)
- [21 CFR Part 11 (1)](https://blog.opto22.com/optoblog/topic/21-cfr-part-11)
- [Amazon Web Services (1)](https://blog.opto22.com/optoblog/topic/amazon-web-services)
- [Applications Engineer (1)](https://blog.opto22.com/optoblog/topic/applications-engineer)
- [Big data (1)](https://blog.opto22.com/optoblog/topic/big-data)
- [CNC (1)](https://blog.opto22.com/optoblog/topic/cnc)
- [Ciberseguridad (1)](https://blog.opto22.com/optoblog/topic/ciberseguridad)
- [Colombia (1)](https://blog.opto22.com/optoblog/topic/colombia)
- [Corso Systems (1)](https://blog.opto22.com/optoblog/topic/corso-systems)
- [Discover Gallery (1)](https://blog.opto22.com/optoblog/topic/discover-gallery)
- [ENTELEC (1)](https://blog.opto22.com/optoblog/topic/entelec)
- [EaaS (1)](https://blog.opto22.com/optoblog/topic/eaas)
- [Education Partnerships (1)](https://blog.opto22.com/optoblog/topic/education-partnerships)
- [Grafana (1)](https://blog.opto22.com/optoblog/topic/grafana)
- [HART (1)](https://blog.opto22.com/optoblog/topic/hart)
- [HVAC (1)](https://blog.opto22.com/optoblog/topic/hvac)
- [HighByte (1)](https://blog.opto22.com/optoblog/topic/highbyte)
- [Industrial Ethernet Book (1)](https://blog.opto22.com/optoblog/topic/industrial-ethernet-book)
- [LinkedIn (1)](https://blog.opto22.com/optoblog/topic/linkedin)
- [Log4Shell (1)](https://blog.opto22.com/optoblog/topic/log4shell)
- [Log4j (1)](https://blog.opto22.com/optoblog/topic/log4j)
- [Lucidchart (1)](https://blog.opto22.com/optoblog/topic/lucidchart)
- [M-Bus (1)](https://blog.opto22.com/optoblog/topic/m-bus)
- [Modern Elteknik (1)](https://blog.opto22.com/optoblog/topic/modern-elteknik)
- [MySQL (1)](https://blog.opto22.com/optoblog/topic/mysql)
- [Opto 22 (1)](https://blog.opto22.com/optoblog/topic/opto-22)
- [OptoChat (1)](https://blog.opto22.com/optoblog/topic/optochat)
- [OptoNews 2016-07-20 (1)](https://blog.opto22.com/optoblog/topic/optonews-2016-07-20)
- [PLC programming (1)](https://blog.opto22.com/optoblog/topic/plc-programming)
- [Pamux (1)](https://blog.opto22.com/optoblog/topic/pamux)
- [PostgreSQL (1)](https://blog.opto22.com/optoblog/topic/postgresql)
- [RS232 (1)](https://blog.opto22.com/optoblog/topic/rs232)
- [RTD (1)](https://blog.opto22.com/optoblog/topic/rtd)
- [SPS (1)](https://blog.opto22.com/optoblog/topic/sps)
- [SoftPAC (1)](https://blog.opto22.com/optoblog/topic/softpac)
- [Sweden (1)](https://blog.opto22.com/optoblog/topic/sweden)
- [Tatsoft (1)](https://blog.opto22.com/optoblog/topic/tatsoft)
- [User Accounts (1)](https://blog.opto22.com/optoblog/topic/user-accounts)
- [Veteran's Day (1)](https://blog.opto22.com/optoblog/topic/veterans-day)
- [Virtual Tour (1)](https://blog.opto22.com/optoblog/topic/virtual-tour)
- [analisisydatos (1)](https://blog.opto22.com/optoblog/topic/analisisydatos)
- [analog input module (1)](https://blog.opto22.com/optoblog/topic/analog-input-module)
- [automatizacion (1)](https://blog.opto22.com/optoblog/topic/automatizacion)
- [blockchain (1)](https://blog.opto22.com/optoblog/topic/blockchain)
- [current transformers (1)](https://blog.opto22.com/optoblog/topic/current-transformers)
- [customer service (1)](https://blog.opto22.com/optoblog/topic/customer-service)
- [encryption (1)](https://blog.opto22.com/optoblog/topic/encryption)
- [groov Admin (1)](https://blog.opto22.com/optoblog/topic/groov-admin)
- [groov System Configurator (1)](https://blog.opto22.com/optoblog/topic/groov-system-configurator)
- [groov maintenance license (1)](https://blog.opto22.com/optoblog/topic/groov-maintenance-license)
- [indoor agriculture (1)](https://blog.opto22.com/optoblog/topic/indoor-agriculture)
- [instrumentacion (1)](https://blog.opto22.com/optoblog/topic/instrumentacion)
- [inteligenciaindustrial (1)](https://blog.opto22.com/optoblog/topic/inteligenciaindustrial)
- [json (1)](https://blog.opto22.com/optoblog/topic/json)
- [machine learning (1)](https://blog.opto22.com/optoblog/topic/machine-learning)
- [maintenance technician (1)](https://blog.opto22.com/optoblog/topic/maintenance-technician)
- [mining (1)](https://blog.opto22.com/optoblog/topic/mining)
- [network segmentation (1)](https://blog.opto22.com/optoblog/topic/network-segmentation)
- [port redirect (1)](https://blog.opto22.com/optoblog/topic/port-redirect)
- [predictive maintenance (1)](https://blog.opto22.com/optoblog/topic/predictive-maintenance)
- [redundancy (1)](https://blog.opto22.com/optoblog/topic/redundancy)
- [reverse osmosis (1)](https://blog.opto22.com/optoblog/topic/reverse-osmosis)
- [sdk (1)](https://blog.opto22.com/optoblog/topic/sdk)
- [supply chain (1)](https://blog.opto22.com/optoblog/topic/supply-chain)
- [temperature sensor (1)](https://blog.opto22.com/optoblog/topic/temperature-sensor)
- [time proportional output (1)](https://blog.opto22.com/optoblog/topic/time-proportional-output)
- [visio stencils (1)](https://blog.opto22.com/optoblog/topic/visio-stencils)
- [wellsite automation (1)](https://blog.opto22.com/optoblog/topic/wellsite-automation)

see all

- [Products](https://www.opto22.com/products) 
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [groov System](https://www.opto22.com/products/groov)
    - [I/O](https://www.opto22.com/products/i-o)
    - [Logic](https://www.opto22.com/products/logic)
    - [Data](https://www.opto22.com/products/data)
    - [Visualization](https://www.opto22.com/products/visualization)
    - [Accessories](https://www.opto22.com/products/accessories)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [SNAP I/O Configurator](https://www.opto22.com/products/snap-i-o-configurator)

- [Support](https://www.opto22.com/support) 
    - [Contact Support](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Documents](https://www.opto22.com/support/documents-redirect)
    - [Downloads](https://www.opto22.com/support/downloads-redirect)
    - [Videos](https://www.opto22.com/support/videos-redirect)
    - [KnowledgeBase](https://www.opto22.com/support/optoknowledgebase-redirect)
    - [Training](https://www.opto22.com/support/training-options)

- [About Us](https://www.opto22.com/about-us) 
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Careers](https://www.opto22.com/about-us/careers)
    - [History](https://www.opto22.com/about-us/history)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [International](https://www.opto22.com/about-us/international)
    - [Location](https://www.opto22.com/about-us/directions)

- [Community](https://www.opto22.com/community) 
    - [Opto Partners](https://www.opto22.com/community/opto-partners)
    - [Opto Blog](https://www.opto22.com/community/opto-blog)
    - [Opto Forums](https://www.opto22.com/community/opto-forums)
    - [Events](https://www.opto22.com/community/events)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

© 2026 Opto22 [Terms and Conditions](https://preview.opto22.com/special-pages/terms-conditions) | [Privacy](https://preview.opto22.com/special-pages/privacy)

**(800) 321 OPTO (6786)** | 43044 Business Park Drive, Temecula CA 92590 USA

<http://www.linkedin.com/groups?gid=734807&trk=hb_side_g> <http://www.youtube.com/optovideo> <http://www.facebook.com/home.php#!/opto22> <http://twitter.com/opto22>

![](https://dc.ads.linkedin.com/collect/?pid=90128&fmt=gif)