Actyx Examples - Machine Demo Box

Hey there,

we just published a project containing some sample applications to help getting you started with …

  • … connecting a Siemens S7 PLC to an Actyx environment,
  • … reading values from the machine,
  • … visualizing values on a dashboard, and
  • … interacting using a web simple interface.

It also comes with a mock data generator that produces random values for visualization, in case you don’t have a PLC at hand.

Check it out here: GitHub - actyx-contrib/machine-demo-box.


For everyone who is playing around with settings and settings schema:

Check out the settings for the TASP-Connector

Settings-schema.json + settings.ts

This pattern is very generic and worth knowing it.


Very useful contribution. The examples with Siemens S7 PLC have great practical relevance. Thanks for this


Next update for the Demo-Box. Github machine-demo-box

We are using the new Pond V2.5.0 now.

As you see, there is backpressure and chunking build in. :tada:

All events are now tagged propper, and the DB-Exporter got much cleaner and, of course, less code.


When you update, please take care of the tsap-connector settings. Two values are added: bdeTags and valuesTags:

  bdeTags: ['Machine:{id}', 'Machine.state:{id}'],
  valuesTags: ['Machine:{id}', 'Machine.values:{id}'],

Of course, the old events are no longer read in the exporter, but they are already exported to the database.

What’s next

Currently, the OPC_UA-connector is in progress. An OPC_UA-mock-plc is already there. Keep in touch to not miss the next Update.


thanks for this good demo


Today, we merged the new OPCUA-connector to main.

We already talked about it during the office hour. If you didn’t saw it jet, here is the link: YouTube office hour #1

:chains: OPC UA Connector

The opcua-connector is a very configurable connector to produce three kind of events.

  • valueChanged - Sensor/Value readings, mostly used for IoT cases. (dashboard, machine learning, …)
  • statusChanged - The state of the machine has changed. (On, Off, Starting, Productive, Error, Emergency, …)
  • errorOccurred - Error occurred that needs to be handled by something or someone.

:rocket: How it works

The system consists of three separate modules.

1. OPC UA connection

The OPC UA and variables settings are used to connect to the OPC UA server and read the values as a continuous stream.

2. valueEmitters

valueEmitters consume the OPC UA streams from the first module. These values are formatted/modified and are emitted as Actyx events,

3. machineStateEmitter

machineStateEmitter consumes OPC UA streams from the OPC UA connection. The configured rule s are applied to the read values to determine whether to emit an event. If an event is to be emitted, generateError determines whether to emit a stateChanged or errorOccurred event.

Read more:

1 Like