---
title: Add Tag(s) to DeviceHub for multiple Litmus Edge
slug: solutions/add-tags-to-devicehub-for-multiple-litmus-edge
docTags: 
createdAt: 2025-08-12T12:21:50.584Z
---

To add Device(s) with Litmus Excel Add-ins, you should be familiar with how Devices work in [DeviceHub](docId:55lxgtILWfsyGkxzrdFoD) on Litmus Edge.

# Before You Begin

- You have installed the Litmus Excel Add-ins extension. See [Install Litmus Excel Add-ins](docId\:GZDhBJ1xZZNDDThYOCuuu) for details.
- You have prepared a [Tool file](docId:0M77dRMBjD_gyBMTiwQWa).&#x20;

# Initial Preparation

Open a new Tag Management Tool File in Excel.

If prompted, *Enable Content&#x20;*&#x74;o allow the code to run.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/jzotppmZSPdRS7VZpFPvg_image.png" size="80" width="600" height="150" position="center" showCaption="false"}

Make sure the the tool is set t&#x6F;*&#x20;Fast Mode* for the **Sheet Mode** option and **Connected To** is set to *Multiple LE*.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/6vm__9H3f65gUzspz6pYI_image.png" size="70" width="342" height="142" position="center" showCaption="false"}

# Add Tag(s) in Fast Mode

:::hint{type="info"}
**Notes**:

Every Driver will have their own set of Device Properties depending on the respective protocols.
The steps below show an example using ONE of the over 100 Drivers.
:::

## Mandatory Tag settings

### Set the Target Litmus Edge IP

Enter the IPv4 of the Litmus Edge you want add the device on into column **Target Litmus Edge IP**.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/boa5DmXnht5yCIQf_psIG_image.png" size="70" width="723" height="185" position="center" showCaption="false"}

:::hint{type="info"}
**Notes**:

If no API Key for the device was previously provided, the user will need to provide the API key.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Irgmz0byWN4K7OALBuh1t_image.png" size="70" width="858" height="352" position="center" showCaption="false"}
:::

### The two D's and T

Provide the following three Tag Settings to start the definition of a tag.

- **Device Name**: Select the Device for which you want to add the Tag.
- **Driver Name for Device**: Select the Driver which is used for the Device.&#x20;

:::hint{type="info"}
**Notes**:

The Driver Name will be automatically set, if the Device Name is selected first.&#x20;
:::

- **Tag Name:** Provide the Name for the Tag.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/xpJ28wCRuTSX9e_YvNLJ7_image.png" size="80" width="886" height="171" position="center" showCaption="false"}

:::hint{type="info"}
**Notes**:

The tool will verify that the entries for this column are unique per Target Litmus Edge IP and Device Name and notify the user in case the same Tag Name was already used.
:::

It is **Recommended&#x20;**&#x74;o click the **Compare vs LE** Button to check if a Tag for the provided Device and with this Name may already be defined on Litmus Edge.
If no Tag for the selected device and with the name combination is defined, the row will stay as **A** for the Action.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/QrAy14Y3XBU2WXHPkcqam_image.png" size="80" width="904" height="424" position="center" showCaption="false"}

If a Tag for the selected driver and with the name combination is already defined, the row will change to **M** for the Action and the settings of the tag will be pulled.

:::hint{type="info"}
**Notes**:

This doesn't need to be done for every tag individually but can instead be done once all desired tags have been added to the sheet.
:::



### Tag Definition Properties

**Tag Definition Properties&#x20;**&#x61;re a mandatory set of Tag Settings, which are required for the request the data from a device.

Based on the driver, the Tag Definition Properties can be added using either the [Tag Address Translator](docId\:bm4sTCOywU_ooq6ncgbXB) or for OPCUA the [Tag Browser](docId\:bm4sTCOywU_ooq6ncgbXB) .&#x20;

Most tags require a set of three values to define the Tag definition.

- **Register Type**: The type of the register used when the tag was setup on the device. This is driver specific.
- **Tag Value Data Type**: The value type of the tag. This is driver specific.
- **Register Address / Path**: The numeric register address of a tag on the device or the path string of the tag. This is driver specific.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/LlcDhejI0seVOug9udFwi_image.png)

The Tool will automatically pull potential [Driver Specific settings](docId\:bm4sTCOywU_ooq6ncgbXB) with a default configuration for the Driver similar to how the UI on Litmus Edge prepopulates the Tag Wizard.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/wStU6_WhG700LcHa6sSf8_image.png)

