This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Get Started!

You want to get started right away? Go ahead and jump into the action!

Great to see you’re ready to start! This guide has 5 steps: Installation, Managing the System, Data Acquisition & Manipulation, and Moving to Production.

Contact Us!

Do you still have questions on how to get started? Message us on our Discord Server.

1 - 1. Installation

Install the United Manufacturing Hub together with all required tools on a Linux Operating System.

The United Manufacturing Hub (UMH) can be deployed on various external devices, including edge devices and virtual machines (VMs). For initial installations or for development purposes, it is recommended to use a VM.

Software Requirements

The UMH installation requires one of the following Operating System on your server:

  • Flatcar version current-2023 or higher (3510.3.1). It is recommended that you have full control over the operating system. To install Flatcar on your server, follow this guide.
  • Red Hat Enterprise Linux (RHEL) 9.0 and higher. Recommended when you can choose out of a small amount of potential Operating Systems.
  • Community Supported: Ubuntu 22.04.4 LTS. This approach is useful when you’re for example trying to install the UMH on a cloud instance like AWS EC2 and struggle to install Flatcar or RHEL there.

While UMH is optimized for RHEL and Flatcar, it can theoretically run on other Linux distributions. However, support is not guaranteed. For Windows, you could try running one of the above described Operating Systems in a VM (e.g., Hyper-V). If you experiment with other systems, we encourage sharing your experiences on our Discord channel.

Hardware Requirements

  • CPU: Minimum 4 cores
  • Memory: 16 GB RAM
  • Disk Space: 32 GB available
    • On Ubuntu, we recommend at least 64 GB, due to the larger size of Ubuntu itself.
  • CPU Instructions: SSE 4.2
    • This instruction was first introduced in 2008 (Intel) and 2011 (AMD), but some VM’s require special configuration to enable it.

Note: Systems at the edge of these requirements may experience longer installation times. Close other programs during installation for optimal performance.

Network Requirements

Before proceeding with the installation, ensure your system meets the necessary network requirements.

To learn about configuring firewall and network rules for your UMH instances, please refer to our dedicated Firewall Rules page.

Installation Steps

  1. Open the Management Console in the browser.

  2. When you are finished with the creation of your account, enter your information and click on SIGN IN.

    Sign in page
    Sign in page

  3. If you are not a member, continue with sign up. Register your information and click on SIGN UP.

    Sign up page
    Sign up page

  4. You should’ve been redirected to the Network View. Now click on the +Add Instance button at the top right corner.

  5. Go through the installation wizard by first clicking on Install the UMH and then on UMH Classic.

  6. Configure your instance with the necessary details. Naming your instance is mandatory, while setting its location is optional but beneficial for management. The location follows a hierarchical format based on the ISA95 model, allowing for increasing specificity. For example, if your instance monitors a packaging line located in Building B of a factory in Ehrenfeld, Cologne, you could name it ‘Packaging’ and set the location as follows: Enterprise: UMH; Site: Ehrenfeld; Area: Building B. The Management Console organizes instances in this structure, making it easy to oversee multiple instances. Additionally, it helps in verifying data accuracy; for instance, if the enterprise is mistakenly entered as ‘UHM’ instead of ‘UMH’, the console will highlight the error based on the mismatch in received data.

  7. Once you’re ready, create the installation command, and then Copy and paste it into your server’s terminal (via ssh).

    Installation command
    Installation command

  8. The installation script runs a lot of checking and setup. For example, it checks your operating system, installation of required tools, and internet connection. After the check phase, kubectl and Helm will be installed. The script shall show you what actions will happen to your system in the next step. If you want to proceed, type Y and press enter key.

    Installation checks
    Installation checks

  9. In this step, k3s will be installed. Then, it installs the UMH Helm Chart in Kubernetes. After that, the Management Companion will be installed into Kubernetes. Until everything is set up, it can take a while.

    Installation logs
    Installation logs

  10. After a successful installation, you should be able to see messages like in the picture below.

    Installation success message
    Installation success message

  11. Back to the Management Console, everything’s ready and you click on Let’s Go!.

  12. Now in the Network View, a single node representing your newly created UMH instance should be visible.

    Network View
    Network View

Do you need more technical background information?

Here are some links to get you started:

What’s next?

Once you installed UMH, you can continue with the next page to learn how to manage the system, for example, access to the microservices.

2 - 2. Managing the System

Learn how to manage your UMH instance with the Management Console.

In this chapter, you will learn how to monitor, manage and configure your UMH instance with the Management Console.

At this stage, you should have already installed the UMH on your device. If you have not done so, please follow the steps in the Installation chapter first.

A Few Words About the Communication

Now that you have connected a UMH instance to the Management Console, you might be curious about how the Management Console communicates with the instance.

The Management Companion, serving as an agent within each UMH instance, provides a secure link to the Management Console. It enables comprehensive and secure monitoring and management of the UMH, ensuring system health and streamlined configuration, all while acting as a vigilant watchdog over system components and connected devices.

The diagram below illustrates the communication flow between the Management Console and the instance:

Communication between the Management Console and the instance
Communication between the Management Console and the instance

For more information, visit the architecture

Overview of Your Instances

Instance overview
Instance overview

On the left side of the Management Console, you can view the list of your instances. If you have just installed the UMH, you should see only one instance in the list.

The status of your instance is indicated by color: green means everything is working properly, while yellow indicates that there may be a connection issue.

The Messages Received statistic shows the number of messages received by you from the instance since you opened the Management Console. It is usually a good indicator of the health of the connection to the Companion. If the number is not increasing for 10 seconds, the instance is considered disconnected.

Monitoring the Instance’s Status

From the Component View, in the overview tab, you can view the status of your instance. There are multiple interfaces that display the status of each component of the system.


A Module refers to a group of workloads in the United Manufacturing Hub responsible for specific tasks. For example, the Historian & Analytics module represents the microservices, storage, and connections that are responsible for storing and analyzing data.

In the Modules tab, you can view the status of each module. If a module is not healthy, it means that one or more of its components are not functioning properly.


In the System tab, you can view the resource usage of your device, as well as some system’s information.

If there is an overload on the device, you can view it here. An overloaded device is unable to handle the workload, and you should consider upgrading the device.


In the Datastream tab, you can view a brief overview of the data infrastructure, which includes the rate of messages going through the message broker and the database. Any unhealthy protocol converters or network devices/services are also listed here.


In the Kubernetes tab, you can check for any error events in the Kubernetes cluster. Any errors suggest that the cluster is not operating correctly.

Additionally, this tab displays the version of the United Manufacturing Hub and the Management Companion currently installed on your device.

Manage the Instance

Before you begin, ensure that you are connected to the same network as the instance for accessing the various services and features discussed below.

While a graphical user interface for managing the instance is not yet available, you can still manage it via the command line.

Access the Command Line

Access your device’s shell either directly or via SSH. Note: Root user access is required for the following commands.

In UMH’s current version, add --kubeconfig /etc/rancher/k3s/k3s.yaml to each kubectl command. Root privileges are needed to access it. The installation path of kubectl might vary (e.g., /usr/local/bin/kubectl on RHEL/Linux, /opt/bin/kubectl on flatcar). These paths may not be in the root user’s PATH, so the commands below might appear complex.

Interact with the Instance

First, set this environment variable:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

You can bypass this by adding –kubeconfig /etc/rancher/k3s/k3s.yaml to your commands. All instructions in this chapter will include this flag.

Then, to get a list of pods, run:

sudo $(which kubectl) get pods -n united-manufacturing-hub  --kubeconfig /etc/rancher/k3s/k3s.yaml

For a comprehensive list of commands, refer to the Kubernetes documentation.

Always specify the namespace when running a command by adding -n united-manufacturing-hub.

Access Node-RED

Node-RED is used in UMH for creating data flows. Access it via:


Access Grafana

UMH uses Grafana for dashboard displays. Get your credentials:

sudo $(which kubectl) get secret grafana-secret --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -o jsonpath="{.data.adminuser}" | base64 --decode; echo
sudo $(which kubectl) get secret grafana-secret --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -o jsonpath="{.data.adminpassword}" | base64 --decode; echo