:::hint{type="info"}
**Notes**:

For some drivers, tags can require different tag definition properties, which can lead to certain columns being grayed out as they do not apply.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/hM9LgMksDS7Y9RXqDCQxT_image.png" size="80" width="1865" height="196" position="center" showCaption="false"}

To read data for these tags, users provide the respective settings through the [Driver Specifics](docId\:bm4sTCOywU_ooq6ncgbXB) column.
:::

If all [mandatory](docId\:bm4sTCOywU_ooq6ncgbXB) (\*) Tag Settings are provided, as well as all [not mandatory](docId\:bm4sTCOywU_ooq6ncgbXB) settings are changed, the Tag is ready to be added to Litmus Edge.

:::hint{type="info"}
**Notes**:

To add more Tags to the sheet, repeat the process described under [Add Tag(s) to DeviceHub for multiple Litmus Edge](docId\:bm4sTCOywU_ooq6ncgbXB) for every tag you want to add.
:::

### Tag Address Translator

For some Drivers, the tool features a **Tag Address Translator**. Which can be used to provide the address in their typical format and translates it into the Tag Definition Properties used by Litmus.&#x20;

To be able to use the Tag Address Translator, the column **(Optional) Tag Address Translator&#x20;**&#x68;as to be **not** **grayed out**.

Tag Address Translator Not Available:

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/d7c8LFSZy5cbbokTxT44a_image.png" size="50" width="497" height="202" position="center" showCaption="false"}

Tag Address Translator Available:

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/KB9_hgVBt1ZGp8Kh8D6mZ_image.png" size="50" width="474" height="196" position="center" showCaption="false"}

Type in the tag address in their typical driver specific format.

Example: Siemens S7 1500

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/IKViDQFyuPXWcj0mjRfnC_image.png" size="40" width="258" height="172" position="center" showCaption="false"}

The Tag Address Translator will parse the provided address and set the respecitve three Tag Definition Properties and potential Driver Specifics.

Example: Siemens S7 1500&#x20;

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/iqWGKmy5B46W9daDEjBOx_image.png)

:::hint{type="info"}
**Notes**:

It is possible that an address could be defined with one of multiple Tag Data Value Types.

Example: A Siemens Tag with and address like DBx.**D**y. could be of Tag Data Value Type:

- dword -> default
- dint
- real

In these cases the Tag Address Translator will by default&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/1nJ9rdZUZsrjh3YjbBWo4_image.png" size="60" width="339" height="120" position="center" showCaption="false"}

request from the user to select the Tag Data Value Type.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/utKAykYVxcycKb9wGmUK5_image.png" size="70" width="715" height="361" position="center" showCaption="false"}

The Form shows the default Tag Data Type. Which you can accept without the need of selecting it using the **Use Default&#x20;**&#x62;utton.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/eot__1AHGoR8bmcHQfaeN_image.png" size="80" width="704" height="352" position="center" showCaption="false"}

Otherwise select the Tag Value Data Type you need from the drop down and press the **Save** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/_4cwVewWLxygHU7mivJKw_image.png" size="80" width="714" height="361" position="center" showCaption="false"}

The user can also force the Tag Address Translator to always use the Default Tag Data Value Type.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/2wIdXf0dhBlc3JD575teO_image.png" size="60" width="344" height="127" position="center" showCaption="false"}
:::

### Tag Browser

For the OPC UA Client Advanced driver and Litmus Edge versions after 3.16.x which support the new [Tag Browsing](docId\:I3ezGnLiQB29YYcpNkfZS), the tool offers the option to browse for tags and import their settings into the tool.

Before you will be able to browse for tag with the Excel Tool, you will need to setup at least one [Browse Task](docId\:I3ezGnLiQB29YYcpNkfZS)  and have it being completed.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/wOM_9VYPCXFiYmJkHOPE8_image.png" size="80" width="1054" height="351" position="center" showCaption="false"}

You can see if Tag Browsing is avialable if the [Tag Browse Wizard](docId\:n4VrurrdO6LINifPJGyGB)  button is shown in the LitmusConfiguration ribbon when a cell in any of the columns:

- Tag Name
- (Optional) Tag Address Translator
- Register Type
- Tag Value Data Type
- Register Address / Path

is selected

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/AAWFr9xaV1GRwA_wotW5u_image.png" size="80" width="1519" height="450" position="center" showCaption="false"}

Press the Tag Browse button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/FDU0suCMQKsE25AdXxu7B_image.png" size="50" width="273" height="150" position="center" showCaption="false"}