Then, access Grafana here:


Use the retrieved credentials to log in.

Access the RedPanda Console

Manage the Kafka broker via the RedPanda Console:


Interact with the Database

UMH uses TimescaleDB. Open a psql session:

sudo $(which kubectl) exec -it $(sudo $(which kubectl) get pods --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -l -o jsonpath="{.items[0]}") --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub -- psql -U postgres

This command will open a psql shell connected to the default postgres database.

Run SQL queries as needed. For an overview of the database schema, refer to the Data Model documentation.

Connect MQTT to MQTT Explorer

Use MQTT Explorer for a structured overview of MQTT topics. Connect using the instance’s IP and port 1883.


Error: You must be logged in to the server while using the kubectl Command

If you encounter the error below while using the kubectl command:

E1121 13:05:52.772843  218533 memcache.go:265] couldn't get current server API group list: the server has asked for the client to provide credentials
error: You must be logged in to the server (the server has asked for the client to provide credentials)

This issue can be resolved by setting the KUBECONFIG environment variable. Run the following command:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

Alternatively, use the --kubeconfig flag to specify the configuration file path:

sudo $(which kubectl) --kubeconfig /etc/rancher/k3s/k3s.yaml get pods -n united-manufacturing-hub

“Permission Denied” Error with kubectl Command

Encountering the error below while using the kubectl command:

error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

Indicates the need for root access. Run the command with sudo, or log in as the root user.

kubectl: command not found error

If you encounter the error below while using the kubectl command:

kubectl: command not found

The solution is to use the full path to the kubectl binary. You can do this by prefixing the command with /usr/local/bin/ (for RHEL and other Linux systems), or /opt/bin/ (for flatcar) or by adding it to your PATH environment variable:

/usr/local/bin/kubectl get pods -n united-manufacturing-hub

# or

export PATH=$PATH:/usr/local/bin

Viewing Pod Logs for Troubleshooting

Logs are essential for diagnosing and understanding the behavior of your applications and infrastructure. Here’s how to view logs for key components:

  • Management Companion Logs: To view the real-time logs of the Management Companion, use the following command. This can be helpful for monitoring the Companion’s activities or troubleshooting issues.

    sudo $(which kubectl) logs -f mgmtcompanion-0 -n mgmtcompanion --kubeconfig /etc/rancher/k3s/k3s.yaml
  • TimescaleDB Logs: For real-time logging of the TimescaleDB, execute this command. It’s useful for tracking database operations and identifying potential issues.

    sudo $(which kubectl) logs -f united-manufacturing-hub-timescaledb-0 -n united-manufacturing-hub --kubeconfig /etc/rancher/k3s/k3s.yaml

Restarting a Pod for Troubleshooting

Sometimes, the most straightforward troubleshooting method is to restart a problematic pod. Here’s how to restart specific pods:

  • Restart Management Companion: If you encounter issues with the Management Companion, restart it with this command:

    sudo $(which kubectl) delete pod mgmtcompanion-0 -n mgmtcompanion --kubeconfig /etc/rancher/k3s/k3s.yaml
  • Restart TimescaleDB: Should TimescaleDB exhibit unexpected behavior, use the following command to restart it:

    sudo $(which kubectl) delete pod united-manufacturing-hub-timescaledb-0 -n united-manufacturing-hub --kubeconfig /etc/rancher/k3s/k3s.yaml

Troubleshooting Redpanda / Kafka

For insights into your Kafka streams managed by Redpanda, these commands are invaluable:

  • List All Topics: To get an overview of all topics in your Redpanda cluster:

    sudo $(which kubectl) exec -it --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub  united-manufacturing-hub-kafka-0 -- rpk topic list
  • Describe a Specific Topic: For detailed information about a specific topic, such as umh.v1.e2e-enterprise.aachen.packaging, use:

    sudo $(which kubectl) exec -it --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub united-manufacturing-hub-kafka-0 -- rpk topic describe umh.v1.e2e-enterprise.aachen.packaging
  • Consume Messages from a Topic: To view messages from a topic like umh.v1.e2e-enterprise.aachen.packaging, this command is useful for real-time data observation:

    sudo $(which kubectl) exec -it --kubeconfig /etc/rancher/k3s/k3s.yaml -n united-manufacturing-hub united-manufacturing-hub-kafka-0 -- rpk topic consume umh.v1.e2e-enterprise.aachen.packaging