Select the Browse Task to use and press the **Browse&#x20;**&#x62;utton.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/VCXK918CIXIT5Smg8xpOC_image.png" size="80" width="886" height="796" position="center" showCaption="false"}

Select the Tag(s) you want to import and press the Import button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/vFGmKAAEPJiOFJ0eCB0s0_image.png" size="80" width="891" height="796" position="center" showCaption="false"}

This will import the tag(s) with their Suggested Tag Name as **Tag Name** and the Tag Definition Properties.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/cCwpc3sQ2y7dfxEDnXZkC_image.png)

:::hint{type="warning"}
**Important:&#x20;**&#x54;his will overwrite any previous value in column **Tag Name**.
:::

The selected tag(s) with their settings are imported into the sheet.&#x20;
Once finished, the user can either.

- perform another search using the **New Search** button
- finish the import using the **Close** button

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/dAK9pbj_bMm8BnN8WitL1_image.png" size="80" width="1746" height="823" position="center" showCaption="false"}

## Executing Actions

When all [mandatory](docId\:bm4sTCOywU_ooq6ncgbXB) and [not mandatory](docId\:bm4sTCOywU_ooq6ncgbXB) settings for all tag(s) are set they are ready to be added.

It is **Recommended&#x20;**&#x62;ut not mandatory to verify the configuration first without executing the Action by pressing the **Verify Only** button.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/tBi_pUOEf-rXkVQeawJ2W_image.png" size="80" width="359" height="165" position="center" showCaption="false"}

This will check that all required Tag Settings are provided and logically correct. And provide any finding to the user.
Example: Below the user did not set a Register Address / Path.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/-8aes-8-Dy8dS-Lmg_91s_image.png" size="80" width="975" height="595" position="center" showCaption="false"}

The Tag(s) can be added to Litmus Edge by pressing the **Verify + Execute** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/efpAqozXDBbZ4xUGmOpbX_image.png" size="60" width="359" height="165" position="center" showCaption="false"}

The tool will group all the devices based on the Litmus Edge(s) defined in column **Target Litmus Edge IP.**
For each Litmus Edge this will check that all required Tag Settings are provided and logically correct.&#x20;
And provide any finding to the user.
If no issues have been identified, the tool will verify that the user wants to execute **ALL** the actions from the **Action** Column:

1. **A**: Add Tag(s)
2. **M**: Modify Tag(s)
3. **D**: Delete Tag(s)
4. **I**: Ignore Tag(s) -> do nothing

To perform all actions, press the **Yes** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/WyrMFhqrLwgR5mJccaHy-_image.png" size="80" width="758" height="391" position="center" showCaption="false"}

The Tool will perform ALL Actions one Litmus Edge at a time. When finished, a result Summary is shown for each Litmus Edge. Close the Result Summary by pressing the **X** close button to continue with the next Litmsu Edge.

![](https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/s8ZH36ZoOCX7nlRoQdCA9_image.png?format=webp)

Once all Litmus Edge have been processed, the tool will ask if the user wants to re-compare the Tag(s) against Litmus Edge.
To re-compare, press the **Yes&#x20;**&#x62;utton.
To not re-compare, press the **No** button.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ILH2um2k3V54JQhWjAFBQ_image.png" size="70" width="403" height="154" position="center" showCaption="false"}

If the User selected to press the **Yes&#x20;**&#x62;utton from aboves messagebox, the tool will pull all the tag settings from Litmus Edge again including the RegisterID and also change the **Action&#x20;**&#x74;o **M** for each Tag with a RegisterID or **A&#x20;**&#x66;or devices with no RegisterID.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/chIrOrh2eNA2VNxX4sjPE_image.png)

## Not Mandatory Tag Settings in Fast Mode

Each Device has a number of not mandatory Settings which can be used to meeat specific needs.

- **Polling Interval in Seconds:** The time between the Litmus Edge requesting data from the device. For millisecond values, provide the value as decimal.
- **Driver Specifics**: Many drivers require very unique Tag definition Properties specific to their make and model. This column combines all of these as a single JSON Object with a default configuration.
  It is recommended to use the [Driver Specific Wizard](docId:48vYrEM4NexAxpXE5CI7x) when setting your specific values for these Driver Specific settings.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ce73YyUH2cxykno-C_AXW_image.png" size="60" width="412" height="408" position="center" showCaption="false"}

# Add Tag(s) in Extended Mode