What’s next?

Now that you have learned how to monitor, manage and configure your UMH instance with the Management Console, you can start creating your first data flow. To learn how to do this, proceed to the Data Acquisition and Manipulation chapter.

3 - 3. Data Acquisition and Manipulation

Learn how to connect various protocol converters to the UMH and format data into the UMH data model.

The United Manufacturing Hub excels in its ability to integrate diverse protocol converters and standardize data into a unified model, enabling seamless integration of existing data infrastructure for analysis and processing.

Protocol converters can be connected to the UMH through Benthos UMH, which supports various protocols including OPC UA, as well as other types through the Universal Protocol Converter feature available in the Management Console.

The UMH includes 3 pre-configured data simulators for testing connections:

Connect OPC UA Servers

OPC UA, often complex, can be streamlined using our Benthos-based OPC UA connector accessible from the Management Console.

Visualize Network Devices or External Services

In the Network View, you can visualize the network devices a UMH instance is connected to. This view provides the latest status of both the instances and the network devices, including external services.

First, let’s define what we mean by network devices and external services. A network device refers exclusively to any physical device located on the shop floor that is assigned an IP address. This includes machinery, sensors, and any hardware components that communicate over the network.

External services, on the other hand, encompass both virtual devices and services accessed beyond the local network. Virtual devices, such as software systems that have network capabilities but are not physically housed on the shop floor, fall into this category because they require network interaction. Additionally, on-premises and cloud-hosted applications like ERP systems equipped with REST interfaces also fall under external services.

Network devices encompass physical devices with IP addresses as well as virtual devices that may exist in cloud environments or services accessed over the network, such as ERP systems with REST interfaces. External services refer to any services accessed externally, whether they are hosted on-premises or in the cloud.

Network View
Network View

You can also monitor the status of each UMH instance and the network devices it’s connected to. If a device is marked in red, it indicates an unhealthy connection, this could be due to various reasons such as high latency or being unreachable. While green indicates a healthy connection.

Add the Network Device/Service

To add a new network device or external service, navigate to the Component View and access the Protocol Converter tab. Here, you’ll find all your network devices/services alongside their status, including more detailed information and configuration options for both devices and protocol converters.

Protocol Converters
Protocol Converters

Uninitialized Network Devices/Services are established but not yet configured as protocol converters, while Initialized Network Devices/Services are fully configured.

The health status reflects the UMH-data source connection, not data transmission status.

To add one, click Add Device or External Service.

Enter the required server details, which include the unique name, IP address and port number. Optionally, you can also attach some notes, which can be useful for documentation purposes.

For testing with the OPC UA simulator, enter the following details:

  • Name: OPC UA Simulator
  • IP Address: united-manufacturing-hub-opcuasimulator-service
  • Port: 46010

Test the connection, and if successful, click Save Network Device/Service to save and deploy it.

Configure the Protocol Converter

Back at Protocol Converters, your new device should be listed in the table, and surely you’ll notice that it’s health is reported as Not configured.

At this point, it’s worth discussing what initializing a device means and why it’s important.

New devices are created in an “uninitialized” state, meaning they are not yet configured as protocol converters, hence the Not configured health status. So for them to be actually useful, they need to be initialized, which will fully configure them as protocol converters and create a new Benthos deployment for data publishing to the UMH Kafka broker.

Initialize it by pressing the “play” button under the Actions column.

Enter authentication details (use Anonymous for no authentication, as with the OPC UA simulator).

Specify OPC UA nodes to subscribe to in a yaml file, following the ISA95 standard:

  - opcuaID: ns=2;s=Pressure
    enterprise: pharma-genix
    site: aachen
    area: packaging
    line: packaging_1
    workcell: blister
    originID: PLC13
    tagName: machineState
    schema: _historian