Make sure the the tool is set t&#x6F;*&#x20;Extended Mode* for the **Sheet Mode** option.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/lWaGCZqC1Sl1UiqCfMpvi_image.png" size="80" width="421" height="174" position="center" showCaption="false"}

This will provide the user with all available [not mandatory](docId\:bm4sTCOywU_ooq6ncgbXB) Tag settings.

Setting [Mandatory Tag settings](docId\:bm4sTCOywU_ooq6ncgbXB)  and [Executing Actions](docId\:bm4sTCOywU_ooq6ncgbXB) is the same process as for [Add Tag(s) in Fast Mode](docId\:bm4sTCOywU_ooq6ncgbXB).

## Not Mandatory Tag Settings in Extended Mode

Each Tag has a number of not mandatory Settings which can be used to meet specific needs.

- **Tag Description:** A short description of the tag.
- **Polling Interval in Seconds:** The time between the Litmus Edge requesting data from the device. For millisecond values, provide the value as decimal.
- **Count**: The number of consecutive registers including the one defined for this tag. If the value is larger 1, the returned data will be an array.
- **Publish on COV only**: Only publish a new value to the message broker if the value changes.
- **Tag Formula**: Enter a formula for the tag to process the generated data. See [Tag Formula Variables](docId\:Io7xgyrdVv_vmpnFXOACi) to learn more.
- **Meta Data**: Provide a JSON Object which holds all the Meta Data you want to add to the Tag. See [Organize Device and Tag Data by Using Metadata](docId\:MU-6j6Zhi0CvCHDad0w8n) to learn more.&#x20;
  It is recommended to use the [Meta Data Wizard](docId\:GeidkenK7D4POixGWTPwm).

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/PjbanmIN9eJsaALvQHbLg_image.png" size="60" width="337" height="378" position="center" showCaption="false"}

- **Driver Specifics**: Many drivers require very unique Tag definition Properties specific to their make and model. This column combines all of these as a single JSON Object with a default configuration.
  It is recommended to use the [Driver Specific Wizard](docId:48vYrEM4NexAxpXE5CI7x) when setting your specific values for these Driver Specific settings.

::Image[]{src="https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/ce73YyUH2cxykno-C_AXW_image.png?format=webp" size="60" width="412" height="408" position="center" showCaption="false"}

# Troubleshooting

The Tool will perform several checks throughout the proces of defining the tag settings.  If they do not pass successfully, the user will be notified.&#x20;
The checks include:

- Tag Name uniqueness on a Device level.&#x20;
  - The tool checks if a **Tag Name** already exist for a specific **Target Litmus Edge IP&#x20;**&#x61;nd **Device Name** in the Tool.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/iDRj_r3raWhxzKYZ_M7qo_image.png" size="80" width="1113" height="425" position="center" showCaption="false"}

- [Allowed and not allowed Ascii Characters](docId\:FNwHcidRnnPizCZkUWiYz) for Tag Names and Descriptions
  - The user is shown a message box as notification.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Nms_-RPqieuIcEG9jEhLz_image.png" size="80" width="491" height="381" position="center" showCaption="false"}

- The character(s) are highlighted in red and also shown in a note.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/qe6hYYnVMLYG5lM2xYDsw_image.png" size="80" width="428" height="223" position="center" showCaption="false"}

- See [Allowed and not allowed Ascii Characters for Names and Descriptions](docId\:FNwHcidRnnPizCZkUWiYz) for a full list for both Names and Descriptions.
- Correct JSON formating for **Meta Data**, and **Driver Specifics**.
  - Example for an invalid JSON formatting of the Driver Specifics

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Rl3Thx9snaKrJaKh3g2xY_image.png" size="70" width="441" height="348" position="center" showCaption="false"}

- Valid entry for **Register Address / Path,&#x20;**&#x20;if value has to be a number, to be a number and withhin allowed range
  - Example for an invalid entry for the Register Address / Path

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/ecpxxEcWb9qpdLRQtCkmz_image.png" size="60" width="389" height="356" position="center" showCaption="false"}

- Is the column **Driver Specifics&#x20;**&#x65;mpty.&#x20;
  If they are, and the driver requires driver specifics the default JSON Object will be automaticly added.
- For some drivers the tool also verifies if there exist mandatory JSON Key-Value pairs in column **Driver Specifics** with a value being:
  - empty
  - **null**
  - empty array "**\[]**"
  - empty JSON Object "**\{}**"
- For drivers which use queries to read data from databases the tool also verifies the query defined in the column **Driver Specifics** is setup to perform SQL Injection.