Mandatory fields are opcuaID, enterprise, tagName and schema.

Learn more about Data Modeling in the Unified Namespace in the Learning Hub.

Review and confirm the nodes, then proceed with initialization. Successful initialization will be indicated by a green message.

The device’s health status should now be marked as Healthy and display the current message rate. You can also check the tooltip for more details.

Connect MQTT Servers

This guide will cover two methods for integrating MQTT data: using the Management Console’s Universal Protocol Converter (UPC) for a streamlined approach, and using Node-RED as an alternative method.

Using the Management Console

The Management Console features a Universal Protocol Converter, which works with Benthos UMH under the hood to connect and process data from a wide variety of protocols, including MQTT.

Add the Network Device/Service

Similar to OPC UA, you need to add the MQTT broker as a network device/service. Navigate to the Component View and access the Protocol Converter tab. Click Add Device or External Service, and enter the following details for the MQTT simulator:

  • Name: MQTT Simulator
  • IP Address: united-manufacturing-hub-mqtt.united-manufacturing-hub.svc.cluster.local
  • Port: 1883

Test the connection, and if successful, save it.

Configure the Protocol Converter

Back in the Protocol Converters tab, your new MQTT broker should be listed. Initialize it by pressing the “play” button under the Actions column. When prompted to select a protocol, choose the Universal Protocol Converter.

In the Benthos configuration page, you need to define the input and processor configurations in YAML format. To simplify this process, you can use the provided sample configuration for MQTT, which offers an easier starting point. Click on the MQTT button under the “Supported Protocols” section and apply it.

This configuration connects to the UMH MQTT broker, subscribes to IoT sensor data topics, and assigns the data as weather information for the site cologne in the Unified Namespace.

If you are testing with the UMH MQTT simulator, the sample configuration will work out of the box. For other MQTT brokers, you may need to adjust the configuration.

Press Save to deploy your configuration.

If you’ve followed the steps correctly, the MQTT broker should now be connected and processing data.

Tag Browser

You can view the data in the Tag Browser. The data is structured according to the ISA95 standard and displayed in a tree structure for easy navigation.

Tag Browser
Tag Browser

Using Node-RED (Optional)

Alternatively, you can use Node-RED to connect to the MQTT server and format data into the UMH data model. Same as before, we’ll use the UMH MQTT simulator for this guide.

To access Node-RED’s web interface, navigate to:


Replace <instance-ip-address> with your UMH instance’s IP. Ensure you’re on the same network for access.

Add the MQTT Connection

In Node-RED, find the mqtt-in node from the node palette and drag it into your flow. Double-click to configure and click the pencil button next to the Server field.

Enter your MQTT broker’s details:

  • Server: united-manufacturing-hub-mqtt.united-manufacturing-hub.svc.cluster.local
  • Port: 1883

For the purpose of this guide, we’ll use the UMH MQTT broker, even though the data coming from it is already bridged to Kafka by the MQTT Kafka Bridge. Since the simulated data is using the old Data Model, we’ll use Node-RED to convert it to the new Data Model.

Click Add to save.

Connect MQTT to Node-RED
Connect MQTT to Node-RED

Define the subscription topic. For example, ia/raw/development/ioTSensors/Temperature is used by the MQTT Simulator.

To test, link a debug node to the mqtt-in node and deploy. Open the debug pane by clicking on the bug icon on the top right of the screen to view messages from the broker.

MQTT Debug Connection
MQTT Debug Connection

Explore Unified Namespace for details on topic structuring.

Format Incoming Messages

Use a function node to format raw data. Connect it to the mqtt-in node and paste this script:

msg.payload = {
  temperature: msg.payload,
return msg;

Finalize with Done.

Then, connect a JSON node to the function node to parse the object into a string.

This function transforms the payload into the correct format for the UMH data model.

Send Formatted Data to Kafka

For this guide, we’ll send data to the UMH Kafka broker.

Ensure you have node-red-contrib-kafkajs installed. If not, see How to Get Missing Plugins in Node-RED.

Add a kafka-producer node, connecting it to the JSON node. Configure as follows:

  1. Open the configuration menu by double-click on the kafka-producer node. After that, click on the edit button.

    ![Node-RED Kafka Producer](/images/getstarted/dataAcquisitionManipulation/noderedKafkaProducer.png)
  2. Change the fields of Brokers and Client ID as follows:

    • Brokers: united-manufacturing-hub-kafka:9092
    • Client ID: nodered

    Node-RED Kafka Broker Configuration
    Node-RED Kafka Broker Configuration

    Click on Update to save.

  3. Structure Kafka topics according to UMH data model, following the ISA95 standard:

    • umh.v1: obligatory versioning prefix
    • enterprise: The company’s name
    • site: The facility’s location
    • area: The specific production’s area
    • line: The production line
    • workcell: The workcell in the production line
    • originID: The data source ID
    • schema: The schema of your data
    • tagName: Arbitrary tags dependent context

    The enterprise and schema fields are required. To learn more about the UMH data-model, read the documentation.

    For example, if you want to structure a topic for the temperature in celsius from the PLC, which

    • is running in a factory of Pharma-Genix in Aachen.
    • is running in blister workcell in the packaging line 1 in the packaging area.
    • has the ID PLC13.

    and you want to use _historian schema, then the topic should look like

    msg.topic = umh.v1.pharma-genix.aachen.packaging.packaging_1.blister.PLC13._historian.temperatureCelsius

    Add this topic to the script in the function node, which created in Format Incoming Messages section.

    Node-RED Kafka Topic
    Node-RED Kafka Topic

    Alternatively, you can set the topic to the kafka-producer node directly.

  4. Click Done and deploy.

Optional: Add a debug node for output visualization.

Node-RED MQTT to Kafka
Node-RED MQTT to Kafka

Connect Kafka Data Sources

Kafka data sources can be integrated with UMH exclusively through Node-RED.

To access Node-RED’s web interface, navigate to:


Replace <instance-ip-address> with your UMH instance’s IP, ensuring you’re on the same network for access.

Before proceeding, make sure the node-red-contrib-kafkajs plugin is installed. For installation guidance, see How to Get Missing Plugins in Node-RED.

Add the Kafka Connection

In Node-RED, locate the kafka-consumer node and drag it into your flow. Double-click to configure and click the pencil button beside the Server field.

If you have followed the guide, the kafka client should already be configured and automatically selected.

Enter your Kafka broker’s details:

  • Brokers: united-manufacturing-hub-kafka:9092
  • Client ID: nodered

Click Add to save.

Connect Kafka to Node-RED
Connect Kafka to Node-RED

Set the subscription topic. For demonstration, we’ll use the topic created earlier:


Link a debug node to the kafka-consumer node, deploy, and observe messages in the debug pane.

Kafka Debug Connection
Kafka Debug Connection

For topic structuring guidelines, refer to Unified Namespace.

Format Incoming Messages

Since the data is already processed from the previous step, use a function node to convert the temperature from Celsius to Fahrenheit. Connect it to the kafka-consumer node and paste the following script:

const payloadObj = JSON.parse(msg.payload.value);
const celsius = payloadObj.temperature;
const fahrenheit = (celsius * 9) / 5 + 32;

msg.payload = {
  temperature: fahrenheit,

return msg;

Finalize with Done.

Then, connect a JSON node to the function node to parse the object into a string.

Send Formatted Data Back to Kafka

Now, we’ll route the transformed data back to the Kafka broker, in a different topic.

Add a kafka-producer node, connecting it to the JSON node. Use the same Kafka client as earlier, and the same topic for output:


For more on UMH data modeling, consult the documentation.

Press Done and deploy.

Consider adding a debug node for visualizing output data.

Node-RED Kafka to Kafka
Node-RED Kafka to Kafka

What’s next

Next, we’ll dive into Data Visualization, where you’ll learn to create Grafana dashboards using your newly configured data sources. This next chapter will help you visualize and interpret your data effectively.

4 - 4. Data Visualization

Build a simple Grafana dashboard with the gathered data.

In the following step, we will delve into the process of visualizing the data. This chapter focuses on the construction of dashboards using Grafana. The dashboard will be crafted around the OPC-UA data source and the Node-RED flow, both of which were established in the previous chapter.

Creating a Grafana dashboard

  1. If you haven’t done so already, open and log in to Grafana by following the instructions given in the Acess Grafana section of chapter 2.

  2. Once logged in, hover over the fourth icon in the left menu, dashboards, and click on + New dashboard.


  3. Click on Add a new panel, which will redirect you to the edit panel view.

  4. Next, we’ll retrieve OPC-UA data from TimescaleDB. Before moving forward, ensure that the UMH TimescaleDB data source is selected; it should be the default choice.


  5. We’ll show you how to run queries with both the Builder mode (a graphical query builder) and the Code mode (a code editor to write RAW SQL). Let’s begin with the graphical approach.

  6. Let’s query all value, timestamp and name columns from the tag table. For some guidance, refer to the image below.


  7. Click on the Run Query button located next to the Builder/Code modes switcher.

  8. You should now see a time series graph based on the query you just ran. The Builder mode is a great way to get started, but it has its limitations. For more complex use cases, we recommend using the Code mode, which we’ll cover in the next steps.

  9. Open the code editor by switching from Builder to Code.

  10. Now we’ll run a slightly more complex query. We’ll retrieve the same columns as before, but this time only for a specific asset.

    SELECT name, value, time_bucket('$__interval', timestamp) AS time
    FROM tag
    WHERE asset_id = get_asset_id_immutable(
    AND $__timeFilter(timestamp)
    GROUP BY time, name, value
    ORDER BY time DESC;

    There are a few things to unpack here, so let’s break it down:

    • time_bucket is a TimescaleDB function that groups data into time intervals. The first argument is the interval, which is set to $__interval to match the time range selected in the Grafana dashboard (1m, 6h, 7d, etc). The second argument is the column to group by, which is timestamp, as defined in our data model.
    • The table we’re querying is tag, this varies depending on the tag’s data type, find more information in the data model linked above.
    • The asset_id is retrieved using the get_asset_id_immutable function, which is a custom plpgsql function we provide to simplify the process of querying tag data from a specific asset. Click here for more examples.
    • $__timeFilter is a Grafana function that filters the data based on a given time range. It receives one argument, which is the column to filter by, in our case timestamp.
    • Finally, we group the data by time (timestamp alias), name, and value, and order it by time in descending order to display the most recent data first.

You can also select the desired tag in the Tag Browser of the Management Console, and directly copy the provided SQL query from there.

  1. Same as before, click on the Run Query button to execute the query. If you’ve been following along, you won’t see any noticeable changes, since we only have one asset in our database.

  2. Feel free to experiment with different queries to get a better feel for the data model.

  3. Next, you can customize your dashboard. On the right side, you’ll find various options, such as specifying units or setting thresholds. Playaround until it suits your needs.

  4. Once you’re done making adjustments, click on the blue Apply button in the top right-hand corner to save the panel and return to the overview.

  5. Congratulations, you have created your first Grafana dashboard, and for now it should look similar to the one below.


What’s next?

The next topic is Moving to Production where we will explain what it means to move the umh to a manufacturing environment. Click here to proceed.

5 - 5. Moving to Production

Move the United Manufacturing Hub to production.

This chapter involves deploying the United Manufacturing Hub (UMH) on a virtual machine or an edge device, allowing you to connect with your production assets. However, we recognize the importance of familiarizing yourself with the United Manufacturing Hub beforehand. Feel free to delve deeper into our product, explore the specifics of local installation, or proceed with the production deployment. The guide below will kickstart your UMH journey in a production setting.

Check out our community

We are quite active on GitHub and Discord.

Feel free to join our community, introduce yourself and share your best-practices and experiences.

Learn more about the United Manufacturing Hub

If you like reading more about its features and architecture, check out the following chapters:

  • Features to understand the capabilities of the United Manufacturing Hub and learn how to use them.
  • Architecture to learn what is behind the United Manufacturing Hub and how everything works together.

Ready to transition to production? Continue reading to discover how to install UMH and seamlessly connect multiple machines to your instance.

Set up your first instance and connect to a few machines

If you want to get a first impression of the UMH in a production environment, connecting to machines on your shop floor, follow these steps:

Before starting the installation process, decide whether to use virtual machine (VM), or a generic server or edge device. For ease of setup, we recommend using a VM. Ensure that the selected device has network access to the machines.

2. Select Machines with OPC UA for Testing

For testing purposes, it’s recommended to use machines with OPC UA. If your machines use other protocols, consider Node-RED as an alternative for data connection. Check the list of supported protocols and how to connect them to Node-RED.

3. Installation Process

The installation is well documented in the first chapter. But here’s a quick overview:

  • Click on the + Add Instance button in the instance dashboard of the Management Console, redirecting you to the installation process page.

  • Select the Install UMH Only option, redirecting you to the install command generation page.

  • Finally, follow the provided instructions to set up your instance. If everything went well, there should be a button at the bottom right corner of the page, redirecting you back to the instance dashboard.

4. Network Configuration

Once your UMH instance is up and running, ensure it is placed in the same network as your machines. Additionally, verify that the device running the Management Console is also within the same network.

While basic management and monitoring with the Management Console don’t necessarily demand extensive network configuration, it’s important to note that various open-source tools integrated into UMH do. Therefore, to take full advantage of the UMH, ensure that you can reach the IP of the server to access Grafana or Node-RED, and that the connection is not blocked by a firewall.

5. Configure Connections and Data Sources

The connections and data sources setup is documented in detail in the third chapter. But here’s a quick overview for OPC UA:

  • Assuming you have a selected instance running, navigate to the Data Connections tab and click on the + Add Connection button.
  • Click on the OPC UA Server option, redirecting you to the OPC UA connection setup page.
  • Follow the provided instructions, test the connection, and if succesful you’ll be able to deploy it.
  • Once successfully deployed and back to the Data Connections tab, you’ll see the new connection under Uninitialized Connections.
  • To initialize it, navigate to Data Sources > Uninitialized Connections, redirecting you to the data source setup page.
  • Again, follow the provided instructions. If you’re having trouble, refer to the more detailed guide.
  • Once successfully deployed and back to the Data Sources tab, you’ll see it under Data Sources.
  • Congratulations! Your OPC UA connection and data source are now configured, and your UMH instance is ready to gather valuable insights from your machines.

6. Alternative Protocols

The previous step exclusively covered OPC UA. If your machines use protocols other than OPC UA, we recommend exploring Node-RED as a versatile solution for connecting and gathering data.

You can use it to generate a new dataflow by using your machine’s data as input. This collected data can even be used in other tools, such as building a dashboard in Grafana.

If you encounter any issues, feel free to ask for help on our Discord channel.

Play around with it locally

If you want to get a first impression of the UMH in a local environment, we recommend checking out the following topics:

Grafana Canvas

If you’re interested in creating visually appealing Grafana dashboards, you might want to try Grafana-Canvas. In our previous blog article, we explained why Grafana-Canvas is a valuable addition to your standard Grafana dashboard. If you’d like to learn how to build one, check out our tutorial.



If you want to get a good overview of how the OPC/UA protocol works and how to connect it to the UMH, the OPC/UA-simulator is a useful tool. Detailed instructions can be found in this guide.



For those looking to get started with PackML, the PackML Simulator is another helpful simulator. Check out our tutorial on how to create a Node-RED flow with PackML data.



Benthos is a highly scalable data manipulation and IT connection tool. If you’re interested in learning more about it, check out our tutorial.



At times, you may need to connect different, older protocols. In such cases, KepwareServerEx can help bridge the gap between these older protocols and the UMH. If you’re interested in learning more, check out our tutorial.

Deployment to production

Ready to go to production? Go install it!

Follow our step-by-step tutorial on how to install the UMH on an edge device or an virtual machine using Flatcar. We’ve also written a blog article explaining why we use Flatcar as the operating system for the industrial IoT, which you can find here.

Make sure to check out our advanced production guides, which include detailed instructions on how to secure your setup and how to best integrate with your infrastructure.